【问题标题】:Gitlab jobs to be ignored when variable is set设置变量时忽略 Gitlab 作业
【发布时间】:2022-01-07 23:34:18
【问题描述】:

我的 yaml 文件中有一些作业,我正在寻找一种仅在运行特定计划时(即设置某个变量时)运行某些作业的方法。

例如 ** 我创建了一个名为“每小时计划”的新计划,并创建了一个名为 $HOURLY 的变量,该变量设置为 TRUE。

HOURLY SCHEDULE

我还有另一个名为“每日日程”的日程 DAILY SCHEDULE

stages:          
  - build
  - test
  - deploy

build-job:       
  stage: build
  script:
    - echo "Build."

test-job:  
  stage: test   
  script:
    - echo "Test."
    
deploy-job:   
  stage: deploy  
  script:
    - echo "Deploy."

hourly-deploy-job:   
  stage: deploy
  script:
    - echo "Hourly Deploy."
  rules:
    - if: $HOURLY

我的问题是:

  1. 如何让“build-job”、“test-job”和“deploy-job”在“commit”、“push”或“Daily Schedule”期间运行
  2. 在“每小时计划”期间,只有“每小时部署作业”应该运行(而不是其他作业)。

我知道我可以做到以下几点:

stages:          
  - build
  - test
  - deploy

.hourly_deploy: &hourly_deploy
  except:
    variables:
      - $HOURLY == "TRUE"

build-job:       
  <<: *hourly_deploy
  stage: build
  script:
    - echo "Build."

test-job:  
  <<: *hourly_deploy
  stage: test   
  script:
    - echo "Test."
    
deploy-job:  
  <<: *hourly_deploy 
  stage: deploy  
  script:
    - echo "Deploy."

hourly-deploy-job:   
  stage: deploy
  script:
    - echo "Hourly Deploy."
  rules:
    - if: $HOURLY

但是,理想情况下,我只在“每小时部署作业”上做一个案例。这是因为我的 yaml 可能会在某个时候变大,如果我不小心,我可能会忘记在新作业上添加 &lt;&lt;: *hourly_deploy 标签,这意味着该作业将在每小时调度期间运行。

【问题讨论】:

    标签: gitlab yaml


    【解决方案1】:

    这不是一件容易实现的事情,我认为您应该重新考虑您的 CICD 策略并使用模板。

    您提到此管道可能会增长,使用模板可能会对您有很大帮助。

    这是我的例子,但它并不漂亮。

    stages:
      - build
      - test
      - deploy
      - hourly-deploy-job
    
    build-job:
      stage: build
      rules:
        - if: ($CI_PIPELINE_SOURCE == "push")
          when: always
        - if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
          when: always
      script:
        - echo "Build."
    
    test-job:
      stage: test
      rules:
        - if: ($CI_PIPELINE_SOURCE == "push")
          when: always
        - if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
          when: always
      script:
        - echo "Test."
    
    deploy-job:
      stage: deploy
      rules:
        - if: ($CI_PIPELINE_SOURCE == "push")
          when: always
        - if: ($CI_PIPELINE_SOURCE == "schedule") && ($DAILY == "true")
          when: always
      script:
        - echo "Deploy."
    
    hourly-deploy-job:
      stage: hourly-deploy-job
      rules:
        - if: ($CI_PIPELINE_SOURCE == "schedule") && ($HOURLY == "true")
          when: always
      script:
        - echo "Hourly Deploy."
    

    来源:

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 1970-01-01
      • 2020-11-26
      • 2023-04-05
      • 2022-01-19
      • 1970-01-01
      • 2023-03-15
      • 2019-01-22
      • 2021-12-05
      相关资源
      最近更新 更多