ステップを条件付きで有効または無効にする
任意のワークフローでステップを有効または無効にできます。また、ステップの条件を設定することもできます。これは、自分のコンピューターで、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
表現。
ワークフローの実験
ステップを削除したり無効にしたりせずに、ワークフローのさまざまな構成を試すには、ワークフローのクローンを作成することをお勧めします。元のワークフローを変更せずに、複製されたワークフローを必要なだけ変更できます。
Workflow Editor
bitrise.yml
-
アプリを開きます
bitrise.yml
ファイル。 -
無効にするステップを見つけます。
-
追加
run_if: false
それに。Conditionals
Any condition that evaluates to false works, too.
-
Open your app’s
bitrise.yml
file. -
Find the Step that you want to disable.
-
Add
run_if: false
to it.Conditionals
Any condition that evaluates to false works, too.
- 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 ...
。
Workflow Editor
bitrise.yml
-
アプリを開きます
bitrise.yml
ファイル。 -
無効にするステップを見つけます。
-
追加
run_if: .IsCI
それに。
-
Open your app’s
bitrise.yml
file. -
Find the Step you need.
-
Add
run_if: .IsCI
to its properties:- 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
プロパティも。
Workflow Editor
bitrise.yml
-
アプリを開きます
bitrise.yml
ファイル。 -
無効にするステップを見つけます。
-
追加
run_if: .IsBuildFailed
それに。 -
Make sure the Run even if previous Step(s) failed option is toggled on.
-
Open your app’s
bitrise.yml
file. -
Find the Step that you want to disable.
-
Add
run_if: .IsBuildFailed
to it. -
Add
is_always_run: true
to it.This enables the Step to run even if a previous Step failed.
- 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 テンプレートについて学習するには、次のドキュメントをご覧ください。 テンプレート ドキュメントに移動.
Pipeline support
The envcontain
property is not supported for Pipelines. For standalone Workflows, you can use it to check if an Environment Variable contains a given string but
this is not available for Pipelines yet.
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 - 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}"