Gitlab 自动构建心得
上面是简单接受一下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 只有当前一个阶段的所有工作成功时才执行工作。这是默认值。 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 自动构建心得的更多相关文章
- 内网jenkins如何配置gitlab自动拉取代码打包
在全局工具配置中添加git安装目录的配置 http://10.2.1.92:8080/jenkins/configureTools/git1.8.3.1/usr/bin/git 打开系统设置配置git ...
- Gitlab自动触发Jenkins构建打包
一.目的 在部门的测试环境中,开发人员一旦向gitlab仓库提交成功代码,gitlab就会自动触发jenkins构建项目.当然在构建后还可以添加项目部署或者自动化测试的脚本.这里只针对测试环境. 二. ...
- Gitlab源码库里代码提交后,如何触发jenkins自动构建?
版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布.这种方式每次在发版的时候,需要人工去执行je ...
- Gitlab使用Webhook实现Push代码后的jenkins自动构建
本文出自https://www.cnblogs.com/kevingrace/p/6479813.html 怕以后找不到,所以先写到自己博客中 Gitlab利用Webhook实现Push代码后的jen ...
- [operator]jenkins+gitlab/Webhook自动构建发布
开发同事在提交代码到gitlab后,需要使用jenkins对代码进行构建,每次都需要手动操作会很繁琐,如果工程很大,那么也会浪费时间,gitlab的webhook功能,可以在代码提交后自动调用jenk ...
- GitLab 自动触发 Jenkins 构建
GitLab 是当前应用非常广泛的 Git Hosting 工具,Jenkins 是非常牛逼的持续集成工具.尽管 GitLab 有内建的 GitLab CI,但它远没有 Jenkins 那么强大好用. ...
- Gitlab自动触发Jenkins构建项目
Gitlab自动触发Jenkins构建项目 一.前提 Gitlab已安装配置好. Jenkins已安装Gitlab plugin. 二.配置jenkins中Job 1.勾选触发器下的gitlab触发器 ...
- 如何创建一个项目,让gitlab自动触发jenkins进行构建
前进是:你已经配置好jenkins+gitlab自动化布置了,这里只是常规构建新的项目时,需要做的配置,记录下来,以免忘了又着急 参考这篇博客: https://www.jianshu.com/p/e ...
随机推荐
- 爬虫入门之Scrapy框架实战(新浪百科豆瓣)(十二)
一 新浪新闻爬取 1 爬取新浪新闻(全站爬取) 项目搭建与开启 scrapy startproject sina cd sina scrapy genspider mysina http://roll ...
- QT的组件布局
在QT的IDE下,编写一个自定义布局. #include<QApplication> #include<QWidget> #include<QSpinBox> #i ...
- Long Wei information technology development Limited by Share Ltd interview summary.
Long Wei information technology development Limited by Share Ltd interview summary. I take part in c ...
- slider.js 滑动和点击事件在firefox下报错 event is not defined
在使用layui的slider滑块控件的时候,firefox遇到了event is not defined 的情况.追究原因是因为layui的layui.js 的滑块功能依赖于silder.js,而官 ...
- 【设计模式最终总结】桥接模式 VS 外观模式
差异点 外观模式,是把功能通过一个接口提供出来,方便日后更换实现,或者这种实现可以由多方提供,但同时只用一个.典型例子:@Slf4j 桥接模式,多个维度,每个维度提供一个接口,这些接口集中在一个类中, ...
- java virtualVM远程配置方法
在/etc/hosts中设置主机名和ip的对应关系 ip为用java virtualVM链接服务器的ip 如: 10.175.0.191 host-ai #rmiregistry不知道干 ...
- June 22nd 2017 Week 25th Thursday
Happiness is when the desolated soul meets love. 幸福是孤寂的灵魂遭遇爱的邂逅. When living alone for a long period ...
- 如何理解 Learning to rank
转:http://hi.baidu.com/christole/item/23215e364d8418f896f88deb What is Rank? rank就是排序.IR中需要排序的问题很多,最常 ...
- UEditor 中配置可以跨域访问的图片路径
文档里很清楚:http://fex.baidu.com/ueditor/#server-path 进入配置文件 当域名不是直接配置到项目根目录时,例:http://a.com/b/c 域名下有两文件 ...
- 误用MySQL关键字导致的错误
使用Hibernate整合Spring的过程中,我使用explain作为表的字段,结果一直给我报错. 报错如下: ERROR: You have an error in your SQL syntax ...