Groovy sed命令赢得';当从Jenkins处执行时,不要替换我的字符串
我有一个Groovy sed命令赢得';当从Jenkins处执行时,不要替换我的字符串,groovy,sed,jenkins-pipeline,jenkins-groovy,Groovy,Sed,Jenkins Pipeline,Jenkins Groovy,我有一个config.yml文件,其中包含以下内容: access_key: ACC_KEY secret_key: SEC_KEY 现在,我正试图用实际的访问密钥ans保密密钥替换ACC\u密钥和SEC\u密钥 我有一个groovy方法,它执行shell脚本,如下所示: def update(){ return this.execCmd("'sed -i s/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g' /root/.
config.yml
文件,其中包含以下内容:
access_key: ACC_KEY
secret_key: SEC_KEY
现在,我正试图用实际的访问密钥
ans保密密钥
替换ACC\u密钥
和SEC\u密钥
我有一个groovy方法,它执行shell脚本,如下所示:
def update(){
return this.execCmd("'sed -i s/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g' /root/.config/config.yml")
}
我在方法中指定sed命令的方式是否有问题?因为,每当我运行Jenkins作业时,我都能够获取
${access\u token}
和${secret\u token}
的值,但是它不会用这些值替换ACC\u KEY和secu KEY 如果看不到您拥有的整个config.yml,这将非常困难。使用像这样的config.yml,以及我下面介绍的groovy方法,应该可以满足您的需要
config.yml
config:
dockerfile: .woloxci/Dockerfile
project_name: some-project-name
services:
- postgresql
- redis
steps:
analysis:
- bundle exec rubocop -R app spec --format simple
- bundle exec rubycritic --path ./analysis --minimum-score 80 --no-browser
setup_db:
- bundle exec rails db:create
- bundle exec rails db:schema:load
test:
- bundle exec rspec
security:
- bundle exec brakeman --exit-on-error
audit:
- bundle audit check --update
environment:
RAILS_ENV: test
GIT_COMMITTER_NAME: a
GIT_COMMITTER_EMAIL: b
LANG: C.UTF-8
access_key: ACC_KEY
secret_key: SEC_KEY
参考:
Groovy方法:
您可以在Jenkins中设置环境变量并像这样访问它们
println "access_key : ${env.access_key} , secret_key: ${secret_key}"
参考资料:如果看不到您拥有的整个config.yml,这很难。使用像这样的config.yml,以及我下面介绍的groovy方法,应该可以满足您的需要 config.yml
config:
dockerfile: .woloxci/Dockerfile
project_name: some-project-name
services:
- postgresql
- redis
steps:
analysis:
- bundle exec rubocop -R app spec --format simple
- bundle exec rubycritic --path ./analysis --minimum-score 80 --no-browser
setup_db:
- bundle exec rails db:create
- bundle exec rails db:schema:load
test:
- bundle exec rspec
security:
- bundle exec brakeman --exit-on-error
audit:
- bundle audit check --update
environment:
RAILS_ENV: test
GIT_COMMITTER_NAME: a
GIT_COMMITTER_EMAIL: b
LANG: C.UTF-8
access_key: ACC_KEY
secret_key: SEC_KEY
参考:
Groovy方法:
您可以在Jenkins中设置环境变量并像这样访问它们
println "access_key : ${env.access_key} , secret_key: ${secret_key}"
参考资料:这句话显然是错的。单引号应该围绕
sed
脚本
# XXX Probably still wrong; see below
sed -i 's/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g' /root/.config/config.yml
尽管如果这些变量来自环境,这也不正确;shell不会在单引号内替换变量,但可以使用双引号:
sed -i "s/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g" /root/.config/config.yml
如果有一种方法可以将这些值插入Groovy中已经存在的字符串中,那么这种方法可能会更加健壮。引用显然是错误的。单引号应该围绕
sed
脚本
# XXX Probably still wrong; see below
sed -i 's/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g' /root/.config/config.yml
尽管如果这些变量来自环境,这也不正确;shell不会在单引号内替换变量,但可以使用双引号:
sed -i "s/ACC_KEY/${access_token}/g; s/SEC_KEY/${secret_token}/g" /root/.config/config.yml
如果有一种方法可以将这些值插入Groovy中已经存在的字符串中,那么这种方法可能会更加健壮