您现在的位置是:首页 > Javascript
当前栏目
在流水线中使用容器进行编译构建
2023-03-14 09:36:22 时间
配置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
相关文章
- 鲜为人知但很有用的 HTML 属性
- 翻转再翻转!有意思的水平横向溢出滚动
- 自定义计数器小技巧!CSS 实现长按点赞累加动画
- 过五关!React高频面试题指南
- 软件开发中的十个认知偏差
- 不需要 JS!仅用 CSS 也能达到监听页面滚动的效果!
- 一文读懂TypeScript类型兼容性
- Vue 的响应式原则与双向数据绑定
- 快速掌握 TypeScript 新语法:Infer Extends
- JWT教你如何证明你是我的人!
- 一篇带给你 V8 GC 的实现
- 面试官:请使用JS完成一个LRU缓存?
- 通过可视化来学习JavaScript事件循环
- 新的跨域策略:使用 COOP、COEP 为浏览器创建更安全的环境
- 为什么有人说 vite 快,有人却说 vite 慢?
- 种草 Vue3 中几个好玩的插件和配置
- 超全面的前端工程化配置指南
- Vue 状态管理未来样子
- Volatile关键字能保证原子性么?
- 面试突击:SpringBoot 有几种读取配置文件的方法?