赞
踩
docker run jenkinsci/blueocean
,那么Jenkins的工作目录是 /var/jenkins_home/workspace
/var/lib/jenkins/workspace
官网doc
博客blog.mafeifan.com/
建议使用的Docker映像是[`jenkinsci/blueocean` image](https://link.juejin.cn?target=https%3A%2F%2Fhub.docker.com%2Fr%2Fjenkinsci%2Fblueocean%2F "https://hub.docker.com/r/jenkinsci/blueocean/")(来自 the [Docker Hub repository](https://link.juejin.cn?target=https%3A%2F%2Fhub.docker.com%2F "https://hub.docker.com/"))。 该镜像包含当前的[长期支持 (LTS) 的Jenkins版本](https://link.juejin.cn?target=https%3A%2F%2Fwww.jenkins.io%2Fdownload "https://www.jenkins.io/download") (可以投入使用) ,捆绑了所有Blue Ocean插件和功能。这意味着你不需要单独安装Blue Ocean插件。
注意 Blue Ocea可以理解成Jenkins UI页面的皮肤插件\
Jenkins直接安装在Linux上,需要提前安装java的jdk,因为Jenkins依赖它。而利用docker安装Jenkins,可以直接使用官方dodcker镜像,不需要安装依赖,简单方便
docker run image
直接安装Jenkinsbash 复制代码 docker run \ -u root \ # 必须给予Jenkins足够权限,否则部署在远程服务器上会报错'无法连接Jenkins' --rm \ #(可选)容器关闭时自动删除自己,即 `docker stop 容器id` ,这个docker 容器会被删除 -d \ # 在后台运行容器 -p 8080:8080 \ # 映射`jenkinsci/blueocean` 容器端口8080到主机上的端口8080 -p 50000:50000 \ #1 -v jenkins-data:/var/jenkins_home \ #2 -v /var/run/docker.sock:/var/run/docker.sock \ #3 --name jenkins-service \ # 给容器起别名 --restart always \ # 容器总是自动重启,避免Jenkins重启后容器停止而不启动 jenkinsci/blueocean # 无注释版本,请粘贴这个(没有加--rm) docker run \ -u root \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ --name jenkins-service \ --restart always \ jenkinsci/blueocean
参数功能 | #1 -p(可选)将 jenkinsci/blueocean 容器的端口50000 映射到主机上的端口50000。详细的看官方文档 | #2 -v(可选,但强烈建议)映射在容器中的/var/jenkins_home 目录到具有名字 jenkins-data 的volume。 如果这个卷不存在,那么这个 docker run 命令会自动为你创建卷。 如果您希望每次重新启动Jenkins(通过此 docker run ... 命令)时保持Jenkins状态,则此选项是必需的 。 如果你没有指定这个选项,那么在每次重新启动后,Jenkins将有效地重置为新的实例。 注意: 所述的 jenkins-data 卷也可以 docker volume create 命令创建: docker volume create jenkins-data 代替映射 /var/jenkins_home 目录转换为Docker卷,还 可以将此目录映射到计算机本地文件系统上的目录。 例如,指定该选项 -v $HOME/jenkins:/var/jenkins_home 会将容器的 /var/jenkins_home 目录映射 到 本地计算机上目录中的 jenkins 子目录, 该$HOME目录通常是 /Users/<your-username>/jenkins 或/home/<your-username>/jenkins 。 | #3 -v(可选 /var/run/docker.sock 表示Docker守护程序通过其监听的基于Unix的套接字。 该映射允许 jenkinsci/blueocean 容器与Docker守护进程通信, 如果 jenkinsci/blueocean 容器需要实例化其他Docker容器,则该守护进程是必需的。 如果运行声明式管道,其语法包含agent 部分用 docker - 例如, agent { docker { ... } } 此选项是必需的。 在Pipeline Syntax 页面上阅读更多关于这个的信息 |
---|
docker-compose
安装Jenkins浏览器输入
ip + 端口
,进入Jenkins
通过ip addr可查看Linux的ip地址,如果没有看见,说明网卡没有启动,具体自行百度
docker logs -n=25 容器id
直接看到密码docker exec -it 容器名 bash
,输入cat /var/jenkins_home/secrets/initialAdminPassword
选择插件来安装
bash
复制代码
# 1. 修改 plugin manager 中update site 的url为清华镜像源https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
# 2. 修改服务器配置
docker exec -it 容器id /bin/bash
cd /var/jenkins_home/updates
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
# 3. 重启Jenkins服务
docker restart docker容器
如果不是通过docker安装Jenkins而是直接安装,那么需要
cd /var/lib/jenkins/updates
,最后通过systemctl restart jenkins
重启Jenkins
进入plugin manager
安装如下插件
注意 安装完插件后需要重启Jenkins
credentials是可以选择输入账号密码,也可以选择输入ssh密钥(自行百度)
3.1.1 选择参数化构建,即使用tag,方便代码回滚
(SCM,全称Software Configuration Management,中文翻译为软件配置管理,git是scm工具,就是实现scm的一种方法)
Jenkins会定时扫描整个项目源码,系统开销较大,不推荐使用
流水线脚本(Jenkinsfile)
一般放在ui界面、项目源码里面或是单独放在一个git仓库里(推荐选择后面两种,方便版本控制,因为Jenkinsfile也会有多个版本,而且也可以防止Jenkins崩溃等极端状况发生)
参考文档1 # Jenkins教程(三)添加凭据与流水线拉取Git代码
惨痛教训
一定给任务设置超时监测
给任务设置超时监测,会避免流水线出bug卡死服务器
groovy
复制代码
timeout(time: 3, unit: 'MINUTES') {
sh './health-check.sh'
}
npm装包有时会出现依赖拉不下来,从而导致由于网络问题导致的构建失败,而yarn会在第一次构建的时候就生成缓存,后面构建的时候,会先看缓存区有没有package.json里用到的依赖包,如果有的话就不会下载,没有才会下载,提高了效率。
bash
复制代码
node -v
npm install -g yarn -registry=https://registry.npm.taobao.org
yarn -v
yarn install --pure-lockfile
#--pure-lockfile 这个参数是在服务器install不生成yarn.lock,防止服务器和本地代码冲突
yarn run build
参考文章 www.artacode.com/post/ci-cd/…
使用变量一定要使用双引号,带变量的字符串只能用双引号,不能用单引号
groovy 复制代码 pipeline { agent any environment { git_url = 'https://gitee.com/xxxxxx' git_auth = 'e767d8bb-daf5-4d85-91c9-e34545215c44' } stages { stage('拉取代码') { steps { echo "${git_url}" echo "${git_auth}" } } } }
注意 不能使用
docker -it 容器名 command
, 只能使用docker -i 容器名 command
,因为是通过publish over ssh插件执行的命令,而不是在终端上。否则会报错ERROR: Exception when publishing, exception message [Exec exit status not zero. Status [1]]
,并且不会有其他详细错误提示。
bash
复制代码
# 执行sh脚本文件,在终端中输入完全没问题,但使用publish over ssh 执行就会退出,导致构建失败
docker compose up -d
docker exec -i web bash start.sh
需要安装 插件Role-based Authorization Strategy
主要是配置好Jenkins机器人的id,因为在Jenkinsfile中填的是id
用法是cleanWs()
在此疾速成长的科技元年,编程就像是许多人通往无限可能世界的门票。而在编程语言的明星阵容中,Python就像是那位独领风 骚的超级巨星, 以其简洁易懂的语法和强大的功能,脱颖而出,成为全球最炙手可热的编程语言之一。
Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多
”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。
如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。
这里给大家展示一下我进的兼职群和最近接单的截图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。