
Kata Pengantar
Artikel ini adalah hasil dari pencarian selama seminggu untuk informasi yang sangat terfragmentasi tentang cara mengkonfigurasi penyebaran layanan web di Go. Bukan di Heroku, bukan di Docker, bukan di Digital Ocean, tapi hanya di VDS kuno dengan CentOS 7x64. Untuk beberapa alasan jaringan tidak memiliki informasi ini, dan sebagian besar tutorial dimulai dengan cara mengatur build dan diakhiri dengan peluncuran tes.
Saya akan segera memperingatkan Anda bahwa untuk pertama kalinya saya mengatur proses CI / CD, jadi ini adalah artikel dari pemula hingga pemula.
Tentunya banyak yang bisa diperbaiki di sini, jadi saya akan menerima komentar apa pun dengan senang hati di komentar dan mencoba untuk memperbarui perubahan sesegera mungkin. Mungkin juga artikel seperti itu sudah ada, dan saya cukup menggunakan mesin pencari. Kemudian tolong berikan tautan untuk itu, dan dalam hal ini, saya akan menghapus artikel dan pergi untuk menaburkan abu di kepalaku.
Sumber data
- Server VDS
- OS: CentOS 7x64
- Go project dengan struktur berikut:
src/ public/ index.html main.go
Penyiapan server: Buat layanan
Pertama, buat layanan untuk aplikasi kita. Di CentOS 7, ini cukup sederhana. Anda perlu menulis skrip seperti itu di file bernama serviceName.service:
[Unit]
Script itu sendiri harus diletakkan di folder dll / systemd / system /
Pengaturan SSH
Di server, jalankan perintah:
ssh-keygen -f /etc/ssh/hmp.key
Atas permintaan
Masukkan frasa sandi (kosong tanpa frasa sandi)
jangan masukkan kata sandi, cukup tekan Enter.
Dua file dihasilkan di folder / etc / ssh /:
- hmp.key - kunci pribadi
- hmp.key.pub - kunci publik
Kami membutuhkan kunci pribadi. Lihat isinya menggunakan perintah:
cat /etc/ssh/hmp.key
Akan terlihat seperti ini:
-----BEGIN RSA PRIVATE KEY----- { } -----END RSA PRIVATE KEY-----
Semua sepenuhnya disalin ke papan klip Anda
PERHATIAN! - tidak hanya kunci itu sendiri, tetapi juga
----- AWAL KUNCI PRIVATE RSA ----- dan ----- AKHIR KUNCI PRIVATE RSA -----
Pengaturan Gitlab
Pertama, isi data penting untuk depot (nama pengguna, kata sandi, dll.).
Bahkan jika repositori Anda bersifat publik, mereka akan tetap ditutup.
Dalam Gitlab di repositori, buka Pengaturan -> CI / CD -> Variabel. Kami membuat variabel berikut di sana:
- SSH_PRIVATE_KEY - rekatkan nilai yang disalin pada paragraf sebelumnya di sini
- USER_PASS - kata sandi pengguna tempat aplikasi akan diluncurkan
- USER - username dari mana aplikasi akan diluncurkan
- HOST - alamat VDS Anda
- TARGET_DIR_ON_HOST - folder target tempat layanan Anda akan berada dalam contoh saya adalah / nama pengguna / layanan /
- SERVICE_NAME - nama layanan
- GROUP_NAME adalah nama pengguna Gitlab Anda
- REPOSITORY_NAME - nama repositori Anda
Tambahkan file .gitlab-ci.yml ke repositori dengan konten berikut:
image: golang:latest before_script:
Setelah menyetel, kami mendorong skrip ini ke dalam repositori dan kami memiliki perakitan siap pakai dan penyebaran. Itu saja!
Semoga artikel ini bermanfaat. Untuk setiap pertanyaan dan komentar saya akan dengan senang hati menjawab di komentar!