Gitlab CI-仅在由CRON触发时运行管道
您好,我是gitlab的新手,到目前为止,我在做任何事情(跑步者、管道等)方面都取得了成功 但我现在想设置每天只生成一次自动测试,由CRON触发,而不是由git repo上的每次推送触发 我使用的是8.14.2 gitlab,没有新的时间表功能 所以我用了这个gitlab.ci.yml: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
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,除了:-在新回购协议上推送,以查看是否是回购问题?