Swift Package Manager がプライベート Git リポジトリのクローンに失敗する

xcodebuild プロセスの一部として Swift Package Manager を使用している場合、次のエラーメッセージで、コマンドが失敗することがあります。

xcodebuild: error: Could not resolve package dependencies:  Authentication failed because the credentials were rejected

または

xcodebuild: error: Could not resolve package dependencies:  The server SSH fingerprint failed to verify.

この問題は、SSH キー認証を使用しプライベート git リポジトリにアクセスする場合にのみ発生します。

これは、xcodebuild が SSH キーを利用する際に起こるバグが原因であり、Xcode 11からの既知の問題で、ローカルと CI 環境の両方で発生します。

xcodebuild はシステムの ssh の設定を利用せず、またCircleCI が ssh-agent に保存しているキーにアクセスできません。 これを回避するためには、Xcode がOS上の ssh を使用するよう設定します。

具体的には、コンフィグファイルの checkout ステップの直後に以下の行を追加します。

- run: sudo defaults write com.apple.dt.Xcode IDEPackageSupportUseBuiltinSCM YES
- run: rm ~/.ssh/id_rsa || true
- run: for ip in $(dig @8.8.8.8 bitbucket.org +short); do ssh-keyscan bitbucket.org,$ip; ssh-keyscan $ip; done 2>/dev/null >> ~/.ssh/known_hosts || true
- run: for ip in $(dig @8.8.8.8 github.com +short); do ssh-keyscan github.com,$ip; ssh-keyscan $ip; done 2>/dev/null >> ~/.ssh/known_hosts || true
この記事は役に立ちましたか?
29人中16人がこの記事が役に立ったと言っています

コメント

0件のコメント

記事コメントは受け付けていません。