使用 Azure Batch 作为 Jenkins 的节点
use Azure Batch as Jenkins' node
我有一个 Jenkins 服务器 运行 与其他机器作为节点很好。
我还有一个 Azure Batch 帐户和一个工作池。
有没有办法连接两者以便将 Jenkins 任务发送到 Azure Batch 池?
到目前为止我只发现这个 https://github.com/Azure/batch-jenkins 是一个 post-build 插件来并行执行测试,这不是我想要的为了。我只需要向 Azure 发送命令行。
谢谢
由于您的要求是向 Azure 发送命令行,因此我建议您使用一个简单的 Jenkins 作业(自由式作业或管道作业)来完成该要求。
先决条件:
- 拥有 Azure Batch 帐户
- 拥有 Azure Batch 池
- 拥有 Azure Batch 作业
- Azure CLI 安装在 Jenkins 节点中,您将在其中 运行 Jenkins 作业
- 按照说明将 Azure 服务主体添加到 Jenkins 凭证here
然后在使用 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
}
}
}
P.S。请注意,此答案中提供的代码只是示例代码,您可能需要稍微调整一下才能根据需要工作。
希望对您有所帮助!!干杯!!
我有一个 Jenkins 服务器 运行 与其他机器作为节点很好。 我还有一个 Azure Batch 帐户和一个工作池。 有没有办法连接两者以便将 Jenkins 任务发送到 Azure Batch 池?
到目前为止我只发现这个 https://github.com/Azure/batch-jenkins 是一个 post-build 插件来并行执行测试,这不是我想要的为了。我只需要向 Azure 发送命令行。
谢谢
由于您的要求是向 Azure 发送命令行,因此我建议您使用一个简单的 Jenkins 作业(自由式作业或管道作业)来完成该要求。
先决条件:
- 拥有 Azure Batch 帐户
- 拥有 Azure Batch 池
- 拥有 Azure Batch 作业
- Azure CLI 安装在 Jenkins 节点中,您将在其中 运行 Jenkins 作业
- 按照说明将 Azure 服务主体添加到 Jenkins 凭证here
然后在使用 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
}
}
}
P.S。请注意,此答案中提供的代码只是示例代码,您可能需要稍微调整一下才能根据需要工作。
希望对您有所帮助!!干杯!!