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

2025-05-29 0 55

配置DockerInDocker

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

配置JenkinsMaster挂载Docker

dockerrun–namejenkins-itd\\

-p8081:8080\\

-p50000: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用户运行

dockerexec-it-urootjenkinsbash

usermod-aGrootjenkins

idjenkins

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'

}

}

}

}

Startedbyuseradmin

Replayed#40

RunninginDurabilitylevel:MAX_SURVIVABILITY

[Pipeline]StartofPipeline

[Pipeline]node

RunningonJenkinsin/var/jenkins_home/workspace/test

[Pipeline]{

[Pipeline]isUnix

[Pipeline]sh

+dockerinspect-f.maven:3.6.3-jdk-8

.

[Pipeline]withDockerContainer

Jenkinsseemstoberunninginsidecontainer5373edddcdadb63df5e5c6ed7f6149719ad749536242f10c06cbceca511a9898

$dockerrun-t-d-u1000:1000-w/var/jenkins_home/workspace/test–volumes-from5373edddcdadb63df5e5c6ed7f6149719ad749536242f10c06cbceca511a9898-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-8cat

$dockertop01102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2-eopid,comm

[Pipeline]{

[Pipeline]stage

[Pipeline]{(Test)

[Pipeline]sh

+mvn-v

ApacheMaven3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f)

Mavenhome:/usr/share/maven

Javaversion:1.8.0_242,vendor:OracleCorporation,runtime:/usr/local/openjdk-8/jre

Defaultlocale:en,platformencoding:UTF-8

OSname:"linux",version:"4.19.76-linuxkit",arch:"amd64",family:"unix"

[Pipeline]}

[Pipeline]//stage

[Pipeline]}

$dockerstop–time=101102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2

$dockerrm-f01102f26f8957fc7c46d0f9d1118e38316e313707357cdc5332c7d62836e1df2

[Pipeline]//withDockerContainer

[Pipeline]}

[Pipeline]//node

[Pipeline]EndofPipeline

Finished:SUCCESS

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

pipeline{

agentnone

stages{

stage('ServiceBuild'){

agent{

docker{

image'maven:3.6.3-jdk-8'

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

}

}

steps{

sh'mvn-v&&sleep15'

}

}

stage('WebBuild'){

agent{

docker{

image'node:7-alpine'

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

}

}

steps{

sh'node-v&&sleep15'

}

}

}

}

前端流水线

pipeline{

agentnone

stages{

stage('WebBuild'){

agent{

docker{

image'node:10.19.0-alpine'

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

}

}

steps{

sh"""

id

ls/root/.npm

ls/root/-a

npmconfigsetunsafe-perm=true

npmconfiglist

npmconfigsetcache/root/.npm

#npmconfigsetregistryhttps://registry.npm.taobao.org

npmconfiglist

ls

npminstall–unsafe-perm=true&&npmrunbuild&&ls-ldist/&&sleep15

"""

}

}

}

}

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 在流水线中使用容器进行编译构建 https://www.kuaiidc.com/94989.html

相关文章

发表评论
暂无评论