Jenkinsfile(脚本化)将shell $ HOME设置为$ {env.WORKSPACE}

时间:2018-05-21 10:00:20

标签: jenkins groovy jenkins-pipeline

我正在为我的构建使用Docker容器,当然import java.util.zip.GZIPInputStream; //your method begins from here final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); S3Object object = s3.getObject("your-bucket", "file-path"); return ResponseEntity.ok(IOUtils.toString(new GZIPInputStream(object.getObjectContent()))); 变量指向Jenkins用户主页($HOME),这会导致问题,例如如果作业并行运行并尝试将内容写入/home/jenkins等等。

在脚本化的Jenkins文件中全局设置$HOME$HOME的所需方法是什么?

${env.WORKSPACE}中包装所有shell步骤似乎很奇怪。

这是脚本化管道的缩小版本,它处理多个Docker镜像并用withEnv(["HOME=${WORKSPACE}]){ ... }包裹$HOME的设置:

withEnv

1 个答案:

答案 0 :(得分:0)

用Env([“ HOME = $ {WORKSPACE}]){...}包装所有shell步骤似乎很奇怪。

当然,这看起来很奇怪,但是它设置了容器的工作目录,并且进行了卷绑定以将必要的文件传输到容器中。您可以在日志中看到它...

docker run -t -d -u 996:994 -w /var/lib/jenkins/workspace/python-test-pipeline@2 -v /var/lib/jenkins/workspace/python-test-pipeline@2:/var/lib/jenkins/workspace/python-test-pipeline@2:rw,z -v /var/lib/jenkins/workspace/python-test-pipeline@2@tmp:/var/lib/jenkins/workspace/python-test-pipeline@2@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** python:alpine cat