Tôi đang cố gắng tự động hóa Đường ống triển khai cho đơn đăng ký của mình. Đây là kiến trúc tự động hóa, tôi đã đưa ra: Mã AWSBuild/codePipeline với khung máy chủ
Như bạn thấy, tôi đang sử dụng codePipeline và codeBuild để tự động hóa việc triển khai của tôi. Phụ trợ của tôi dựa trên Serverless Framework, triển khai các hàm lambda khi kích hoạt lệnh sls deploy
. Đây là lý do, tôi không sử dụng codeDeploy để triển khai truyền thống. buildspec.yml
tập tin trông như thế này:
version: 0.1
phases:
install:
commands:
– apt-get -y update
– npm install -g [email protected]
build:
commands:
– cd nj2jp/serverless && npm install
post_build:
commands:
– serverless deploy –verbose
artifacts:
files:
– serverless.yml
discard-paths: yes
Bây giờ, tôi có 3 câu hỏi liên quan đến CodeBuild và serverless:
Câu hỏi 1: Lệnh sls deploy
phụ thuộc vào một tập tin gọi là config.yml
chứa các bí mật như mật khẩu db. Tệp này sẽ không được kiểm tra vào git. Bạn nghĩ gì là cách tốt nhất có thể để bao gồm config.yml
trong codeBuild?
Câu hỏi 2:rollbacks có thể được thực hiện với AWS, nếu chúng ta phải triển khai các ứng dụng EC2 truyền thống sử dụng codeDeploy. Trong trường hợp không có máy chủ, chúng tôi không sử dụng mã số Dẫn dụng và không cần máy chủ cũng hỗ trợ các tính năng rollback. Làm thế nào để chúng tôi tận dụng rollback không có máy chủ trong số codePipeline?
Câu hỏi 3: Mã kích hoạtPipeline khi số Yêu cầu kéo xảy ra. Tôi thấy một số bài viết nói rằng, nó không được hỗ trợ bởi codePipeline. Nhưng những bài đăng đó từ năm ngoái, Yêu cầu kéo có được hỗ trợ bởi codePipeline không?
Hack câu trả lời (Không đúng, nhưng công trình Cần câu trả lời tốt hơn từ bạn..)
Trả lời 1: File config.yml
thể được lưu trong một tin S3 xô và có thể được kéo đến codeBuild như một phần của thiết lập pre-build
hoặc Chúng tôi có thể thêm tất cả bí mật vào các biến Env của CodeBuild. Tôi không thích tùy chọn thứ hai, vì tôi muốn có nhất quán trên tất cả các môi trường. Bất kỳ giải pháp tốt hơn cho vấn đề này?
Trả lời 2: Tôi không thể nghĩ ra một lỗi cho việc này. Tìm kiếm câu trả lời từ bạn.
Trả lời 3: Tôi đã xem qua một số bài đăng trên blog rằng sử dụng [APIGateway + Lambda + S3] để kích hoạt codePipeline cho các yêu cầu kéo. Nhưng tôi cảm thấy, tính năng này phải được cung cấp như một tính năng vượt trội. Có bất kỳ cập nhật nào trên codePipeline cho tính năng này không?
Câu trả lời tuyệt vời !! Câu trả lời của bạn hoàn toàn hợp lý. Chỉ cần tò mò, Làm thế nào để bạn quản lý các môi trường (bí mật) trên các ngành khác nhau (prod, dev & stg). Tôi đang sử dụng tệp '.env' rõ ràng cho mỗi môi trường như' .env.prod', '.env.dev' và' .env.stg'. Tất cả những điều này không được kiểm tra vào git. –
Bí mật của tôi đều được lưu trữ trong Cửa hàng thông số EC2. Nhà phát triển, dàn dựng và sản xuất của tôi đang sử dụng các tài khoản AWS riêng biệt. Vì vậy, tôi có thể dễ dàng sử dụng cùng tên biến mà không phải lo lắng về các xung đột. – dashmug
Ah tốt đẹp !! Nhưng làm thế nào để bạn quản lý nó trong môi trường địa phương? Giống như nó sẽ là biến tương tự nhưng giá trị khác nhau. Bạn có phiên bản kiểm soát các tập tin env quá? Nếu có, điều đó có ý nghĩa. Tôi nghĩ, nó là tốt cho repos tư nhân. –