Terraform-aws-github-runner: Otomatiskan pembuatan pelari offline

Dibuat pada 6 Feb 2021  ·  11Komentar  ·  Sumber: philips-labs/terraform-aws-github-runner

Pendekatan saat ini mengharuskan kita selalu memiliki pelari offline yang diatur. Pelari offline tersebut dihapus oleh github setiap 60 hari. Oleh karena itu, akan lebih baik untuk mengotomatiskan proses untuk mempertahankan 1 pelari offline sehingga kami dapat menskalakan kembali ke 0.

Arah solusi potensial

Mendaftar melalui instance ED2

Gunakan mekanisme yang sama yang kami gunakan untuk menjalankan runner dengan lambda ekstra yang hanya mengeksekusi data pengguna hingga langkah konfigurasi. Dan juga pastikan instance ec2 dihapus

Membalik proses konfigurasi github egineer

Buat lamda yang menggunakan panggilan http github berdasarkan rekayasa balik, lihat https://github.com/actions/runner/issues/558

Jalankan konfigurasi di lambda

Buat lambda yang dapat memeriksa konfigurasi melalui lapisan lambda

enhancement help wanted

Komentar yang paling membantu

@npalm Saya telah mengetahui sebagian besar logika, url, dll. yang terkait dengan pendaftaran pelari. Saya berencana membuat modul python untuk menangani ini menggunakan python 3x dan permintaan. Ini mungkin akhir pekan ini saat aku libur kerja.

Jika Anda lebih suka menerapkannya sendiri, saya dapat membagikan catatan saya yang telah saya kumpulkan tentang prosesnya sebelumnya.

Sejujurnya saya berpikir saya ingin meluangkan lebih banyak waktu untuk menelusuri seluruh proses, jadi itu benar-benar dapat menarik dan melakukan alur kerja juga, tetapi pendaftaran pelari baru adalah suatu keharusan bagi saya.

Pada dasarnya proses yang saya temukan berhasil:
Dapatkan token pelari melalui api menggunakan pat atau kredibilitas aplikasi
Poskan token ke titik akhir rahasia, terima kembali data json dengan titik akhir rahasia baru dan jwt
Gunakan jwt untuk mengautentikasi melalui tajuk pembawa auth, menggunakan titik akhir yang baru diungkapkan, dapat menanyakan "agen" yang ada (sebagaimana mereka dipanggil dalam api), menambahkan yang baru, atau memperbarui yang sudah ada.

Jelas ada beberapa detail lebih lanjut yang terlibat, termasuk membuat kunci RSA, dan banyak header. Saya belum melihat lebih jauh dari pendaftaran ...

Semua 11 komentar

@npalm Saya telah mengetahui sebagian besar logika, url, dll. yang terkait dengan pendaftaran pelari. Saya berencana membuat modul python untuk menangani ini menggunakan python 3x dan permintaan. Ini mungkin akhir pekan ini saat aku libur kerja.

Jika Anda lebih suka menerapkannya sendiri, saya dapat membagikan catatan saya yang telah saya kumpulkan tentang prosesnya sebelumnya.

Sejujurnya saya berpikir saya ingin meluangkan lebih banyak waktu untuk menelusuri seluruh proses, jadi itu benar-benar dapat menarik dan melakukan alur kerja juga, tetapi pendaftaran pelari baru adalah suatu keharusan bagi saya.

Pada dasarnya proses yang saya temukan berhasil:
Dapatkan token pelari melalui api menggunakan pat atau kredibilitas aplikasi
Poskan token ke titik akhir rahasia, terima kembali data json dengan titik akhir rahasia baru dan jwt
Gunakan jwt untuk mengautentikasi melalui tajuk pembawa auth, menggunakan titik akhir yang baru diungkapkan, dapat menanyakan "agen" yang ada (sebagaimana mereka dipanggil dalam api), menambahkan yang baru, atau memperbarui yang sudah ada.

Jelas ada beberapa detail lebih lanjut yang terlibat, termasuk membuat kunci RSA, dan banyak header. Saya belum melihat lebih jauh dari pendaftaran ...

@gertjanmaas Saya rasa Anda akan menyukai komentar di atas

@ miked63017 beri tahu saya jika Anda tidak bisa melakukannya. Kami sedang mencari ini juga jadi saya akan punya waktu untuk mengerjakannya.

Sunting: Tidak yakin apakah Anda melihatnya, tetapi ini baru dirilis untuk Python: https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for- the-github-api /

@npalm @mcaulifn di sini adalah tautannya, masih cukup beta'ish dan tidak terdokumentasi dengan baik, tapi saya kira kita bisa mengatakan hal yang sama tentang runners / actions API secara umum :-)

https://github.com/miked63017/pyghrunner

@mcaulifn di RE ke modul ghapi kelihatannya keren, tetapi sebagian besar panggilan ini adalah bagian api yang tidak terdokumentasi, dan mungkin dapat berubah.

Secara keseluruhan sepertinya itu harus berfungsi. Apakah Anda berencana menambahkannya ke repo ini?

@gertjanmaas ada pendapat?

@npalm @mcaulifn tidak yakin apakah saya memiliki konteks untuk menambahkannya di sini ke repo ini, saya secara pribadi bekerja di operator GKE untuk melakukan hal serupa tetapi saya pikir itu dapat membantu orang lain untuk berbagi beberapa kode sederhana untuk diintegrasikan dengan proyek lain. Tampaknya permintaan yang cukup umum untuk fungsi ini. Jika Anda ingin saya mencoba menambahkan di sini melalui PR, saya mungkin bisa meluangkan waktu akhir pekan ini.

Saya dengan cepat menelusuri kode python dan sepertinya mengkonfirmasi apa yang saya lihat ketika saya mencoba merekayasa baliknya beberapa waktu yang lalu. Akan lebih bagus jika ini bisa diterapkan di sini. Bosan menambahkan pelari offline dengan tangan: P

@gertjanmaas tempat saya menjalankan (setara) kode ini (di perpustakaan pribadi), kami hanya menjalankan beberapa metode secara berkala, atau sebagai respons terhadap suatu peristiwa, dan menimpa "pelari virtual" sebelumnya. Kami pada dasarnya hanya menggunakannya sebagai placeholder sehingga pekerjaan mengantri daripada gagal karena tidak ada pelari dengan label. Kemudian kita melihat detail pekerjaan, dan memutar runner yang sesuai, dengan label yang sesuai sesuai kebutuhan, dan dengan flag --once .

Saya masih memiliki rencana penyelidikan lebih lanjut untuk membuat runner kustom lengkap, kemungkinan besar ditulis dengan python, yang kemudian dapat disematkan di tempat lain. Ini belum menjadi prioritas utama saya.

Bagaimana dengan deregistrasi pelari?

Pelari offline pada dasarnya perlu dibuat ulang setiap 30 hari, agar tidak ada 0 pelari di organisasi.

Ini juga harus otomatis.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat