账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Jenkins中如何使用docker来编译代码?
    21
    0

    问题描述

    我想在Jenkins中使用Docker container 来编译代码。
    就是每次github上面push commit的时候就触发Jenkins来自动化编译。

    问题出现的平台版本及自己尝试过哪些方法

    我目前使用的是pipeline,但是从log看来好像没有使用Docker来编译代码。

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)
    Jenkinsfile

    pipeline {
        agent none
        stages {
            stage('Build') {
                agent {
                    docker { image 'zequanhannto/tina' }
                }
                steps {
                    sh "echo $PWD"
                    sh "source build/envsetup.sh"
                    sh "lunch astar_parrot-tina"
                    sh "make -j"
                    sh "pack -d"
                }
            }
            stage('Test') {
                steps {
                    echo 'Testing..'
                }
            }
            stage('Deploy') {
                steps {
                    echo 'Deploying....'
                }
            }
        }
    }

    Jenkins build log:

    Started by user admin
    Running in Durability level: MAX_SURVIVABILITY
    [Pipeline] stage
    [Pipeline] { (Build)
    [Pipeline] node
    Running on Jenkins in /root/.jenkins/workspace/tina-pipeline
    [Pipeline] {
    [Pipeline] sh
    [tina-pipeline] Running shell script
    + docker inspect -f . zequanhannto/tina
    .
    [Pipeline] withDockerContainer
    Jenkins does not seem to be running inside a container
    $ docker run -t -d -u 0:0 -w /root/.jenkins/workspace/tina-pipeline -v /root/.jenkins/workspace/tina-pipeline:/root/.jenkins/workspace/tina-pipeline:rw,z -v /root/.jenkins/workspace/tina-pipeline@tmp:/root/.jenkins/workspace/tina-pipeline@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 ******** zequanhannto/tina cat
    $ docker top f2049aa68d08f2c3fd548d2cabe8b6aae779db26a98f72b2e83146b51206405c -eo pid,comm
    [Pipeline] {
    [Pipeline] sh
    [tina-pipeline] Running shell script
    + echo /root/jenkins
    /root/jenkins
    [Pipeline] sh
    [tina-pipeline] Running shell script
    + source build/envsetup.sh
    /root/.jenkins/workspace/tina-pipeline@tmp/durable-5556332e/script.sh: 2: /root/.jenkins/workspace/tina-pipeline@tmp/durable-5556332e/script.sh: source: not found
    [Pipeline] }
    $ docker stop --time=1 f2049aa68d08f2c3fd548d2cabe8b6aae779db26a98f72b2e83146b51206405c
    $ docker rm -f f2049aa68d08f2c3fd548d2cabe8b6aae779db26a98f72b2e83146b51206405c
    [Pipeline] // withDockerContainer
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Test)
    Stage "Test" skipped due to earlier failure(s)
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] stage
    [Pipeline] { (Deploy)
    Stage "Deploy" skipped due to earlier failure(s)
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] End of Pipeline
    ERROR: script returned exit code 127
    Finished: FAILURE

    你期待的结果是什么?实际看到的错误信息又是什么?

    我加了个echo $PWD结果出现的是我host上面的文件夹,当我使用agent在Jenkinsfile里面的时候难道不是全部steps都在新建的docker container里面运行吗?该如何解决?

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 在Jenkins中使用Docker来编译代码,你需要创建一个Docker镜像,并将你的代码部署到该镜像中。以下是步骤:

      1. 首先,你需要创建一个Docker镜像。你可以使用Jenkins的Docker插件来创建Docker镜像。你可以在Jenkins中创建一个新的Dockerfile,然后使用Docker命令来构建镜像。

      创建Dockerfile的步骤如下:

      FROM jenkins/jenkins:latest WORKDIR /app COPY . . RUN make

      在Dockerfile中,你需要指定镜像的基版本、工作目录和从哪里复制文件到工作目录。最后,你需要运行make命令来构建镜像。

      1. 然后,你需要将你的代码部署到镜像中。你可以使用Jenkins的构建策略来实现这一点。你需要在构建策略中添加一个步骤,该步骤将你的代码编译为可执行文件,并将该文件添加到Docker镜像中。

      添加构建策略的步骤如下:

      ADD . .

      在添加文件的步骤中,你需要指定你的代码的目录。如果你的代码位于不同的目录中,你需要使用相对路径或绝对路径。

      1. 最后,你需要在Jenkins中运行构建作业,以部署你的Docker镜像。你可以使用Jenkins的插件来实现这一点。你需要在Jenkins中创建一个新的构建作业,然后在作业中运行docker build命令来构建你的Docker镜像。

      创建构建作业的步骤如下:

      POST https://your-jenkins-url.jenkins.io

      在作业中,你需要指定构建作业的名称、URL、构建策略和Jenkins用户的凭据。

      1. 最后,你需要测试你的Docker镜像,以确保它可以正常工作。你可以使用Jenkins的测试工具来实现这一点。你需要在Jenkins中创建一个新的测试作业,然后在作业中运行docker run命令来运行你的Docker镜像。

      创建测试作业的步骤如下:

      POST https://your-jenkins-url.jenkins.io POST https://your-jenkins-url.jenkins.io

      在作业中,你需要指定测试作业的名称、URL、测试用例和Jenkins用户的凭据。

      1. 最后,你需要发布你的Docker镜像,以便其他人可以使用它。你可以使用Jenkins的发布工具来实现这一点。你需要在Jenkins中创建一个新的发布作业,然后在作业中运行docker push命令来发布你的Docker镜像。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部