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 ...
随机推荐
- 11G R2 RAC添加监听
步骤如下: 检查默认network的network number,红色字体1,一会儿添加监听会用到: [grid@rac121 admin]$ srvctl config network Networ ...
- 深入理解PHP传参原理(PHP5.2)
首先说下今天想到的一个问题.在编写php扩展的时候,似乎参数(即传给zend_parse_parameters的变量)是不需要free的.举例: PHP_FUNCTION(test) { char* ...
- 4.30-5.1cf补题
//yy:拒绝转载!!! 悄悄告诉你,做题累了,去打两把斗地主就能恢复了喔~~~ //yy:可是我不会斗地主吖("'▽'") ~~~那就听两遍小苹果嘛~~~ 五一假期除了花时间建模 ...
- hdu-2837 Calculation---指数循环节
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2837 题目大意: 已知f(0) = 1,0^0 =1,[注意,0的其他任意次方为0,虽然题没有直接给 ...
- 开源项目之防火墙 tdifw
tdifw是windows防火墙软件(TDI层驱动过滤),负责监控网络监听与连接.以及过滤信息. 源码在src目录, 程序在Bin目录,执行根目录下的批处理文件也可以,具体步骤如下: 1. 运行ins ...
- 2019.1.4 SSH框架整合步骤(一)
SSH整合 1.三大框架整合原理 Spring与Struts2整合就是将Action对象交给Spring容器负责创建 Spring与Hibernate整合就是将sessionFactory交给Spri ...
- tensorflow训练代码
from tensorflow.examples.tutorials.mnist import input_data import tensorflow as tf mnist = input_dat ...
- springboot之静态资源路径配置
静态资源路径是指系统可以直接访问的路径,且路径下的所有文件均可被用户直接读取. 在Springboot中默认的静态资源路径有:classpath:/META-INF/resources/,classp ...
- 使用js接收ajax解析的json再拼成一个自己想要的json
//ajax解析的json{ "status": 1, "content": { "pathsInfo": [ { "id&quo ...
- 我想写一个前端开发工具(三):优化!从vue-cli学了几招
我从过年开始写自己的前端工具 coodev,目前已经写出一个基本的架子,大多数预想的功能都能跑通,还剩一些需要解决的问题也都已经列出来了.本来这一周打算解决对不同后端模板的前后端渲染支持的问题.但是看 ...