如何设置jenkins管道scm作业的参数

1l5u6lss  于 2023-10-17  发布在  Jenkins
关注(0)|答案(2)|浏览(138)

我有一个特定的jenkins文件,我想用它作为不同环境下的“git pipeline scm”作业。因此,我将有一个工作,开发,质量保证,和prod都拉相同的Jenkins脚本。该脚本有一些参数和默认值。

pipeline {
    agent any 
    parameters{
        string(name: 'environment', defaultValue: "dev")
        string(name: 'email', defaultValue: "")
        string(name: 'service_url', defaultValue: "http://dev.xyz_service")
    }
    ....
    ....pipeline script code....
    ....
}

这些作业将按计划/时间触发(非人工/手动触发)。虽然我想创建2个工作,一个较低的环境,和一个生产,可以得到保障.所以我认为git pipeline scm是一个很好的解决方案。
但我的问题是,我如何设置这些参数后,拉Jenkins文件自动?

4smxwvx5

4smxwvx51#

key:value对应该硬编码在parameters部分中。如果你想使用动态的,有一个选项来设置动态环境变量:

pipeline {
  agent {
    label 'some_label'
  }  
  environment {
    EC2 = """${sh(
      returnStdout: true,
      script: 'aws ec2 describe-instances \
        --filters "Name=tag:Name,Values=JENKINS_EC2_NAME_FROM_TAG"\
        --query Reservations[*].Instances[*].InstanceId \
        --output text'
        ).trim()}"""
  }

或者把它放在舞台上:

stage('notify about start of daily scan') {
  steps {
    script {
      env.mess_start=sh returnStdout: true, script: "date +%Y-%m-%d"
      env.mess_start=sh(returnStdout: true, script: "date +%Y-%m-%d").trim()
    }
  }
}

因此,这些env将在全球范围内提供。

hi3rlvi2

hi3rlvi22#

您正在寻找Parameterized Scheduler插件。

pipeline {
    agent any 
    parameters{
        string(name: 'environment', defaultValue: "dev")
        string(name: 'email', defaultValue: "")
        string(name: 'service_url', defaultValue: "http://dev.xyz_service")
    }
    triggers {
        parameterizedCron('''
            H 1 * * * %environment=dev
            H 2 * * * %environment=qa
        ''')
    }
    stages {
        ...
    }
}

相关问题