cara membuat subdomain secara otomatis untuk setiap permintaan tarik

9

Latar Belakang

Saya punya tim QA tidak teknis yang harus melakukan pengujian pada aplikasi iOS / android untuk setiap Permintaan Tarik (PR) yang dibuat oleh tim backend saya.

Pertanyaan

Inilah yang ingin saya lakukan: setiap kali seorang insinyur backend membuat PR pada bitbucket, saya ingin sebuah skrip untuk secara otomatis menyebarkan kode cabang PR git ke subdomain dari server dev kami yang cocok dengan masalah JIRA yang dibuat.

Misalnya anggap masalah jira bahwa alamat PR adalah BAC-421, maka segera setelah insinyur membuat PR, skrip menyebarkan kode yang mereka buat ke AWS EC2 sehingga QA dapat mengarahkan aplikasi mereka ke www.bac421.mydevdomain. com

Apa cara terbaik untuk melakukan ini? Saya seorang nube teknis sial.

Pembaruan - Spesifikasi Lingkungan

jadi di sini adalah pemecahan dari env kami - backend menggunakan laravel 5.3 - ini digunakan pada AWS EC2 - kami menggunakan forge untuk penyebaran otomatis (tidak ada yang mewah .. kami hanya menjalankan skrip ini:

cd /home/forge/default
git fetch --tags 
git pull origin master
git describe
composer install --no-dev --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.1-fpm reload

if [ -f artisan ]
then
    php artisan migrate --force
    php artisan config:cache
    php artisan queue:restart
fi

yang kami jalankan segera setelah kami menggabungkan dev ke master branch) - selain itu kami tidak menggunakan alat CI / CD apa pun walaupun saya terbuka untuk rekomendasi - penyedia DNS adalah GoDaddy - server aplikasi kami adalah nginx - database kami ada di contoh RDS terpisah

abbood
sumber
1
Bagaimana Anda menggunakan perangkat lunak Anda saat ini? Alat CI atau CD apa yang Anda gunakan? Siapa penyedia DNS Anda?
user2640621
Iya. Ada banyak cara untuk menguliti kucing ini - termasuk tetapi tidak terbatas pada memperbarui file host, tetapi kami perlu tahu lebih banyak tentang lingkungan Anda.
James Shewey
jawaban diperbarui @ user2640621
abbood

Jawaban:

3

Kami melakukan ini di tempat kerja.

Kami memiliki server kecil, sebut saja penerima, itu adalah target dari acara webhook GitHub . Ini menjalankan aplikasi kecil yang mem-parsing payload dan menggabungkan logika di sekitar bagaimana melanjutkan misalnya membuat server baru pada penyedia infrastruktur, memperbarui penyeimbang beban, menyebarkan ke server yang ada, menghancurkan server dll. Ini bisa menjadi melayani aplikasi web tradisional sebuah API atau itu bisa menjadi aplikasi tanpa server, terserah Anda bagaimana Anda ingin mendekatinya.

Penerima relatif mudah untuk ditangani, sistem pendukung lain yang diperlukan yang Anda perlukan adalah pendekatan manajemen konfigurasi / penyediaan (bagaimana server memiliki paket yang diperlukan untuk menjalankan aplikasi), manajemen rahasia (bagaimana server mendapatkan akses ke informasi sensitif) dan perutean (bagaimana subdomain diperbarui dan rute ke server yang benar).

Mungkin bermanfaat melihat mempersiapkan AMI dengan layanan yang diperlukan dikonfigurasi, template CloudFormation dengan logika penyediaan infrastruktur dan CodeDeploy dapat menangani penyebaran untuk Anda.

Manajemen konfigurasi

Ini benar-benar terserah Anda dan tim Anda, ada banyak alat yang dapat Anda gunakan atau Anda bisa mengandalkan skrip shell. Pada titik apa dalam siklus hidup server Anda menerapkan perubahan adalah apa yang dibahas dalam artikel desain AMI yang saya tautkan.

Manajemen Rahasia

Ini adalah topik yang menantang untuk ditangani dengan informasi yang ada, demi kepentingan singkatnya, saya akan menyerahkannya kepada Anda dan tim Anda.

Rute

Ada beberapa cara Anda dapat menangani perutean, Application Load Balancer (jangan bingung dengan ELB / NLB) yang ditawarkan oleh AWS mendukung perutean berbasis host . Atau Anda dapat menggunakan proksi terbalik seperti NGINX atau HAProxy, saat Anda menyediakan lingkungan baru, Anda perlu memperbarui perutean ini (idealnya secara otomatis) terlepas dari pendekatan apa yang Anda ambil.

Jangan lupa untuk mempertimbangkan bagaimana Anda akan menangani lapisan basis data / kegigihan & penyebaran nol waktu. Pertanyaan yang harus ditanyakan dengan lapisan persistensi adalah apakah tim akan berbagi database dan bagaimana hal itu akan berinteraksi dengan hal-hal seperti migrasi. Pada topik penerapan nol downtime, CodeDeploy harus mengatasinya dengan baik untuk Anda. Satu hal lagi, Anda menyebutkan satu aplikasi seluler yang menunjuk ke lingkungan yang berbeda, bagaimana Anda akan mengarahkan aplikasi ini ke lingkungan.

dom_hutton
sumber
Ada banyak jus dalam jawaban Anda. Bisakah Anda memecahnya sedikit? Misalnya di bagian berbeda yang Anda sebutkan .. dapatkah Anda memberi saya sesuatu untuk memulai di masing-masing jika mereka?
abbood
Apakah ada hubungan antara pengguna yang memposting jawaban ini , dan pengguna ini ? Saya yakin mereka berasal dari "pengguna" yang sama ... Jika demikian, silakan
gabungkan
1

pengaturan ini bekerja dengan baik untuk saya menggunakan aws code deploy:

masukkan deskripsi gambar di sini

abbood
sumber