Jenkinsfile环境变量没有反映在脚本部分调用的Makefile中。

0 人关注

我有以下的Jenkins文件,我试图在make文件中打印Jenkins文件中定义的环境变量。但是,它没有反映在make文件中。它仍然是空的。

pipeline {
  environment {
      CREDS = credentials('some jenkins credential id')
  agent{
     kubernetes {
        label 'mypod'
        containerTemplate {
            name 'ubuntu'
            image 'ubuntu:16.04'
            ttyEnabled true
            command 'cat'
  stages{
      stage('execute Makefile'){
         script{
           sh"""
             make print-jenkinsfile-env-var
             echo ${CREDS_USR}
             echo ${CREDS}

下面是我的Makefile。

usercred := $(CREDS)
export usercred
username := $(CRED_USR)
export username
testuser := 'newvar'
export testuser
print-jenkinsfile-env-var:
     @echo "$$usercred"
     @echo "$$username"
     @echo "$$testuser"

建议在make文件中进行编辑,它也没有打印。

usercred := $(CREDS)
export usercred
username := $(CRED_USR)
export username
testuser := 'newvar'
export testuser
print-jenkinsfile-env-var:
     @echo $(usercred)
     @echo $(username)
     @echo "$$testuser"

Testuser被打印出来了,因为它是在Makefile中定义的,但其他两个变量被打印为空。 我可以在脚本部分明确地打印环境变量,但在Makefile中却不能。

我正在寻找以下的工作方法

push-package:
#tgz file creation step
#push the package 
@curl -u $(CREDS) -X PUT "jfrog artifactory repo url" -T *tgz

但是,我的Makefile没有得到Jenkins文件环境中存在的$(CRED)的值。然而,我可以在Jenkins文件中执行如下相同的脚本

curl -u ${CREDS} -X PUT "jfrog artifactory repo url" -T *tgz

谁能建议一下?

4 个评论
你把 usercred 设置为make变量,但在你的目标中却把它作为shell变量来引用。用 @ echo $(usercred) 代替
我做了,但没有打印。基本上,我在寻找直接使用下面脚本的用户证书。@curl -u $(CREDS) -X PUT "jfrog artifactory repo url" -T *tgz 但信条并没有反映在make文件中,因此无法推送软件包。
你可以调用 make ... CREDS=${CREDS} 并在你的makefile中调用 @echo $(usercred) 。你的 username 是空的,因为 CRED_USR 从未被设置,所以EMTPY也是如此。
非常感谢Zelnes,你拯救了我。
linux
jenkins
makefile
jenkins-pipeline
Rahul Mohan
Rahul Mohan
发布于 2018-07-18
2 个回答
Rahul Mohan
Rahul Mohan
发布于 2021-08-15
已采纳
0 人赞同

在Zelnes的帮助下,我做了以下修改,我可以在我的makefile中使用jenkinsfile的环境变量。我在jenkins文件中做了如下改动。

script{
       sh"""
         make print-jenkinsfile-env-var CREDS=${CREDS}
    
user6882413
user6882413
发布于 2021-08-15
0 人赞同