簡體   English   中英

如何根據.gitlab-ci.yml 中所做的更改跳過工作?

[英]How can I skip a job based on the changes made in .gitlab-ci.yml?

我在 GitLab CI/CD 中有兩個工作: build-job (大約需要 10 分鍾)和deploy-job (大約需要 2 分鍾)。 在管道中, build-job成功,而deploy-job由於腳本中的拼寫錯誤而失敗。 如何修復此錯字並僅運行deploy-job ,而不是重新運行build-job

我當前的 .gitlab-ci.yml如下:

stages:
  - build
  - deploy

build-job:
  image: ...
  stage: build
  only:
    refs:
      - main
    changes:
      - .gitlab-ci.yml
      - pubspec.yaml
      - test/**/*
      - lib/**/*
  script:
      - ...
  artifacts:
    paths:
      - ...
    expire_in: 1 hour

deploy-job:
  image: ...
  stage: deploy
  dependencies:
    - build-job
  only:
    refs:
      - main
    changes:
      - .gitlab-ci.yml
      - pubspec.yaml
      - test/**/*
      - lib/**/*

  script:
    - ...

我想像:

  1. 觸發器(我)修復了deploy-job腳本中的錯字並推送更改
  2. 管道被觸發
  3. 跑步者查看build-job / only / changes描述的文件並檢測.gitlab-ci.yml文件中的單個更改
  4. 跑步者查看.gitlab-ci.yml文件並檢測到有更改,但由於此更改不屬於build-job部分並且之前的作業成功,因此跳過此作業
  5. 運行程序查看deploy-job / only / changes描述的文件,並檢測.gitlab-ci.yml文件中的單個更改
  6. runner 查看.gitlab-ci.yml文件並檢測到有變化,由於這個變化屬於deploy-job部分,所以這個job被執行

這樣,只執行deploy-job 可以使用rules還是only使用規則來完成?

有一個直接的方法,你只需要訪問 gitlab CI 接口。

  1. 推動並讓管道正常啟動。
  2. 取消第一份工作。
  3. 運行所需的(部署)。

另一種方法是創建一個新作業,僅在需要時運行,您可以在其中設置非依賴部署。 只需復制沒有依賴項的當前部署代碼。 還添加手動模式

job:
script: echo "Hello, Rules!"
rules:
  - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    when: manual
    allow_failure: true

作為文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM