🧨

CIで突然fastlaneが Invalid password passed via 'MATCH_PASSWORD' と言ってきた

2024/04/15に公開

CI/CD環境でfastlane matchできなくなってる

GitHub Actions上でfastlaneを使ってテスト配信を行おうとしたところ、fastlane matchで以下のようなエラーが発生して、証明書が取得できなくなりました。

[04:50:22]: Cloning remote git repo...
[04:50:22]: If cloning the repo takes too long, you can use the `clone_branch_directly` option in match.
[04:50:23]: Checking out branch master...
[04:50:23]: wrong final block length
[04:50:23]: Couldn't decrypt the repo, please make sure you enter the right password!
+---------------------------------------------------------------------------------+
|                                  Lane Context                                   |
+---------------------------+-----------------------------------------------------+
| DEFAULT_PLATFORM          | ios                                                 |
| PLATFORM_NAME             | ios                                                 |
| LANE_NAME                 | ios stg                                             |
| KEYCHAIN_PATH             | ~/Library/Keychains/fastlane_tmp_keychain           |
| ORIGINAL_DEFAULT_KEYCHAIN | "/Users/runner/Library/Keychains/login.keychain-db" |
+---------------------------+-----------------------------------------------------+
[04:50:23]: Invalid password passed via 'MATCH_PASSWORD'

MATCH_PASSWORD はGitHubのsecretで管理しており、変更した覚えもありません。
Actionsのキャッシュを削除したり、MATCH_PASSWORDをsecretに再度登録しても同じエラーで落ちてしまっていました。

証明書の更新が原因だった

fastlaneのissueを漁っていると、以下のコメントを見つけました。

https://github.com/fastlane/fastlane/issues/21663#issuecomment-2047561668

このコメントをされている方と全く同じで、

  • 最近fastlaneのバージョンを2.220.0にバージョンアップした
  • 2.220.0のfastlaneで証明書を更新した
  • GitHub Actions上のfastlaneはまだ2.219.0だった

ということが原因でした。

CI上でのfastlaneのインストールはruby/setup-rubyを使って行なっていましたが、CIが動いているブランチにmainブランチを取り込めていなかったため、Gemfile.lockが古かったようです。

そのため、Gemfile.lock のfastlaneのバージョンを上げてから再度CIを実行したところ、無事 fastlane match が成功するようになりました。

Gemfile.lock
    ・・・
-   fastlane (2.190.0)
+   fastlane (2.220.0)
    ・・・

Discussion