GitLab CI 计划管道未在 master 上运行

giu*_*pep 15 gitlab gitlab-ci

我有一个预定的管道,每天一次将一些数据从一台服务器复制到另一台服务器。

管道在所有分支上都能正常工作,但如果我选择master分支(默认分支)作为target branch.

我已经尝试过一个精确的副本master,效果很好。

我认为这可能是因为master受保护,但我尝试了受保护的 master 副本,它起作用了。

我真的不确定发生了什么事。当我单击计划管道旁边的“播放”按钮时,它表示作业已成功计划,但我在作业列表中看不到任何作业。

这里有一些详细信息.gitlab-ci.yml

stages:
  - copy_data
  - linting
  - test
  - deploy


lint:
  needs: []
  stage: linting
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'
      changes:
        - "my_project/**/*.py"
  script:
    - ...

test:
  stage: test
  script:
    - ...
  rules:
    - if: $CI_PIPELINE_SOURCE == "schedule"
      when: never
    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH'

copy_database:on-schedule:
  stage: copy_data
  needs: []
  only:
    - schedules
    - $COPY_DB # this is set in the pipeline menu on gitlab
  script:
    - ...
  timeout: 3h
Run Code Online (Sandbox Code Playgroud)

giu*_*pep 31

我终于找到问题所在了!问题是 gitlab 说的Successfully scheduled a pipeline to run. Go to the Pipelines page for details.是实际上有错误。

\n

为了调试它,我使用了此处描述的技巧,即运行手动管道并设置CI_PIPELINE_SOURCE = "schedule". 以这种方式运行管道返回了错误消息,我能够解决该问题。

\n
\n

如果您想知道错误是什么,这里有更多详细信息。

\n

我有两个管道可选地在主分支上运行:

\n
prepare_release:\n  stage: prepare_release\n  rules:\n    - if: $CI_PIPELINE_SOURCE == "schedule"\n      when: never\n    - if: $CI_COMMIT_TAG\n      when: never\n    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n      when: manual\n  script:\n    - ...\n\ncreate_release:\n  image: registry.gitlab.com/gitlab-org/release-cli:latest\n  stage: release\n  needs:\n    - job: prepare_release\n      artifacts: true\n  rules:\n     // HERE THERE SHOULD BE A RULE TO PREVENT THIS FROM RUNNING ON SCHEDULE\n       // - if: $CI_PIPELINE_SOURCE == "schedule"\n    //  when: never\n    - if: $CI_COMMIT_TAG\n      when: never\n    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH\n  script:\n    - ...\n
Run Code Online (Sandbox Code Playgroud)\n

第二条管道没有

\n
    - if: $CI_PIPELINE_SOURCE == "schedule"\n      when: never\n
Run Code Online (Sandbox Code Playgroud)\n

因此尝试按计划跑步。然而,由于它需要前一个,并且未创建\xe2\x80\x99,因此它会出错。\n我的错误是假设“需要”会考虑父作业中的此规则。

\n

  • 恕我直言,这应该是 GitLab 的一个 bug,它说管道“成功”运行,但实际上却出错了。修复后有GitLab版本吗? (3认同)