条件に応じてステップを実行する
場合によっては、単一のコード変更ごとにジョブ内のすべてのステップを実行することは意味がありません。自動化を使用すると、特定の条件に基づいてジョブ内のどのステップを実行する必要があるかを制御できます。例: コードのどのブランチがビルドされているかに応じて、異なるビルドステップを実行したい場合や、コードの重要ではない部分に変更が加えられた場合に特定のステップをスキップしたい場合があります。
ステップに条件を追加するには、job.container.runIf
(または job.host.runIf
) パラメーターを使用します。runIf
パラメーターは string
値を受け入れます。値が空の文字列、false
、または 0
の場合、ステップはスキップされます。それ以外の場合はすべて、ステップが実行されます。
job("Example") {
// To check a condition, basically, you need a kotlinScript step
host(displayName = "Check branch") {
kotlinScript { api ->
// To pass the result of the condition to other steps, create a job parameter
api.parameters["isMainBranch"] = (api.gitBranch() == "refs/heads/main").toString()
}
}
container(displayName = "Check branch", image = "ubuntu") {
// This step will run only if the branch is "main"
runIf("{{ isMainBranch }}")
// here goes your script
// ...
}
}
条件付きステップは、カスタマイズ可能なジョブパラメーターに完全に一致します。ユーザー入力に基づいて、実行するステップを決定できます。例:
job("Example") {
parameters {
// Users can choose the environment during the custom run
text("environment", value = "dev") {
options("prod", "pre-prod", "dev")
}
}
host(displayName = "Check environment") {
// Check if the environment is prod
kotlinScript { api ->
api.parameters["is-prod"] = (api.parameters["environment"] == "prod").toString()
}
}
container(displayName = "Conditional step", image = "ubuntu") {
// Run only if the environment is prod
runIf("{{ is-prod }}")
shellScript {
content = """
echo I run only on prod
"""
}
}
}