linux - Jenkinsfile 环境变量不反映在脚本部分中调用的 Makefile
问题描述
我有以下 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
有人可以建议吗?
解决方案
从对我的帖子发表评论的 Zelnes 获得帮助,我进行了以下更改,并且我能够在我的 makefile 中使用 jenkinsfile env var。我在 jenkins 文件中进行了以下更改。
script{
sh"""
make print-jenkinsfile-env-var CREDS=${CREDS}
"""
}
推荐阅读
- redis - 如何创建远程 Redis 实例的备份?
- c - 100门问题解决方案没有按预期工作
- ios - iPhone/iPad 的 Chrome 浏览器支持 WebRTC?
- sql-server - MS SQL Server 2014 - 创建用户定义的表类型并在同一事务中使用时出现死锁错误
- python - 使用更新的 Firefox 版本连接拒绝 geckodriver
- docker - 将文件从主机挂载到 Docker 容器
- java - 设置 Java 应用程序以使用实时或测试系统
- puppeteer - 在 AWS 工作区上安装 Puppeteer - SELF_SIGNED_CERT_IN_CHAIN 时出错
- microsoft-graph-api - 为什么我在使用 Microsoft Graph Api 路由 GET /sites/{site-id}/pages 时突然收到 invalidRequest?
- javascript - aws lambda中的节点execFile python脚本