GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

2024-01-21

一、CI/CD简介

CI/CD 是持续集成(Continuous Integration)和持续交付/持续部署(Continuous Delivery/Continuous Deployment)的缩写,是一种软件开发和交付的最佳实践。这两个概念通常一起使用,但有些时候它们也会被区分开来:

  1. 持续集成 (CI - Continuous Integration): 持续集成是一种开发实践,旨在通过频繁地集成和验证代码,确保团队成员的工作不会破坏整体代码库的稳定性。在 CI 中,开发者将代码频繁地合并到共享的主干(主要分支),每次合并都会触发自动构建、测试和代码静态分析等过程。如果有问题,团队可以尽早发现并纠正。

  2. 持续交付 (CD - Continuous Delivery): 持续交付是一种软件开发流程,旨在通过自动化构建、测试和部署的过程,使软件随时都能够交付到生产环境。持续交付的目标是确保代码在通过 CI 流程后可以随时投入生产环境,但在投入生产之前可能需要手动的最终审查和决策。

  3. 持续部署 (CD - Continuous Deployment): 持续部署是持续交付的进一步延伸,它的目标是通过自动化流程,将通过 CI 流程的代码自动部署到生产环境,无需人工干预。在持续部署中,合格的代码经过自动测试后,将直接部署到生产环境。

CI/CD 工作流程通常包括自动化测试、构建、部署和监控等环节,以确保软件可以快速、高效地交付到最终用户手中。这对于敏捷开发、DevOps 实践以及快速响应市场需求都是非常关键的。

二、实现步骤

项目A更新代码之后通过webhook触发项目B的pipeline

1. 创建 pipeline trigger token

在需要被触发的项目的setting里面找到 Pipeline triggers,点击Add trigger 生成 token

2. 触发

当创建了token之后,可以通过API或者是webhook用 token 来触发 pipeline 事件

例如cURL:

curl --request POST \
     --form token=<token> \
     --form ref=<ref_name> \
     "https://gitlab.example.com/api/v4/projects/<project_id>/trigger/pipeline"

CI/CD Job:

trigger_pipeline:
  stage: deploy
  script:
    - 'curl --fail --request POST --form token=$MY_TRIGGER_TOKEN --form ref=main "https://gitlab.example.com/api/v4/projects/123456/trigger/pipeline"'
  rules:
    - if: $CI_COMMIT_TAG
  environment: production

WebHook:Webhook(网络挂钩)是一种用于实时事件通知的机制,它允许一个系统将事件信息发送到另一个系统。Webhook 是在特定事件发生时自动触发的 HTTP POST 请求。通常,Webhook 被用于将实时事件从一个系统推送到另一个系统,从而触发自动化的操作。

https://gitlab.example.com/api/v4/projects/<project_id>/ref/<ref_name>/trigger/pipeline?token=<token>

我们这里使用 WebHook来触发项目B的自动更新事件:在项目A的设置里找到 Webhooks 填入 pipeline trigger 中获得的 url,选择相应的触发事件,下图选择了 Push 操作来触发自动更新错误码文档。

3.  创建和运行 pipeline

官方文档地址:GitLab官方文档

自动更新文档需要运行代码,这里需要我们首先有一个 runner

GitLab Runner 是 GitLab CI/CD(持续集成/持续交付)系统的一个组件,用于执行构建、测试和部署作业。Runner 负责接收来自 GitLab CI 的作业请求,并在指定的环境中执行这些作业。每个 Runner 都与一个特定项目相关联,并负责处理该项目的 CI/CD 工作。

mac下载 GitLab Runner:

brew install gitlab-runner

注册:这一步需要注意设置了tag后续ci文件里要指定tag

gitlab-runner register

启动:

gitlab-runner install

gitlab-runner start

4. 编写.gitlab-ci.yml 文件

.gitlab-ci.yml 是 GitLab CI/CD 配置文件,用于定义项目的 CI/CD 流程。这个文件应该位于项目的根目录,并包含了构建、测试、部署等阶段的定义。

以下是一个简单示例:

stages:
  - build
  - test
  - deploy

variables:
  # 定义全局变量,可以在整个文件中使用
  GIT_STRATEGY: clone
  TEST_IMAGE: "alpine:latest"

before_script:
  # 所有阶段执行前都会执行的脚本
  - echo "Before script: Initialize environment"

build_job:
  stage: build
  script:
    - echo "Building the project..."

test_job:
  stage: test
  script:
    - echo "Running tests..."
  only:
    - master # 只有在 master 分支上触发

deploy_job:
  stage: deploy
  script:
    - echo "Deploying to production..."
  only:
    - master

上述示例文件定义了三个阶段( build test deploy ),并定义了一些全局变量。每个阶段下都有一个或多个作业( job )的定义,包括作业的名称、阶段、脚本等信息。

  • before_script : 定义了在所有阶段执行前都会运行的脚本。
  • build_job : 定义了一个构建作业,用于构建项目。
  • test_job : 定义了一个测试作业,用于运行测试。通过 only 关键字,指定只有在 master 分支上触发时才执行。
  • deploy_job : 定义了一个部署作业,用于将项目部署到生产环境。同样,通过 only 关键字,指定只有在 master 分支上触发时才执行。

自动更新操作:

stages:
  - run_main_go

run_main_go:
  stage: run_main_go
  image: reg.smvm.cn/appbase/golang-build:1.21-alpine3.17
  script:
    - go mod download -x
    - go run main.go
  artifacts:
    paths:
      - "*.md"
  tags:
    - k8runner

项目A的Push事件都会触发项目B的自动更新文档操作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档 的相关文章

  • 如何在 GitLab CI 构建期间从私有 GitLab Git 存储库中提取 NPM 依赖项

    我有一份工作 gitlab ci yml执行以下操作的文件npm install像这样 test image node 10 script npm install npm test 问题是我在我的项目中引用了一个私有的 GitLab 存储库
  • 从 JIRA 创建 Gitlab 分支

    我最近开始使用 Gitlab 并与 Jira 集成 Gitlab 和 Jira 服务器都是在我的公司环境内部自行托管的 我遇到了一个要求 我想直接从 JIRA 问题在 Gitlab 中为项目 问题创建一个分支 有可能做到吗 如果是的话怎么办
  • 如何修复 CI/CD 上的 SSH Webpack 构建超时 (Gitlab)

    我已经创建了与 Gitlab 的 CI CD 集成 并且在运行 CI CD 时一直拖延 webpack 和资产的最终编译 这是针对 Linux 16 04 t2 small AWS 实例的 我很好奇这是否是内存 处理器问题 尽管如果我通过
  • 在 .gitlab-ci.yml 上找不到curl命令

    我有一个 gitlab ci yml 文件 它创建一些 docker 镜像并将其推送到 AWS ECR 当我运行curl命令将一些工件推送到远程存储库时 它显示curl 未找到 我已经在使用 openjdk 映像进行 gradlew 构建
  • GITLAB SSL证书问题:无法获取本地颁发者证书

    我正在尝试在 gitLab 中推送我的第一个项目 但出现此错误 致命 无法访问 https git SSL证书问题 无法获取本地颁发者证书 最后我在这里找到了解决方案https newbedev com invalid ssl certif
  • 在 GitLab CI 中使用合并请求作业中的工件

    在我的项目中 我使用合并请求来测试构建 并在提交合并到主版本后进行部署 目前我的 gitlab ci yml好像 build stage build script yarn build artifacts paths public depl
  • 在推送到容器注册表之前如何对构建的映像运行测试?

    从 gitlab 文档中可以看出如何使用 kaniko 创建 docker 镜像 build stage build image name gcr io kaniko project executor debug entrypoint sc
  • 自动将所有 GitHub 存储库镜像到 gitlab

    对于 GitLab 必须手动为每个存储库设置拉 推镜像 我想知道那里有any way可以自动将所有 Github 存储库同步到 GitLab 这样 当您在 GitHub 中创建新的存储库时 GitLab 中的存储库将自动创建 并充当拉取镜像
  • 创建新的合并请求时,GitLab 不运行 CI/CD 管道

    当我执行以下操作时 我的 GitLab CI CD 就会运行 click Create merge request 创建分支中的每个提交 当合并请求分支合并到master时 我想跳过第一个管道 在创建合并请求时 因为我想优化 紧固 我的 C
  • 无法访问 GitLab:SSL 证书已过期

    在 Visual Studio 中 我尝试从 GitLab 上的存储库中提取一些更改 但它给了我一个错误 Git 因致命错误而失败 无法访问https gitlab git SSL证书问题 证书已过期 如何生成新证书并将其添加到 VS 中
  • 如何在gitlab中发布javadoc?

    如何在gitlab中发布javadoc 到目前为止 我已将 java docs html 页面添加到存储库中 但是当我尝试查看它们时 会显示原始文本 html 源 而不是呈现的 html 页面 有可能吗 为任何偶然发现这个问题的人提供更新
  • 指纹已经被gitlab采集了

    我格式化了我的 Windows 7 笔记本电脑 并尝试让 git 设置再次工作 我安装了 git 和源代码树应用程序 我从 gitlab 删除了 SSH 密钥并使用重新生成了密钥ssh keygen 但是当我尝试在 gitlab 添加 SS
  • Jenkins 和 Gitlab 不获取代码

    当我设置自己的项目时 我遇到了问题 我开始配置我的 Jenkins 作业 我这样做了 在 Jenkins 上为 gitlab 用户帐户创建凭证 在 gitlab 上创建访问令牌并在 Jenkins 中使用此令牌来启用它 and this i
  • 将存储库从 Github 移至 Gitlab

    有没有办法将整个存储库从 Github 移动到 GitLab 对于代码本身来说 只需在 GitLab 上创建一个新的存储库并推送到它即可 Wiki 页面位于 Github 上的单独分支中 并通过 Git 机制进行管理 据我所知 GitLab
  • 即使存储库存在于 git_data_dirs 路径中,Gitlab也会返回“No Repository”

    Summary 备份和迁移后 某些存储库在 Web 控制台中返回 无存储库 错误 并且无法克隆 已验证存储库是否存在 如 git data dirs 文件夹中指定的那样 作为测试 我可以直接从 repositories 文件夹克隆 无存储库
  • GitLab 是否通过 git-annex 或其他方式支持大文件?

    我运行一个 GitLab 实例 并希望允许我的用户上传几乎任何大小的文件 众所周知 git 在处理大文件方面仍然存在问题 我知道通过将文件存储在其他地方并仅对元数据进行版本控制来规避此问题的方法 例如git annex git media
  • GitLab API 如何获取最后一次提交?日志树?

    GitLab API 如何获取最后一次提交 GET projects id repository tree name assets type tree mode 040000 id 6229c43a7e16fcc7e95f923f8ddad
  • 如何使用.NET从gitlab hooks获取推送信息

    我需要写一个网站来显示我们团队的推送信息 现在我遇到一个问题 如何从gitlab获取信息 the type of push infomation is JSON and what you need to do is to add a URL
  • 如何使用 LDAP 身份验证使用 gitlab 设置管理员用户?

    我刚刚设置了 gitlab 但我完全迷失了管理员用户 维基百科似乎对这个话题保持沉默 谷歌也没有提供帮助 那么 如何在 LDAP 身份验证上使用 gitlab 设置管理员用户 您还可以通过在 Rails 控制台中执行以下操作来为用户设置管理
  • 如何在同一实例中运行 Gitlab CI 作业

    我已经自动缩放了 gitlab runnerAWS现货实例 而且效果很好 我在运行作业时遇到问题 下面是我的 gitlab ci yml它有两个阶段 stages build dev1 build build stage build scr

随机推荐

  • 基于卡尔曼的混合预编码技术用于多用户毫米波大规模MIMO系统研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • Redis基础系列-哨兵模式

    Redis基础系列 哨兵模式 文章目录 Redis基础系列 哨兵模式 1 引言 2 什么是哨兵模式 3 哨兵模式的配置 4 哨兵模式的启动和验证 4 1 主master宕机 看会出现什么问题
  • 获取员工其当前的薪水比其manager当前薪水还高的相关信息

    后悔早签三方了 双非渣渣不该信金九银十 凯子今年确实也卷起来了 想进华为 就别去华为实习 鼠鼠拿了几个offer 请大家帮忙看下 有点困惑百度 base北京 n 4 16 薪资可 华为开奖 一个月过去了 25终于找到JAVA实习 算法方向推
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 【go语言】读取toml文件

    一 简介 TOML 全称为Tom s Obvious Minimal Language 是一种易读的配置文件格式 旨在成为一个极简的数据序列化语言 TOML的设计原则之一是保持简洁性 易读性 同时提供足够的灵活性以满足各种应用场景 TOML
  • 都在做端到端了,传统规控/轨迹预测还能坚持几年?

    最近有些做传统规控和轨迹预测的小伙伴问我 现在LLM做端到端自动驾驶这么火 自己要不要考虑转行 坚持传统规控 轨迹预测还能做几年 会不会三五年后失业了 而且最近小米汽车发布会 也说已经搭载了端到端感知决策大模型 全球首次用于量产车 这个问题
  • 深圳三维扫描分析/偏差检测模具型腔三维尺寸及形位偏差测量公司

    CASAIM中科广电三维扫描模具型腔深圳案例 模具型腔的三维扫描分析 偏差检测是一项重要的质量控制过程 旨在确保模具制造过程中的精确度和一致性 CASAIM中科广电通过使用高精度的三维扫描设备 可以获取模具型腔的实际形状和尺寸数据 并将其与
  • ICLR2024 | ReSimAD:如何在没有真实数据的情况下,提升感知模型的泛化性能

    点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 今天自动驾驶之心为大家分享 ICLR 2024刚刚中稿的ReSimAD ReSimAD可以极大地提升感知模型对于目标域场景的泛化能力 甚至比一些无监督领域适配的方法还要
  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • pip问题们

    pip问题们 下载指定版本 已经安装的库列表保存到文本文件中 根据依赖文件批量安装库 离线安装库 whl 文件 pip install git https xxxx安装失败解决方法 下载指定版本 安装特定版本的package 通过使用 gt
  • 上汽飞凡,突然换帅了。。。

    作者 有据无车 编辑 智能车参考 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心技术交流群 本文只做学术分享 如有侵权 联系删文 飞凡汽车 突然换帅了 最近 上汽集团官方宣布 乘用车总经理 飞
  • FL Studio2024国内中文版多少钱?有哪些新功能呢

    购买您想要的最新的水果软件FL2024版本 然后所有未来所有该版本更新都是免费的 再也不用付钱了 在音乐软件行业 更新费用通常在 960 1600 元之间 而 FL Studio 将始终免费为您提供最新版本 因为我们相信 只要我们开发 FL
  • 视频剪辑软件Camtasia2024最新版本快捷键大全

    Camtasia Studio是一款专门录制屏幕动作的工具 它能在任何颜色模式下轻松地记录 屏幕动作 包括影像 音效 鼠标移动轨迹 解说声音等等 今天来给大家介绍一下Camtasia快捷键的相关内容 Camtasia也是一个十分好用的电脑屏
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 有 无策略奖励 2 2 训练结果1
  • 题解 | #连续两次作答试卷的最大时间窗#

    程序员到大神成长书单 最无语的公司 写代码让领导不开心了咋办 快手秋招急招 暑期实习也可以投 找实习需要实习经历 操作系统岗 简历能走吗 面了南网数字集团 面试官问的问题有两个挺尖锐的 这种是不是说明不太想要我 俗话说打蛇打七寸 我感觉面试
  • 查找薪水记录超15条的员工号emp_no以及其对应的记录次数

    理想 大模型面经 23届试用期没通过 还能找到工作吗 有没有啥厂招往届生啊 腾讯音乐前端暑期实习一面 已oc 华为od 机试 面试面经 华为OD技术岗面经汇总 软开 算法 测试岗 想看一下大家看法 一个月过去了 25终于找到JAVA实习 华
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 2024最新MathType7.4.10中文版下载安装激活教程

    MathType 是一款专业的数学公式编辑工具 提供交互式编辑器 让你在编辑数学试卷 书籍 报刊 论文 幻灯演示等文档轻松输入各种复杂的数学公式和符号 1 本次讲解mathtype 7版本的安装步骤 MathType2024 Win 安装包
  • 『力扣刷题本』:逆波兰表达式求值

    大家好久不昂 最近 1 个多月罗根一直在备考期末 文章发的很少 现在已经放寒假啦 学习自然也不能拉下 毕竟 4 月份就要去参加蓝桥杯了 先给自己定个小目标 日更 2 篇 咳咳 下面马上开始讲题 一 题目 给你一个字符串数组 tokens 表
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两