基础环境说明
- Docker 20.10
- Centos 7.6
- Jenkins 2.332.3
- Jenkins Images jenkinsci/blueocean:latest
- blueocean版本内置很多插件,例如JDK11,Git等。
- docker-compose 1.25
- Github
项目发布流程
Jenkins基础环境部署
-
下载镜像。
docker pull jenkinsci/blueocean
-
创建
Jenkins
本地目录/data/jenkins/data
-
启动
version: '3' services: jenkins: image: jenkinsci/blueocean:latest container_name: jenkins user: root ports: - "8080:8080" - "50000:50000" volumes: - /data/jenkins/data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose - /data/software/jdk1.8.0_201:/usr/local/java - /data/software/apache-maven-3.6.3:/usr/local/maven - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone privileged: true network_mode: "host"
user: root
指定容器内运行Jenkins
服务的是root
用户,默认情况是Jenkins
用户。如果是默认用户会出现写宿主机无权限问题。
ports
中指定端口映射,Jenkins web
默认端口是8080
。50000
端口暂时没用到,暂不描述。
volumes
映射中的配置line1 Jenkins
主目录/var/jenkins_home
映射到宿主机line2-3 Docker
容器内使用宿主机的docker
服务端命令,Jenkins
容器内打包docker
应用镜像line4
宿主机的docker-compose
映射到Jenkins
容器内供容器使用line5-6
将宿主机的java
以及maven
映射到容器内供Jenkins
使用。需要在Jenkins
界面配置java
以及maven
路径(Jenkins
容器中的路径)。line7-8
配置容器时区以及时间
-
默认启动
8080
端口。 -
如果出现以下问题,说明
Jenkins
下载以来插件过程中出错,大概率是网络问题。其实这个问题可以通过观看容器日志做出判断。将hudson.model.UpdateCenter.xml
文件中的源更新成国内源即可。- 界面访问失败
Jenkins
已离线https://updates.jenkins.io/update-center.json
无法解析unknownHostException
之类的错误
[root@localhost data]# cat /data/jenkins/data/hudson.model.UpdateCenter.xml <?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>http://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url> </site> </sites> [root@localhost data]#
-
初始化访问界面,按照要求输入初始化密码。
-
定义管理员用户名/密码。建议不要使用
admin/root
做管理员用户名。
自动构建
目标 将代码提交到仓库后,希望Jenkins直接触发构建流程,而不是用户登录到界面手动点击构建。
原理 Github
有一个通信功能叫Webhooks
,当用户提交代码到Github
,Github
通过Webhooks
通知Jenkins
拉将Github
代码拉到Jenkins
一端。拉取代码的过程中Github
需要验证Jenkins
身份,即Personal access tokens
。
配置Github Webhooks
-
进入Github项目页面,点击设置。
-
申请身份验证
进入Github
右上方的"settings" ->"Developer settings" -> "Personal access tokens" -> "Generate new token"
。保存生成的的token
。
-
进入对应的工程
"settings"
,设置本工程的Webhooks
-
配置
Jenkins
将Github
中的token
配置到Jenkins
。进入"Jenkins
管理"-> “系统配置” ->"Github"
5. 进入Jenkins
中具体项目,配置信息如下。
远程执行脚本
- 远程服务器配置好需要执行的脚本。
Jenkins
将项目构建成功后自动ssh
到指定服务器,执行相应脚本。
- 配置
Jenkins
远程到目标服务器的信息,由于远程服务器要求通过私钥登陆,所以Jenkins
服务需要配置私钥路径。
问题列表
Jenkins
容器启动出现权限问题。
容器中是基于jenkins
用户启动,但是对宿主机的目录没有读写权限。需要在docker-compose
中指定使用root
用户启动。
相关配置
maven配置
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
相关插件
1. Maven Integration plugin Version3.18
2. Publish Over SSH Version1.24
3. SSH Build Agents plugin Version1.814.vc82988f54b_10
4. SSH plugin Version2.6.1
引用
https://blog.csdn.net/weixin_39218464/article/details/120590493
https://blog.csdn.net/willyan2007/article/details/116753826
https://benpaodewoniu.github.io/2020/03/09/jenkins2/
更新记录
- 创建于
2022-05-24