下面是我的 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(默认选项)。作为
variables:\n GIT_STRATEGY: clone\nRun Code Online (Sandbox Code Playgroud)\n对于亚搏体育app实验室:
\n\n\nGit 策略
\n在 GitLab Runner 8.9 中引入。
\n默认情况下,GitLab 配置为使用 fetch Git 策略,建议大型存储库使用该策略。此策略减少\n要传输的数据量,并且不会真正影响\n您可能通过 CI 对存储库执行的操作。
\n
有两种选择。使用:
\n希望它对遇到这个问题的人有所帮助。
\n您可以使用该变量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