通过gitlab/gitlab-ci/gitlab-runner实现前端项目自动部署、发布
一、简单描述作用
开发者A在自己的电脑上写代码,提交代码到gitlab服务器上,gitlab服务器会根据项目根目录下的.gitlab-ci.yml,通知runner服务器执行相应命令,runner服务器克隆代码,按build、test、deploy等流程自动部署。
二、在服务端安装runner
1.安装runner命令
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
yum install gitlab-ci-multi-runner
2.在你的gitlab中打开相应项目,查看并复制url和token
路径为:项目>Setting>CI/CD>Runners settings
3.用上面获得的url和token在runner服务器中注册runner
命令
gitlab-ci-multi-runner register
要求输入
- 你的gitlab服务器地址:url
- 你的项目token: token
- 给当前runner定义标签,区分多个runner的名字,可指定标签的runner执行任务:tag
- Whether to run untagged builds [true/false]: // 如果没写tag的也构建吗?
[false]: true // 如果你不想写tag,就设置true。如果你这里设置了false,.gitlab-ci.yml
配置里又没写上tags:
,那么就会一直pendding - executor 执行命令器,一般写shell 或docker之类的
- 注册runner,只是让runner存在了,还要让他运行起来,执行以下命令
gitlab-ci-multi-runner start
- 如果你权限问题,比如执行某个命令,脚本需要root权限,可以赋予gitlab-runner用户sudo执行权限
在root权限下执行命令
visudo
最底部添加一行
gitlab-runner ALL=(ALL) NOPASSWD: ALL
之后你在gitlab-ci.yml中写脚本,如果涉及root权限,则可以使用sudo执行,比如
sudo ./start.sh
- 删除runner
gitlab-ci-multi-runner unregister --token xxxx --url xxxx
四、编辑.gitlab-ci.yml
在项目的根目录下创建并编辑.gitlab-ci.yml
stages: # 要执行的步骤
- build
- deploy
build: # 步骤 build
stage: build
script:
- npm install # 要执行的命令
only:
- master # 当提交到master分支或tags时才触发此build命令
- tags
tags:
- shell # 由shell执行
deploy:
stage: deploy
script:
- npm build
- npm start
only:
- master
- tags
tags:
- shell
五、提交代码即可自动部署
undefined备注:
- 你可以在 项目>CI/CD>Pipelines中看到每次提交的自动部署工作执行的情况
- 如果你有build、test、deploy三个步骤,这三个步骤是先后执行,但每次执行都会git checkout . 被重置回去,所以deploy时不能依赖build时已经执行完毕的工作,依然要做一遍build的工作。
- 如果一直pendding,那么说明肯定有地方配置出错了,无法正常执行构建任务。failed是指能构建,但构建过程中出错,构建失败。pendding则是配置出错,或配置没错,但配置没有触发执行任务,没有执行构建任务。
例如:Whether to run untagged builds [true/false]: 这里的true/false问题。例如:gitlab服务器地址写错等。
网友评论