如何在Gitlab CD中进行每个更改的手动确认部署

43次阅读
没有评论

问题描述

是一个新手,正在使用CI/CD和Gitlab。他有一个Python项目,用于将LaTeX书籍解析为HTML,并将这些HTML上传到在线课程平台上。
在没有CI/CD的情况下,他的流程如下:
1. 修复LaTeX源文件
2. 运行脚本创建HTML文件(一些更改的产物)
3. 运行脚本比较每个HTML文件的旧版本和新版本,并要求确认将这些更改上传到在线平台。

他已经学会了使用Gitlab版本控制系统处理第一步。他也学会了使用Gitlab的CI流水线为第二步构建构件。

他的问题是:如何使用Gitlab CD执行流程的第三步(检查更新内容并确认应上传/部署的内容)?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Gitlab CD中,有两种场景可以实现用户的需求:
1. 脚本比较旧版本和新版本。你可以在一个阶段中检查输出,例如stage: compare。然后,当你确认无误后,可以使用when: manual来应用更改。
2. 你可以为每个文件单独执行第一步,因此你可以为每个文件创建一个阶段,例如stage: compare_file1等等。

用户提出了对方案1的疑问,以下是对方案1的进一步解释:
方案1中,你可以使用Gitlab CD的手动触发功能来实现确认更改的过程。具体步骤如下:
1. 在你的Gitlab CI/CD配置文件中,定义一个阶段(例如compare)来执行脚本比较旧版本和新版本的操作。
2. 在该阶段中,你可以使用适当的脚本或命令来比较旧版本和新版本,并生成一个输出,用于确认更改。
3. 在Gitlab CD中,你可以手动触发该阶段,以便在确认无误后应用更改。

以下是一个示例的Gitlab CI/CD配置文件:

stages:
  - compare
  - deploy

compare:
  stage: compare
  script:
    - python compare_script.py
  when: manual

deploy:
  stage: deploy
  script:
    - python deploy_script.py
  only:
    - master

在上面的示例中,我们定义了两个阶段:comparedeploy。在compare阶段中,我们执行了一个名为compare_script.py的脚本来比较旧版本和新版本。然后,我们使用when: manual来指定该阶段需要手动触发。在deploy阶段中,我们执行了一个名为deploy_script.py的脚本来应用更改。我们还使用only: master来指定只有在master分支上才会执行该阶段。

请注意,你需要根据你的实际需求修改示例配置文件,并编写适当的脚本来执行比较和部署操作。

方案2

使用脚本或工具来管理每个更改的手动确认可能会增加复杂性,并且需要确保更改的正确性。
另一种方法是编写脚本或使用工具来控制每个更改的手动确认。你可以使用when: manual来手动触发每个阶段,并在确认无误后继续下一个阶段。

以下是一个示例的Gitlab CI/CD配置文件:

stages:
  - compare_file1
  - compare_file2
  - deploy

compare_file1:
  stage: compare_file1
  script:
    - python compare_script_file1.py
  when: manual

compare_file2:
  stage: compare_file2
  script:
    - python compare_script_file2.py
  when: manual

deploy:
  stage: deploy
  script:
    - python deploy_script.py
  only:
    - master

在上面的示例中,我们定义了三个阶段:compare_file1compare_file2deploy。在compare_file1compare_file2阶段中,我们分别执行了名为compare_script_file1.pycompare_script_file2.py的脚本来比较每个文件的旧版本和新版本。然后,我们使用when: manual来指定这两个阶段需要手动触发。在deploy阶段中,我们执行了一个名为deploy_script.py的脚本来应用更改。我们还使用only: master来指定只有在master分支上才会执行该阶段。

请注意,你需要根据你的实际需求修改示例配置文件,并编写适当的脚本来执行比较和部署操作。

以上是两种在Gitlab CD中实现每个更改的手动确认部署的方案。你可以根据你的实际需求选择适合你的方案,并根据需要进行修改和优化。

正文完