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

GitLab使用示例

以下是从 新建分支开始,配置 GitLab CI/CD 的完整详细流程,涵盖每个步骤、配置文件路径和具体示例。


1. 新建分支并克隆项目

1.1 在 GitLab 上创建新分支

  1. 登录 GitLab,进入目标项目页面。
  2. 依次点击 Repository > Branches
  3. 点击右上角 New branch
    • 输入分支名称(如 feature/add-ci)。
    • 从主分支(mainmaster)创建新分支。
  4. 创建完成后,GitLab 会显示新分支。

1.2 将新分支克隆到本地

  1. 获取项目的 Git 仓库 URL。
  2. 在本地克隆项目并切换到新分支:
    git clone <git-repo-url>
    cd <project-directory>
    git checkout feature/add-ci
    

2. 在新分支中添加 GitLab CI 配置文件

2.1 创建 .gitlab-ci.yml 文件

  1. 在项目根目录下创建 .gitlab-ci.yml 文件:

    touch .gitlab-ci.yml
    
  2. 打开 .gitlab-ci.yml 文件并添加以下内容:

    stages:          # 定义流水线的阶段顺序- build- test- deploybuild_job:       # 构建阶段的作业stage: buildscript:- echo "Building the project..."- mkdir build- echo "Build successful!" > build/status.txtartifacts:paths:        # 保存构建结果以供后续作业使用- build/test_job:        # 测试阶段的作业stage: testscript:- echo "Running tests..."- echo "Tests passed!"deploy_job:      # 部署阶段的作业stage: deployscript:- echo "Deploying the application..."when: manual    # 手动触发部署
    

2.2 提交并推送配置文件

  1. 将配置文件添加到 Git:

    git add .gitlab-ci.yml
    git commit -m "Add CI configuration"
    
  2. 推送到远程分支:

    git push origin feature/add-ci
    

3. 验证 CI/CD 配置是否生效

3.1 查看 Pipeline 状态

  1. 登录 GitLab,进入项目页面。
  2. 点击左侧菜单中的 CI/CD > Pipelines
  3. 可以看到新的 Pipeline 被触发,包含以下阶段:
    • Build 阶段。
    • Test 阶段。
    • Deploy 阶段。

3.2 查看作业日志

  1. 点击 Pipeline,查看每个阶段的作业。
  2. 点击任意作业名称(如 build_job),查看其详细日志输出:
    Building the project...
    Build successful!
    

4. 修改 CI/CD 配置以支持多分支

为了在不同分支上定义不同的 CI/CD 行为,可以通过 rules 指定触发条件。

4.1 修改 .gitlab-ci.yml 文件

  1. 在文件中添加以下规则:

    stages:- build- test- deploybuild_job:stage: buildscript:- echo "Building the project..."- mkdir build- echo "Build successful!" > build/status.txtrules:           # 仅在 main 和 feature/* 分支触发- if: $CI_COMMIT_BRANCH == "main"- if: $CI_COMMIT_BRANCH =~ /feature\/.*/test_job:stage: testscript:- echo "Running tests..."rules:           # 仅在 feature/add-ci 分支触发- if: $CI_COMMIT_BRANCH == "feature/add-ci"deploy_job:stage: deployscript:- echo "Deploying the application..."when: manualrules:- if: $CI_COMMIT_BRANCH == "main"
    
  2. 提交并推送修改:

    git add .gitlab-ci.yml
    git commit -m "Add branch rules for CI"
    git push origin feature/add-ci
    

5. 合并分支并触发主分支 Pipeline

5.1 创建 Merge Request

  1. 登录 GitLab,进入项目页面。
  2. 点击 Merge Requests > New Merge Request
  3. 选择:
    • Source Branchfeature/add-ci
    • Target Branchmain
  4. 填写标题和描述,点击 Create Merge Request

5.2 合并分支

  1. 在 Merge Request 页面,确保 CI/CD 流水线成功运行。
  2. 点击 Merge 按钮,将新分支合并到主分支。
  3. 合并后,主分支的 CI/CD Pipeline 会自动触发。

6. 高阶示例:实现动态部署

6.1 添加动态环境部署

修改 .gitlab-ci.yml 文件,支持多环境动态部署:

stages:- build- test- deploybuild_job:stage: buildscript:- echo "Building the application..."- mkdir build- echo "Build successful!" > build/status.txtartifacts:paths:- build/test_job:stage: testscript:- echo "Running tests..."rules:- if: $CI_COMMIT_BRANCH =~ /feature\/.*/deploy_job:stage: deployscript:- echo "Deploying to $CI_ENVIRONMENT_NAME..."- echo "Deployment successful!"environment:name: $CI_COMMIT_BRANCH   # 使用分支名作为环境名rules:- if: $CI_COMMIT_BRANCH == "main"- if: $CI_COMMIT_BRANCH =~ /staging/

7. 验证动态部署

  1. 测试动态部署

    • 推送代码到 stagingmain 分支。
    • 查看 Pipeline 页面,确认 deploy_job 作业输出包含环境名。
    • 示例日志:
      Deploying to staging...
      Deployment successful!
      
  2. 手动触发生产部署

    • 在主分支的 Pipeline 页面,点击 deploy_jobPlay 按钮,手动触发部署。

总结

完整操作流程

  1. 创建新分支
    • 从 GitLab 页面创建新分支,并克隆到本地。
  2. 配置 CI/CD
    • 在项目根目录创建 .gitlab-ci.yml 文件,添加 CI/CD 配置。
  3. 提交和触发
    • 推送代码到远程分支,验证 Pipeline 是否成功运行。
  4. 动态控制
    • 使用 rules 配置分支或条件控制不同环境的部署。

通过以上步骤,你可以从零开始搭建 GitLab CI/CD 流水线,并支持多分支的动态部署,满足实际开发需求。

相关文章:

GitLab使用示例

以下是从 新建分支开始&#xff0c;配置 GitLab CI/CD 的完整详细流程&#xff0c;涵盖每个步骤、配置文件路径和具体示例。 1. 新建分支并克隆项目 1.1 在 GitLab 上创建新分支 登录 GitLab&#xff0c;进入目标项目页面。依次点击 Repository > Branches。点击右上角 Ne…...

uniapp echarts tooltip formation 不识别html

需求&#xff1a; echarts 的tooltip 的域名太长&#xff0c;导致超出屏幕 想要让他换行 思路一&#xff1a; 用formation自定义样式实现换行 但是&#xff1a; uniapp 生成微信小程序&#xff0c; echart种的tooltip 的formation 识别不了html &#xff0c;自定义样式没办…...

3D扫描对文博行业有哪些影响?

三维扫描技术对文博行业产生了深远的影响&#xff0c;主要体现在以下几个方面&#xff1a; 一、高精度建模与数字化保护 三维扫描技术通过高精度扫描设备&#xff0c;能够捕捉到文物的每一个细节&#xff0c;包括形状、纹理、颜色等&#xff0c;从而生成逼真的3D模型。这些模…...

面试(十一)

目录 一.IO多路复用 二.为什么有IO多路复用机制? 三.IO多路复用的三种实现方式 3.1 select select 函数接口 select 使用示例 select 缺点 3.2 poll poll函数接口 poll使用示例 poll缺点 3.3 epoll epoll函数接口 epoll使用示例 epoll缺点 四. 进程和线程的区别…...

React-useState的使用

useState 是 React 提供的一个 Hook&#xff0c;允许你在函数组件中添加和管理状态&#xff08;state&#xff09;。在类组件中&#xff0c;状态管理通常是通过 this.state 和 this.setState 来实现的&#xff0c;而在函数组件中&#xff0c;useState 提供了类似的功能。 基本…...

设计模式之破环单例模式和阻止破坏

目录 1. 序列化和反序列化2. 反射 这里单例模式就不多说了 23种设计模式之单例模式 1. 序列化和反序列化 这里用饿汉式来做例子 LazySingleton import java.io.Serializable;public class LazySingleton implements Serializable {private static LazySingleton lazySinglet…...

11.19c++面向对象+单例模式

编写如下类: class File{ FILE* fp }; 1:构造函数&#xff0c;打开一个指定的文件 2:write函数 向文件中写入数据 3&#xff1a;read函数&#xff0c;从文件中读取数据&#xff0c;以string类型返回 代码实现&#xff1a; #include <iostream>using namespace std;class…...

一文了解TensorFlow是什么

TensorFlow是一个开源的机器学习框架&#xff0c;由Google开发并维护。它提供了一个灵活且高效的环境&#xff0c;用于构建和训练各种机器学习模型。 TensorFlow的基本概念包括&#xff1a; 张量&#xff08;Tensor&#xff09;&#xff1a;TensorFlow中的核心数据结构&#x…...

如何做好一份技术文档?

打造出色技术文档的艺术 在当今技术驱动的世界中&#xff0c;技术文档扮演着至关重要的角色。它不仅是工程师和开发人员之间交流的桥梁&#xff0c;更是产品和技术成功的隐形推手。一份优秀的技术文档宛如一张精准的航海图&#xff0c;能够引导读者穿越技术的迷雾&#xff0c;…...

Linux和Ubuntu的关系

Linux和Ubuntu的关系&#xff1a; 1. Linux本身是内核&#xff0c;Ubuntu系统是基于Linux内核的操作系统。 2. Linux内核操作系统的构成&#xff1a; 内核、shell、文件系统、应用程序 -应用程序&#xff1a;文本编辑器等 -文件系统&#xff1a;文件存放在存储设备上的组织方…...

软件工程之静态建模

静态模型&#xff1a;有助于设计包、类名、属性和方法特征标记&#xff08;但不是方法体&#xff09;的定义&#xff0c;例如UML类图。 用例的关系&#xff1a; 扩展关系&#xff1a; 扩展关系允许一个用例&#xff08;可选&#xff09;扩展另一个用例&#xff08;基用例&…...

PICO VR串流调试Unity程序

在平时写Unity的VR程序的时候&#xff0c;需要调试自己写的代码&#xff0c;但是有的时候会发现场景过于复杂&#xff0c;不是HMD一体机能运行的&#xff0c;或者为了能够更方便的调试&#xff0c;不需要每次都将程序部署到眼睛里&#xff0c;这样非常浪费时间&#xff0c;对于…...

自媒体图文视频自动生成软件|03| 页面和结构介绍

代码获取方式在文本末尾&#x1f51a; *代码获取方式在文本末尾&#x1f51a; *代码获取方式在文本末尾&#x1f51a; *代码获取方式在文本末尾&#x1f51a; 视频图片生成器 一个基于 Python 和 Web 的工具&#xff0c;用于生成带有文字和语音的视频以及图片。支持多种尺寸、…...

深入浅出摸透AIGC文生图产品SD(Stable Diffusion)

hihi,朋友们,时隔半年(24年11月),终于能腾出时间唠一唠SD了🤣,真怕再不唠一唠,就轮不到SD了,技术更新换代是在是太快! 朋友们,最近(24年2月)是真的没时间整理笔记,每天都在疯狂的学习Stable Diffusion和WebUI & ComfyUI,工作实在有点忙,实践期间在飞书上…...

解析生成对抗网络(GAN):原理与应用

目录 一、引言 二、生成对抗网络原理 &#xff08;一&#xff09;基本架构 &#xff08;二&#xff09;训练过程 三、生成对抗网络的应用 &#xff08;一&#xff09;图像生成 无条件图像生成&#xff1a; &#xff08;二&#xff09;数据增强 &#xff08;三&#xff…...

CodeIgniter URL结构

CodeIgniter 的URL 结构设计得简洁且易于管理。通常遵循以下模式&#xff1a; http://<domain>/<index_page>/<controller>/<method>/<parameters> 下面是每个部分的详细说明&#xff1a; <domain>&#xff1a; 这是你的网站域名&#…...

从 App Search 到 Elasticsearch — 挖掘搜索的未来

作者&#xff1a;来自 Elastic Nick Chow App Search 将在 9.0 版本中停用&#xff0c;但 Elasticsearch 拥有你构建强大的 AI 搜索体验所需的一切。以下是你需要了解的内容。 生成式人工智能的最新进展正在改变用户行为&#xff0c;激励开发人员创造更具活力、更直观、更引人入…...

鸿蒙本地模拟器 模拟TCP服务端的过程

鸿蒙模拟器模拟TCP服务端的过程涉及几个关键步骤&#xff0c;主要包括创建TCPSocketServer实例、绑定IP地址和端口、监听连接请求、接收和发送数据以及处理连接事件。以下是详细的模拟过程&#xff1a; **1.创建TCPSocketServer实例&#xff1a;**首先&#xff0c;需要导入鸿蒙…...

Qt/C++基于重力模拟的像素点水平堆叠效果

本文将深入解析一个基于 Qt/C 的像素点模拟程序。程序通过 重力作用&#xff0c;将随机分布的像素点下落并水平堆叠&#xff0c;同时支持窗口动态拉伸后重新计算像素点分布。 程序功能概述 随机生成像素点&#xff1a;程序在初始化时随机生成一定数量的像素点&#xff0c;每个…...

Zookeeper学习心得

本人学zookeeper时按照此文路线学的 Zookeeper学习大纲 - 似懂非懂视为不懂 - 博客园 一、Zookeeper安装 ZooKeeper 入门教程 - Java陈序员 - 博客园 Docker安装Zookeeper教程&#xff08;超详细&#xff09;_docker 安装zk-CSDN博客 二、 zookeeper的数据模型 ZooKeepe…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...