Github Actionsを使用してApp Distributionにアプリを配布していました。
配布用途の種類は以下の3種類。
名前 | 配布の用途 |
---|---|
buildTest | Xcodeのビルド |
publishDebug | App Distribution(開発環境) |
PublishProd | App Distribution(本番環境) |
直列実行をしているので、buildTest→publishDebug→PublishProdの順番で動いていた。
その為、配布が完了するまでに約1時間かかっていました。
直列実行時の処理
fastlaneで各3つのレーンを作った上でその3つをまとめるレーン(publishAll)を用意。
fastfile
## Xcodeのビルド
lane :test do
end
## App Distribution(開発環境)
lane :publishDebug do
end
## App Distribution(本番環境)
lane :publishProd do
end
## 上記、3つの処理をまとめる
lane :publishAll do
test
publishDebug
publishProd
end
ワークフローでは、ジョブは一つでrun
にはまとめたレーン(publishAll)を指定。
pubrish.yml
jobs:
build:
runs-on: macos-13
timeout-minutes: 90
steps:
- name: Publish
run: bundle exec fastlane publishAll
env:
MATCH_PASSWORD: ${{ secrets.FASTLANE_MATCH_PASSWORD }}
RELEASE_NOTES: ${{ github.event.inputs.release-notes }
並列実行への変更方法
各レーンを別々のワークフローのジョブで動かすのでまとめたレーン(publishAll)はもういらなくなる。
fastfile
## Xcodeのビルド
lane :test do
end
## App Distribution(開発環境)
lane :publishDebug do
end
## App Distribution(本番環境)
lane :publishProd do
end
## 別々で動かす為、まとめる処理はもういらない。
## lane :publishAll do
## test
## publishDebug
## publishProd
## end
ジョブはレーン別に3つ用意する。
各ジョブには同様の処理を入れて、run
だけ別々のレーンを指定する。
pubrish.yml
jobs:
buildTest:
runs-on: macos-13
timeout-minutes: 90
steps:
----------------------
(各jobで同様の処理を入れる)
----------------------
- name: Publish
run: bundle exec fastlane test
publishDebug:
runs-on: macos-13
timeout-minutes: 90
steps:
----------------------
(各jobで同様の処理を入れる)
----------------------
- name: Publish
run: bundle exec fastlane publishDebug
publishProd:
runs-on: macos-13
timeout-minutes: 90
steps:
----------------------
(各jobで同様の処理を入れる)
----------------------
- name: Publish
run: bundle exec fastlane publishProd
log:
## ジョブを行った後に動かしたい場合、needsを使って実行元のジョブを指定する。(今回は完了のlogだけ)
needs:
- buildTest
- publishDebug
- publishProd
runs-on: macos-13
timeout-minutes: 90
steps:
- name: Log
run: echo "done"
実行結果
感想
結果的にApp Distributionに配布できるまでの時間だけなら約1時間→10分程度まで短縮することができました🎉🎉
待ち時間が削減されて、開発効率が圧倒的に上がりました🙌
ちなみにbuildTestが思っているより時間が掛かっているのは別の原因がありそうでした。
その原因については、また投稿します。