Ich versuche zu automatisieren Deployment Pipeline für meine Anwendung. Hier ist die Automatisierungsarchitektur, kam ich mit: AWS codeBuild/codePipeline mit Serverless Framework
Wie Sie sehen, ich bin mit codePipeline und codeBuild meiner Bereitstellung zu automatisieren. Mein Backend basiert auf Serverless Framework, die Lambda-Funktionen beim Auslösen des Befehls sls deploy
bereitstellt. Aus diesem Grund habe ich codeDeploy nicht verwendet, um die traditionelle Bereitstellung durchzuführen. buildspec.yml
Datei sieht wie folgt aus:
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
Jetzt habe ich 3 Fragen in Bezug auf CodeBuild und Serverless:
Frage 1: Der Befehl sls deploy
auf eine Datei hängt genannt config.yml
Das enthält Geheimnisse wie db password. Diese Datei wird nicht in git eingecheckt. Was denkst du, ist die beste Möglichkeit, config.yml
in codeBuild einzuschließen?
Frage 2:Rollbacks können mit AWS durchgeführt werden, wenn wir traditionelle EC2-Anwendungen mit codeDeploy bereitstellen müssen. Im Falle von Serverless verwenden wir nicht codeDeploy und Serverless unterstützt auch Rollback Funktionen. Wie nutzen wir Serverless Rollback innerhalb der codePipeline?
Frage 3: Auslösen von CodePipeline, wenn ein Pull Request passiert. Ich habe einige Posts gesehen, die sagen, dass es von codePipeline nicht unterstützt wird. Aber diese Posts waren vom letzten Jahr, wird Pull Request jetzt von codePipeline unterstützt?
Hack Antworten (nicht richtig, aber Werke von Ihnen bessere Antworten benötigen..)
Antwort 1: Die config.yml
Datei kann in einem privaten S3 Eimer gespeichert und kann zu codeBuild gezogen werden als Teil von pre-build
Setup oder Wir können alle Geheimnisse zu CodeBuilds Env-Variablen hinzufügen. Ich mag die zweite Option nicht, da ich in allen Umgebungen konsistent sein möchte. Gibt es bessere Lösungen für dieses Problem?
Antwort 2: Ich kann nicht an einen Hack für diesen denken. Suchen Sie nach Antworten von Ihnen.
Antwort 3: ich auf einige Blog-Beiträge kamen die [APIGateway + Lambda + S3] verwenden codePipeline für Pull-Anforderungen auszulösen. Aber ich fühle, dass diese Funktion als eine Out-of-Box bereitgestellt werden muss. Gibt es Updates für die codePipeline für diese Funktion?
Wunderbare Antwort !! Deine Antwort macht völlig Sinn. Nur neugierig, wie verwalten Sie die Umgebungen (Geheimnisse) über verschiedene Branchen (prod, dev & stg). Ich verwende eine explizite '.env' Datei für jede Umgebung wie' .env.prod', '.env.dev' und' .env.stg'. All diese werden nicht in den Git überprüft. –
Meine Geheimnisse sind alle im EC2 Parameter Store gespeichert. Mein Entwickler, die Bereitstellung und die Produktion verwenden separate AWS-Konten. Also kann ich problemlos die gleichen Variablennamen verwenden, ohne mich um Konflikte kümmern zu müssen. – dashmug
Ah schön !! Aber wie schaffen Sie es in der lokalen Umgebung? Wie es sein wird, werden dieselben Variablen aber unterschiedliche Werte sein. Kontrollieren Sie auch die env-Datei? Wenn ja, macht das Sinn. Ich denke, es ist gut für private Repos. –