如何在 Gitlab CICD Stage 上跳过重新初始化的现有 Git 存储库

mok*_*223 5 yaml gitlab-ci

下面是我的 YML 文件结构。我希望在不重新初始化 git 存储库的情况下运行后续阶段。git 存储库应该只在构建阶段的第一阶段进行初始化。

variables:
  GIT_STRATEGY: fetch

stages:
  - build
  - run_test
  - run_test2

build_job:
    variables:
        test_env: "test"
    stage: build
    script:
        - "powershell -File ./Scripts/BuildSolution.ps1"
    only:
        refs:
          - TDD-G2

run_test:
    variables:
        test_env: "test"
    stage: run_test
    script:
        - "powershell -File ./Project1/scripts/RunSelenium.ps1"
    artifacts:
        when: always
        paths:
          - ./Project1/TestResults

run_test2:
    variables:
        test_env: "test"
    stage: run_test2
    script:
        - "powershell -File ./Project2/scripts/RunSelenium.ps1"
    artifacts:
        when: always
        paths:
          - ./Project2/TestResults
Run Code Online (Sandbox Code Playgroud)

Dol*_*lly 11

我面临着非常相似的问题,我有三个阶段的构建、测试和部署。在部署阶段,我想创建一个类似标签,但我遇到了一个奇怪的问题,即使从远程删除标签后(注意:我独自处理这个项目),管道仍然不断失败,说标签已经存在。但一段时间后,同样的工作成功完成。

\n

为了解决这个问题,我将策略设置为clone(如下所述)仅用于部署(Git 存储库在此处再次重新初始化)作业,但对于构​​建和测试,它是 fetch(默认选项)。作为

\n
variables:\n  GIT_STRATEGY: clone\n
Run Code Online (Sandbox Code Playgroud)\n

对于亚搏体育app实验室:

\n
\n

Git 策略

\n

在 GitLab Runner 8.9 中引入。

\n

默认情况下,GitLab 配置为使用 fetch Git 策略,建议大型存储库使用该策略。此策略减少\n要传输的数据量,并且不会真正影响\n您可能通过 CI 对存储库执行的操作。

\n
\n

有两种选择。使用:

\n
    \n
  • git clone:速度较慢,因为它为每个作业从头开始克隆存储库
  • \n
  • git fetch:这是GitLab 中的默认设置,并且速度更快,因为它重复使用本地工作副本(如果 \xe2\x80\x99 不存在,则回退到克隆)。建议这样做,特别是对于大型存储库。
  • \n
\n

详细阅读在这里这里

\n

希望它对遇到这个问题的人有所帮助。

\n


Tam*_*ács 9

您可以使用该变量GIT_CLEAN_FLAGS来指示 gitlab-runner 以git clean受约束的方式进行调用。例如,通过指定none,您可以禁用git clean所有调用,这样前一阶段生成的文件就不会被删除。

run_test:
    variables:
        test_env: "test"
        GIT_CLEAN_FLAGS: none
Run Code Online (Sandbox Code Playgroud)

https://docs.gitlab.com/ee/ci/runners/configure_runners.html#git-clean-flags https://docs.gitlab.com/ee/ci/large_repositories/#git-clean-flags