diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:26:13 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-05 04:26:13 +0000 |
| commit | 51f073d7fde8300cd22bac7c76474ad988f77a5a (patch) | |
| tree | 102d6734d92704cc7e361a62f113747bc2f83e4a | |
| parent | 77ad07497b5f70ed31a99bcddada149b7beb04a8 (diff) | |
automatic import of python-cloudcomponents-cdk-blue-green-container-deploymentopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-cloudcomponents-cdk-blue-green-container-deployment.spec | 655 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 657 insertions, 0 deletions
@@ -0,0 +1 @@ +/cloudcomponents.cdk-blue-green-container-deployment-2.1.0.tar.gz diff --git a/python-cloudcomponents-cdk-blue-green-container-deployment.spec b/python-cloudcomponents-cdk-blue-green-container-deployment.spec new file mode 100644 index 0000000..b01b8be --- /dev/null +++ b/python-cloudcomponents-cdk-blue-green-container-deployment.spec @@ -0,0 +1,655 @@ +%global _empty_manifest_terminate_build 0 +Name: python-cloudcomponents.cdk-blue-green-container-deployment +Version: 2.1.0 +Release: 1 +Summary: Blue green container deployment with CodeDeploy +License: MIT +URL: https://github.com/cloudcomponents/cdk-constructs +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/84/9e/03a1188f2d07a5e4c073efe812b75054b0eecd6e983a3f538fc7b6adbce1/cloudcomponents.cdk-blue-green-container-deployment-2.1.0.tar.gz +BuildArch: noarch + +Requires: python3-aws-cdk-lib +Requires: python3-constructs +Requires: python3-jsii +Requires: python3-publication + +%description +[](https://github.com/cloudcomponents/cdk-constructs) + +# @cloudcomponents/cdk-blue-green-container-deployment + +[](https://github.com/cloudcomponents/cdk-constructs/actions?query=workflow=Build) +[](https://github.com/hupe1980/cdkdx) +[](https://www.npmjs.com/package/@cloudcomponents/cdk-blue-green-container-deployment) +[](https://pypi.org/project/cloudcomponents.cdk-blue-green-container-deployment/) +[](https://github.com/kolomied/awesome-cdk) + +> Blue green container deployment with CodeDeploy + +## Install + +TypeScript/JavaScript: + +```bash +npm i @cloudcomponents/cdk-blue-green-container-deployment +``` + +Python: + +```bash +pip install cloudcomponents.cdk-blue-green-container-deployment +``` + +## How to use + +```python +import { EcsService, DummyTaskDefinition, EcsDeploymentGroup, PushImageProject } from '@cloudcomponents/cdk-blue-green-container-deployment'; +import { ImageRepository } from '@cloudcomponents/cdk-container-registry'; +import { Duration, Stack, StackProps } from 'aws-cdk-lib'; +import { Repository } from 'aws-cdk-lib/aws-codecommit'; +import { Pipeline, Artifact } from 'aws-cdk-lib/aws-codepipeline'; +import { CodeBuildAction, CodeCommitSourceAction, CodeDeployEcsDeployAction } from 'aws-cdk-lib/aws-codepipeline-actions'; +import { Vpc, Port } from 'aws-cdk-lib/aws-ec2'; +import { Cluster } from 'aws-cdk-lib/aws-ecs'; +import { ApplicationLoadBalancer, ApplicationTargetGroup, TargetType } from 'aws-cdk-lib/aws-elasticloadbalancingv2'; +import { Construct } from 'constructs'; + +export class BlueGreenContainerDeploymentStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + + const vpc = new Vpc(this, 'Vpc', { + maxAzs: 2, + }); + + const cluster = new Cluster(this, 'Cluster', { + vpc, + clusterName: 'blue-green-cluster', + }); + + const loadBalancer = new ApplicationLoadBalancer(this, 'LoadBalancer', { + vpc, + internetFacing: true, + }); + + const prodListener = loadBalancer.addListener('ProfListener', { + port: 80, + }); + + const testListener = loadBalancer.addListener('TestListener', { + port: 8080, + }); + + const prodTargetGroup = new ApplicationTargetGroup(this, 'ProdTargetGroup', { + port: 80, + targetType: TargetType.IP, + vpc, + }); + + prodListener.addTargetGroups('AddProdTg', { + targetGroups: [prodTargetGroup], + }); + + const testTargetGroup = new ApplicationTargetGroup(this, 'TestTargetGroup', { + port: 8080, + targetType: TargetType.IP, + vpc, + }); + + testListener.addTargetGroups('AddTestTg', { + targetGroups: [testTargetGroup], + }); + + // Will be replaced by CodeDeploy in CodePipeline + const taskDefinition = new DummyTaskDefinition(this, 'DummyTaskDefinition', { + image: 'nginx', + family: 'blue-green', + }); + + const ecsService = new EcsService(this, 'EcsService', { + cluster, + serviceName: 'blue-green-service', + desiredCount: 2, + taskDefinition, + prodTargetGroup, + testTargetGroup, + }); + + ecsService.connections.allowFrom(loadBalancer, Port.tcp(80)); + ecsService.connections.allowFrom(loadBalancer, Port.tcp(8080)); + + const deploymentGroup = new EcsDeploymentGroup(this, 'DeploymentGroup', { + applicationName: 'blue-green-application', + deploymentGroupName: 'blue-green-deployment-group', + ecsServices: [ecsService], + targetGroups: [prodTargetGroup, testTargetGroup], + prodTrafficListener: prodListener, + testTrafficListener: testListener, + terminationWaitTime: Duration.minutes(100), + }); + + // @see files: ./blue-green-repository for example content + const repository = new Repository(this, 'CodeRepository', { + repositoryName: 'blue-green-repository', + }); + + const imageRepository = new ImageRepository(this, 'ImageRepository', { + forceDelete: true, //Only for tests + }); + + const sourceArtifact = new Artifact(); + + const sourceAction = new CodeCommitSourceAction({ + actionName: 'CodeCommit', + repository, + output: sourceArtifact, + }); + + const imageArtifact = new Artifact('ImageArtifact'); + const manifestArtifact = new Artifact('ManifestArtifact'); + + const pushImageProject = new PushImageProject(this, 'PushImageProject', { + imageRepository, + taskDefinition, + }); + + const buildAction = new CodeBuildAction({ + actionName: 'PushImage', + project: pushImageProject, + input: sourceArtifact, + outputs: [imageArtifact, manifestArtifact], + }); + + const deployAction = new CodeDeployEcsDeployAction({ + actionName: 'CodeDeploy', + taskDefinitionTemplateInput: manifestArtifact, + appSpecTemplateInput: manifestArtifact, + containerImageInputs: [ + { + input: imageArtifact, + taskDefinitionPlaceholder: 'IMAGE1_NAME', + }, + ], + deploymentGroup, + }); + + new Pipeline(this, 'Pipeline', { + pipelineName: 'blue-green-pipeline', + stages: [ + { + stageName: 'Source', + actions: [sourceAction], + }, + { + stageName: 'Build', + actions: [buildAction], + }, + { + stageName: 'Deploy', + actions: [deployAction], + }, + ], + }); + } +} +``` + +## API Reference + +See [API.md](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment/API.md). + +## Example + +See more complete [examples](https://github.com/cloudcomponents/cdk-constructs/tree/master/examples). + +## License + +[MIT](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment//LICENSE) + + + + +%package -n python3-cloudcomponents.cdk-blue-green-container-deployment +Summary: Blue green container deployment with CodeDeploy +Provides: python-cloudcomponents.cdk-blue-green-container-deployment +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-cloudcomponents.cdk-blue-green-container-deployment +[](https://github.com/cloudcomponents/cdk-constructs) + +# @cloudcomponents/cdk-blue-green-container-deployment + +[](https://github.com/cloudcomponents/cdk-constructs/actions?query=workflow=Build) +[](https://github.com/hupe1980/cdkdx) +[](https://www.npmjs.com/package/@cloudcomponents/cdk-blue-green-container-deployment) +[](https://pypi.org/project/cloudcomponents.cdk-blue-green-container-deployment/) +[](https://github.com/kolomied/awesome-cdk) + +> Blue green container deployment with CodeDeploy + +## Install + +TypeScript/JavaScript: + +```bash +npm i @cloudcomponents/cdk-blue-green-container-deployment +``` + +Python: + +```bash +pip install cloudcomponents.cdk-blue-green-container-deployment +``` + +## How to use + +```python +import { EcsService, DummyTaskDefinition, EcsDeploymentGroup, PushImageProject } from '@cloudcomponents/cdk-blue-green-container-deployment'; +import { ImageRepository } from '@cloudcomponents/cdk-container-registry'; +import { Duration, Stack, StackProps } from 'aws-cdk-lib'; +import { Repository } from 'aws-cdk-lib/aws-codecommit'; +import { Pipeline, Artifact } from 'aws-cdk-lib/aws-codepipeline'; +import { CodeBuildAction, CodeCommitSourceAction, CodeDeployEcsDeployAction } from 'aws-cdk-lib/aws-codepipeline-actions'; +import { Vpc, Port } from 'aws-cdk-lib/aws-ec2'; +import { Cluster } from 'aws-cdk-lib/aws-ecs'; +import { ApplicationLoadBalancer, ApplicationTargetGroup, TargetType } from 'aws-cdk-lib/aws-elasticloadbalancingv2'; +import { Construct } from 'constructs'; + +export class BlueGreenContainerDeploymentStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + + const vpc = new Vpc(this, 'Vpc', { + maxAzs: 2, + }); + + const cluster = new Cluster(this, 'Cluster', { + vpc, + clusterName: 'blue-green-cluster', + }); + + const loadBalancer = new ApplicationLoadBalancer(this, 'LoadBalancer', { + vpc, + internetFacing: true, + }); + + const prodListener = loadBalancer.addListener('ProfListener', { + port: 80, + }); + + const testListener = loadBalancer.addListener('TestListener', { + port: 8080, + }); + + const prodTargetGroup = new ApplicationTargetGroup(this, 'ProdTargetGroup', { + port: 80, + targetType: TargetType.IP, + vpc, + }); + + prodListener.addTargetGroups('AddProdTg', { + targetGroups: [prodTargetGroup], + }); + + const testTargetGroup = new ApplicationTargetGroup(this, 'TestTargetGroup', { + port: 8080, + targetType: TargetType.IP, + vpc, + }); + + testListener.addTargetGroups('AddTestTg', { + targetGroups: [testTargetGroup], + }); + + // Will be replaced by CodeDeploy in CodePipeline + const taskDefinition = new DummyTaskDefinition(this, 'DummyTaskDefinition', { + image: 'nginx', + family: 'blue-green', + }); + + const ecsService = new EcsService(this, 'EcsService', { + cluster, + serviceName: 'blue-green-service', + desiredCount: 2, + taskDefinition, + prodTargetGroup, + testTargetGroup, + }); + + ecsService.connections.allowFrom(loadBalancer, Port.tcp(80)); + ecsService.connections.allowFrom(loadBalancer, Port.tcp(8080)); + + const deploymentGroup = new EcsDeploymentGroup(this, 'DeploymentGroup', { + applicationName: 'blue-green-application', + deploymentGroupName: 'blue-green-deployment-group', + ecsServices: [ecsService], + targetGroups: [prodTargetGroup, testTargetGroup], + prodTrafficListener: prodListener, + testTrafficListener: testListener, + terminationWaitTime: Duration.minutes(100), + }); + + // @see files: ./blue-green-repository for example content + const repository = new Repository(this, 'CodeRepository', { + repositoryName: 'blue-green-repository', + }); + + const imageRepository = new ImageRepository(this, 'ImageRepository', { + forceDelete: true, //Only for tests + }); + + const sourceArtifact = new Artifact(); + + const sourceAction = new CodeCommitSourceAction({ + actionName: 'CodeCommit', + repository, + output: sourceArtifact, + }); + + const imageArtifact = new Artifact('ImageArtifact'); + const manifestArtifact = new Artifact('ManifestArtifact'); + + const pushImageProject = new PushImageProject(this, 'PushImageProject', { + imageRepository, + taskDefinition, + }); + + const buildAction = new CodeBuildAction({ + actionName: 'PushImage', + project: pushImageProject, + input: sourceArtifact, + outputs: [imageArtifact, manifestArtifact], + }); + + const deployAction = new CodeDeployEcsDeployAction({ + actionName: 'CodeDeploy', + taskDefinitionTemplateInput: manifestArtifact, + appSpecTemplateInput: manifestArtifact, + containerImageInputs: [ + { + input: imageArtifact, + taskDefinitionPlaceholder: 'IMAGE1_NAME', + }, + ], + deploymentGroup, + }); + + new Pipeline(this, 'Pipeline', { + pipelineName: 'blue-green-pipeline', + stages: [ + { + stageName: 'Source', + actions: [sourceAction], + }, + { + stageName: 'Build', + actions: [buildAction], + }, + { + stageName: 'Deploy', + actions: [deployAction], + }, + ], + }); + } +} +``` + +## API Reference + +See [API.md](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment/API.md). + +## Example + +See more complete [examples](https://github.com/cloudcomponents/cdk-constructs/tree/master/examples). + +## License + +[MIT](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment//LICENSE) + + + + +%package help +Summary: Development documents and examples for cloudcomponents.cdk-blue-green-container-deployment +Provides: python3-cloudcomponents.cdk-blue-green-container-deployment-doc +%description help +[](https://github.com/cloudcomponents/cdk-constructs) + +# @cloudcomponents/cdk-blue-green-container-deployment + +[](https://github.com/cloudcomponents/cdk-constructs/actions?query=workflow=Build) +[](https://github.com/hupe1980/cdkdx) +[](https://www.npmjs.com/package/@cloudcomponents/cdk-blue-green-container-deployment) +[](https://pypi.org/project/cloudcomponents.cdk-blue-green-container-deployment/) +[](https://github.com/kolomied/awesome-cdk) + +> Blue green container deployment with CodeDeploy + +## Install + +TypeScript/JavaScript: + +```bash +npm i @cloudcomponents/cdk-blue-green-container-deployment +``` + +Python: + +```bash +pip install cloudcomponents.cdk-blue-green-container-deployment +``` + +## How to use + +```python +import { EcsService, DummyTaskDefinition, EcsDeploymentGroup, PushImageProject } from '@cloudcomponents/cdk-blue-green-container-deployment'; +import { ImageRepository } from '@cloudcomponents/cdk-container-registry'; +import { Duration, Stack, StackProps } from 'aws-cdk-lib'; +import { Repository } from 'aws-cdk-lib/aws-codecommit'; +import { Pipeline, Artifact } from 'aws-cdk-lib/aws-codepipeline'; +import { CodeBuildAction, CodeCommitSourceAction, CodeDeployEcsDeployAction } from 'aws-cdk-lib/aws-codepipeline-actions'; +import { Vpc, Port } from 'aws-cdk-lib/aws-ec2'; +import { Cluster } from 'aws-cdk-lib/aws-ecs'; +import { ApplicationLoadBalancer, ApplicationTargetGroup, TargetType } from 'aws-cdk-lib/aws-elasticloadbalancingv2'; +import { Construct } from 'constructs'; + +export class BlueGreenContainerDeploymentStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps) { + super(scope, id, props); + + const vpc = new Vpc(this, 'Vpc', { + maxAzs: 2, + }); + + const cluster = new Cluster(this, 'Cluster', { + vpc, + clusterName: 'blue-green-cluster', + }); + + const loadBalancer = new ApplicationLoadBalancer(this, 'LoadBalancer', { + vpc, + internetFacing: true, + }); + + const prodListener = loadBalancer.addListener('ProfListener', { + port: 80, + }); + + const testListener = loadBalancer.addListener('TestListener', { + port: 8080, + }); + + const prodTargetGroup = new ApplicationTargetGroup(this, 'ProdTargetGroup', { + port: 80, + targetType: TargetType.IP, + vpc, + }); + + prodListener.addTargetGroups('AddProdTg', { + targetGroups: [prodTargetGroup], + }); + + const testTargetGroup = new ApplicationTargetGroup(this, 'TestTargetGroup', { + port: 8080, + targetType: TargetType.IP, + vpc, + }); + + testListener.addTargetGroups('AddTestTg', { + targetGroups: [testTargetGroup], + }); + + // Will be replaced by CodeDeploy in CodePipeline + const taskDefinition = new DummyTaskDefinition(this, 'DummyTaskDefinition', { + image: 'nginx', + family: 'blue-green', + }); + + const ecsService = new EcsService(this, 'EcsService', { + cluster, + serviceName: 'blue-green-service', + desiredCount: 2, + taskDefinition, + prodTargetGroup, + testTargetGroup, + }); + + ecsService.connections.allowFrom(loadBalancer, Port.tcp(80)); + ecsService.connections.allowFrom(loadBalancer, Port.tcp(8080)); + + const deploymentGroup = new EcsDeploymentGroup(this, 'DeploymentGroup', { + applicationName: 'blue-green-application', + deploymentGroupName: 'blue-green-deployment-group', + ecsServices: [ecsService], + targetGroups: [prodTargetGroup, testTargetGroup], + prodTrafficListener: prodListener, + testTrafficListener: testListener, + terminationWaitTime: Duration.minutes(100), + }); + + // @see files: ./blue-green-repository for example content + const repository = new Repository(this, 'CodeRepository', { + repositoryName: 'blue-green-repository', + }); + + const imageRepository = new ImageRepository(this, 'ImageRepository', { + forceDelete: true, //Only for tests + }); + + const sourceArtifact = new Artifact(); + + const sourceAction = new CodeCommitSourceAction({ + actionName: 'CodeCommit', + repository, + output: sourceArtifact, + }); + + const imageArtifact = new Artifact('ImageArtifact'); + const manifestArtifact = new Artifact('ManifestArtifact'); + + const pushImageProject = new PushImageProject(this, 'PushImageProject', { + imageRepository, + taskDefinition, + }); + + const buildAction = new CodeBuildAction({ + actionName: 'PushImage', + project: pushImageProject, + input: sourceArtifact, + outputs: [imageArtifact, manifestArtifact], + }); + + const deployAction = new CodeDeployEcsDeployAction({ + actionName: 'CodeDeploy', + taskDefinitionTemplateInput: manifestArtifact, + appSpecTemplateInput: manifestArtifact, + containerImageInputs: [ + { + input: imageArtifact, + taskDefinitionPlaceholder: 'IMAGE1_NAME', + }, + ], + deploymentGroup, + }); + + new Pipeline(this, 'Pipeline', { + pipelineName: 'blue-green-pipeline', + stages: [ + { + stageName: 'Source', + actions: [sourceAction], + }, + { + stageName: 'Build', + actions: [buildAction], + }, + { + stageName: 'Deploy', + actions: [deployAction], + }, + ], + }); + } +} +``` + +## API Reference + +See [API.md](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment/API.md). + +## Example + +See more complete [examples](https://github.com/cloudcomponents/cdk-constructs/tree/master/examples). + +## License + +[MIT](https://github.com/cloudcomponents/cdk-constructs/tree/master/packages/cdk-blue-green-container-deployment//LICENSE) + + + + +%prep +%autosetup -n cloudcomponents.cdk-blue-green-container-deployment-2.1.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-cloudcomponents.cdk-blue-green-container-deployment -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 2.1.0-1 +- Package Spec generated @@ -0,0 +1 @@ +cfccb52f7af1dc040efebb36677992ea cloudcomponents.cdk-blue-green-container-deployment-2.1.0.tar.gz |
