web-dev-qa-db-ja.com

Gitlabはステージを条件付きで実行します

3つの段階があります-.gitlab-ci.yml

毎晩の回帰テストステージを実行する必要があります-nightly :)

関連する.gitlab-ci.ymlコード:

stages:
  - build
  - test
  - deploy

build_project:
  stage: build
  script:
    - cd ./some-dir
    - build-script.sh
  except:
  - tags

#Run this only when say variable 'NIGHTLY_TEST == True'. But HOW?
nightly_regression_test_project:
  stage: test
  script:
    - cd ./some-dir
    - execute test-script

only run testステージに毎日タグ付けすることは好ましくありません。

他のアイデアは?

18
deepdive

誰かがこれを探している場合に備えて、gitlabは変数の上書きを使用したスケジュールビルド機能を実装しました(信じられないほど便利です)。ドキュメントが見つかりました こちら

この答えが与えられたときにこの機能の指示に興味がある人のために、ここにあります:

パイプラインスケジュールの使用

パイプラインをスケジュールするには:

  1. プロジェクトのPipelines-> Schedulesに移動し、New Scheduleボタンをクリックします。
  2. 用紙に記入する
  3. 変更を有効にするために、ヒットパイプラインスケジュールを保存します。

これの私のお気に入りの機能は、スケジュールされたパイプライン変数です。

変数のドキュメントは here にありますが、私にとって最も有用な情報は優先度であり、ここで再入力します。

変数の優先度

変数は上書きでき、次の順序で互いに優先します。

  1. トリガー変数またはスケジュールされたパイプライン変数(すべてに優先)
  2. プロジェクトレベルの秘密変数または保護された秘密変数
  3. グループレベルの秘密変数または保護された秘密変数
  4. YAML定義のジョブレベル変数
  5. YAML定義のグローバル変数
  6. 展開変数
  7. 定義済みの変数(チェーンの中で最も低い変数)

お役に立てれば。この機能が追加されたことを嬉しく思います。

7
trueCamelType

exceptおよびonlyは、それらをトリガーする変数を指定できます。

.gitlab-ci.ymlで次を使用できます。

build1:
  stage: build
  script:
    - echo "Only when NIGHTLY_TEST is false"
  except:
    variables:
      - $NIGHTLY_TEST 

test1:
  stage: test
  script: 
    - echo "Only when NIGHTLY_TEST is true"
  only:
    variables:
      - $NIGHTLY_TEST 
19

現在、環境変数に応じてジョブを実行する方法はありません(いつでも機能要求を開くことができます!)。ただし、環境変数が存在しない場合は、単純なBashコマンドを使用してすぐに終了できます。

何かのようなもの:

stages:
  - build
  - test
  - deploy

build_project:
  stage: build
  script:
    - cd ./some-dir
    - build-script.sh
  except:
  - tags

# Run this only when NIGHTLY_TEST environment variable exists.
nightly_regression_test_project:
  stage: test
  script:
    - [ -z "$NIGHTLY_TEST" ] && exit 1;
    - cd ./some-dir
    - execute test-script

変数が存在しない場合、それに続くテストは実行されません。そうでなければ、彼らはそうします。

お役に立てば幸いです!

13
Connor Shea