Saya menyiapkan Tindakan Github untuk repositori proyek.
Alur kerja terdiri dari langkah-langkah berikut:
- Membangun citra buruh pelabuhan
- Mendorong gambar ke registry kontainer
- Meluncurkan penyebaran Kubernet.
Namun, saya memiliki dua penyebaran Kubernet yang berbeda: satu untuk pengembangan, dan satu untuk produksi. Karenanya, saya juga memiliki dua alur kerja Tindakan Github.
Alur kerja Github Action untuk pengembangan dipicu setiap kali komit didorong:
on:
push:
branches:
- master
Tapi saya tidak ingin itu untuk alur kerja produksi saya. Saya memerlukan pemicu manual, seperti tombol Kirim ke produksi . Saya tidak melihat sesuatu yang dekat dengan itu di dokumen.
Apakah ada cara untuk memicu alur kerja secara manual di Tindakan Github?
Bagaimana saya bisa membagi perkembangan dan alur kerja produksi saya untuk mencapai apa yang saya inginkan, baik pada Tindakan Github, Docker atau Kubernetes?
sumber
repository_dispatch
selain itu, orang dapat bergabungwatch
denganif: github.actor == 'hackerman'
untuk menyaring orang asing acak. Atau lebih baik lagi -if: github.actor == github.event.repository.owner.login
untuk "keamanan" tambahan: DPembaruan : Untuk gaya perintah slash "ChatOps" lihat aksi slash-command-dispatch . Ini dapat memungkinkan Anda untuk memicu alur kerja dengan perintah slash (misalnya
/deploy
) dari masalah dan menarik komentar permintaan.Berikut adalah contoh dasar untuk
deploy
perintah slash.REPO_ACCESS_TOKEN
adalah Token Akses Pribadi yangrepo
dicakupPerintah dapat diproses dalam alur kerja ini.
Ada banyak opsi dan pengaturan berbeda. Lihat slash-command-dispatch untuk instruksi penggunaan lengkap.
Jawaban Asli :
repository_dispatch
Alur kerja dapat dipicu secara manual oleh panggilan ke API GitHub sebagai berikut.[username]
adalah nama pengguna GitHub[token]
adalah Token Akses Pribadi yangrepo
dicakup[repository]
adalah nama repositori tempat alur kerja berada.sumber
event_type
tersedia untuk alur kerja sebagaigithub.event.action
, sehingga pekerjaan / langkah tertentu dapat diaktifkan / dinonaktifkan saat diperlukan. PS: PAT tidak benar-benar diperlukan, mulai dengan ikal-u "[username]:[password]"
atau bahkan-u "[username]"
bekerja dengan baik (dalam kasus kedua ikal meminta pengguna untuk kata sandi); lebih mudah digunakan dalam beberapa kasus (misalnya saat menulis skrip yang menggunakan nama pengguna sebagai input, atau skrip yang dimaksudkan untuk digunakan oleh pengguna yang kurang mengerti teknologi).Meskipun posting Sarah adalah jawaban yang paling dekat dan paling sederhana untuk pertanyaan awal, ini agak membingungkan sehingga kami akhirnya membuat
dev
cabang untuk menggunakan pemicu berikut:Alur kerja pengembangan: dipicu saat push dilakukan pada
dev
cabang:Alur kerja produksi: dipicu ketika permintaan tarik / penggabungan dilakukan dari
dev
kemaster
:sumber
Diedit untuk lebih detail / penjelasan.
Satu hal yang dapat Anda lakukan adalah menelepon
repository_dispatch
. Anda dapat melihat dokumentasi GitHub untuk menggunakan direpository_dispatch
sini .Misalnya, jika Anda memiliki alur kerja Tindakan GitHub yang terlihat seperti ini:
Anda dapat membuat acara pengiriman repositori dengan mengikuti langkah-langkah yang dijelaskan pada Dokumentasi API GitHub v3 .
Pertama, buat token akses pribadi (PAT) di GitHub untuk otentikasi.
Kemudian, Anda dapat menjalankan
curl
seperti:Pada saat yang sama, saya juga ingin berbagi proyek kecil yang telah saya kerjakan dengan seorang teman yang menyelesaikan masalah ini.
https://www.actionspanel.app/
ActionsPanel menggunakan
repository_dispatch
API yang sama ini tetapi melakukannya dengan token Aplikasi GitHub sehingga Anda tidak perlu khawatir tentang mengelola PAT Anda sendiri. Ini juga membuatnya lebih mudah untuk memicu tindakan Anda di tim dengan banyak orang.Berdasarkan permintaan dan umpan balik pengguna, kami telah membangun fitur untuk menentukan cabang mana untuk mengirim
repository_dispatch
ke, dan kami bahkan telah membangun dengan cara menyuntikkan parameter ketika Anda ingin menjalankan tindakan.Anda mengonfigurasi tombol Anda dengan file yaml deklaratif yang Anda tinggalkan di repo, dan ActionsPanel akan membaca file itu dan secara dinamis membuat UI Anda untuk memicu tindakan Anda.
sumber
Cara lain untuk menyelesaikan ini dengan penawaran Github Action saat ini adalah dengan membuat
production
cabang dari master saat dibutuhkan, & memicu tindakan penyebaran diproduction
cabang. Theproduction
cabang pada dasarnya adalah cermin darimaster
.Membangun / mendorong pengembangan dapat terjadi setiap kali ada komitmen kepada master.
Di beberapa titik dalam jadwal rilis, Anda dapat menaikkan PR ke
production
cabang. Ini akan menangani build / deploy produk.sumber