当前位置: 首页 > 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 流水线,并支持多分支的动态部署,满足实际开发需求。

http://www.lryc.cn/news/492906.html

相关文章:

  • uniapp echarts tooltip formation 不识别html
  • 3D扫描对文博行业有哪些影响?
  • 面试(十一)
  • React-useState的使用
  • 设计模式之破环单例模式和阻止破坏
  • 11.19c++面向对象+单例模式
  • 一文了解TensorFlow是什么
  • 如何做好一份技术文档?
  • Linux和Ubuntu的关系
  • 软件工程之静态建模
  • PICO VR串流调试Unity程序
  • 自媒体图文视频自动生成软件|03| 页面和结构介绍
  • 深入浅出摸透AIGC文生图产品SD(Stable Diffusion)
  • 解析生成对抗网络(GAN):原理与应用
  • CodeIgniter URL结构
  • 从 App Search 到 Elasticsearch — 挖掘搜索的未来
  • 鸿蒙本地模拟器 模拟TCP服务端的过程
  • Qt/C++基于重力模拟的像素点水平堆叠效果
  • Zookeeper学习心得
  • 嵌入式开发工程师面试题 - 2024/11/24
  • Python中打印当前目录文件树的脚本
  • 全景图像(Panorama Image)向透视图像(Perspective Image)的跨视图转化(Cross-view)
  • Redis 中的 hcan 命令耗内存,有什么优化的方式吗 ?
  • 豆包MarsCode算法题:三数之和问题
  • 【Android】AnimationDrawable帧动画的实现
  • 【消息序列】详解(7):剖析回环模式--设备测试的核心利器
  • 解决Ubuntu 22.04系统中网络Ping问题的方法
  • 【大数据学习 | Spark-SQL】Spark-SQL编程
  • 15分钟做完一个小程序,腾讯这个工具有点东西
  • manim动画编程(安装+入门)