gpt4 book ai didi

docker - 在Jenkins中构建和运行Docker容器

转载 作者:行者123 更新时间:2023-12-02 21:09:08 24 4
gpt4 key购买 nike

我需要在Jenkins中运行docker容器,以便可以在以下步骤中运行pycodestyle之类的已安装库。

  • 我成功构建了Docker容器(在Dockerfile中)
  • 如何访问容器,以便可以在下一步中使用它? (请在下面的“构建”步骤中查找>> <<代码)

  • 谢谢
        stage('Build') {
    // Install python libraries from requirements.txt (Check Dockerfile for more detail)


    sh "docker login -u '${DOCKER_USR}' -p '${DOCKER_PSW}' ${DOCKER_REGISTRY}"
    sh "docker build \
    --tag '${DOCKER_REGISTRY}/${DOCKER_TAG}:latest' \
    --build-arg HTTPS_PROXY=${PIP_PROXY} ."
    >> sh "docker run -ti ${DOCKER_REGISTRY}/${DOCKER_TAG}:latest sh" <<<
    }
    }

    stage('Linting') {
    sh '''
    awd=$(pwd)
    echo '===== Linting START ====='
    for file in $(find . -name '*.py'); do
    filename=$(basename $file)
    if [[ ${file:(-3)} == ".py" ]] && [[ $filename = *"test"* ]] ; then
    echo "perform PEP8 lint (python pylint blah) for $filename"
    cd $awd && cd $(dirname "${file}") && pycodestyle "${filename}"
    fi
    done
    echo '===== Linting END ====='
    '''
    }

    最佳答案

    您需要将Jenkins作业(包含python项目)的工作空间作为卷安装(请参阅“docker run -v”选项)到您的容器,然后在该容器中运行“下一步”构建步骤。您可以通过提供 shell 脚本作为项目源代码的一部分来执行此操作,该脚本将执行“下一步”或在上一个构建阶段中编写此脚本。

    就像这样:

    sh "chmod +x build.sh"
    sh "docker run -v $WORKSPACE:/workspace ${DOCKER_REGISTRY}/${DOCKER_TAG}:latest /workspace/build.sh"

    build.sh是一个可执行脚本,它是项目工作区的一部分,执行“下一步”。

    $ WORKSPACE是您的jenkins作业使用的文件夹(通常为/ var / jenkins_home / jobs // workspace-由Jenkins作为 build variable提供。

    请注意:此解决方案要求Docker守护程序与Jenkins在同一主机上运行!否则,工作空间将对您的容器不可用。

    另一个解决方案是将Jenkins作为Docker容器运行,因此您可以轻松地与在构建作业中运行的容器共享Jenkins的home / workspace,如下所示:

    Running Jenkins tests in Docker containers build from dockerfile in codebase

    关于docker - 在Jenkins中构建和运行Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083531/

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