Aku tau mikir babagan ngotomatisasi penyebaran proyekku. gitlab.com kanthi apik nyedhiyakake kabeh alat kanggo iki, lan mesthi aku mutusake kanggo njupuk kauntungan, ngerteni lan nulis skrip penyebaran cilik. Ing artikel iki aku nuduhake pengalaman karo masyarakat.
TL; DR
Nggawe VPS: mateni root, mlebu nganggo sandhi, nginstal dockerd, konfigurasi ufw
Ndhaptar ing variabel gitlab ing setelan CI / CD kanthi isi sertifikat. Nulis script .gitlab-ci.yml kanggo panyebaran.
Aku bakal nuduhake kabeh conto babagan distribusi Debian.
Persiyapan VPS wiwitan
Dadi sampeyan tuku conto contone ing DO, bab pisanan sing kudu sampeyan lakoni yaiku nglindhungi server sampeyan saka jagad njaba sing agresif. Aku ora bakal mbuktekaken utawa negesake apa-apa, aku mung bakal nuduhake log / var / log / pesen saka server virtualku:
IP server kudu duweke sampeyan. Saiki coba log in nggunakake pangguna sing digawe sadurunge; sampeyan ora perlu ngetik sandhi maneh. Sabanjure, ing setelan konfigurasi, ganti ing ngisor iki:
sudo nano /etc/ssh/sshd_config
mateni login sandi:
PasswordAuthentication no
Wiwiti maneh daemon sshd:
sudo systemctl reload sshd
Saiki yen sampeyan utawa wong liya nyoba mlebu minangka pangguna root, ora bakal bisa.
Kanggo ngontrol daemon docker saka adoh, sambungan TLS sing dienkripsi dibutuhake. Kanggo nindakake iki, sampeyan kudu duwe sertifikat lan kunci, sing kudu digawe lan ditransfer menyang mesin remot. Tindakake langkah-langkah sing diwenehake ing pandhuan ing situs web docker resmi: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Kabeh file *.pem sing digawe kanggo server, yaiku ca.pem, server.pem, key.pem, kudu diselehake ing direktori /etc/docker ing server.
Nyetel dockerd
Ing skrip peluncuran daemon docker, kita mbusak opsi -H df: //, pilihan iki nemtokake host daemon docker sing bisa dikontrol.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Sabanjure, sampeyan kudu nggawe file setelan, yen durung ana, lan nemtokake pilihan:
Yen kabeh "ijo", banjur kita nganggep manawa kita wis sukses ngatur docker ing server.
Nyetel pangiriman terus-terusan ing gitlab
Supaya buruh Gitalaba bisa nindakake printah ing host Docker remot, sampeyan kudu mutusake carane lan ing ngendi kanggo nyimpen sertifikat lan kunci sambungan sing dienkripsi karo Dockerd. Aku ngrampungake masalah iki kanthi mung nambahake ing ngisor iki menyang variabel ing setelan gitlbab:
Judul spoiler
Cukup output isi sertifikat lan kunci liwat cat: cat ca.pem. Salin lan tempel menyang nilai variabel.
Ayo nulis skrip kanggo penyebaran liwat GitLab. Gambar docker-in-docker (dind) bakal digunakake.
Masalah utama yaiku "narik" isi sertifikat ing wangun normal saka variabel CI / CD gitlab. Aku ora ngerti kenapa sambungan menyang host remot ora bisa digunakake. Ing host aku ndeleng log sudo journalctl -u docker, ana kesalahan nalika salaman. Aku mutusake kanggo ndeleng apa sing umume disimpen ing variabel; kanggo nindakake iki, sampeyan bisa katon kaya iki: cat -A $DOCKER_CERT_PATH/key.pem. Aku ngatasi kesalahan kanthi nambah mbusak karakter carriage tr -d 'r'.
Sabanjure, sampeyan bisa nambah tugas kirim-rilis menyang skrip ing discretion sampeyan. Sampeyan bisa ndeleng versi sing digunakake ing repositoriku https://gitlab.com/isqad/gitlab-ci-cd