配置.gitlab-ci.yml - 自定义流水线

本文详细介绍了如何配置gitlab持续集成流水线,从创建基本的流水线开始,逐步添加自定义操作,并探讨了如何通过重构提高代码复用性和简洁性。文中提供简单例子及实用技巧,帮助读者掌握gitlab-ci.yml的配置方法。

参考官网:
gitlab持续集成流水线配置

结合官网,以一种探索性的方式,展示gitlab持续集成流水线的搭建过程。

环境

软件 版本
gitlab 11.5.1
gitlab-runner 11.5.1

第一章 gitlab持续集成流水线 - 创建“流水线”


简介

如果您对“持续集成”“流水线”概念还处于模糊阶段,那么这节也许很适合您。
持续集成,对于当前的gitlab ci,个人理解,持续性表现在 gitlab push提交动作触发流水线、定时任务流水线;集成性的话想对较弱,至少是需要通过配置来加强。
流水线,基本上就是需要配置来实现,完成一整套操作:代码质量检查、单元测试、构建、接口测试等等。类似于工厂的流水线,毛件(代码等)放到传送带上,进行一系列检查(代码质量检查、测试)、处理(构建等),直到生成成品(可运行文件文件夹)或其他(出现异常、代码编译构建错误等)。

本章有两个目的,一是最简单的方式配置gitlab-ci流水线(暂时免去实际的操作),二是整体感受下gitlab-ci流水线。
还有,gitlab-ci流水线触发有三种方式,其中可通过“only”和“except”配置自定义触发方式:

  • 默认方式,gitlab服务器接收到更新后自动触发
  • Pipelines页面,“Run Pipeline”按钮,当然,单击后还需要选择分支,选择性添加变量,“Create pipeline”
    点击触发流水线
    在这里插入图片描述
  • TOKEN+ Pipeline triggers API,http请求触发,创建token,然后如下页面往下翻会有调用方式详情。
    在这里插入图片描述

简单例子

在代码库创建配置文件 .gitlab-ci.yml ,如下
配置stages和jobs,stages基本就是流水线的顺序,jobs有“sonar_analyze”和“my_build”,在此处,一个stage对应一个job,当然可以一个stage对应多个job。
job的tags,用于job与gitlab-runner关联配置(赶稿中。。。),只有打了这些标签的runner才配得上run我。

stages:
  - analyze
  - build
sonar_analyze:
  script:
    - echo sonar_analyze
    - echo job done 
  tags:
    - master
my_build:
  script:
    - echo my_build
    - echo job done 
  tags:
    - master

第二章 gitlab持续集成流水线 - 添加自定义操作


简介

在上章我们已经建立起自己的流水线,接下来,该添加实际应用中的操作步骤了。
需要重点说下的是,docker镜像的使用,这里是直接在(docker hub官网)[https://hub.docker.com/]找的,所以会出现有些工具没有的情况,在工程使用中是应该避免的,自动化成功率和这种流程精简密切相关的。

实用例子

# stages基本就是流水线的阶段顺序
stages:
  - analyze
  - build_build
  -
### `.gitlab-ci.yml` 文件的数量限制 在 GitLab CI 配置中,每个项目只能有一个 `.gitlab-ci.yml` 文件,并且该文件必须位于项目的根目录下[^3]。这是 GitLab 的硬性规定,确保 CI/CD 流程的配置集中化,避免多个配置文件导致的混乱和冲突。 虽然一个项目仅能配置一个 `.gitlab-ci.yml` 文件,但可以通过文件的结构化设计实现复杂的 CI/CD 逻辑。例如,可以使用 `include` 关键字将多个外部 YAML 文件合并到主配置文件中,以实现模块化管理。这种方式在大型项目中尤为常见,能够有效提升配置文件的可维护性[^4]。 ### `.gitlab-ci.yml` 文件的配置作用 `.gitlab-ci.yml` 文件是 GitLab CI/CD 流程的核心配置文件,用于定义流水线(pipeline)中的各个阶段(stages)和任务(jobs)。通过该文件,开发者可以指定构建、测试、部署等自动化操作的具体步骤和执行顺序[^1]。文件的语法和内容直接影响 CI/CD 流水线的行为,例如: - **定义流水线阶段**:通常包括 `build`、`test` 和 `deploy` 阶段,但可以根据需求自定义- **定义任务**:每个阶段可以包含多个任务,每个任务具体描述了 Runner 需要执行的操作。 - **控制任务执行条件**:通过 `only` 和 `except` 关键字指定任务在哪些分支或标签上触发。 - **设置全局或任务级别的变量**:例如环境变量、脚本命令等。 以下是一个 `.gitlab-ci.yml` 文件的示例,展示了如何定义多阶段流水线: ```yaml stages: - build - test - deploy build-job: stage: build script: - echo "Building the project..." - make build test-job: stage: test script: - echo "Running tests..." - make test deploy-job: stage: deploy script: - echo "Deploying the application..." - make deploy only: - main ``` 在该示例中,定义了三个阶段:`build`、`test` 和 `deploy`。每个阶段对应一个任务,任务中通过 `script` 指定了具体的执行命令。`deploy-job` 任务通过 `only` 指定仅在 `main` 分支上触发。 ### 文件的版本控制与灵活性 由于 `.gitlab-ci.yml` 文件存放在项目仓库中,它可以像其他代码文件一样进行版本控制。这种设计带来了几个优势: - **可追溯性**:每次修改 `.gitlab-ci.yml` 文件时,可以通过 Git 提交历史查看变更记录。 - **团队协作**:所有有仓库读取权限的成员都可以查看和修改 CI/CD 配置,确保团队协作的透明性。 - **分支差异化**:不同分支可以使用不同的 `.gitlab-ci.yml` 文件配置,从而支持多样化的构建需求[^4]。 ### 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值