You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
image: sim-server-buildvariables:
GIT_SUBMODULE_STRATEGY: recursivestages:
- test
- deployjob_test:
stage: testscript:
- make build
- make rpc
- make checkjob_deploy:
stage: deployscript:
- make deploy-debug
- make deploy-releasewhen: manual
GitLab CI 是什么
类似产品:
GitLab CI 能干什么?
比如这些事情:
功能限制:
目前我们用的版本为 11.6.3 ,还不支持在 pipeline 时输入参数,版本 13.7 已经支持在网页里输入相关参数再执行流程。
因为我们打 patch 是需要输入版本号的,所以打 patch 现在是手动在命令行里运行脚本的。
GitLab Runner 安装
GitLab Runner 安装是用来执行 CI 脚本的载体,至少需要安装一个 Runner 来执行 CI 脚本。
GitLab Runner 支持多种运行模式,我们项目选用的运行模式是基于 Docker 容器,架构图如下:
1. 安装 gitlab-runner
采用 Docker 的方式安装 gitlab-runner ,并且采用 Docker 的方式运行 Runner 。
GitLab 官方给出的 Docker 方式安装 gitlab-runner 文档路径: https://docs.gitlab.com/runner/install/docker.html
熟悉 docker-compose 的话,用 docker-compose 启动 gitlab-runner 更方便。
docker-compose 文件路径在服务器代码目录:
tools/gitlab-runner/docker-compose.yml
在
tools/gitlab-runner/
目录执行docker-compose up -d
命令即可启动容器。2. 注册 runner
详细文档路径: https://docs.gitlab.com/runner/register/
首先进入到 GitLab CI/CD 设置界面:
手动设置特殊 Runner 的界面,配置过程中将会使用到下面的 url 和 token :
执行
gitlab-runner register
命令来注册。其中 url 和 registration-token 参数就是上面截图中的,docker-pull-policy 设置为 if-not-present 表示优先使用本地 docker 镜像,executor 设置运行方式为 docker ,docker-image 设置镜像名。3. 准备好运行环境的 docker 镜像
这节是介绍我们的 sim-server-build 镜像是如何生成的。
脚本在服务器代码目录下:
tools/docker-build/
. ├── build.sh ├── create.sh ├── Dockerfile ├── id_rsa └── id_rsa.pub
create.sh
就是一行创建镜像的命令,表示创建镜像名字为sim-server-build
的 docker 镜像,最后的.
表示使用当前目录下的 Dockerfile 文件来生成镜像。sudo docker build -t sim-server-build .
Dockerfile
比较简单,主要就是执行build.sh
文件来安装我们项目依赖的工具和库:如何写 .gitlab-ci.yml
通过配置
.gitlab-ci.yml
文件来告诉 CI 要对你的项目做什么,它位于仓库的根目录下。代码仓库一旦收到任何推送 (git push),GitLab 将立即查找
.gitlab-ci.yml
文件,并根据文件的内容在 Runner 上启动作业。下面是我们服务器脚本代码的 ci 文件。
image
定义了使用哪个 docker 镜像运行,variables
是用来配置环境变量的,这里配置了GIT_SUBMODULE_STRATEGY
为recursive
表示递归拉取 git submodule 。stages
是用来定义有多少个执行阶段的,这里定义了 2 个阶段:job_test
和job_deploy
定义了 2 个 job,stage
标记属于哪个阶段,script
就是该 job 执行的命令,when
为 manual 时表示需要手动在网页里点击按钮才执行 job 。这里只定义了 2 个 job,其实一个阶段里面可以执行多个 job 的。下图介绍了以某个 pipeline 为例解释 pipeline , stage , job 的含义:
在网页里查看执行日志
进入到 pipeline 页面
点击一个 pipeline 详情界面
点击对应的任务
手动执行任务
点击任务上的播放按钮即可:
延伸学习
目前我们部署是交给运维处理的,如果是部署工作是我们研发这边做的话,可以使用 GitLab CD 自动部署到正式机器。
The text was updated successfully, but these errors were encountered: