我有下面的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)的值。但是,我可以像在Jenkinsfile中那样执行相同的脚本
curl -u ${CREDS} -X PUT "jfrog artifactory repo url" -T *tgz
有人可以建议吗?
答案 0 :(得分:1)
得到Zelnes的帮助,他对我的帖子进行了评论,我做了以下更改,并且能够在我的makefile中使用jenkinsfile env var。我在jenkins文件中进行了以下更改。
script{
sh"""
make print-jenkinsfile-env-var CREDS=${CREDS}
"""
}