Cách tự động tạo tên miền phụ cho mỗi yêu cầu kéo


9

Lý lịch

Tôi đã có một nhóm QA không có kỹ thuật phải thực hiện thử nghiệm trên các ứng dụng iOS / Android cho mỗi Yêu cầu kéo (PR) được tạo bởi nhóm phụ trợ của tôi.

Câu hỏi

Đây là những gì tôi muốn làm: mỗi khi một kỹ sư phụ trợ tạo PR trên bitbucket, tôi muốn một tập lệnh tự động triển khai mã của nhánh PR git đó vào một tên miền phụ của máy chủ dev của chúng tôi phù hợp với vấn đề JIRA được tạo.

Ví dụ: giả sử vấn đề jira mà địa chỉ PR là BAC-421, thì ngay khi kỹ sư tạo PR, tập lệnh sẽ triển khai mã mà họ đã tạo vào AWS EC2 để QA có thể trỏ ứng dụng của họ tới www.bac421.mydevdomain. com

Cách tốt nhất để làm việc này là gì? Tôi là một tín đồ kỹ thuật.

Cập nhật - Thông số môi trường

Vì vậy, đây là một sự chia tay của env của chúng tôi - phần phụ trợ sử dụng laravel 5.3 - nó được triển khai trên AWS EC2 - chúng tôi sử dụng giả mạo để triển khai tự động (không có gì lạ mắt .. chúng tôi chỉ chạy tập lệnh này:

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

rằng chúng tôi chạy ngay khi chúng tôi hợp nhất với chi nhánh chính) - bên cạnh đó chúng tôi không sử dụng bất kỳ công cụ CI / CD nào mặc dù tôi mở cho các đề xuất - nhà cung cấp DNS là GoDaddy - máy chủ ứng dụng của chúng tôi là nginx - cơ sở dữ liệu của chúng tôi đang ở trong một ví dụ RDS riêng


1
Làm thế nào để bạn hiện đang triển khai phần mềm của bạn? Những công cụ CI hoặc CD nào bạn sử dụng? Nhà cung cấp DNS của bạn là ai?
dùng2640621

Đúng. Có rất nhiều cách để nuôi con mèo này - bao gồm nhưng không giới hạn trong việc cập nhật tệp máy chủ, nhưng chúng tôi sẽ cần biết thêm về môi trường của bạn.
James Shewey

câu trả lời được cập nhật @ user2640621
abbood

Câu trả lời:


3

Chúng tôi làm điều này tại nơi làm việc.

Chúng tôi có một máy chủ nhỏ, hãy gọi nó là máy thu, đó là mục tiêu của các sự kiện webhook GitHub . Nó chạy một ứng dụng nhỏ phân tích tải trọng và kết hợp logic xung quanh cách tiến hành, ví dụ: tạo một máy chủ mới trên nhà cung cấp cơ sở hạ tầng, cập nhật bộ cân bằng tải, triển khai đến một máy chủ hiện có, phá hủy máy chủ, v.v. Đây có thể là một ứng dụng web truyền thống phục vụ lên một API hoặc nó có thể là một ứng dụng không có máy chủ, tùy thuộc vào cách bạn muốn tiếp cận nó.

Người nhận tương đối đơn giản để xử lý, các hệ thống hỗ trợ cần thiết khác mà bạn cần là một cách tiếp cận để quản lý / cung cấp cấu hình (làm thế nào để máy chủ có các gói cần thiết để chạy ứng dụng), quản lý bí mật (làm thế nào để máy chủ truy cập được thông tin nhạy cảm) và định tuyến (làm thế nào để các tên miền phụ được cập nhật và định tuyến đến đúng máy chủ).

Có thể đáng để xem xét việc chuẩn bị AMI với các dịch vụ cần thiết được định cấu hình, mẫu CloudFormation với logic cung cấp cơ sở hạ tầng và CodeDeploy có thể xử lý việc triển khai cho bạn.

Quản lý cấu hình

Điều này thực sự tùy thuộc vào bạn và nhóm của bạn, có vô số công cụ bạn có thể sử dụng hoặc đơn giản là bạn có thể dựa vào kịch bản shell. Tại thời điểm nào trong vòng đời của máy chủ, bạn áp dụng các thay đổi là những gì được thảo luận trong bài viết thiết kế AMI mà tôi đã liên kết.

Quản lý bí mật

Đây là một chủ đề đầy thách thức để giải quyết với thông tin trong tay, vì lợi ích của sự ngắn gọn, tôi sẽ để lại cho bạn và nhóm của bạn.

định tuyến

Có một số cách bạn có thể xử lý định tuyến, Bộ cân bằng tải ứng dụng (không bị nhầm lẫn với ELB / NLB) do AWS cung cấp hỗ trợ định tuyến dựa trên máy chủ . Ngoài ra, bạn có thể sử dụng proxy ngược như NGINX hoặc HAProxy, khi bạn cung cấp một môi trường mới, bạn sẽ cần cập nhật định tuyến này (tự động lý tưởng) bất kể cách tiếp cận nào bạn thực hiện.

Đừng quên xem xét cách bạn sẽ xử lý cơ sở dữ liệu / lớp lưu giữ và triển khai thời gian không. Câu hỏi cần đặt ra với lớp kiên trì là liệu nhóm có chia sẻ cơ sở dữ liệu hay không và nó sẽ tương tác với những thứ như di chuyển như thế nào. Về chủ đề triển khai thời gian chết bằng không, CodeDeploy sẽ xử lý việc đó độc đáo cho bạn. Một điều nữa, bạn đã đề cập đến một ứng dụng di động duy nhất trỏ đến các môi trường khác nhau, bạn sẽ trỏ các ứng dụng này đến các môi trường như thế nào.


Có rất nhiều nước trái cây trong câu trả lời của bạn. Bạn có thể phá vỡ nó một chút mặc dù? Ví dụ, trong các phần khác nhau mà bạn đã đề cập .. bạn có thể cho tôi một cái gì đó để bắt đầu trong mỗi phần nếu chúng không?
abbood

Có bất kỳ mối quan hệ giữa người dùng đã đăng câu trả lời nàyngười dùng này không? Tôi cá là họ đến từ cùng một "người dùng" ... Nếu vậy, vui lòng hợp nhất cả hai tài khoản ...
Pierre.Vriens

1

thiết lập này hoạt động hoàn hảo với tôi bằng cách sử dụng mã aws triển khai:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.