Jadi latar belakangnya adalah ini: Saya memiliki proyek Xcode yang bergantung pada paket cepat yang ada di repositori pribadi di github. Tentu saja, ini memerlukan kunci untuk mengakses. Sejauh ini, saya sudah berhasil mengkonfigurasi CI sehingga saya bisa ssh ke instance dan git clone
repositori yang diperlukan untuk paket swift. Sayangnya ketika menjalankannya dengan xcbuild
CI, tidak berfungsi dan saya mendapatkan pesan ini:
static:ios distiller$ xcodebuild -showBuildSettings -workspace ./Project.xcworkspace \
-scheme App\ Prod
Resolve Package Graph
Fetching git@github.com:company-uk/ProjectDependency.git
xcodebuild: error: Could not resolve package dependencies:
Authentication failed because the credentials were rejected
Sebaliknya, git clone
akan dengan senang hati mengambil repo ini seperti yang terlihat di sini:
static:ios distiller$ git clone git@github.com:company-uk/ProjectDependency.git
Cloning into 'ProjectDependency'...
Warning: Permanently added the RSA host key for IP address '11.22.33.44' to the list of known hosts.
remote: Enumerating objects: 263, done.
remote: Counting objects: 100% (263/263), done.
remote: Compressing objects: 100% (171/171), done.
remote: Total 1335 (delta 165), reused 174 (delta 86), pack-reused 1072
Receiving objects: 100% (1335/1335), 1.11 MiB | 5.67 MiB/s, done.
Resolving deltas: 100% (681/681), done.
Untuk konteks yang sedikit lebih, ini berjalan di CircleCI, dibuat dengan kunci Deploy di GitHub, yang telah ditambahkan ke Job on CI.
Setiap saran tentang apa yang mungkin berbeda antara cara Xcode mencoba mengambil dependensi dan cara vanilla git melakukannya akan bagus. Terima kasih.
Jawaban:
Ini sepertinya bug di Xcode 11 dengan SSH. Beralih ke HTTPS untuk menyelesaikan Paket Swift memperbaiki masalah:
Jadi dari ini:
untuk:
sumber
Untuk saluran pipa CI di mana Anda tidak dapat masuk ke GitHub atau host repositori lainnya, ini adalah solusi yang saya temukan yang melewati pembatasan / bug Xcode di sekitar paket Swift pribadi.
Gunakan https url untuk dependensi pribadi karena konfigurasi ssh saat ini diabaikan oleh xcodebuild meskipun dokumentasi mengatakan sebaliknya.
Setelah Anda dapat membangun secara lokal dengan https, pergi ke host repositori Anda dan buat token akses pribadi (PAT). Untuk petunjuk GitHub dapat ditemukan di sini .
Dengan sistem CI Anda, tambahkan PAT ini sebagai variabel lingkungan rahasia. Dalam skrip di bawah ini disebut sebagai
GITHUB_PAT
.Kemudian di dalam pipa CI Anda sebelum menjalankan,
xcodebuild
pastikan Anda menjalankan versi skrip bash yang dimodifikasi dengan tepat:Script ini akan menemukan semua referensi https dan menyuntikkan PAT ke dalamnya sehingga dapat digunakan tanpa kata sandi.
Jangan lupa:
[org_name]
dengan nama organisasi Anda.${GITHUB_PAT}
dengan nama CI Secret Anda jika Anda menamainya secara berbeda.grep
perintah untuk mengabaikan jalur apa pun yang tidak ingin Anda modifikasi oleh skrip.sumber