仅当有新标签时才触发Gitlab-CI管道

Hen*_*ouz 5 continuous-integration gitlab gitlab-ci

我有以下gitlab-ci conf。文件:

before_script:
  - echo %CI_BUILD_REF%
  - echo %CI_PROJECT_DIR%

stages:
  - createPBLs
  - build
  - package


create PBLs:
  stage: createPBLs
  script: 
    - xcopy /y /s "%CI_PROJECT_DIR%" "C:\Bauen\"
    - cd "C:\Bauen\"
    - ./run_orcascript.cmd


build:
  stage: build
  script:
  - cd "C:\Bauen\"
  - ./run_pbc.cmd
  except:
  - master

build_master:
  stage: build
  script:
  - cd "C:\Bauen\"
  - ./run_pbcm.cmd
  only:
  - master

package:
  stage: package
  script:
  - cd "C:\Bauen\"
  - ./cpfiles.cmd
  artifacts:
    expire_in: 1 week
    name: "%CI_COMMIT_REF_NAME%"
    paths:
      - GitLab-Build
Run Code Online (Sandbox Code Playgroud)

如何添加仅在分支中添加了新标签后才触发管道的规则?标签应以“ Ticket / ticket_”开头

目前,他正在竭尽全力。

Lar*_*Cai 10

下面可能更具可读性,仅参见:variables@gitlab-ci 文档refs:tags

only:
  refs:
    - tags
  variables:
    - $CI_COMMIT_TAG =~ /^[Tt]icket-.*/
Run Code Online (Sandbox Code Playgroud)


Rek*_*vni 5

需要使用语法:

only:
  - tags
Run Code Online (Sandbox Code Playgroud)

这将触发任何Tag推送。如果您想更具体一点,可以执行以下操作:

only:
  - /Ticket\/ticket\_.*/
Run Code Online (Sandbox Code Playgroud)

使用该Ticket/ticket_标签的任何推送都可以构建。

  • ⚠️ `only 和 except 没有被积极开发。规则是控制何时将作业添加到管道的首选关键字。`[Gitlab 14.9](https://docs.gitlab.com/14.9/ee/ci/yaml/#only-- except) (4认同)
  • 嗯,您可能需要添加`except:-分支' (2认同)

Ale*_*oya 5

varibles-expression我建议在使用提交时使用模式

例子

build_api:
 stage: build
 script:
  - docker build --pull -t $CONTAINER_TEST_IMAGE .
  - docker push $CONTAINER_TEST_IMAGE
only:
  variables:
   - $CI_COMMIT_MESSAGE =~ /(\[pipeline\]|(merge))/     
Run Code Online (Sandbox Code Playgroud)

在这里我说的是,当有[管道]或在提交内合并only时执行该作业。更多信息,请参见 gitlab