使用 Gitlab CI 完成持续继承和持续部署
1 gitlab-runner
我们要使用 gitlab-runner
作为执行者,帮助我们在服务器上部署项目。
首先我们需要在服务器上安装好 gitlab-runner。
1 | 我使用的是 Unbuntu 16.04 |
更多请参考官方安装方法:Install GitLab Runner using the official GitLab repositories
这里有一个小坑,就是要以你运行项目的用户进行启动 gitlab-runner。
这样有什么好处呢?通常情况下,我们的软件环境变量都是基于用户的,所以基本不会导致环境问题。
1 | 把 $your_user_name 替换成你的用户名 |
注意!在服务器重启后可能导致启动用户的改变,进一步引发诸多问题。解决办法如下:
1 | sudo service gitlab-runner stop |
2 认证
我们需要 gitlab 和服务器上 gitlab-runner 互相认证才行,也就是说 gitlab 在收到部署命令后需要知道该把它转发给谁来执行。
打开 Gitlab,找到你要部署的项目,然后依次点开 Settings –> CI/CD –> Runners,找到左边的 Specific Runners 的 Set up a specific Runner manually。
记录一下序号 2 和序号 3 的值,等下要用。
打开服务器命令行,准备注册 gitlab-runner 服务。
1 | sudo gitlab-runner register |
1 | # 查看当前所有运行的服务 |
3 添加部署脚本
上述工作完成后,开始准备部署脚本。
在项目根目录下添加一个.gitlab-ci.yml 文件。
内容为:
1 | stages: |
- script: 写部署脚本
- only: 指定触发分支
- tags: 指定触发 runner
更详细配置请参考:通过 .gitlab-ci.yml 配置任务
完成后,push 一下吧!
4 其他
1. git 如何保存账号密码
1 | git config --global credential.helper store |
下一次输入账号密码后会自动保存到 $HOME 下的 .git-credentials。
2. 出现错误:”cannot open .git/FETCH_HEAD: Permission denied”
- 首先检查 .git/FETCH_HEAD 的权限,如果问题请修改。
- 其次修改 gitlab-runner 的用户为当前用户,如何修改请查看本文第一部分。
- 最后不要忘记重启服务。
1 | sudo service gitlab-runner restart |
3. 如果本次提交不想部署怎么办?
在 commit 的提交信息中加入 [ci skip]
即可。
5 参考
使用 Gitlab CI 完成持续继承和持续部署