当前位置: 首页 > article >正文

Gitlab runner的简单使用(一)

Gitlab runner的简单使用(一)

使用 GitLab CI 配置文件在 main 分支提交时触发作业

GitLab CI/CD 提供了一种强大的方式来自动化软件开发过程,包括构建、测试和部署应用程序。在这篇文章中,我们将介绍如何通过 GitLab CI 配置文件(.gitlab-ci.yml),在代码提交到 main 分支时触发一个简单的作业。这个作业的内容是记录提交日志并将其保存在 Runner 的日志文件中。

创建 .gitlab-ci.yml 文件

要实现这一目标,首先需要在项目的根目录下创建一个 .gitlab-ci.yml 文件。这个文件用于定义 CI/CD 管道以及各个作业的执行条件和步骤。

下面是一个简单的 .gitlab-ci.yml 配置示例,用于在 main 分支有提交时触发一个作业:

# 定义阶段
stages:
  - log

# 定义作业
log_commit_message:
  stage: log
  script:
    # 获取最后一次提交的消息
    - echo "Last commit message:" > commit_log.txt
    - git log -1 --pretty=%B >> commit_log.txt
    - echo "Commit log has been recorded."
  only:
    # 仅在 main 分支有提交时触发
    - main
  artifacts:
    # 保存生成的日志文件作为构件
    paths:
      - commit_log.txt

配置文件解析

  1. stages: 这里我们定义了一个阶段,名为 log。GitLab CI/CD 中的阶段用于将流水线作业分组。在这个例子中,我们只有一个阶段,专门用于记录提交日志。

  2. log_commit_message 作业:

    • stage: log:指定该作业属于 log 阶段。
    • script:这里定义了作业的脚本。脚本的作用是获取最近一次的提交信息,并将其写入 commit_log.txt 文件中。
      • git log -1 --pretty=%B:这个命令会提取最后一次提交的提交消息。
    • only: - main:这个关键字指定了作业只会在 main 分支上有提交时才会触发。这确保了我们只有在主要分支上工作时,日志记录作业才会执行。
    • artifacts:通过 artifacts 关键字,我们指定要保存的文件。这里我们选择保存 commit_log.txt 文件,这样作业结束后可以查看和下载该日志文件。

提交 .gitlab-ci.yml 文件

.gitlab-ci.yml 文件提交到项目的 main 分支中:

git add .gitlab-ci.yml
git commit -m "Add CI configuration for logging commit messages"
git push origin main

作业的执行

每当有代码提交到 main 分支时,GitLab 会自动触发 log_commit_message 作业:

  1. GitLab Runner 会检测到在 main 分支的提交。
  2. 按照 .gitlab-ci.yml 中的定义,log_commit_message 作业会被触发。
  3. GitLab Runner 会执行该作业的脚本,生成一个包含最后一次提交消息的 commit_log.txt 文件。
  4. 生成的日志文件将被保存在作业的构件(Artifacts)中,可以通过 GitLab 的界面查看和下载。

查看作业日志

要查看日志文件:

  1. 在 GitLab 项目中,进入 CI/CD > Pipelines 页面。
  2. 找到最近一次在 main 分支上触发的流水线,点击进入。
  3. log_commit_message 作业中,可以看到作业的执行详情。点击 Download 按钮来下载 commit_log.txt 日志文件。

参考链接

  • GitLab CI/CD 官方文档: https://docs.gitlab.com/ee/ci/
  • GitLab Runner 官方文档: https://docs.gitlab.com/runner/
  • GitLab CI/CD YAML 配置参考: https://docs.gitlab.com/ee/ci/yaml/

在这里插入图片描述


http://www.kler.cn/news/316870.html

相关文章:

  • 【Redis】之Geo
  • 红黑树:强大的数据结构之插入详解,附图
  • yolov8多任务模型-目标检测+车道线检测+可行驶区域检测-yolo多检测头代码+教程
  • Spring IOC容器Bean对象管理-注解方式
  • 每日一题——第九十四题
  • pywinauto:Windows桌面应用自动化测试(十)
  • 成都睿明智科技有限公司怎么样?
  • 【深度】为GPT-5而生的「草莓」模型!从快思考—慢思考到Self-play RL的强化学习框架
  • Shader 中的光源
  • 民主测评系统可以解决哪些问题?
  • Typescript进阶:解锁Infer类型的使用
  • C++笔记---set和map
  • NLP--自然语言处理学习-day1
  • 《微信小程序实战(3) · 推广海报制作》
  • 文件系统(软硬链接 动静态库 动态库加载的过程)
  • C++学习笔记(32)
  • 在C#中使用NPOI将表格中的数据导入excel中
  • 工业交换机如何保证数据的访问安全
  • SkyWalking 简介
  • 深入理解Go语言中的并发封闭与for-select循环模式
  • 使用脚本自动化管理外部Git仓库依赖
  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • MySQL面试题——第一篇
  • 人工智能不是人工“制”能
  • FreeSWITCH 简单图形化界面29 - 使用mod_xml_curl 动态获取配置、用户、网关数据
  • 寻呼机爆炸,炸醒通讯安全警惕心
  • 【操作系统强化】王道强化一轮笔记
  • k8s1.27.7部署higress,代理非k8s集群业务
  • 如何借助ChatGPT提升论文质量:实战指南
  • 真正能抵抗裁员的,从不是专业能力,早知道这些都财务自由了