编写gitlab-ci.yml文件以及应用

1. 在项目中创建gitlab-ci文件


把下面的内容复制进gitlab-ci文件

#流水线的stages的顺序可以自己定义
#相同阶段的任务将会并发的执行,上一个阶段的任务完整的结束之后,下一个阶段的任务才会开始执行
stages:- check_code - build- deploy
job1:stage: check_codescript:- echo 'stage1 job ,读取变量为:' $param1job2:stage: buildscript:- echo 'stage2 job  ,读取变量为:' $param2job3:stage: deployscript:- echo 'stage3 job  ,读取变量为:' $param3

2. 配置gitlab-ci文件中的变量

$param1,$param2,$param3这3个就是变量
进入Settings->CI/CD->Variables

设置参数值
param1=变量1
param2=变量2
param3=变量3
这些值我们在等下运行pipeline时看看是否在gitlab-ci被引用到

3. 配置gitlab runner

如果没有安装gitlab runner先去安装,怎么安装gitlab runner可以参考官网https://docs.gitlab.com/runner/install/
安装完后将runner注册进gitlab,gitlab上都写着指令教程,放心实践
我这个项目已经有了个组共享的runner,我就直接用就好了,可以在gitlab-ci文件上指定runner ,用tags属性

4. 运行pipeline

进入CI/CD->Pipelines->Run pipeline


运行后看到3个job,这就是stage定义的对应的job


点击job1,可以看到输出的日志,我打印出的信息,看到输出了param1定义的值“变量1”

依次点job2,job3也可以看到输出日志

在job1看到他分几个步骤

1. Preparing the "docker" executor(准备docker执行器,即容器运行环境这里默认加载的镜像是maven:3.5.2-jdk-7)
2. Preparing environment(准备环境)
3. Getting source from Git repository(拉取代码)
4. Executing "step_script" stage of the job script(执行脚本)

返回pipeline列表看看运行的pipeline

可以看到job1,job2,job3都是打钩的状态都是正常,点击可以查看该阶段的日志

5. gitlab-ci文件属性

属性 含义
stages 定义任务内的阶段,每个阶段必须从全局定义的阶段中选择
variables 定义全局变量
stage 选择全局定义的阶段,只能选其中一个
before_script 在脚本执行前执行的指令
after_script 在脚本执行后执行的指令
script 由runner执行的shell脚本(必填项)
retry 发生故障时自动重试作业的时间和次数(0,1,2)
image 指定基础运行环境的docker镜像,如java,python,maven等
tags 指定流水线使用哪个runner去运行,只能定义到一个具体的项目,tags的取值范围是该项目可见的runner
only 限定某些分支或者某些tag
except 排除某些分支和某些tag
services 使用Docker services(服务)镜像
when 什么时候运行作业
environment 部署的环境名称
cache 指定需要在job之间缓存的文件或目录
artifacts 归档文件列表,指定成功后应附加到job的文件和目录的列表
dependencies 当前作业依赖的其他作业,你可以使用依赖作业的归档文件
coverage 作业的代码覆盖率
parallel 指定并行运行的作业实例
trigger 定义下游流水线的触发器
include 作业加载其他YAML文件
pages 上传GitLab Pages的结果
allow_failure 允许作业失败,失败的作业不影响提交的状态

6. 属性额外说明

stages
定义流水线全局阶段,默认有3个阶段,build、test、deploy。如果作业未定义stage阶段,默认使用test阶段

when
用于实现在作业失败时或发生故障时运行的作业,可以设置下面几个值

on_success :只有前面的阶段的所有作业都成功时才执行,这是默认值。
on_failure :当前面阶段的作业至少有一个失败时才执行。
always : 无论前面的作业是否成功,一直执行本作业。
manual :手动执行作业,作业不会自动执行,需要人工手动点击启动作业。
delayed : 延迟执行作业,配合 start_in 关键字一起作用, start_in 设置的值必须小于或等于1小时,start_in 设置的值示例: 10 seconds 、 30 minutes 、 1 hour ,前面的作业结束时计时器马上开始计时。

.符号
对于不想执行的job,可以在前面加“.”符号表示跳过

variables $引用变量
可以使用如${DATABASE_URL}来引用定义的变量

only 和 except

  1. only 和 except 中可以使用特殊的关键字,如 branches 、 tags 、 api 、 external 、 pipelines 、 pushes 、 schedules 、 triggers 、 web 、 merge_requests 、 chats 等

  2. only 和 except 支持高级策略,refs 、 variables 、 changes 、 kubernetes 四个关键字可以使用。

7. 稍微复杂点的gitlab-ci文件

这个是在项目中的其中一个文件,仅供参考,没啥涉密的东西

variables:COVERAGE_WEBHOOK_URL: $COVERAGE_WEBHOOK_URI?branch=$CI_COMMIT_REF_NAME&gitlabPipelineId=$CI_PIPELINE_ID&gitlabProjectId=$CI_PROJECT_IDIMAGE_WEBHOOK_URL: $CI_SERVICE_URL/webhook/gitlabProjects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/imagesimageTag: $CI_PROJECT_NAME-$DEPLOY_TIME_TAG-$CI_PIPELINE_IDDOCKER_TLS_CERTDIR: ''stages:- code_check- push_images- deploycode_check:stage: code_checkimage: 10.19.64.203:8080/ums/maven:3.6.0-jdk-8tags:- devopsscript:- mvn clean package -DskipTestsartifacts:expire_in: 3 hrspaths:- ./ib-provider/target/*.jarpush_images:stage: push_imagesimage: 10.19.64.203:8080/library/docker:19.03.14tags:- devopsservices:- 10.19.64.203:8080/library/docker:19.03.14-dindbefore_script:- mkdir -p $HOME/.docker- echo $DOCKER_AUTH_CONFIG > $HOME/.docker/config.json- docker infoscript:- docker build -t ${CI_REGISTRY_IMAGE_DIR}:${imageTag} . - docker push ${CI_REGISTRY_IMAGE_DIR}:${imageTag}- wget --post-data "imageTag=$imageTag" $IMAGE_WEBHOOK_URLdeploy:stage: deployimage: harbor.uniin.cn/devops-ci/mvn:1.0.1tags:- devopsscript:- echo $imageTag- wget --no-check-certificate --header="Authorization:$AUTH_TOKEN" --post-data="pipelineId=$CI_PIPELINE_ID&ref=$CI_COMMIT_REF_NAME&imageName=$imageName&tag=$imageTag&deployVersion=$deployVersion&description=$description&deployParams=$deployParams&envName=$envName&deployType=$deployType" $DEPLOY_WEBHOOK_URLonly:variables:- $IS_DEPLOY == "1"dependencies:- push_images

手把手教学编写gitlab-ci.yml文件以及应用(最简单易懂实践)相关推荐

  1. gitlab .gitlab-ci.yml 文件赏析

    GitLab官方的流水线 .gitlab-ci.yml 内容 GitLab 代码仓库地址 GitLab 主流水线入口 GitLab 所有引入的流水线 共24个yaml文件,可怕啊.... stages ...

  2. 使用GitLab CI和Docker进行容器应用自动化部署

    容器 Docker 越来越受开发者和运维人员的喜爱,更是作为实践 DevOps 的一个中要工具.同时 Gitlab 提供了免费的代码管理服务,其 gitlab-ci 更是提供了强大的自动化 CI/CD ...

  3. kubernetes安装_在 Kubernetes 上安装 Gitlab CI Runner

    在 Kubernetes 上安装 Gitlab CI Runner​www.qikqiak.com 上节课我们使用 Helm 快速的将 Gitlab 安装到了我们的 Kubernetes 集群中,这节 ...

  4. Gitlab CI集成sonarqube实现静态代码检查

    其他博文连接 Ubuntu Server 16.04LTS 搭建GitLab服务器 ubuntu server 16.04 使用docker搭建jenkins和sonarqube Gitlab配置Gi ...

  5. GitLab CI流水线配置文件.gitlab-ci.yml详解(三)

    GitLab CI流水线配置文件.gitlab-ci.yml详解 - contents:: 目录 本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <con ...

  6. 指定的网络文件夹目前是以其他用户名和密码进行映射的_使用 GitLab CI 与 Argo CD 进行 GitOps 实践

    在现在的云原生世界里面 GitOps 不断的被提及,这种持续交付的模式越来越受到了大家的青睐,我们前面也有文章详细讲解了 GitOps 的相关概念,在网上也可以找到很多关于它的资源,但是关于 GitO ...

  7. Gitlab CI/CD 中预设变量 .gitlab-ci.yml 的预定义变量

    文章有更新, 更加详细和更常用的预设变量可以参考以下两篇新的文章 GitLab CI/CD关键词(五):变量 variables GitLab CI/CD中的常用预设变量 GitLab CI / CD ...

  8. GitLab CI脚本编写

    1.GitLab CI脚本基本语法 GitLab CI Runner常用的有两种,一种是Shell的,另一种是Docker的,采用Docker Runner的话需要指定具体镜像,脚本中可以通过tags ...

  9. GitLab CI / CD管道配置参考 .gitlab-ci.yml文件定义字段

    亚搏体育app文件 亚搏体育app CI / CD GitLab CI / CD管道配置参考 GitLab CI / CD管道配置参考 GitLab CI/CD pipeline configurat ...

最新文章

  1. Callable、Future和FutureTask
  2. python命名空间更改_在Python中使用ElementTree改变命名空间前缀
  3. Win8 Metro(C#)数字图像处理--2.66FloodFill算法
  4. 查看主机内各组件参数——Cpu、内存、显卡、主板、硬盘(不拆主机方式)
  5. pdf格式怎么转换成word格式
  6. Spring系列之AOP实现的两种方式
  7. 浅入深出之Java集合框架(上)
  8. 遥感方法研究张掖市1999-2010年土地利用变化
  9. 优酷背后的大数据秘密
  10. linux查看网卡的驱动命令行,Linux下查看网卡驱动和版本信息
  11. Apache Flink 在快手的过去、现在和未来
  12. 保证成功率的方案,首先要从实施维度入手
  13. python漏洞扫描器编写,用Python编写Web漏洞检测工具
  14. SpringBoot集成ckfinder3.5.1
  15. configmapsecrets基本操作
  16. 神山的方向至诚地祈祷、朝拜
  17. 字体图标svg改变颜色
  18. Date的getDay()和getDate()的区别:
  19. vue实现点击按钮调用摄像头扫码
  20. Word处理控件Aspose.Words功能演示:使用Java合并MS Word文档

热门文章

  1. 基SpringBoot的智能社区警务管理平台
  2. POJ 1700 过河坐船最短时间问题
  3. 那些好用的网站推荐(四)----英语学习网站
  4. 【RNN数据预测】基于matlab时间反向传播 (BPTT) 训练RNN递归神经网络预测【含Matlab源码 2434期】
  5. U盘启动安装Ubuntu18.04
  6. U盘安装ubuntu22.04 Linux系统分区
  7. 快递的派件时效这样分析,几分钟就完成
  8. No cached version of com.facebook.android:facebook-android-sdk:8.1.0 available for offline mode
  9. (轉貼) 問鼎北市/欣然接受敗選 宋楚瑜告別演說:正式退出政壇 (News)
  10. 禁止浏览器文本框自动填充_18个有用的填充文本生成器