杏z学習帳

Swiftを中心にFlutterやらUnityなどに手を出してます

Utility Workflowsの紹介(2019/12/18)

[Bitrise]Utility Workflowsの紹介

今回の記事は Bitrise Advent Calendar 2019 18日目の記事です。

業務でもプライベートでも Bitrise を使っているので参加しないわけにはいかない!と思い書いてみました。
Utility Workflowsの紹介です。

いや、プレゼントに釣られたわけではないです😇

ワークフローをいくつか作っていくと共通のステップが増えてくる問題

たとえば、こういう感でめちゃくちゃ雑ですがとりあえず deploy / deploy-staging / develp という3つのワークフローがあったとします。

ワークフロー例

見て分かる通りある程度共通のステップが存在しています。
もしその共通のステップで何かしらの変更が必要になった場合、全ワークフローで該当するステップを修正することになります。
Bitrise の UI 的にワークフローを切り替えながら作業していくというのは、単純作業な上に結構手間で想像するだけでも萎えてきますね。
(bitrise.yml を直接いじればいいという話はおいておいて(笑))

ワークフローの連結を使う

ワークフローエディタ画面をみてみると「Add Workflow before」というボタンが実はあります。

Add Workflow before

これは何かというと、このワークフローを実行する前に指定したワークフローを実行することができるというものです。
つまり、先の共通しているステップをまとめたワークフローを作っておいて、各ワークフローを実行する前にそのまとめたワークフローを実行するように指定するということができるようになります。

今回は例で setup というワークフローをつくって共通のステップをまとめて、各ワークフローではその setup を実行前に呼び出すということにしてみました。

setupをよびだすようにしてみたワークフロー

これで、もし共通ステップで修正が必要になったときでも、setup ワークフローを修正したらすべてのワークフローにその修正が適用されるようになります👍
もちろん前だけではなく後にもワークフローを連結していくことができます。

Utility Workflows

これまででもまったく問題はないのですが、すこしだけ気になることがあります。
setup ワークフローを直接実行できてしまうということです。
setup ワークフローをみるとわかる通り単独で実行しても全く意味のないワークフローなのです。
単独で実行しなければいいだけじゃん。という話でもありますが、これがもし何かしら他にも影響がでるようなステップを内包するものだった場合なんかは割と困ってしまうことになります。

そこで出てくるのが Utility Workflow というものです。

対応は簡単でワークフローの名前に アンダースコアをプレフィックスとしてつける だけです。
setup だと _setup にしたら良いというわけです。
そうすることで直接実行することはできなくなります。

Utility Workflow

これで無駄に直接実行することはできなくなります!💪

まぁ、、トリガーでは指定できるんですけどね。。。
トリガーとしても指定出来ないようになってほしいと個人的には思うのですがどうなのでしょう。


素敵な Bitrise おじさんになりたいですね!✨

参考