Azure DevOps 使ってますか〜?周りでは余り使われてなくて悲しいです〜(お金で殴れるなら Bitrise も使いたい...) タスク管理とかの機能が強力で良さげっすよ(Trello でやるよりは良さげ、癖が強いけど)
さて、 Android-Kotlin な Firebase を導入したアプリがあります。
Firebase を導入するためには google-services.json
が必要になります。
このファイルには機密情報が入っているため、普通に .gitignore を自動生成するとリポジトリに入らないようになってます。(入ってたらやばい
対策しないとビルドエラーになる
さて、 CIサーバー(CD するときも含むけど、以下ではCIにまとめる) でビルドをするときにこのままだと問題が発生します。
- Github (や Azure DevOps に入ってる)のリポジトリから
git clone
してする - そのまま
.gradlew build
とかしただけではgoogle-services.json
がないのでビルドエラーになる。
対処法は機密ファイルをダウンロードする
Azure DevOps やまともな CI サービスには 機密情報をダウンロードしてくる機能があります。( Circle CI でも確認)
機密ファイルをCIタスクの中でダウンロードする手順
- Secure File download タスクでダウンロードしてくる
- copy タスクで
app
module に機密ファイルをコピー 自分はマルチモジュールな構成で開発してるので App Module ですが、モノリシックモジュールで開発してる人はそれぞれ〜な場所にコピー - あとは普通にビルドしてくタスク
画像でも貼ってみる
つまずいたポイント紹介
多分これが一番重要な
ダウンロードしてきたファイルはどうやって取り出すの?
以下の環境変数(?)に入っているのでそれを使えばいい感じです。
$(Agent.TempDirectory)
まとめ
- CI しているなかで機密ファイルが必要になったときはダウンロードしてくれば良い
- Azure DevOps のAndroid 関係の情報はネットにほとんど存在しない...><
- マルチモジュールな感じでやってるとパス周りがちょっと違う