使用Azure Batch作为Jenkins的节点

问题描述 投票:-2回答:1

我有一台Jenkins服务器,它与其他机器一起作为节点运行良好。我还有一个Azure Batch帐户和一个工作池。有没有办法连接两者,以便将Jenkins任务发送到Azure批处理池?

到目前为止,我只发现这个https://github.com/Azure/batch-jenkins是一个后构建插件,可以并行执行测试,这不是我想要的。我只需要向Azure发送命令行。

谢谢

azure jenkins azure-batch
1个回答
1
投票

由于您的要求是向Azure发送命令行,因此我建议您使用简单的Jenkins作业(自由式作业或管道作业)来完成该要求。

先决条件:

  1. 拥有Azure Batch帐户
  2. 拥有Azure批处理池
  3. 有Azure批处理作业
  4. 安装在Jenkins节点中的Azure CLI,您将在其中运行Jenkins作业
  5. 按照指示here将Azure服务主体添加到Jenkins凭证

然后在使用Azure服务主体连接到Azure CLI之后,让Jenkins自由式作业在shell构建步骤中执行类似于下面的命令。

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
        }
    }
}

附:请注意,本答案中提供的代码只是一个示例,您可能需要根据需要调整一些工作。

希望这可以帮助!!干杯!!

© www.soinside.com 2019 - 2024. All rights reserved.