Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在gitlab ci中使用规则_Gitlab_Gitlab Ci_Pipeline_Gitlab Ci Runner - Fatal编程技术网

如何在gitlab ci中使用规则

如何在gitlab ci中使用规则,gitlab,gitlab-ci,pipeline,gitlab-ci-runner,Gitlab,Gitlab Ci,Pipeline,Gitlab Ci Runner,我正在尝试构建一个可以有条件执行的作业,这取决于WebClient中的文件或子目录是否在develope分支中使用规则进行了修改。如果仅在开发分支中发现更改,则将构建管道 目前,我在.gitlab ci.yml中得到的是 deploy_dev_client: stage: client tags: - my tags script: - '& cd WebClient' - 'npm rebuild node-sass' - 'npm inst

我正在尝试构建一个可以有条件执行的作业,这取决于
WebClient
中的文件或子目录是否在
develope
分支中使用
规则进行了修改。如果仅在开发分支中发现更改,则将构建管道

目前,我在
.gitlab ci.yml
中得到的是

deploy_dev_client:
  stage: client
  tags:
    - my tags
  script:
    - '& cd WebClient'
    - 'npm rebuild node-sass'
    - 'npm install @angular/cli@7.0.3'
    - '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'

  rules:
    - changes:
      - WebClient/**/*
      when: always
    - when: never
然而,在测试之后,我意识到每当我将本地回购协议中的内容推送到gitlab时,甚至在另一边的分支上,管道都会被执行

我曾尝试过仅使用
:develope'
,但它会导致
yaml invalid
错误,可能是因为如果已使用
规则,则无法仅使用
。我是否仍然可以使用
规则
仅针对
开发
分支机构?

在此链接中:

他们写道,
规则:更改
的工作方式应与
仅/除
外完全相同。如果您只阅读了
/除了
,它有一些奇怪的地方:

将新分支或新标记推送到GitLab时,策略的计算结果始终为true

为了避免这种情况,并且只在开发分支上运行作业,您应该能够将
if
更改相结合:

deploy_dev_client:
  stage: client
  tags:
    - my tags
  script:
    - '& cd WebClient'
    - 'npm rebuild node-sass'
    - 'npm install @angular/cli@7.0.3'
    - '& npm run build-release --max_old_space_size=$NODE_MEMORY_SIZE'

  rules:
    - if: '$CI_COMMIT_REF_NAME== "development"'
      changes:
      - WebClient/**/*
      when: always
(我还没有测试过这段代码,所以如果完全错误,请告诉我!)