我有一台Jenkins服务器,它与其他机器一起作为节点运行良好。我还有一个Azure Batch帐户和一个工作池。有没有办法连接两者,以便将Jenkins任务发送到Azure批处理池?
到目前为止,我只发现这个https://github.com/Azure/batch-jenkins是一个后构建插件,可以并行执行测试,这不是我想要的。我只需要向Azure发送命令行。
谢谢
由于您的要求是向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
}
}
}
附:请注意,本答案中提供的代码只是一个示例,您可能需要根据需要调整一些工作。
希望这可以帮助!!干杯!!