Node.js servisini deploy qilish
GitHub Actions yordamida Node.js servisini remote server'ga deploy qiling
Ushbu loyihaning maqsadi — GitHub Actions yordamida Node.js servisi uchun CI/CD pipeline sozlashni mashq qilish. Siz deployment uchun GitHub Actions'dan (shu jumladan Secrets va environment variable'lardan), serverni provisioning qilish uchun Terraform'dan, serverni sozlash uchun Ansible'dan va ilovani deploy qilish uchun SSH'dan foydalanishni mashq qilasiz.
Talablar
Agar Configuration Management va IaC bo'yicha oldingi loyihalarni hali bajarmagan bo'lsangiz, avval ularni bajaring. O'sha loyihalardagi Ansible va Terraform kodidan qayta foydalana olasiz.
Sizda quyidagi sozlamalar bo'lishi kerak:
- Terraform yordamida DigitalOcean droplet'ini sozlang
- Serverni Ansible yordamida sozlang, jumladan Node.js va
npm'ni o'rnating - Faqat
Hello, world!qaytaradigan/route'iga ega oddiy Node.js servisini yarating - Kod bazasini GitHub repository'siga push qiling
Yuqoridagilarni sozlab bo'lgach, quyidagilarni amalga oshirishingiz kerak:
1-vazifa: Ansible orqali qo'lda deploy qilish
-
Ansible'da
appnomli role sozlang; u serverga ulanadi, repository'ni clone qiladi, dependency'larni o'rnatadi, ilovani build qiladi va ishga tushiradi. -
Playbook'ni quyidagi buyruq bilan ishga tushira olishingiz va ilova
80-portda ishlab turishi kerak:ansible-playbook node_service.yml --tags app -
Ilovaga serverning public IP manzili orqali kira olishingiz kerak.
2-vazifa: GitHub Actions yordamida deployment'ni avtomatlashtirish
Ilovani quyidagi usullardan biri bilan serverga deploy qiladigan GitHub Action workflow'ini yozing. Ikkala variantni ham sinab ko'rishingiz mumkin, lekin bu majburiy emas. Xuddi shu natijaga erishish uchun boshqa istalgan usuldan ham foydalanishingiz mumkin.
1-variant: Playbook'ni GitHub Actions'da ishga tushirish
Playbook'ni ishga tushirish va ilovani deploy qilish uchun ansible-playbook buyrug'idan foydalaning
2-variant: SSH orqali ulanib, ilovani deploy qilish
Ulanish va ilovani deploy qilish uchun SSH'dan foydalaning. Buni amalga oshirish uchun rsync va quyidagi GitHub Actions'larni o'rganib chiqing: web-factory/ssh-agent, appleboy/ssh-action.
<hr />
Ilovani deploy qilganingizdan so'ng, serverni sozlash va unga ilovani deploy qilish jarayonini avtomatlashtirish haqida yaxshi tushunchaga ega bo'lasiz.