上面是简单接受一下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

简单解释一下上面的内容:

  1. stages:描写的是构造的顺序 上面的如果失败下面的就不会允许(部分设置了when的除外)

  2. sage:描述的是job的类型(同样类型的job是同时运行的配有先后顺序)

  3. before_script: 是在所有job之前运行的内容.

  4. after_script:是在所有job之后运行的内容.

  5. when:可以设置每个job在什么情况下运行

    设置值 内容
    on_success 只有当前一个阶段的所有工作成功时才执行工作。这是默认值。
    n_failure 仅当前一个阶段的至少一个作业发生故障时才执行作业。
    always 无论前一阶段的工作状况如何,执行工作。
    manual 手动执行作业(在GitLab 8.10中添加)。阅读 下面的手动操作。

这个文件具体可以看https://segmentfault.com/a/1190000010442764 这篇文章写得非常的详细

注意:

关键字 是否必须 描述
image 用于docker镜像,查看docker文档
services 用于docker服务,查看docker文档
stages 定义构建阶段
before_script 定义在每个job之前运行的命令
after_script 定义在每个job之后运行的命令
variable 定义构建变量
cache 定义一组文件列表,可在后续运行中使用

Gitlab 自动构建心得的更多相关文章

  1. 内网jenkins如何配置gitlab自动拉取代码打包

    在全局工具配置中添加git安装目录的配置 http://10.2.1.92:8080/jenkins/configureTools/git1.8.3.1/usr/bin/git 打开系统设置配置git ...

  2. Gitlab自动触发Jenkins构建打包

    一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...

  3. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

  4. Gitlab利用Webhook实现Push代码后的jenkins自动构建

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布.这种方式每次在发版的时候,需要人工去执行je ...

  5. Gitlab使用Webhook实现Push代码后的jenkins自动构建

    本文出自https://www.cnblogs.com/kevingrace/p/6479813.html 怕以后找不到,所以先写到自己博客中 Gitlab利用Webhook实现Push代码后的jen ...

  6. [operator]jenkins+gitlab/Webhook自动构建发布

    开发同事在提交代码到gitlab后,需要使用jenkins对代码进行构建,每次都需要手动操作会很繁琐,如果工程很大,那么也会浪费时间,gitlab的webhook功能,可以在代码提交后自动调用jenk ...

  7. GitLab 自动触发 Jenkins 构建

    GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...

  8. Gitlab自动触发Jenkins构建项目

    Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...

  9. 如何创建一个项目,让gitlab自动触发jenkins进行构建

    前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...

随机推荐

  1. mongodb 3.4复制集详解

    1关闭数据库,打开三个mongodb数据库数据库实例 rs.printReplicationInfo() 2:原理 主库能够进行读写操作,一个复制集群只能有一个活跃的主库 一般情况下复制可以分为好几种 ...

  2. 四、CentOS 安装mariadb——Linux学习笔记

    A)安装及配置 下载mariadb: yum -y install mariadb-server mariadb 开启mariadb服务: systemctl start mariadb.servic ...

  3. Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101

    视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...

  4. linux oom-killer

    本人从事UTM的开发工作,最近遇到out of memory killer.这里整理一下资料. 简述 当系统内存不足时,系统会触发 oom-killer.oom-killer的机制就是选择杀掉最适合的 ...

  5. xcode9 unity3d 新坑

    1.metal调试会报错,要在edit scheme里关掉

  6. ezmorph-1.0.6.jar的作用

    使用json时要依赖的jar文件,在使用jquery的json时,没有引用该文件的时候容易报错.

  7. mongodb在windows平台安装和启动

    mongodb 官网:https://www.mongodb.com mongodb 官网下载: mongodb-win32-x86_64-2008plus-ssl-3.4.2-signed.msi ...

  8. BZOJ 3289: Mato的文件管理 【莫队 + 树状数组】

    任意门:https://www.lydsy.com/JudgeOnline/problem.php?id=3289 3289: Mato的文件管理 Time Limit: 40 Sec  Memory ...

  9. stanford core

    segmenter:分词 postagger(pos tagger):词性标注 ner(named entity recognizer):命名实体 parser:

  10. Selenium图片上传

    方式1: 如果是input类型的标签则可直接赋值 部分代码: driver.find_element_by_name("file").send_keys("E:\\tes ...