Gute Arbeit. @naokiur. Wir freuen uns darauf, 2020 und auch in diesem Jahr mit Ihnen zusammenzuarbeiten.
Nach Kenntnis von AWS CDK "Wie erstellt man das mit einem AWS CDK ...?" Ich denke oft so.
Diesmal eine einfache CI / CD-Umgebung Erstellt mit AWS CDK (Java).
Holen Sie sich die Quelle, ZIP-Konvertierung, einfach in S3 speichern, Weil ich Github geschäftlich benutze Nicht CodeCommit Ich habe Github zur Quelle gemacht.
So erstellen Sie CodePipeline Im Großen und Ganzen konnte ich es bauen, indem ich Folgendes erstellte.
Es ist buchstäblich eine Klasse, die CodePipeline darstellt.
build ()
diese Klasse
Mit cdk deploy
Ich konnte eine Code-Pipeline auf AWS erstellen.
final Pipeline saveToS3Pipeline = Pipeline.Builder
.create(this, "saveSourceToS3")
.pipelineName("saveSourceToS3")
.stages(new ArrayList<>(Arrays.asList(source, build, deploy)))
.build();
Um AWS-Ressourcen zu generieren, scheint es oft möglich zu sein, mit hoge.Builder.create (Stapelklasse, ID) zu erstellen. ~ Ausgelassen ~ .build ()
, daher halte ich es für leicht verständlich. Ich werde. CodePipeline erfordert mindestens zwei "Stufen", daher müssen Sie eine Liste mit mindestens zwei Elementen in "Stufen ()" angeben.
Wenn nicht angegeben, ist ein Fehler aufgetreten.
Dies ist die Stage-Klasse, die in CodePipeline festgelegt werden soll. Diesmal (obwohl es nicht viel Inhalt gibt) Sie haben alle drei Phasen erstellt: Quelle, Erstellen und Bereitstellen.
final StageProps source = StageProps.builder()
.stageName("DownloadSourceFromGithub")
.actions(new ArrayList<>(Arrays.asList(github)))
.build();
final StageProps build = StageProps.builder()
.stageName("BuildSource")
.actions(new ArrayList<>(Arrays.asList(codeBuild)))
.build();
final StageProps deploy = StageProps.builder()
.stageName("SaveSourceToS3")
.actions(new ArrayList<>(Arrays.asList(s3)))
.build();
Es ist nicht als hoge.Builder.create (Stapelklasse, ID) geschrieben. ~ Ausgelassen ~ .build ()
.
Stage ist kein AWS-Service, sondern ein Element von CodePipeline.
Dies liegt daran, dass es nicht als "Ressource" im CloudFormation-Stapel angezeigt wird.
(* Dies ist eine individuelle Meinung)
Es scheint, dass Stage mehrere Aktionen haben kann.
Eine Aktionsklasse, die in Stage ausgeführt werden soll. Erstellen Sie Aktionen für jede Stufe. Diesmal (weil es nicht viel Inhalt gibt) Eine für jede Stufe.
final Action github = GitHubSourceAction.Builder
.create()
.actionName("DownloadFromGithub")
.oauthToken(githubToken)
.branch(branchName)
.repo(repoName)
.owner(ownerName)
.output(sourceArtifact)
.build();
final Action codeBuild = CodeBuildAction.Builder
.create()
.actionName("BuildSource")
.project(codeBuildProject)
.input(sourceArtifact)
.outputs(new ArrayList<>(Arrays.asList(buildArtifact)))
.build();
final Action s3 = S3DeployAction.Builder
.create()
.bucket(deployBucket)
.actionName("DeploySourceToS3")
.input(buildArtifact)
.build();
Im Paket codepipeline.actions
Da es eine Klasse gemäß der auszuführenden Aktion gibt,
Generieren Sie die gewünschte Klasse.
(Derzeit scheint es nicht alles zu sein, was CodePipeline kann ...)
Aktion zur Verwendung von Github als Quelle. Es ist leicht zu verstehen. Richten Sie ein Repository oder einen Zweig ein.
Sie können auch ein OAuth-Token für die Verbindung angeben. Verwenden Sie die SecretValue-Klasse.
Diese Klasse dient dazu, geheime Informationen zu erhalten. Informationen von Secret im System Manager-Parameterspeicher abrufen Es scheint, dass Sie Informationen vom Secret Manager erhalten können.
Setzen Sie diesmal das Github-Token im Voraus in Secret Manager. Ich habe versucht, es zu bekommen.
final SecretsManagerSecretOptions secretOptions = SecretsManagerSecretOptions.builder()
.jsonField("github-token")
.build();
final SecretValue githubToken = SecretValue.secretsManager(
"naokiur-secret",
secretOptions
);
Eine Klasse, die CodeBuild für CodePipeline erstellt. Dieses Mal habe ich buildspec.yml im Repository erstellt.
Eine Klasse für die Bereitstellung in S3.
Ich bin in der Action-Klasse herausgekommen Auch eine CodePipeline, Diese Klasse wird für die Eingabe / Ausgabe jeder Aktion angegeben. Jetzt haben Sie das Bild der Übergabe.
Erstellen Sie die folgenden zwei Spezifiziert für die Eingabe / Ausgabe jeder Aktion.
final Artifact sourceArtifact = Artifact.artifact("Source");
final Artifact buildArtifact = Artifact.artifact("Build");
Jetzt hast du einen kompletten Build! !!
final SecretValue githubToken = SecretValue.secretsManager("naokiur-secret");
SecretToken: "{{resolve:secretsmanager:naokiur-secret:SecretString:::}}"