上面是简单接受一下gitlab ci的工作原理
GitLab-CI
这个是一套配合GitLab使用的持续集成系统,是GitLab自带的,也就是你装GitLab的那台服务器上就带有的。无需多考虑。.gitlab-ci.yml的脚本解析就由它来负责。
GitLab-Runner
这个是脚本执行的承载者,.gitlab-ci.yml的script部分的运行就是由runner来负责的。GitLab-CI浏览过项目里的.gitlab-ci.yml文件之后,根据里面的规则,分配到各个Runner来运行相应的脚本script。这些脚本有的是测试项目用的,有的是部署用的。
.gitlab-ci.yml
这个是在git项目的根目录下的一个文件,记录了一系列的阶段和执行规则。GitLab-CI在push后会解析它,根据里面的内容调用runner来运行。
------------
1.gitlab安装教程就不介绍了(公司架设好的).
具体请百度
2.创建上传你的项目.
具体请百度
3.配置流水线
进入 设置->CI/CD 流水线进行操作
需要设置流水线就需要先添加一个runner.(就是到时候用来构建的远程机器)
如何设置一个新项目的特定 Runner
- 安装 GitLab Runner 软件。 请参阅 GitLab Runner 章节 来安装
- 在 Runner 安装时使用下面的链接: https://gitlab.xxxxxxx.com:6062/ci
- 在设置时使用下面的注册授权码: xxxxxxxxxxxxxz(这个在CI/CD 流水线页面里面)
- 启动 runner!
4.编写.gitlab-ci.yml文件(主要步骤来了)
下面贴一个我的
# This file is a template, and might need editing before it works on your project.
# see https://docs.gitlab.com/ce/ci/yaml/README.html for all available options
# you can delete this line if you're not using Docker
image: busybox:latest
before_script:
- echo "Before script section"
- echo "For example you might run an update here or install a build dependency"
- echo "Or perhaps you might print out some debugging details"
after_script:
- echo "After script section"
- echo "For example you might do some cleanup here"
stages:
- build
- test
- deploy
#构建节点
build_default_job:
stage: build
script:
- echo "Do your build here"
- make clean
- make
- make install
#测试
test1_job:
stage: test
script:
- echo "test1"
#默认上次打包
deploy_default_job:
stage: deploy
script:
- echo "Clear residue file"
- python3 PackageUpload.py
- make clean
#构建失败后邮件提醒
deploy_failure_job:
stage: deploy
script:
- echo "build break,mail..."
- make clean
when: on_failure
简单解释一下上面的内容:
- stages:描写的是构造的顺序 上面的如果失败下面的就不会允许(部分设置了when的除外)
- sage:描述的是job的类型(同样类型的job是同时运行的配有先后顺序)
- before_script: 是在所有job之前运行的内容.
- after_script:是在所有job之后运行的内容.
- when:可以设置每个job在什么情况下运行
设置值 | 内容 |
on_success | 只有当前一个阶段的所有工作成功时才执行工作。这是默认值。 |
on_failure | 仅当前一个阶段的至少一个作业发生故障时才执行作业。 |
always | 无论前一阶段的工作状况如何,执行工作。 |
manual | 手动执行作业(在GitLab 8.10中添加)。阅读 下面的手动操作。 |
这个文件具体可以看 这篇文章写得非常的详细
注意:
|关键字|是否必须|描述|
|-|-|-|
|image|否|用于docker镜像,查看docker文档|
|services|否|用于docker服务,查看docker文档|
|stages|否|定义构建阶段|
|before_script|否|定义在每个job之前运行的命令|
|after_script|否|定义在每个job之后运行的命令|
|variable|否|定义构建变量|
|cache|否|定义一组文件列表,可在后续运行中使用|