集成步骤
- 写yml
- 提交
- 建runner
yml 关键字
yml的编写规则体现了ci的部分机制,对于本次使用到的一些参数进行说明。
job
yml可以定义无限job。
举个例子,假设一个工程中 有多个项目需要构建,a1/a2/a3(我知道可以放一起,这不是假设吗。。。)。那么a1可以有build/test/depoly的job,a2、a3同上。
相同stage的job会被并行执行。job name唯一,且可以由一列参数来定义job的行为。
stage
stage只能在build/test/depoly里选择。即stage是持续集成流程内的步骤,这些步骤被固定了,即构建/测试/发布。
script
执行的终端命令集
yml工具
格式锱铢必较,而且不易校错。http://yaml-online-parser.appspot.com/ 可以在线校验。
yml实例
最后来个yml例子
develop:
stage: deploy
script:
- rsync -Pa --exclude-from '.gitignore' -e 'ssh -i /home/gitlab-runner/.ssh/id_rsa' ./ root@xx:/root
- ssh -i /home/gitlab-runner/.ssh/id_rsa -t root@xx 'cd /root && pm2 start process.json'
only:
- develop
release:
stage: deploy
script:
- rsync -Pa --exclude-from '.gitignore' -e 'ssh -i /home/gitlab-runner/.ssh/id_rsa' ./ root@xx:/root/x
- ssh -i /home/gitlab-runner/.ssh/id_rsa -t root@xx 'cd /rootxx && pm2 start process.json --env production'
only:
- master
步骤说明:
-
同步文件到目标主机
-
在目标主机执行启动命令
最后写一个使用pm2指定env的方法
在process.json中
{
"apps" : [
{
"name" : "xx",
"script" : "app.js",
"log_date_format" : "YYYY-MM-DD HH:mm Z",
"instances": 3,
"max_memory_restart": "2G",
"max_restarts": 5,
"restart_delay": 3,
"listen_timeout": 10000,
"env": {
"NODE_ENV": "dev"
},
"env_production": {
"NODE_ENV": "prod"
}
}
]
}
然后使用pm2 --env production可以切换呢。暂时只发现支持两种环境的写法。多种的找到再补充。
网友评论