Gitlab CI job 运行ning on new tag 尽管规则说 运行 only on master

Gitlab CI job running on new tag despite rules say run only on master

我在管道中有这样的工作:

msi_build:
  stage: Build
  script:
    - cd project_name
    - ls -a
    - wine python setup.py bdist_msi
  rules:
    - if: '$CI_COMMIT_REF_NAME == $BUILD_BRANCH'
    - changes:
      - /*.{py, html, css, yml, json}
  tags:
    - pywine
  artifacts:
    when: on_success
    paths:
      - /builds/$CI_PROJECT_PATH/project_name/dist/*.msi
    expire_in: 1 yrs

但这也是 运行 当我 tag 提交并将其推送到另一个分支时。

BUILD_BRANCH是大师。当仅将正常提交推送到其他分支时,这不会 运行。推送到 master 时它会 运行 。但出于某种我不知道的原因,它也在标记的提交上 运行s。是什么原因?

如果重要的话我使用了:git push --atomic origin <branch name> <tag> 推送到另一个分支时。

  rules:
    - if: '$CI_COMMIT_REF_NAME == $BUILD_BRANCH'
    - changes:
      - /*.{py, html, css, yml, json}

不是

  rules:
    - if: '$CI_COMMIT_REF_NAME == $BUILD_BRANCH'
      changes:
      - /*.{py, html, css, yml, json}

第一个 运行s 当 $CI_COMMIT_REF_NAME == $BUILD_BRANCH 文件被更改时。第二个 运行 等于 AND 更改了扩展名的文件。很可能在提交中,对于具有这些扩展名的文件,标记是 运行,因此命令是 运行,忽略第一个条件,因为它是“或”。

when: on_success 显式添加到 rules: 是个好主意,这样它就很明显了。