仅当存在新标记时才触发Gitlab-CI管道

时间:2018-03-27 13:37:00

标签: 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

如果在分支中添加了新标记,如何添加管道将仅触发的规则?标签应以" Ticket / ticket _"

开头

目前他正在为每一次推动而努力。

3 个答案:

答案 0 :(得分:4)

您需要使用only语法:

only:
  - tags

这会触发任何Tag被推送。如果你想更具体一点,你可以这样做:

only:
  - /Ticket\/ticket\_.*/

可以使用Ticket/ticket_标记进行任何推送。

答案 1 :(得分:0)

我建议在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))/     

这里我是说only在提交中包含 [管道] 合并时执行该作业。更多信息,在这里 gitlab

答案 2 :(得分:0)

下面的内容更具可读性,请参见only:varibles@gitlab-ci docsrefs:tags

  only:
    refs:
      - tags
    variables:
      - $CI_COMMIT_TAG =~ /^[Tt]icket-.*/