从 Jenkins 中的参数创建环境变量

时间:2021-03-30 14:59:27

标签: jenkins groovy jenkins-pipeline

我有一个参数化的 jenkinsfile。根据输入参数,我想设置某些环境变量。但我无法正确使用语法。

parameters {
    choice choices: ['insure-base-docker/insure-base', 'insure-ide/insure-sd', 'insure-ide/insure-ansible','insure-ide/ansible-test-vini'], description: 'Auf welche repository sollte die Tag erstellt?', name: 'repository'
    choice choices: ['tag', 'branch'], description: 'Tag oder branch erstellen', name: 'git_entity'
    string defaultValue: '21.x.x', description: 'Version die als branch oder Tag ersellt werden muss', name: 'version', trim: false
}
environment {
    GIT_URL = "${'https://my_repo/scm/'+param.repository+'.git'}"
    GIT_BRANCH = "${'Release/'+param.version}"
    CHECKOUT_BRANCH = '${${git_entity} == "tag" ? "master" : "develop"}'      
}

环境变量总是错误的。如何正确设置环境变量?

2 个答案:

答案 0 :(得分:2)

我假设您正在使用自由式项目 这是步骤

  1. 转到构建环境部分并选中将环境变量注入构建过程的选项 它将打开一组新的输入框。
  2. 在 Groovy 脚本中输入您的代码

这里只是尝试更新版本和完整版本以包含传递参数说 TestParam

这是一个示例:


import hudson.model.*
import groovy.io.FileType

def build = Thread.currentThread().executable
def buildNumber = build.number
def workspace = build.getEnvVars()["WORKSPACE"]
def defaultBuildNo = build.getEnvVars()["BUILD_NUMBER"]
println "Hi from Groovy script "
println workspace
println defaultBuildNo

def map = [
                 "BUILD_NUMBER": defaultBuildNo,
                 "VERSION" : defaultBuildNo + build.getEnvVars()["TestParam"],
                 "FULL_VERSION": +defaultBuildNo + "." + build.getEnvVars(["TestParam"]
                ]
return map

现在在执行 shell 部分中输入这些内容并查看所有内容都将成功解析。

执行shell

 echo $TestParam
 echo $BUILD_NUMBER
 echo $VERSION
 echo $FULL_VERSION

现在所有这些环境变量都可以在整个作业中访问。

答案 1 :(得分:1)

如今,Jenkins 中的参数和环境变量之间没有太多区别。甚至您使用它们的方式(以 env. 关键字开头)也是一样的。

试试这样的方法。

pipeline {
    parameters {
      choice choices: ['insure-base-docker/insure-base', 'insure-ide/insure-sd', 'insure-ide/insure-ansible','insure-ide/ansible-test-vini'], description: 'Auf welche repository sollte die Tag erstellt?', name: 'GIT_PROJECT'
      string defaultValue: '21.x.x', description: 'Version die als branch oder Tag ersellt werden muss', name: 'GIT_BRANCH', trim: false
    }

    agent any

    stages {
        stage('Cloning Git repository') {
            steps {
                script {
                    git branch: "${env.GIT_BRANCH}", credentialsId: 'MY_GIT_CREDENTIALS_PREVIOUSLY_ADDED_TO_JENKINS', url: "http://github.com/user/${env.GIT_PROJECT}.git"
                }
            }
        }
    }
}

您不仅可以用作 GIT_BRANCH 分支,还可以用作标签。

最好的问候。

相关问题