gpt4 book ai didi

在流水线中使用容器进行编译构建

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章在流水线中使用容器进行编译构建由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

 配置DockerInDocker 。

在流水线中使用容器进行编译构建

配置JenkinsMaster挂载Docker 。

docker run --name jenkins -itd \  。

       -p 8081:8080 \  。

       -p 50000:50000 \  。

       -v ~/jenkins:/var/jenkins_home \  。

       -v /var/run/docker.sock:/var/run/docker.sock \  。

       -v /usr/local/bin/docker:/usr/bin/docker \  。

       jenkins/jenkins:lts  。

解决权限问题/以root用户运行 。

docker exec -it -u root jenkins bash  。

usermod -aG root jenkins  。

  。

id jenkins  。

uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins),0(root),1(daemon)  。

调试流水线 。

pipeline {  。

    agent {  。

        docker {   。

            image 'maven:3.6.3-jdk-8'   。

            args '-v $HOME/.m2:/root/.m2'  。

        }  。

    }  。

    stages {  。

        stage('Build') {  。

            steps {  。

                sh 'mvn -v'  。

            }  。

        }  。

    }  。

}  。


Started by user admin  。

Replayed #40  。

Running in Durability level: MAX_SURVIVABILITY  。

[Pipeline] Start of Pipeline  。

[Pipeline] node  。

Running on Jenkins in /var/jenkins_home/workspace/test  。

[Pipeline] {  。

[Pipeline] isUnix  。

[Pipeline] sh  。

+ docker inspect -f . maven:3.6.3-jdk-8  。

.  。

[Pipeline] withDockerContainer  。

Jenkins seems to be running inside container 5373edddcdadb63df5e5c6ed7f6149719ad749536242f10c06cbceca511a9898  。

$ docker run -t -d -u 1000:1000 -w /var/jenkins_home/workspace/test --volumes-from 5373edddcdadb63df5e5c6ed7f6149719ad749536242f10c06cbceca511a9898 -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** maven:3.6.3-jdk-8 cat  。

$ docker top 01102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2 -eo pid,comm  。

[Pipeline] {  。

[Pipeline] stage  。

[Pipeline] { (Test)  。

[Pipeline] sh  。

+ mvn -v  。

Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)  。

Maven home: /usr/share/maven  。

Java version: 1.8.0_242, vendor: Oracle Corporation, runtime: /usr/local/openjdk-8/jre  。

Default locale: en, platform encoding: UTF-8  。

OS name: "linux", version: "4.19.76-linuxkit", arch: "amd64", family: "unix"  。

[Pipeline] }  。

[Pipeline] // stage  。

[Pipeline] }  。

$ docker stop --time=1 01102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2  。

$ docker rm -f 01102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2  。

[Pipeline] // withDockerContainer  。

[Pipeline] }  。

[Pipeline] // node  。

[Pipeline] End of Pipeline  。

Finished: SUCCESS  。

每个阶段指定不同的Docker容器运行 。

pipeline {  。

    agent none  。

    stages {  。

        stage('ServiceBuild') {  。

            agent {  。

                docker {   。

                    image 'maven:3.6.3-jdk-8'   。

                    args '-v $HOME/.m2:/root/.m2'  。

                }  。

            }  。

            steps {  。

                sh 'mvn -v  && sleep 15'  。

            }  。

        }  。

        。

        stage('WebBuild') {  。

            agent {  。

                docker {   。

                    image 'node:7-alpine'   。

                    args '-v $HOME/.m2:/root/.m2'  。

                }  。

            }  。

            steps {  。

                sh 'node -v  && sleep 15'  。

            }  。

        }  。

    }  。

}  。

前端流水线 。

pipeline {  。

    agent none  。

    stages {  。

        stage('WebBuild') {  。

            agent {  。

                docker {   。

                    image 'node:10.19.0-alpine'   。

                    args '-u 0:0 -v /var/jenkins_home/.npm:/root/.npm'  。

                }  。

            }  。

            steps {  。

                sh """  。

                    id   。

                    ls /root/.npm  。

  。

                    ls /root/ -a  。

                    npm config set unsafe-perm=true  。

                    npm config list  。

                    npm config set cache  /root/.npm  。

                    #npm config set registry https://registry.npm.taobao.org  。

                    npm config list  。

                    ls   。

                    npm install  --unsafe-perm=true && npm run build  && ls -l dist/ && sleep 15   。

                """  。

            }  。

        }  。

    }  。

}  。

FAQ 。

npm构建权限问题:使用root用户构建。设置容器运行用户 -u 0:0 。

npm打包慢问题:

2.1 挂载缓存卷 。

-v /var/jenkins_home/.npm:/root/.npm 。

2.2 设置淘宝源 。

npm config set registry https://registry.npm.taobao.org 。

原文地址:https://mp.weixin.qq.com/s/poHYV8ntlhafgUxd_LOwvA 。

最后此篇关于在流水线中使用容器进行编译构建的文章就讲到这里了,如果你想了解更多关于在流水线中使用容器进行编译构建的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

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