Bagian tersulit dari proses ini adalah menerapkan ke server dengan SSH dan rsync. Saya mencoba berbagai tindakan Github seperti SSH Deploy dan SSH Action , tetapi saya tidak bisa mendapatkan izin untuk bekerja untuk WAKTU YANG LAMA.
Saya menemukan sebagian besar artikel tentang tindakan Github dan SSH tidak banyak membantu saya. Saya terjebak dengan debug selama beberapa hari sebelum akhirnya menemukan cara untuk membuat prosesnya berjalan.
Hari ini, saya ingin membagikan langkah-langkah yang tepat untuk diterapkan melalui rsync dan SSH. Proses ini berfungsi untuk server mana pun, meskipun Anda tidak menggunakan Digital Ocean.
Langkah 1: Buat Kunci SSH
Anda dapat membuat kunci SSH baik di komputer lokal atau di server Anda. Tidak masalah karena kami dapat menghapus kunci setelahnya, tetapi saya sarankan melakukan ini di server sehingga Anda dapat menggunakan kembali kunci SSH Anda untuk Tindakan Github lainnya.
Dalam hal ini kami akan SSH ke server.
ssh username@host.comSetelah Anda berada di server, arahkan ke .sshfolder. Kami akan membuat kunci SSH di sini.
cd ~/.sshSaat kami membuat Kunci SSH, kami tidak dapat menggunakan instruksi default pada pembuatan halaman kunci SSH Github . Ini karena Tindakan Github tidak mendukung algoritma Ed22159 terbaru. Kita perlu menggunakan perintah warisan sebagai gantinya.

Jadi, inilah perintah yang perlu Anda gunakan. Ingatlah untuk mengganti your_email@example.comdengan alamat email Anda.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Catatan: Beberapa penulis Tindakan Github mengatakan kami memerlukan format PEM agar kunci SSH berfungsi. Ini salah. Saya telah menguji dengan format RSA standar (yang saya rekomendasikan di atas) dan berhasil.
Selanjutnya kita perlu memberi nama file Kunci SSH. Di sini, saya tidak menyarankan menggunakan nama file default (yaitu id_rsa). Saya sarankan mengganti nama file github-actionsagar kami tahu kunci ini digunakan untuk Github Actions. Perlu eksplisit saat Anda melihat kunci SSH Anda 6 bulan ke depan.

Anda juga akan diminta untuk memberikan frasa sandi. Biarkan ini kosong karena kita tidak bisa memasukkan kata sandi saat Github Actions menjalankan perintah SSH untuk kita.

Setelah selesai membuat kunci SSH, Anda akan mendapatkan gambar lucu seperti ini:

Jika Anda menggunakan lsperintah sekarang, Anda akan melihat kunci Anda di .sshfolder.
lsKunci publik berisi .pubekstensi sedangkan kunci privat tidak.

Langkah 2: Menambahkan Kunci Publik ke authorized_keys
Kita perlu menambahkan kunci publik ( github-actions.pub) authorized_keysagar mesin yang menggunakan kunci privat ( github-actions) dapat mengakses server.
Cara termudah adalah dengan menggunakan catperintah untuk menambahkan github-actions.pubke authorized_keys. Ini terlihat seperti ini:
cat github-actions.pub >> ~/.ssh/authorized_keysInilah yang dilakukan perintah:
- Raih isinya
github-actions.pubdengancat. - Tambahkan ke
~/.ssh/authorized_keysdengan>>.
Catatan: Pastikan Anda menggunakan tanda kurung siku-siku ganda ( >>) dan bukan tanda kurung siku-siku ( >). Double artinya menambahkan, sedangkan single artinya menimpa. Hati-hati!
Langkah 3: Menambahkan kunci privat ke rahasia repositori Anda
Buka repositori Anda di Github dan klik "Pengaturan", lalu "Rahasia". Anda akan melihat tombol yang bertuliskan "Rahasia repositori baru".



Klik "Rahasia repositori baru" dan Anda akan diminta untuk memasukkan rahasia. Rahasia ini berisi dua hal — nama rahasia dan isinya. Nama rahasia digunakan untuk mendapatkan konten nanti dalam alur kerja Github Actions.

Saat Anda menulis nama rahasia Anda, harap gunakan huruf besar dengan garis bawah sebagai spasi (seperti yang ditunjukkan pada placeholder). Ini adalah format yang biasanya kami gunakan untuk menentukan rahasia.
Dalam hal ini, saya memilih untuk menyebutkan rahasianya SSH_PRIVATE_KEY.
Untuk nilainya, kami perlu kembali ke server Anda dan membuka github-actionskunci pribadi. Kita bisa melakukan ini dengan nano..
nano github-actionsAnda akan melihat file yang mirip dengan ini. (Jangan khawatir tentang saya mengekspos kunci ini, saya sudah membuangnya. Saya hanya ingin menunjukkan kepada Anda apa yang diharapkan :)).

Kita perlu menyalin semuanya dan menempelkannya di dalam nilai Rahasia

Kita dapat menggunakan kunci seperti ini:
Selanjutnya, klik "Tambah rahasia" dan Anda akan dibawa kembali ke halaman rahasia. Di sini, Anda akan melihat SSH_PRIVATE_KEYdi bawah rahasia repositori.

Langkah 4: Menambahkan kunci Pribadi ke Alur Kerja Tindakan Github
Saya berasumsi Anda sudah tahu cara membuat file Github Actions dasar , jadi saya hanya akan berbicara tentang langkah-langkah untuk menambahkan Kunci SSH di sini.
Menambahkan kunci pribadi adalah bisnis yang rumit, saya memilih untuk mencari Tindakan Github yang tersedia di sini. Satu-satunya tindakan yang berhasil bagi saya adalah Instal Kunci SSH Shimataro .
steps:
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2Tindakan Install SSH Key memerlukan dua masukan — keydan known_hostsnilai.
keyadalah kunci pribadi yang kami tambahkan ke Rahasia Github. Kita dapat menggunakan rahasia seperti ini:
steps:
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: {%- raw -%} ${{ secrets.SSH_PRIVATE_KEY }}Nilainya known_hostsadalah nilai hash yang aneh. Jika Anda membuka known_hostsfile di .sshserver, Anda akan melihat sesuatu seperti ini:

Kami seharusnya menambahkan SATU dari nilai-nilai ini ke dalam rahasia Github Actions. Bagaimana kita mendapatkan nilai ini sejak awal?! Sayangnya, tidak ada Tindakan Github yang menunjukkan kepada saya bagaimana melakukan ini, jadi saya harus mencari-cari di Google sebentar -_-.
Untungnya, kita bisa menggunakan perintah untuk menghasilkan nilai hash yang aneh ini. Saya akan berbicara tentang perintah ini di langkah berikutnya. Untuk saat ini, kita hanya perlu menambahkan nilai acak agar known_hostsKunci Instal SSH Shimataro tidak akan memberi kita kesalahan.
steps:
- name: Install SSH Key
uses: shimataro/ssh-key-action@v2
with:
key: {%- raw -%} ${{ secrets.SSH_PRIVATE_KEY }}
known_hosts: 'just-a-placeholder-so-we-dont-get-errors'Langkah 5: Menambahkan nilai known_hosts yang benar
Kami dapat menghasilkan known_hostsnilai yang benar dengan ssh-keyscanperintah. Ini terlihat seperti ini:
ssh-keyscan -H IP_ADDRESS_OF_HOSTJika Anda mengganti IP_ADDRESS_OF_HOSTdengan alamat ip sebenarnya dari server Anda, Anda akan mendapatkan hasil seperti ini. (Saya menghilangkan alamat ip saya tetapi mencoba menunjukkan yang lainnya).

Setelah kami mengetahui hal ini, kami dapat secara manual menambahkan alamat IP (yang saya beri nama SSH_HOST) ke dalam Rahasia Github.

Kemudian kami dapat menghasilkan informasi yang benar melalui ssh-keyscandan menambahkannya ke known_hostsfile.
steps:
# ...
- name: Adding Known Hosts
run: ssh-keyscan -H ${{ secrets.SSH_HOST }}{% endraw%} >> ~/.ssh/known_hostsLangkah 6: Rsync ke Server
Kami akhirnya dapat melakukan rsync melalui SSH ke server. Untuk melakukan ini, Anda perlu mengetahui pengguna dan host SSH Anda. Berikut tampilan perintahnya.
rsync -flags source user@host:destinationflagsadalah flag yang ingin Anda rsync. Kami biasanya menggunakanavzsingkatan dariarchive,verbose, dancompress. Jika Anda melakukan rsync untuk pertama kalinya, saya sarankan untuk menggunakannflagdry-runjuga.sourceadalah file sumber yang ingin Anda salinuser@hostadalah nama pengguna dan alamat ip server Anda. Nilai-nilai ini harus disimpan sebagai rahasia.destinationadalah lokasi file yang ingin Anda salin.
Inilah contoh nyata dari apa yang saya gunakan untuk menyebarkan zellwk.com ke server saya.
- name: Deploy with rsync
run: rsync -avz ./dist/ ${{ secrets.SSH_USER }}@${{ secrets.SSH_HOST }}:/home/zellwk/zellwk.com/dist/Karena kami memiliki verboseflag, Anda seharusnya dapat melihat daftar sumber daya yang disalin melalui rsync.

Catatan: Ada beberapa langkah tambahan jika Anda perlu menggunakan rsync dengan port khusus. Silakan baca artikel ini untuk informasi lebih lanjut.
Itu dia!
Membungkus
Berikut adalah langkah-langkah untuk meringkas semuanya:
- Hasilkan SSH Keyphrase menggunakan format RSA standar
- Tambahkan kunci publik ke
authorized_keys - Tambahkan kunci pribadi sebagai rahasia Github
- Gunakan tindakan Instal Kunci SSH Shimataro untuk menghasilkan Kunci SSH di pelari.
- Tambahkan
known_hostskonfigurasi yang benar denganssh-keyscan - Terapkan dengan Rsync melalui SSH
| on: | |
| push: | |
| branches: [ main ] | |
| name: Deploy website on push | |
| jobs: | |
| web-deploy: | |
| name: Auto Deploy | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Get latest code | |
| uses: actions/checkout@v2.3.2 | |
| - name: Sync files | |
| uses: burnett01/rsync-deployments@4.1 | |
| with: | |
| switches: -avzr --delete --exclude=".git" --exclude=".github" | |
| path: / | |
| remote_path: ${{ secrets.DEPLOY_PATH }} | |
| remote_host: ${{ secrets.DEPLOY_HOST }} | |
| remote_user: ${{ secrets.DEPLOY_USER }} | |
| remote_key: ${{ secrets.DEPLOY_KEY }} |
0 Comments