1

我有一个用于所有存储库的通用 Jenkins 共享库,如下所示

vars/_publish.groovy

def call(opts) {
    pipeline {
        environment {
            abc= credentials(’abc')
            def= credentials(‘def’)
 
        }
        stages {
            stage('Build') {
                steps{
                    sh ‘docker build'
                }
            }

詹金斯文件

@Library('my-shared-library@branch') _

_publish() {
}

这适用于 1 项单一服务。现在我想为所有服务/项目保留这个 jenkins 共享库,但每个服务都有不同的环境变量。

vars/_publish.groovy中的环境块 {}有 10 个环境变量,这些变量对于所有项目/服务都不是恒定的。这些值因项目/服务而异。如何将 env 变量传递给这个 jenkins 共享库以用于不同的项目?每个项目/服务都有不同的 Jenkins 管道。我可以将变量从 jenkinsfile 传递到共享库吗?任何人都可以帮忙吗?

4

1 回答 1

0

您可以借助Jenkins 文件中的withEnv( Documentation ) 方法传递它们。

@Library('my-shared-library@branch') _

node(''){
 withEnv([
  “credId='id-cred'”,
  “y=20”
 ]){
  _publish() {}
 }
}


// shared lib

def call(opts) {
  stage('Build') {
  echo "env is ${env.credId}"
          withCredentialswithCredentials([usernamePassword(credentialsId: env.credId, usernameVariable: 'USER', passwordVariable: 'PASSWORD')]){  
             sh ‘docker build'
           }
        }
}

        
于 2021-02-17T07:51:07.263 回答