Gitlab CI-仅在由CRON触发时运行管道

Gitlab CI-仅在由CRON触发时运行管道,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,您好,我是gitlab的新手,到目前为止,我在做任何事情(跑步者、管道等)方面都取得了成功 但我现在想设置每天只生成一次自动测试,由CRON触发,而不是由git repo上的每次推送触发 我使用的是8.14.2 gitlab,没有新的时间表功能 所以我用了这个gitlab.ci.yml: stages: - test test-karma: stage: test image: node:8.9.4 before_script: - apt-get update

您好,我是gitlab的新手,到目前为止,我在做任何事情(跑步者、管道等)方面都取得了成功

但我现在想设置每天只生成一次自动测试,由CRON触发,而不是由git repo上的每次推送触发

我使用的是8.14.2 gitlab,没有新的时间表功能

所以我用了这个gitlab.ci.yml:

stages:
  - test

test-karma:
  stage: test
  image: node:8.9.4
  before_script:
    - apt-get update
    - apt-get --yes install npm
    - apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3
  libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4
  libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6
  ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
   - npm install @angular/cli@1.4.5
   - npm install
 environment: dev
 script:
   - ./node_modules/.bin/ng test --single-run=true --watch=false
 only:
   - triggers
 except:
   - pushes
但是,尽管只有/除了部分,作业还是会被触发:

()每推一次git(我不想要)
()我要的那个老太婆

所以我找到了另一种方法
1-将gitlab上执行的变量设置为false
2-使用if语句保护每个脚本行
3-使用以下CRON:

00 4 * * * curl -X POST -F token=MY_TOKEN -F ref=master -F "variables[SOULD_EXECUTE]=true" http://MY_GITLAB_URL/api/v3/projects/30/trigger/builds
4-并将gitlab.ci.yml更改为

stages:
  - test

test-karma:
  stage: test
  image: node:8.9.4
  before_script:
    - if [ ${SOULD_EXECUTE} == "true" ]; then apt-get update;fi
    - if [ ${SOULD_EXECUTE} == "true" ]; then apt-get --yes install npm ;fi
    - if [ ${SOULD_EXECUTE} == "true" ]; then apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3
  libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4
  libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1
  libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6
  ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget;fi
   - if [ ${SOULD_EXECUTE} == "true" ]; then npm install @angular/cli@1.4.5;fi
   - if [ ${SOULD_EXECUTE} == "true" ]; then npm install; else echo "TEST JOB SKIPPED";fi
   - echo 'SOULD_EXECUTE => ' + ${SOULD_EXECUTE}
 environment: dev
 script:
   - if [ ${SOULD_EXECUTE} == "true" ]; then ./node_modules/.bin/ng test --single-run=true --watch=false;fi
 only:
   - triggers
很难看。。。谁能帮我安排一下吗?非常感谢你


问候。

我修复了我的问题,但不知道如何或为什么。我不得不将回购协议转移到gitlab的另一个团队。现在它工作得很好,唯一的:触发器(没有除外:push)使我不必为每次推送运行管道,我可以通过CRON-post调用运行它。

我修复了我的问题,不知道如何或为什么。我不得不将回购协议转移到gitlab的另一个团队。现在它工作得很好,唯一的:触发器(不带except:push)使我不必为每次推送运行管道,我可以通过CRON post调用运行它。

下面的内容也可以工作,而不需要使用
except

   only:
     - schedules

   only:
     - schedules

如果只执行
操作:-触发器
而不执行
操作,会发生什么情况,除了:-推送
?嘿,感谢您的关注。实际上,我加了一个例外:推,因为只有触发器不工作。然而,我不得不将gitlab上的回购协议转移到另一个组。。。从那时起,它的工作就像预期的那样。我不知道为什么:/当您只执行
操作时会发生什么情况:-触发
而不执行
操作,除了:-按下
?嘿,谢谢您的关注。实际上,我加了一个例外:推,因为只有触发器不工作。然而,我不得不将gitlab上的回购协议转移到另一个组。。。从那时起,它的工作就像预期的那样。我不知道你为什么解决了这个问题?您是否尝试过使用
除:-对新回购进行推送
以查看是否是回购问题?您是否找到了问题所在?您是否尝试过ith
,除了:-在新回购协议上推送
,以查看是否是回购问题?