我有一个参数化的 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"}'
}
环境变量总是错误的。如何正确设置环境变量?
答案 0 :(得分:2)
我假设您正在使用自由式项目 这是步骤
这里只是尝试更新版本和完整版本以包含传递参数说 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
分支,还可以用作标签。
最好的问候。