Próbuję zautomatyzować wdrożenie Pipeline dla mojej aplikacji. Oto architektura automatyka, wymyśliłem: Kod AWSBuild/codePipeline with serverless framework
Jak widać używam codePipeline i codeBuild zautomatyzować moje wdrożenia. Mój backend jest oparty na Serverless Framework, który uruchamia funkcje lambda na komendzie wypalania sls deploy
. Z tego powodu nie użyłem kodu codeDeploy do wykonania tradycyjnego. buildspec.yml
plik wygląda tak:
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
Teraz mam 3 pytania w odniesieniu do CodeBuild i Serverless:
Pytanie 1: Komenda sls deploy
zależy od pliku o nazwie config.yml
który zawiera sekrety takie jak hasło db. Ten plik nie zostanie sprawdzony w git. Jak myślisz, co jest najlepszym sposobem na włączenie config.yml
w codeBuild?
Pytanie 2:cofanie można zrobić z AWS, jeśli musimy wdrożyć tradycyjne aplikacje EC2 za pomocą codeDeploy. W przypadku serwera bez serwera nie używamy kodu codeDeploy, a serwer obsługuje również funkcje wycofywania. W jaki sposób możemy wykorzystać wycofywanie bez obsługi serwera w ramach usługi codePipeline?
Pytanie 3: Wyzwalanie codePipeline gdy Pull Zapytanie dzieje. Widziałem kilka postów mówiących, że nie jest obsługiwane przez codePipeline. Ale te posty pochodziły z zeszłego roku, czy żądanie Pull teraz jest obsługiwane przez codePipeline?
Hack odpowiedzi (nie jest poprawne, ale prace potrzebujemy lepszej odpowiedzi od ciebie.).
Odpowiedź 1: Plik config.yml
mogą być zapisywane w prywatnym S3 wiadra i można pociągnąć do codeBuild w ramach konfiguracji pre-build
lub Możemy dodać wszystkie sekrety do zmiennych Env Code's Env. Nie podoba mi się druga opcja, ponieważ chcę mieć spójność we wszystkich środowiskach. Jakieś lepsze rozwiązania tego problemu?
Odpowiedź 2: Nie mogę wymyślić hack na to. Szukasz odpowiedzi od Ciebie.
Odpowiedź 3: natknąłem niektórych blogach, które używają [APIGateway + Lambda + S3] wywołać codePipeline żądań ciągnąć. Ale czuję, że ta funkcja musi być dostarczona jako gotowa. Czy są jakieś aktualizacje na linii kodu dla tej funkcji?
Wspaniała odpowiedź !! Twoja odpowiedź ma całkowicie sens. Po prostu ciekawy, Jak zarządzać środowiskami (sekretami) w różnych gałęziach (prod, dev & stg). Używam jawnego pliku '.env' dla każdego środowiska, takiego jak' .env.prod', '.env.dev' i' .env.stg'. Wszystkie te nie są sprawdzane w git. –
Moje sekrety są przechowywane w pamięci parametrów EC2. Moje dev, inscenizacja i produkcja używają osobnych kont AWS. Mogę więc łatwo używać tych samych nazw zmiennych, nie martwiąc się o starcia. – dashmug
Ah nice !! Ale jak sobie z tym radzić w lokalnym środowisku? Podobnie jak to będą te same zmienne, ale różne wartości. Czy też kontrolujesz wersję pliku env? Jeśli tak, to ma sens. Myślę, że jest dobre dla prywatnych repo. –