部署Jenkins
基于 Jenkins + GitHub + Docker 实现简单的一键自动打包部署项目
环境: ubuntu + git(GitHub)
Jenkins 配置
Jenkins中文官网:https://www.jenkins.io/zh/
1. Jenkins启动及初始化
Docker安装Jenkins(8080端口可调整为其他)
1
docker run --name jenkins -u root --restart=always -d -p {你希望的端口,默认可填为8080}:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
安装完成后访问url:http://{Jenkins所部署服务器的Ip}:{8080或自定义的端口}
解锁Jenkins(首次访问需要)
进入Jenkins容器
1
docker exec -it {Jenkins容器名} bash
查看解锁密码
1
cat /var/lib/jenkins_home/secrets/initialAdminPassword
在网页上输入解锁密码
安装插件
选择【安装推荐插件】 即可
创建管理员账户
该账户需记住!
2. Jenkins系统配置
安装 Maven Integration 插件
【Manage Jenkins】-【Manage Plugins】-【Available】-【输入maven进行搜索】
配置 Maven
【Manage Jenkins】-【Tools】-【拉到最下面Maven栏】,选择你的Maven版本
检查 Git 插件是否已经安装
【Manage Jenkins】-【Manage Plugins】-【Available】-【输入Git进行搜索】
- 如果没有搜索结果(或【Installed】标签下有结果),即代表 Git 插件已安装
- Tips:如果有显示存在 Git 插件可安装,那么大概率是因为 Mailer 插件版本导致 Git 插件自动安装失败导致的,先进行手动安装尝试,步骤如下图:
这一步可能会因为**Mailer**版本问题导致安装失败,解决办法详见下方【常见问题】
3. GitHub配置
这一步需要获取一个 GitHub 的 ssh 密钥,使得 Jenkins 可以直接访问你的代码仓库并pull代码
- 登录你的Github网页版
- 【网页右上角你的头像】-【Settings】-【SSH and GPG keys】-【New SSH key】
- 具体ssh key生成及配置方法可见GitHub官方指引(https://docs.github.com/en/authentication/connecting-to-github-with-ssh)
- 按照指引将密钥添加到GitHub服务端
- 第3步中所生成的密钥会有两个文件,其中一个是不带 .pub 后缀的,我们在后面配置Jenkins项目的时候需要用到这个来配置Credential以连接到GitHub
4. Jenkins 项目配置
- 新建项目
- 【Dashboard】-【New Item】
- 填写项目名,选择 Freestyle Project,如下图:
- 【Source Code Management】-【Git】
- 【Source Code Management】-【Git】
- 点击【Add】,选择【Jenkins】,然后会有一个弹窗,我们在这添加一个密钥(上面所提到的生成的不带.pub后缀的密钥文件)
- 配置打包所需要的Maven设置,【Build Steps】-【Invoke top-level Maven targets】
- 点击【Save】,保存项目配置
5. 测试打包
【Dashboard】-【点击你的项目】-【Build Now】
检查宿主机挂载目录下是否生成了jar包,如果有则说明打包流程没有问题
1
ls /var/jenkins_home/workspace/你的项目名称/target
自动部署
1. Dockerfile
需要在你的项目文件夹根目录下写一个打镜像的Dockerfile文件,如有疑惑可查阅相关Docker学习资料进行知识补充,所写的Dockerfile是需要push到GitHub仓库中的,Dockerfile内容如下:
1 | # 基础镜像 |
2. Jenkins打包后执行shell脚本
【Dashboard】-【点击你的项目】-【Configure】-【Build Steps】-【Add build step】-【Execute shell】(目的是在Jenkins 打好jar包后,增加一个打docker镜像以及启动容器的步骤,这步通过增加一个执行脚本来处理)
脚本内容如下:
1
2
3
4
5
6cd /var/jenkins_home/workspace/{你的项目名字}
docker stop {所希望的container名} || true
docker rm {所希望的container名} || true
docker rmi {所希望的image名} || true
docker build -t {所希望的image名} .
docker run -d -p 9643:9643 --name {所希望的container名} {所希望的image名}:latest重复上面测试打包的操作,即点击【Build Now】进行打包部署,顺利的话你已经可以通过docker指令看到你的应用的container已经启动了
1
docker container ls
Tips && 常见问题
如何重启Jenkins
点击 Details 显示报错如下:
1 | java.io.IOException: Failed to load: Git plugin (git 4.14.3) |
解决方法:
- 重启Jenkins,然后在【Manage Jenkins】中找到升级系统的提示,点击升级系统,如下图:
- 系统升级后重启Jenkins,然后进行 Mailer 插件升级:
- 安装完 Mailer 后重启Jenkins加载更新,**Git**会自动被下载