名词解释:
- gitlab-ci/cd 是调度服务。
- gitlab-runner 是真正构建者,最好独立服务器安装。
- gitlab-runner executor常用有:docker、shell。
docker in docker(dind)的方式
- docker in docker(dind) 和宿主机完全独立的docker进程,配置比较麻烦。
- docker outside of docker(dood) 和宿主机共用docker进程。
ci
在ci容器里构建docker image时,会用到宿主机上的docker命令,而dood有很大的安全问题(可以直接操控host的docker 删除修改等),所以runner最好在一个vm隔离环境安装,构建好docker image后通过docker push推送到私有仓库或导出tar ssh发送到部署服务器。
- ci buid阶段clone maven编译打包代码,生成build docker image。
- ci deploy阶段:推送image到私有仓库或导出image tar ssh发送到部署服务器,触发ssh服务器部署。
- 可通过Vagrant创建vm:centos安装Virtualbox、Vagrant。
- 可通过Ansible部署工具部署应用。
.gitlab-ci.yml说明
常用预置变量
bash
# 当前构建的job ID变量
$CI_JOB_ID= 1
# 当前构建的job名称
$CI_JOB_NAME= "build_dev"
# 构建项目的ID
$CI_PROJECT_ID= 1
# 构建项目的名称
$CI_PROJECT_NAME= "cashier"
# 构建项目的分支名
$CI_COMMIT_REF_NAME= "release/v1.1.0"
# 构建项目的分支名(把特殊符替换为“-”,比如 “.”,“/”)
$CI_COMMIT_REF_SLUG= "release-v1-1-0"
# 构建项目所在的组名
$CI_PROJECT_NAMESPACE= "web-frontend"
# 构建项目的全名称(含项目组名/项目名)
$CI_PROJECT_PATH= "web-frontend/cashier"
# 构建项目的全名称(含项目组名-项目名,把特殊符替换为“-”,比如 “.”,“/”)
$CI_PROJECT_PATH_SLUG= "web-frontend-cashier"
查看所有预置变量:
yml
job_name
script:
- export