Gitlab CI/CD无法运行我的部署阶段

3

初次接触GitLab CI/CD。我的构建工作正常运行,但部署工作从未执行过。我删除了所有规则,但仍无法运行。

这是我的.gitlab-ci.yml文件内容:

build-job:
  stage: build
  script:
    - echo "STAGE - BUILD"
    - echo $CI_JOB_STAGE
    - echo $CI_COMMIT_MESSAGE
    - echo $CI_COMMIT_BRANCH
    - echo $CI_ENVIRONMENT_NAME
    - mkdir bin
    - mkdir obj
    - "dotnet build"


deploy-to-staging:
  stage: deploy
  script:
    - echo "STAGE - DEPLOY (STAGING)"

任何想法为什么Gitlab会跳过部署阶段?我必须明确定义我的阶段吗?我尝试了,但没有任何改变(这些行在yml文件的底部一段时间):
stages:
  - build
  - deploy

1
阶段应该在顶部。你有通过CI linter运行它吗?构建任务通过了吗? - Arty-chan
感谢您的评论,非常感谢... 是的,构建阶段总是成功的,但之后就停止了。我的yaml文件确实通过了linter。奇怪的是,当我将stages部分放在文件顶部时,管道会失败并显示“yaml无效”消息。根据文档,如果缺少stages部分,则使用默认的stages(.pre、build、test、deploy、.post)... 我想知道是否必须在测试中添加一些内容才能执行部署。 - birwin
我刚刚为阶段测试添加了一个测试作业,其脚本只是将文本输出。现在所有三个阶段都已运行。我不知道你必须为每个定义的作业提供一个作业......在我的情况下,由于我没有定义阶段,我必须为每个默认阶段(除了.pre和.post)提供一个作业。 - birwin
1
解决这个问题的方法是在顶部定义阶段。如果代码检查工具报错,请仔细检查空格等。您还可以访问CI代码检查工具,以确保在运行流水线之前它是有效的。 - Arty-chan
2个回答

6
尽管在阶段文档中没有明确说明,但通常应将它们设置在顶部。如果出现yaml invalid失败,则使用CI lint工具进行双重检查,以检查您的间距和类似内容,而无需运行管道。请记住:
  1. 如果作业失败,则不会启动下一个阶段。
  2. 如果您未定义阶段,则使用构建、测试、部署。
  3. 任何未定义阶段的作业都被视为test
  4. 任何未使用的阶段应该被隐藏。然而,确切的行为可能取决于您所使用的GitLab版本。(如果我没记错的话,这是改变过的,但我无法随手找到合并请求。)

以下是有趣的事情...如果我在文件顶部设置我的阶段,那么lint会成功,但是当我检查代码时,管道会因为lint错误而失败。我必须注释掉管道的阶段部分才能执行。此外,我必须为每个阶段提供一个作业,否则只有构建阶段会执行。我已经验证了文件中的阶段部分周围没有额外的空格。实际上,我将阶段部分移动到文件底部,linter仍然说它是有效的,管道执行并成功。???? 我不知道为什么! - birwin
如果您可以在公共项目中重现此问题,并且您的GitLab版本是最新的,那么我建议您提交一个错误报告:https://gitlab.com/gitlab-org/gitlab/-/issues/new?issuable_template=bug - Arty-chan

0
如您在Gitlab CI官方文档中所见,通过定义stages,将指定作业的执行顺序和顺序。
因此,以下gitlab-ci.yml应该可以正常工作:
stages: 
  - build
  - deploy


build-job:
  stage: build
  script:
    - echo "STAGE - BUILD"
    - echo $CI_JOB_STAGE
    - echo $CI_COMMIT_MESSAGE
    - echo $CI_COMMIT_BRANCH
    - echo $CI_ENVIRONMENT_NAME
    - mkdir bin
    - mkdir obj
    - "dotnet build"


deploy-to-staging:
  stage: deploy
  script:
    - echo "STAGE - DEPLOY (STAGING)"

截图:

pipeline success screenshot


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接