ステップを条件付きで有効または無効にする
任意のワークフローでステップを有効または無効にできます。また、ステップの条件を設定することもできます。これは、自分のコンピューターで、Bitrise CLIを使用するか、または bitrise.yml ワークフローエディタのタブ。
任意のワークフローでステップを有効または無効にできます。また、ステップの条件を設定することもできます。自分のコンピューターで、Bitrise CLIを使用するか、または bitrise.yml ワークフローエディタのタブ。
私たちは主に使用します run_if
これらのことを行うための表現。 テンプレート式を確認してください!
GitHub で例を表示することもできます。 テンプレート式の例.
NS run_if
任意の有効なGoテンプレートにすることができます
NS run_if
任意の有効なものにすることができます テンプレートに移動、評価する限り true
また false
(または、たとえば、任意の文字列表現 True
、 t
、 yes
また y
すべてが true
)。テンプレートが次のように評価された場合 true
、ステップは実行されます。それ以外の場合は実行されません。
例 run_if
カスタム環境変数を確認するには:
run_if: |- {{enveq "CUSTOM_ENV_VAR_KEY" "test value to test against"}}
この run_if
の値が CUSTOM_ENV_VAR_KEY
ではありません test value to test against
。
ステップの無効化
ワークフローからステップを削除したくないが実行したくない場合は、を使用してステップを無効にすることができます。 run_if
表現。
ワークフローの実験
ステップを削除したり無効にしたりせずに、ワークフローのさまざまな構成を試すには、ワークフローのクローンを作成することをお勧めします。元のワークフローを変更せずに、複製されたワークフローを必要なだけ変更できます。
ワークフローエディター
bitrise.yml
-
必要なワークフローを開きます。
-
無効にするステップを見つけます。
-
の中に その他の実行条件 入力、タイプ false。
コンディショナル
false と評価された条件もすべて機能します。
-
アプリを開きます
bitrise.yml
ファイル。 -
無効にするステップを探します。
-
[追加]
run_if: false
それに。コンディショナル
false と評価された条件もすべて機能します。
- script: run_if: false inputs: - content: |- #!/bin/bash echo "This will never run, because of run_if:false"
CI環境でのみステップを実行する
CI環境でのみステップを実行すると、ビルドはローカルビルドの特定のステップをスキップします。ステップを無効にするのと同じように、 run_if
表現。これを使用して、ビルドをローカルでデバッグします。
CIモードをローカルで有効にする
CIモードは、を設定することにより、ご使用のMac / PCで有効にできます。 CI
環境へ true
(たとえば、実行 export CI=true
Bashターミナルで)、または実行することによって bitrise run
とともに --ci
国旗: bitrise --ci run ...
。
ワークフローエディター
bitrise.yml
-
必要なワークフローを開きます。
-
必要なステップを見つけてください。
-
の中に その他の実行条件 入力、タイプ
.iSCSI
。
-
アプリを開きます
bitrise.yml
ファイル。 -
必要なステップを見つけてください。
-
[追加]
run_if: .IsCI
そのプロパティへ:- script: run_if: .IsCI inputs: - content: |- #!/bin/bash echo "This will only ever run in a CI environment because run_if: IsCI"
ビルドが失敗した場合にのみステップを実行する
特定のステップに到達する前にビルドが失敗した場合にのみ、ステップを実行できます。に加えて run_if
、を使用する必要があります is_always_run
プロパティも。
ワークフローエディター
bitrise.yml
-
必要なワークフローを開きます。
-
無効にするステップを見つけます。
-
の中に その他の実行条件 入力、タイプ
.IsBuildFailed
。 -
確認してください 前のステップが失敗しても実行する オプションがオンになっています。
-
アプリを開きます
bitrise.yml
ファイル。 -
無効にするステップを探します。
-
[追加]
run_if: .IsBuildFailed
それに。 -
[追加]
is_always_run: true
それに。これにより、前のステップが失敗した場合でも、そのステップを実行できます。
- script: is_always_run: true run_if: .IsBuildFailed inputs: - content: |- #!/bin/bash echo "Build Failed!"
ビルドに失敗せずに失敗したステップを無視する
通常、ビルド中にステップが失敗すると、ビルド自体も失敗します。もちろん、これはすべてのステップに当てはまるわけではありません。 Bitrise.ioキャッシュ:プル そしてその Bitrise.ioキャッシュ:プッシュ ビルドに失敗せずに手順が失敗する可能性があります。他のステップを構成して、それらの失敗がビルドに失敗しないようにすることもできます。
YAMLモードのみ
ワークフローエディターのグラフィカルUIではこれを行うことはできません。アプリを編集する必要があります。 bitrise.yml
ファイル。
-
でアプリを開きます ビットライズ。
-
クリック
メインページのボタン。 -
左側で、 構成YAML ナビゲーション メニューから。
-
必要なステップを見つけます。
-
追加します
is_skippable
それにフラグを立てて、に設定しますtrue
:- script: is_skippable: true inputs: - content: |- # !/bin/bash echo "Failing Step." exit 1 # exit 1 would mark this step as Failed, but it won't break the Build # because of the is_skippable: true flag / property
スクリプトステップで run_if 条件を設定する
ステップを実行するかどうかを決定するために必要な条件は、複雑で多層的な場合があります。もしそうなら、複雑な Go テンプレートのチェーンを run_if
Go ではなく他の言語を好む場合は特に、表現に圧倒される可能性があります。
このような場合、回避策を使用することをお勧めします。 脚本 ワークフローにステップ インし、特定の値に評価されるスクリプトを記述します。その値を環境変数に保存すると、条件式を含むステップでその値を確認するだけで済みます。
この例では、単純な Bash スクリプトを作成してその値を保存し、事前設定された値と一致するかどうかを確認します。
まず、スクリプト ステップを追加し、スクリプト コンテンツで値を定義します。値が定義されたら、使用します 環境人
環境変数に保存します。この特定のケースでは、Bash で変数を定義し、その変数を Env Var の値として使用します。
workflows: example: steps: - script@1: title: Do anything with Script step inputs: - content: |- #!/usr/bin/env bash # fail if any commands fails set -e # debug log set -x # creating the variable and storing it as an Env Var my_variable='This is the value we need!' envman add --key OUR_CONDITION --value "$my_variable"
次に、単純な run_if
条件が必要な Step の式。この場合、私たちのステップは キャッシュを保存 ステップ、そしての値かどうかを確認します OUR_CONDITION
variable は、前の Bash 変数に格納されている値と一致します。
- save-cache@1: run_if: |- {{getenv "OUR_CONDITION" | eq "This is the value we need!"}}
値が一致するので、 キャッシュを保存 ステップが実行されます。
run_if 式の例
を使用するさまざまな方法があります。 run_if
表現。次のワークフローには、それらのほとんどの例と、コメント付きの説明が含まれています。式は 脚本 正常に実行されたときに、使用された式が真であったことを出力するステップ。
すべての式は有効な Go テンプレートです。 Go テンプレートについて学習するには、次のドキュメントをご覧ください。 テンプレート ドキュメントに移動.
workflows: primary: steps: # # Check if an Environment Variable's value is equal to a given string - script: title: Run-If expression run_if: |- {{getenv "TEST_KEY" | eq "test value"}} inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # Use the enveq function to check if an Env Var's value is equal to a given string - script: title: Run-If expression run_if: '{{enveq "TEST_KEY" "test value"}}' inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # Use envcontain to check if the value of an Env Var contains a given string. It works on the level of Pipelines, too - script: title: Run-If expression run_if: '{{envcontain "TEST_KEY" "test value"}}' inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # Check if a given Env Var is NOT empty - script: title: Run-If expression run_if: '{{getenv "TEST_KEY" | ne ""}}' inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # Check if two Env Vars have the same value - script: title: Run-If expression run_if: '{{getenv "TEST_KEY_1" | eq (getenv "TEST_KEY_2")}}' inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # Use the available expression data properties # like IsCI (checks if the build runs in a CI environment) or IsBuildFailed (checks if the build has failed) directly - script: title: Run-If expression run_if: |- {{.IsCI}} inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # You don't have to wrap the expression in {{...}} if it's a simple # oneliner - script: title: Run-If expression run_if: $.IsCI inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # You can even remove the $ sign, it's optional in a simple # expression like this - script: title: Run-If expression run_if: .IsCI inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # If-Else condition, in this example the Step will run if the build runs in a CI environment - script: title: Run-If expression run_if: |- {{if .IsCI}} true {{else}} false {{end}} inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # You can use multiple conditions - script: title: CI and Not Failed run_if: |- {{.IsCI | and (not .IsBuildFailed)}} inputs: - content: |- #!/bin/bash echo "RunIf expression was true" # # Check if the build is a pull request or not - script: title: Only if NOT a pull request run_if: not .IsPR inputs: - content: |- #!/bin/bash echo "RunIf expression was true" - script: title: Only if it was a Pull Request run_if: .IsPR inputs: - content: |- #!/bin/bash echo "Pull Request ID: ${PULL_REQUEST_ID}"