GoogleService-info.plistをgitignoreしている時に,GitHubActionsでCIを通す
はじめに
ずっと前の自分:「GoogleService-info.plist
を gitignore してるから永遠 GitHubActions での CI のビルドが通らない!!!!!!どうしよう!!!」
何もわからん状態だった自分を救ってくれたのは,Android で同じようなことをしている記事でした.
その記事は
google-services.json
を base64 に変換- GitHub Secrets に記入
- GitHubActions の yaml ファイルから Secrets 読み込み
- decode して正しい位置に配置
という手順で CI を通していました.
ならば,これを iOS でも同じようにすればいいじゃないか!となりますよね.やりましょう.
手順
GoogleService-info.plist
を json に変換- 生成した json ファイルを base64 の形にし,secrets に記述
- secrets から json ファイルを生成し,その json ファイルを plist ファイルに変換(
GoogleService-info.plist
という名前として適切な位置におく) - 生成した json ファイルを削除
1. GoogleService-info.plist
を json に変換
記事を参考に変換しました.
(下の/path/to/dir
は GoogleService-info.plist が存在するディレクトリまでのパス.)
cd /path/to/dir
plutil -convert json GoogleService-info.plist -r -o output.json
2. 生成した json ファイルを base64 の形にし,secrets に記述
cat で出力した結果(記事参考)をそのまま Secrets に貼り付けます
cat output.json | base64
3, 4. secrets から json ファイルを生成し,その json ファイルを plist ファイルに変換+生成した json ファイルを削除
流れは以下の通り.
# Generate GoogleService-info.plist (Step 3)
- name: Translate secrets of base64 into json
env:
GOOGLE_SERVICE: ${{ secrets.GOOGLE_SERVICE_INFO_PLIST }}
run: echo $GOOGLE_SERVICE | base64 --decode > ./OgiriBattle_Swift/Common/Resources/output.json
- name: Translate json into plist and generate GoogleService-info.plist
run: plutil -convert xml1 ./OgiriBattle_Swift/Common/Resources/output.json -o ./OgiriBattle_Swift/Common/Resources/GoogleService-info.plist
- name: Remove json file (Step 4)
run: rm OgiriBattle_Swift/Common/Resources/output.json
GOOGLE_SERVICE
という名前で secrets に記述されている base64 を取得 →json に decode→json から plist に変換という流れ.
(OgiriBattle_Swift/Common/Resources/
のパスは例です)
最後に
いい記事を残してくれた先人の方々に感謝を込めて,自分もいい記事を書こうとなりました. 間違い等あれば指摘してください.お願いします! また,いい記事だと思った方はグッドボタンと Twitter のフォローをね,よかったらお願いします!(どこぞの Youtuber みたいだな)