использовать пакет Azure в качестве узла Дженкинса - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть сервер Jenkins, который хорошо работает с другими машинами в качестве узла.У меня также есть учетная запись Azure Batch и рабочий пул.Есть ли способ соединить оба, чтобы задачи Jenkins отправлялись в пул пакетных операций Azure?

До сих пор я нашел только этот https://github.com/Azure/batch-jenkins, то есть после сборки плагин для параллельного выполнения тестов, это не то, что я ищу.Мне просто нужно отправить командную строку в Azure.

Спасибо

1 Ответ

1 голос
/ 24 апреля 2019

Поскольку ваше требование заключается в отправке командной строки в Azure, я бы предложил вам выполнить простое задание Jenkins (либо задание фристайла, либо конвейерное задание), которое выполнило бы это требование.

Предварительные условия:

  1. Иметь учетную запись Azure Batch
  2. Иметь пул Azure Batch
  3. Иметь пакетное задание Azure
  4. Azure CLI установлен на узле Jenkins, где выбудет выполнять задание Jenkins
  5. Добавить субъект службы Azure к учетным данным Jenkins в соответствии с инструкциями here

Затем выполнить задание фристайла Jenkins, выполняющее команды, аналогичные приведенным ниже, в оболочкешаг компоновки после подключения к интерфейсу командной строки Azure с использованием субъекта службы Azure.

az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID

az batch task create --task-id mytask$i --job-id myjob --command-line "/bin/bash -c 'xxxxxxxxxxxxxxxxxxxxx; sleep 90s'"

Или выполните конвейерное задание Jenkins, как показано ниже.

#!groovy
node {
    try {
        xxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxx
    }
    catch (MissingPropertyException e) {
        xxxxxxxxxxxxxxxxxxxxx
        xxxxxxxxxxxxxxxxxxxxx
    }
    stage('test'){
        withCredentials([azureServicePrincipal('JENKINSSERVICEPRINCIPALCREDENTIALID')]) {
            def sampleoutputone = sh (returnStdout: true, script: '''az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID > /dev/null
            az account set -s $AZURE_SUBSCRIPTION_ID > /dev/null
            sampleoutputtwo=$(az batch task create --task-id mytask --job-id myjob --command-line "/bin/bash -c 'xxxxxxxxxxxxxxxxxxxxx; sleep 90s'")
            xxxxxxxxxxxxxxxxxxxxx
            xxxxxxxxxxxxxxxxxxxxx
        }
    }
}

PS Обратите внимание, что код, приведенный в этомОтвет - это просто пример, который вам, возможно, придется немного подправить, чтобы работать в соответствии с вашими потребностями.

Надеюсь, это поможет !!Ура !!

...