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

bqjvbblv  于 2023-06-21  发布在  Jenkins
关注(0)|答案(3)|浏览(209)

我有一个参数化的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"}'      
}

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

svujldwt

svujldwt1#

现在,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不仅可以用作分支,还可以用作标记。
最好的问候。

jaql4c8m

jaql4c8m2#

我假设你是使用自由式项目在这里的步骤
1.转到构建环境部分并选中将环境变量注入到构建过程选项,它将打开一组新的输入框。
1.在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

现在在execute shell部分中键入这些并查看所有将成功解析。
执行shell

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

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

v09wglhw

v09wglhw3#

我必须在stage中将参数Map到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
    }

    stages {
        stage('Cloning Git repository') {
            environment {
                GIT_PROJECT = "${params.GIT_PROJECT}"
                GIT_BRANCH = "${params.GIT_BRANCH}"
            }
        }
    }
}

现在,我可以在其他只能使用环境变量的脚本中访问这些参数作为环境变量。

相关问题