gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:33:42 25 4
gpt4 key购买 nike

我正在使用 Docker 容器进行构建,$HOME 变量当然指向 Jenkins 用户主目录 (/home/jenkins),这可能会导致问题,例如如果作业并行运行并尝试将内容写入 $HOME

在脚本 Jenkinsfile 中全局将 $HOME 设置为 ${env.WORKSPACE} 所需的方法是什么?

将所有 shell 步骤包装在 withEnv(["HOME=${WORKSPACE}]){ ... } 中似乎很奇怪。

这是脚本化流水线的缩小版本,它处理多个 Docker 镜像并使用 withEnv 包装 $HOME 的设置:

#!groovy
DOCKER_IMAGES = ["python:3.5.0", "python:3.6.5"]

def get_stages(docker_image) {
stages = {
docker.image(docker_image).inside {

// The following line causes a weird issue, where pip tries to
// install into /usr/local/... instead of the virtual env.
// Any help figuring out what's happening is appreciated.
//
// def PYTHON_VENV = docker_image.replaceAll('[:.]', '') + 'venv'
//
// So we set it to 'venv' for all parallel builds now
def PYTHON_VENV = 'venv'
withEnv(["HOME=${env.WORKSPACE}"]){
stage("${docker_image}") {
echo "Running in ${docker_image}"
}
stage("Prepare") {
sh "echo 'Home is set to:' $HOME"
sh "echo 'Workspace is:' ${env.WORKSPACE}"

sh "rm -rf ${PYTHON_VENV}"
sh "python -m venv ${PYTHON_VENV}"
sh """
. ${PYTHON_VENV}/bin/activate
pip install -U pip setuptools wheel
"""
}
}
}
}
return stages
}


node('master') {

cleanWs()

def stages = [:]
for (int i = 0; i < DOCKER_IMAGES.size(); i++) {
def docker_image = DOCKER_IMAGES[i]
stages[docker_image] = get_stages(docker_image)
}

parallel stages
}

最佳答案

Wrapping all shell steps in withEnv(["HOME=${WORKSPACE}]){ ... } seems quite odd.

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

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 /工作区/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 猫

关于Jenkinsfile(脚本化)将 shell $HOME 设置为 ${env.WORKSPACE},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50446345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com