在上一篇 项目代码版本管理和发布-1 文章中我们部署了
gitlab
,这篇我们在上篇的基础上部署jenkins
用于发布项目。
Jenkins
安装
安装 java
1 | sudo apt install openjdk-11-jdk |
1 | sudo wget -O /usr/share/keyrings/jenkins-keyring.asc \ |
注意上一个步骤可能会出错,因为我的 jenkins
和 gitlab
安装在了同一台机子上,jenkins
默认的监听端口是 8080
,而 gitlab
有程序已经占用了这个端口,我们需要修改 jenkins
的默认端口 (我在这里踩坑了好久,定义端口的配置信息太多了,导致一直没有改对)
1 | sudo vim /lib/systemd/system/jenkins.service |
设置虚拟机抛出 8090
端口允许访问
1 | # 获取临时密码 |
跟着推荐步骤完成初始化
先修改 admin
账号的密码 aa123456.
新建项目
我们针对 projectA
项目需要增加两个发布,一个是发布到正式环境,一个是发布到测试环境
- 克隆项目的两个分支
project-A-main-repo
,project-A-dev-repo
- 创建两个目录存放对外代码
project-A-main-out
,project-A-dev-out
(为什么不直接用克隆下来的代码库作为对外项目呢,是因为我们希望在克隆以后,在项目库先进行一些composer
或者npm
的操作,操作完以后再rsync
同步代码,如果直接用线上目录去操作,构建过程中如果出现问题,将会对线上项目产生重大影响) - 流程就是,在点击发布项目以后,克隆对应的分支,执行一些额外命令,然后同步代码至线上目录
因为下面的步骤为了省事都用了 sudo
权限,所以为了后续的操作不出问题,我们需要让 jenkins 用户也拥有 sudo
权限,但是线上环境需要对用户权限的把控更严谨些;这里因为我们的仓库代码和线上代码目录都在同一台机子上,使用简单的复制命令就行,如果线上环境就要严谨一点使用 rsync
,获取其他同步命令
1 | sudo mkdir -p /data/repositories/project-A-main-repo |
配置 jenkins
上的 project-A
Build Steps
执行 shell
1 | cd /data/repositories/project-A-main-repo \ |
如上也把 project-A
的 dev
分支也配置上
1 | cd /data/repositories/project-A-dev-repo |
shell
配置也类上,只要把相应的路径修改即可
最后测试
现在我们要模拟真实环境跑通流程:
- 在本地新建分支开发,然后合并到
dev
分支并且推送到远程仓库
每次开发之前保证是在 main
分支的最新代码基础下进行的
1 | git pull origin main |
在 main
分支上检出自己的开发分支
1 | git checkout -b feature-branch |
可以看到仓库中 dev
分支已经有最新的
- 发布
dev
分支的代码到外网
我们需要对 dev
的代码测试完成以后,再向管理员发起合并到 master
分支的请求,然后再发布代码
1 | sudo cat /data/app/project-A-dev-out/README.md |
- 合并请求
此时我们确定了 dev
分支的新功能代码没有问题,这时候我们可以发起合并请求和发布了,此处省略操作步骤
点击发布 main
分支
^_^ enjoy it,下一篇我们围绕如何发布一个
Laravel
项目开展