相关疑难解决方法(0)

Jenkins Pipeline访问环境变量

我正在尝试在Jenkins中使用DSL管道.我认为如果我可以将项目名称作为我脚本的一部分,那就太好了.

git credentialsId: 'ffffffff-ffff-ffff-ffff-ffffffffffffff',\
url: "${repo_root}/${JOB_NAME}.git"
Run Code Online (Sandbox Code Playgroud)

我收到错误:

groovy.lang.MissingPropertyException: \
No such property: JOB_NAME for class: groovy.lang.Binding
Run Code Online (Sandbox Code Playgroud)

我以为我遵循了这些指示,他们提到JOB_NAME了变量之一.

我决定尝试:

sh 'env'
Run Code Online (Sandbox Code Playgroud)

在我的DSL中,打印出来:

JOB_NAME = foo-bar
Run Code Online (Sandbox Code Playgroud)

这是我所期待的.

一篇博客提到:

使用环境变量
我们有两种方法来获取它们的价值.-D=在启动期间传递的属性我们可以阅读,System.getProperty("key")这要归功于Groovy与Java的强大关系.

用Java方式读取常规环境变量是System.getenv("VARIABLE")......

我们试试这个:

println "JOB_NAME = " + System.getenv('JOB_NAME'); 
Run Code Online (Sandbox Code Playgroud)

现在,我得到:

java.lang.NullPointerException: Cannot get property 'System' on null object
Run Code Online (Sandbox Code Playgroud)

空物体?但是,我可以看到这JOB_NAME是一个环境变量!

如何$JOB_NAME在Pipeline作业中读入DSL脚本.我正在尝试一个管道工作,当我得到它的工作将使这个多分支管道与Jenkinsfile.

jenkins jenkins-workflow jenkins-pipeline

29
推荐指数
3
解决办法
7万
查看次数

访问Jenkins管道作业上的SCM(Git)变量

这是我的管道代码:

node ('master') {
    git url: "$GIT_REPO_URL", branch: "$GIT_BRANCH"
    echo env.GIT_COMMIT
    echo env.GIT_BRANCH
    echo env.GIT_REVISION
}
Run Code Online (Sandbox Code Playgroud)

构建结果如下所示:

Started by user anonymous
[Pipeline] Allocate node : Start
Running on master in /var/lib/jenkins/jobs/test/workspace
[Pipeline] node {
[Pipeline] git
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://acme/scm/app.git # timeout=10
Fetching upstream changes from https://acme/scm/app.git
 > git --version # timeout=10
 > git fetch --tags --progress https://acme/scm/app.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > …
Run Code Online (Sandbox Code Playgroud)

git jenkins jenkins-workflow

24
推荐指数
1
解决办法
5万
查看次数

Jenkins管道分支名称返回null

我正在尝试为jenkins groovy脚本获取我的分支名称.我无法获取当前的分支名称.我尝试以下方法:

stage('Check out code')
checkout scm
echo "My branch is: ${env.BRANCH_NAME}"
Run Code Online (Sandbox Code Playgroud)

这是输出 - 它总是返回null.

 Checking out Revision 33b531b2f1caaf8b64d968e437306f39d2dba1da   (origin/pipeline)
  > git.exe config core.sparsecheckout # timeout=10
  > git.exe checkout -f 33b531b2f1caaf8b64d968e437306f39d2dba1da
 [Pipeline] echo
 My branch is: null
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

git groovy jenkins

14
推荐指数
5
解决办法
1万
查看次数

无法使用Groovy Jenkinsfile读取Git环境变量Jenkins

Git插件(默认情况下)安装在我的Jenkins中,但是我无法获得应该由Git插件传入的env变量.我在找:

GIT_COMMIT
GIT_BRANCH
GIT_PREVIOUS_COMMIT 
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
Run Code Online (Sandbox Code Playgroud)

我正在使用管道作业项目指向与Jenkins文件的Github仓库,代码如下

stage 'PushToProd'
node {
    git url: "https://github.com/username/fakeurl.git"
    echo "Starting PushToProd"
    sh 'printenv'
    sh 'env'
    sh 'echo $BRANCH_NAME' 
    sh 'echo $GIT_COMMIT'
}
Run Code Online (Sandbox Code Playgroud)

当我使用env或者printenv不使用Github插件时,我得到了大量的环境变量.
关于如何将Git env变量传递给作业的任何提示?

更新:当我使用Freestyle项目并使用shell步骤时,我能够轻松获取Git env变量echo $GIT_COMMIT.仍然想知道如何使用Jenkinsfile + Pipeline作业项来使其工作.

git groovy jenkins jenkins-pipeline jenkinsfile

8
推荐指数
2
解决办法
2万
查看次数

从Jenkins管道捕获shell脚本输出

我试图提取git分支并在我的Jenkinsfile中提交信息,如下所示:

def commit = sh(returnStdout: true, script: 'git rev-parse HEAD').trim()
def branch = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
Run Code Online (Sandbox Code Playgroud)

我试着像这样打印它:

println("Branch: ${branch}, Commit: ${commit}")
Run Code Online (Sandbox Code Playgroud)

我没有获得真正的价值,而是留下了这个:

Branch: org.jenkinsci.plugins.pipeline.modeldefinition.ClosureModelTranslator@545511bf, Commit: org.jenkinsci.plugins.pipeline.modeldefinition.ClosureModelTranslator@545511bf
Run Code Online (Sandbox Code Playgroud)

我做错了什么,如何正确检索我需要的值?

编辑:不,建议的副本不是答案,因为我知道用于检索我需要的信息的shell命令.我的问题是信息传递给我的方式,ClosureModelTranslator而不是一个String.

git shell groovy jenkins jenkins-pipeline

3
推荐指数
1
解决办法
3393
查看次数