GoogleService-info.plistをgitignoreしている時に,GitHubActionsでCIを通す

公開:2020/09/24
更新:2020/09/24
3 min読了の目安(約2200字TECH技術記事

はじめに

ずっと前の自分:「GoogleService-info.plistをgitignoreしてるから永遠GitHubActionsでのCIのビルドが通らない!!!!!!どうしよう!!!」
何もわからん状態だった自分を救ってくれたのは,Androidで同じようなことをしている記事でした.
その記事は

  1. google-services.jsonをbase64に変換
  2. GitHub Secretsに記入
  3. GitHubActionsのyamlファイルからSecrets読み込み
  4. decodeして正しい位置に配置

という手順でCIを通していました.

ならば,これをiOSでも同じようにすればいいじゃないか!となりますよね.やりましょう.

手順

  1. GoogleService-info.plistをjsonに変換
  2. 生成したjsonファイルをbase64の形にし,secretsに記述
  3. secretsからjsonファイルを生成し,そのjsonファイルをplistファイルに変換(GoogleService-info.plistという名前として適切な位置におく)
  4. 生成した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 (Step 3)
- 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に変換という流れ.

最後に

いい記事を残してくれた先人の方々に感謝を込めて,自分もいい記事を書こうとなりました.
間違い等あれば指摘してください.お願いします!
また,いい記事だと思った方はグッドボタンとTwitterのフォローをね,よかったらお願いします!(どこぞのYoutuberみたいだな)

救世主となったサイト

  1. https://qiita.com/sudo5in5k/items/5b6da5dbba3fc2514319
  2. https://qiita.com/hohohoris/items/f934beb4ea0b432af488
  3. https://linuxjm.osdn.jp/html/GNU_coreutils/man1/base64.1.html
  4. https://www.ecoop.net/memo/archives/convert_plist_to_or_from_json.html