什么是runner
runner是基于git的自动部署工具,可以监听到git的操作,然后配置对应的部署命令
本文是基于gitlab的
新建runner步骤
- 现在gitlab上找到setting -> CI/CD
- 点击进入配置说明,要选择你自己的部署服务器(或者访问服务器)类型,然后到你的服务器命令行逐行运行提示代码(就是下载runner插件,然后配置拉取代码的地址。傻瓜式操作,不用修改)
注意报错信息,有可能是已经安装处理过了,只需要最后一步就行 - 做完上述步骤之后,返回gitlab刷新就看到一个新的runner
- 编写对应的yaml文件,默认是项目下.gitlab-ci.yml。 可以看gitlab中yml的定义
default:
before_script:
- echo "start deploy"
- echo $CI_COMMIT_REF_NAME
# 阶段
stages:
- install
- build
- deploy
cache:
paths:
- node_modules/
# 安装依赖
start-install:
stage: install
# 此处的tags必须填入之前注册时自定的tag
tags:
- install
# 规定仅在dev、test、prod分支提交时才触发此阶段
only:
- dev
- test
- prod
# # 规定仅在package.json提交时才触发此阶段
# changes:
# - package.json
# 执行脚本
script:
- echo "start install"
- rm -rf ./node_modules
- npm install
# 打包dev分支
buildDev:
stage: build
tags:
- buildDev
# 规定仅在dev分支提交时才触发此阶段
only:
- dev
script:
- echo "start dev build"
- rm -rf ./dist
- npm run build:dev
# 将此阶段产物传递至下一阶段
artifacts:
paths:
- dist/
# 打包test分支
buildTest:
stage: build
tags:
- buildTest
# 规定仅在test分支提交时才触发此阶段
only:
- test
script:
- echo "start test build"
- rm -rf ./dist
- npm run build:test
# 将此阶段产物传递至下一阶段
artifacts:
paths:
- dist/
# 打包prod分支
buildProd:
stage: build
tags:
- buildProd
# 规定仅在prod分支提交时才触发此阶段
only:
- prod
script:
- echo "start prod build"
- rm -rf ./dist
- npm run build:prod
# 将此阶段产物传递至下一阶段
artifacts:
paths:
- dist/
# 部署dev项目
deployDev:
stage: deploy
tags:
- deployDev
only:
# 规定仅在dev分支提交时才触发此阶段
- dev
script:
- echo "start deploy Dev"
# 删除远端服务器的dist目录下的所有文件
- ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/dist'
# 把当前dist目录下的所有文件传输到远端服务器的dist目录
- scp -r -P 43322 ./dist root@18.210.218.68:/home/web/appointment_h5
- echo "deploy Dev successfully"
# 部署test项目
deployTest:
stage: deploy
tags:
- deployTest
only:
# 规定仅在test分支提交时才触发此阶段
- test
script:
- echo "start deploy Test"
# 删除远端服务器的dist目录下的所有文件
- ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/dist'
# 把当前dist目录下的所有文件传输到远端服务器的dist目录
- scp -r -P 43322 ./dist root@18.210.218.68:/home/web/appointment_h5
- echo "deploy Test successfully"
# 部署prod项目
deployProd:
stage: deploy
tags:
- deployProd
only:
# 规定仅在prod分支提交时才触发此阶段
- prod
script:
- echo "start deploy Prod"
- pwd
# 删除远端服务器的dist目录下的所有文件
- ssh -p 43322 root@18.210.218.68 'rm -rf /home/web/appointment_h5/prod'
# 把当前dist目录下的所有文件传输到远端服务器的dist目录
- scp -r -P 43322 ./dist/* root@18.210.218.68:/home/web/appointment_h5/prod
- echo "deploy Prod successfully"
触发构建
- 推送push
- 打标签
- 新建规则分支
以上三个随便一个符合,都可以触发,触发之后就可以在gitlab下的Build菜单的Pipelines中看到对应的CICD
有问题就看具体输出,点击statge正常情况下先保证本地是ok的,可以build成功的