Jenkins动态代理选择

093gszye  于 2023-06-21  发布在  Jenkins
关注(0)|答案(1)|浏览(143)

我的Jenkins控制器上有不同类型的代理。静态代理(一些虚拟机和一些裸机服务器)和动态代理(几个Kubernetes云示例)。静态代理根据操作系统(Windows,Linux)进行标记,动态(Kubernetes)可以基于项目在不同的Docker映像上运行。没有这些标签,因为它们可以根据操作系统和Docker映像进行更改。
我如何编写一个Jenkins管道,在运行时动态选择代理?
我可以在触发构建时提供4个env参数。AGENT_TYPE的可能值是["static", "dynamic"]AGENT_OS的可能值是["linux", "windows"]AGENT_IMAGE是字符串值,docker镜像的链接和AGENT_CLOUD,其云名称为Kubernetes。
如果env参数表示使用静态代理,则构建将在使用OS作为标签的那些代理上开始,如果选择了Kubernetes,则将使用其他参数来收集Kubernetes配置。
我正在努力编写一个管道,在Jenkins管道的agent部分中选择labelkubernetes。任何帮助都很感激。谢谢

lvmkulzt

lvmkulzt1#

首先,你可以使用这样的东西:

def agent_label = 'dev-agent'
agent any
parameters {}

environment 
{  }

stages
{
  stage('prepare-code') {
    steps {
      script {
        // choose agent based on environment to run
        if (environment != "dev")
        {
          agent_label = 'prod-agent'
        }
      }
    }
  }

  stage('deploy') {
    agent {
      label agent_label
    }
    steps { .....

您还可以使用Jenkin的worker标记,并为几个代理提供相同的标记,然后在同一个代理标记下有一组代理,这对于扩展负载非常有用

相关问题