Bon travail. @naokiur. Nous sommes impatients de travailler avec vous en 2020 et cette année également.
Après avoir connu AWS CDK "Comment créez-vous cela avec un AWS CDK ...?" Je pense souvent comme ça.
Cette fois, un simple environnement CI / CD Construit avec AWS CDK (Java).
Obtenez la source, Conversion ZIP, il suffit de stocker dans S3, Parce que j'utilise Github pour les affaires Pas CodeCommit J'ai fait de Github la source.
Pour créer CodePipeline De manière générale, j'ai pu le construire en créant ce qui suit.
Littéralement, c'est une classe qui représente CodePipeline.
build ()
cette classe
Par cdk deploy
J'ai pu créer un pipeline de code sur AWS.
final Pipeline saveToS3Pipeline = Pipeline.Builder
.create(this, "saveSourceToS3")
.pipelineName("saveSourceToS3")
.stages(new ArrayList<>(Arrays.asList(source, build, deploy)))
.build();
Pas limité à cela
Pour générer des ressources AWS
hoge.Builder.create (classe Stack, id). ~ Omis ~ .build ()
Il semble qu'il puisse être construit avec
Je pense que c'est facile à comprendre.
CodePipeline nécessite au moins deux Stage
s, donc
Vous devez spécifier une liste avec au moins deux éléments dans stages ()
.
Si non spécifié, une erreur s'est produite.
Il s'agit de la classe Stage à définir dans CodePipeline. Cette fois (bien qu'il n'y ait pas beaucoup de contenu) Vous avez créé les trois étapes: source, construction et déploiement.
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();
Il n'est pas écrit comme hoge.Builder.create (Stack class, id). ~ Omis ~ .build ()
.
Stage n'est pas un service AWS, mais un élément de CodePipeline,
En effet, il n'apparaît pas comme une «ressource» dans la pile CloudFormation.
(* Ceci est une opinion individuelle)
Il semble que Stage puisse avoir plusieurs actions.
Une classe d'action à exécuter dans l'étape. Créez des actions pour chaque étape. Cette fois (car il n'y a pas beaucoup de contenu) Un pour chaque étape.
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();
Dans le package codepipeline.actions
,
Puisqu'il y a une classe selon l'action à exécuter
Générez la classe requise.
(Actuellement, cela ne semble pas être tout ce que CodePipeline peut faire ...)
Action d'utiliser Github comme source. C'est facile à comprendre. Configurez un référentiel ou une branche.
Vous pouvez également spécifier un OAuthToken auquel vous connecter Utilisez la classe SecretValue.
Cette classe sert à obtenir des informations secrètes. Obtenir des informations de Secret dans le magasin de paramètres System Manager Il semble que vous puissiez obtenir des informations auprès de Secret Manager.
Cette fois, définissez à l'avance le jeton Github dans Secret Manager, J'ai essayé de l'obtenir.
final SecretsManagerSecretOptions secretOptions = SecretsManagerSecretOptions.builder()
.jsonField("github-token")
.build();
final SecretValue githubToken = SecretValue.secretsManager(
"naokiur-secret",
secretOptions
);
Une classe qui génère CodeBuild pour CodePipeline. Cette fois, j'ai créé buildspec.yml dans le référentiel.
Une classe pour le déploiement sur S3.
Je suis sorti dans la classe Action Aussi un CodePipeline, Cette classe est spécifiée pour les entrées / sorties de chaque action. Maintenant, vous avez l'image de la remise.
Créez les deux Spécifié pour l'entrée / la sortie de chaque action.
final Artifact sourceArtifact = Artifact.artifact("Source");
final Artifact buildArtifact = Artifact.artifact("Build");
Vous avez maintenant une version complète! !!
final SecretValue githubToken = SecretValue.secretsManager("naokiur-secret");
cdk synthesize
, une commande qui peut générer des fichiers CloudFormation, les éléments pertinents étaient les suivants.
* SecretToken: "{{resolve:secretsmanager:naokiur-secret:SecretString:::}}"
Recommended Posts