配置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


