Saya ingin Jenkins mengambil data secara otomatis dari repositori pribadi saya yang dihosting di Github. Tapi saya tidak tahu bagaimana menyelesaikan tugas itu .. Mencoba dokumentasi, menghasilkan kunci ssh untuk pengguna jenkins dan semua yang bisa saya lihat adalah: "tidak dapat mengkloning repo". Saya telah memeriksa URL - semuanya valid.
Ada petunjuk, mungkin Anda tahu beberapa dokumen / blog / apa pun yang menjelaskan tentang hal semacam ini?
Jawaban:
Mungkin dukungan GitHub untuk kunci penerapan adalah yang Anda cari? Mengutip halaman itu:
Jika itu yang sudah Anda coba dan itu tidak berhasil, Anda mungkin ingin memperbarui pertanyaan Anda dengan lebih detail tentang URL yang digunakan, nama dan lokasi file kunci, dll.
Sekarang untuk bagian teknis: Bagaimana cara menggunakan kunci SSH Anda dengan Jenkins?
Jika Anda memiliki, katakanlah,
jenkins
pengguna unix, Anda dapat menyimpan kunci penerapan Anda di~/.ssh/id_rsa
. Ketika Jenkins mencoba untuk mengkloning repo melalui ssh, ia akan mencoba menggunakan kunci itu.Dalam beberapa penyiapan, Anda tidak dapat menjalankan Jenkins sebagai akun pengguna sendiri, dan mungkin juga tidak dapat menggunakan lokasi kunci ssh default
~/.ssh/id_rsa
. Dalam kasus seperti itu, Anda dapat membuat kunci di lokasi berbeda, misalnya~/.ssh/deploy_key
, dan mengonfigurasissh
untuk menggunakannya dengan entri di~/.ssh/config
:Karena semua yang Anda autentikasi ke semua repositori Github menggunakan
[email protected]
dan Anda tidak ingin kunci di atas digunakan untuk semua koneksi Anda ke Github, kami membuat alias host github-deploy-myproject . URL klon Anda sekarang menjadidan itu juga yang Anda masukkan sebagai URL repositori ke Jenkins.
(Perhatikan bahwa Anda tidak boleh meletakkan ssh: // di depan agar ini berfungsi.)
sumber
ssh-keygen
sebagai pengguna Jenkins berjalan sebagai ("jenkins" di server Ubuntu saya). Saya kemudian menambahkan~jenkins/.ssh/id_rsa.pub
ke bagian kunci penerapan dari repositori di github.~
direktori. Tetapi/var/lib/jenkins/.ssh/
bagi pengguna jenkins default untuk menggunakan kunci itu!/var/lib/jenkins
ini adalah direktori home (~
) untukjenkins
pengguna.Could not match github-deploy-myproject:myuser/myproject
log kail. Saya telah memasukkannya karena URL dan build Repo saya berfungsi sehingga dapat mengakses GitHub. Hanya pos dari GitHub yang gagal memicu pembuatan.Satu hal yang membuat ini berhasil bagi saya adalah memastikannya
github.com
masuk~jenkins/.ssh/known_hosts
.sumber
Jika Anda memerlukan Jenkins untuk mengakses lebih dari 1 proyek, Anda perlu:
1. menambahkan kunci publik ke satu akun pengguna github
2. menambahkan pengguna ini sebagai Pemilik (untuk mengakses semua proyek) atau sebagai Kolaborator di setiap proyek.
Banyak kunci publik untuk satu pengguna sistem tidak akan berfungsi karena GitHub akan menemukan kunci penerapan pertama yang cocok dan akan mengirim kembali kesalahan seperti "ERROR: Izin untuk pengguna / repo2 ditolak ke pengguna / repo1"
http://help.github.com/ssh-issues/
sumber
Jenkins membuat pengguna Jenkins di sistem. Kunci ssh harus dibuat untuk pengguna Jenkins. Berikut langkah-langkahnya:
Sekarang Anda dapat membuat kredensial Jenkins menggunakan kunci SSH Di dasbor Jenkins Tambahkan Kredensial
pilih opsi ini
sumber
Saya memiliki masalah serupa dengan gitlab. Ternyata saya telah membatasi pengguna yang diizinkan untuk masuk melalui ssh. Ini tidak akan mempengaruhi pengguna github, tetapi dalam kasus orang berakhir di sini untuk gitlab (dan sejenisnya) masalah, pastikan Anda menambahkan
git
keAllowUsers
pengaturan di/etc/ssh/sshd_config
:sumber
Opsi lainnya adalah menggunakan token akses pribadi GitHub :
https://github.com/my-username/my-project.git
)github-token-for-my-username
Saya menguji ini pada Jenkins ver. 2.222.1 dan plugin Jenkins GitHub 1.29.5 dengan repo GitHub pribadi.
sumber
Alternatif jawaban dari sergey_mo adalah membuat beberapa kunci ssh di server jenkins.
(Meskipun seperti yang dikatakan oleh pemberi komentar pertama pada jawaban sergey_mo, ini mungkin akan menjadi lebih menyakitkan daripada mengelola satu pasangan kunci.)
sumber