在上一篇 项目代码版本管理和发布-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项目开展










