Jenkinsfile 如何从控制台输出中提取值?

代码医学

如何让 Jenkins 从 Jenkinsfile 中的命令生成的控制台输出中提取值?

具体来说,如何让 Jenkins 从checkout scm以下非常简单的 Jenkinsfile中的命令结果中提取提交哈希


詹金斯档案

node {
    // Clean workspace before doing anything
    deleteDir()
    try {
        stage ('Clone') {
            checkout scm    
        }
    } catch (err) {
        currentBuild.result = 'FAILED'
        throw err
    }
}  


checkout scm命令的输出

作为checkout scm在上述简化的 Jenkinsfile中运行命令的结果,Jenkins 日志打印以下内容:

Cloning the remote Git repository
Cloning with configured refspecs honoured and without tags
Cloning repository http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
 > git init /var/jenkins_home/workspace/le-repo_sample-issue-branch-2WOFDGRDQWR367VAM7O26H2DKPTRVPDKRTGNRIS4AQNNFP7QIX2Q # timeout=10
Fetching upstream changes from http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git  
 > git --version # timeout=10  
 using GIT_ASKPASS to set credentials 
 > git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/sample-issue-branch:refs/remotes/origin/sample-issue-branch
 > git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10
 > git config --add remote.origin.fetch +refs/heads/sample-issue-branch:refs/remotes/origin/sample-issue-branch # timeout=10
 > git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10
Fetching without tags
Fetching upstream changes from http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git  
using GIT_ASKPASS to set credentials 
 > git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/sample-issue-branch:refs/remotes/origin/sample-issue-branch
Checking out Revision 77cf12f42136efc77fecbcd1f761a54254278cb3 (sample-issue-branch)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f 77cf12f42136efc77fecbcd1f761a54254278cb3
Commit message: "add whitespace"
 > git rev-list --no-walk e975fb4391677bc09f2056b3e8a6be62eda0b222 # timeout=10
[Bitbucket] Notifying commit build result


重述问题:

具体来说,我们在 Jenkinsfile 中添加了什么,以便日志在最后额外打印出以下内容:

Commit hash is:  77cf12f42136efc77fecbcd1f761a54254278cb3  

这显然过于简化了。现实生活中的打印输出将进入一个变量并作为参数传递到脚本中。但是对于这个 OP,什么特定的语法可以让 Jenkins 提取提交哈希?

瓦桑

如果您特别需要提交哈希,结帐步骤的文档提到了一种简单的方法来获取它(而不是解析控制台输出等):

此步骤返回 SCM 插件将在 Freestyle 作业中设置的任何变量的 Map,因此如果您的 SCM 是 git,您可以执行以下操作:

    def scmVars = checkout scm
    def commitHash = scmVars.GIT_COMMIT

    // or

    def commitHash = checkout(scm).GIT_COMMIT

一旦你把它放在一个变量中,它只是回显它以在日志中看到它的问题。

echo "Commit hash is: ${commitHash}"

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何添加jenkinsfile参数值

来自分类Dev

从SVN控制台输出中提取文件名

来自分类Dev

AWS CloudFormation输出到JenkinsFile管道

来自分类Dev

如何在Jenkinsfile中执行Shell脚本?

来自分类Dev

如何通过Jenkinsfile激活conda环境?

来自分类Dev

如何通过Jenkinsfile激活conda环境?

来自分类Dev

如何从 Jenkinsfile 中的 sh 脚本访问变量

来自分类Dev

Jenkins:它如何查找 Jenkinsfile 位置

来自分类Dev

如何删除Jenkinsfile中的文件夹?

来自分类Dev

如何从 jenkinsfile 构建多个 docker 容器?

来自分类Dev

Jenkinsfile - 使用换行符从 shell 脚本创建输出

来自分类Dev

如何在Jenkinsfile中对失败的构建执行操作

来自分类Dev

如何在管道(jenkinsfile)中使用Jenkins Copy Artifacts插件?

来自分类Dev

如何在Jenkinsfile中设置github pull request构建?

来自分类Dev

如何知道哪个用户在Jenkinsfile中运行构建

来自分类Dev

如何在Jenkinsfile中将Artifactory throwsOldBuilds设置为true?

来自分类Dev

如何使用Jenkinsfile在Groovy函数中使用环境变量

来自分类Dev

如何检查构建参数在Jenkinsfile中是否可用

来自分类Dev

Jenkinsfile:如何使用命名参数调用groovy函数

来自分类Dev

如何在Jenkinsfile的循环中要求用户输入

来自分类Dev

如何在jenkinsfile的shell命令中使用pom版本?

来自分类Dev

如何知道哪个用户在Jenkinsfile中运行构建

来自分类Dev

如何在 Jenkinsfile 的 for 循环中正确使用变量

来自分类Dev

在 Jenkinsfile 中,如何访问在 sh 步骤中声明的变量?

来自分类Dev

如何在 Jenkinsfile 的 powershell 中创建环境变量?

来自分类Dev

如何抑制NUnit控制台输出?

来自分类Dev

Rust:如何覆盖控制台输出?

来自分类Dev

如何保存仍显示控制台输出

来自分类Dev

如何编辑控制台输出

Related 相关文章

  1. 1

    如何添加jenkinsfile参数值

  2. 2

    从SVN控制台输出中提取文件名

  3. 3

    AWS CloudFormation输出到JenkinsFile管道

  4. 4

    如何在Jenkinsfile中执行Shell脚本?

  5. 5

    如何通过Jenkinsfile激活conda环境?

  6. 6

    如何通过Jenkinsfile激活conda环境?

  7. 7

    如何从 Jenkinsfile 中的 sh 脚本访问变量

  8. 8

    Jenkins:它如何查找 Jenkinsfile 位置

  9. 9

    如何删除Jenkinsfile中的文件夹?

  10. 10

    如何从 jenkinsfile 构建多个 docker 容器?

  11. 11

    Jenkinsfile - 使用换行符从 shell 脚本创建输出

  12. 12

    如何在Jenkinsfile中对失败的构建执行操作

  13. 13

    如何在管道(jenkinsfile)中使用Jenkins Copy Artifacts插件?

  14. 14

    如何在Jenkinsfile中设置github pull request构建?

  15. 15

    如何知道哪个用户在Jenkinsfile中运行构建

  16. 16

    如何在Jenkinsfile中将Artifactory throwsOldBuilds设置为true?

  17. 17

    如何使用Jenkinsfile在Groovy函数中使用环境变量

  18. 18

    如何检查构建参数在Jenkinsfile中是否可用

  19. 19

    Jenkinsfile:如何使用命名参数调用groovy函数

  20. 20

    如何在Jenkinsfile的循环中要求用户输入

  21. 21

    如何在jenkinsfile的shell命令中使用pom版本?

  22. 22

    如何知道哪个用户在Jenkinsfile中运行构建

  23. 23

    如何在 Jenkinsfile 的 for 循环中正确使用变量

  24. 24

    在 Jenkinsfile 中,如何访问在 sh 步骤中声明的变量?

  25. 25

    如何在 Jenkinsfile 的 powershell 中创建环境变量?

  26. 26

    如何抑制NUnit控制台输出?

  27. 27

    Rust:如何覆盖控制台输出?

  28. 28

    如何保存仍显示控制台输出

  29. 29

    如何编辑控制台输出

热门标签

归档