@aws-cdk-testing/cli-integ 3.5.0 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -39
- package/lib/aws.js +20 -9
- package/lib/cli/query-github.js +2 -3
- package/lib/cli/run-suite.js +123 -52
- package/lib/cli/stage-distribution.js +4 -4
- package/lib/corking.js +2 -5
- package/lib/eventually.js +3 -3
- package/lib/files.js +2 -3
- package/lib/github.js +5 -6
- package/lib/integ-test.js +58 -3
- package/lib/npm.d.ts +2 -0
- package/lib/npm.js +30 -1
- package/lib/package-sources/cli-npm-source.d.ts +14 -0
- package/lib/package-sources/cli-npm-source.js +50 -0
- package/lib/package-sources/cli-repo-source.d.ts +19 -0
- package/lib/package-sources/cli-repo-source.js +49 -0
- package/lib/package-sources/find-root.d.ts +6 -0
- package/lib/package-sources/find-root.js +18 -0
- package/lib/package-sources/library-globalinstall-source.d.ts +20 -0
- package/lib/package-sources/library-globalinstall-source.js +70 -0
- package/lib/package-sources/library-npm-source.d.ts +17 -0
- package/lib/package-sources/library-npm-source.js +60 -0
- package/lib/package-sources/library-preinstalled-source.d.ts +21 -0
- package/lib/package-sources/library-preinstalled-source.js +78 -0
- package/lib/package-sources/repo-tools/npm.js +4 -5
- package/lib/package-sources/source.d.ts +36 -18
- package/lib/package-sources/source.js +1 -1
- package/lib/package-sources/subprocess.d.ts +10 -3
- package/lib/package-sources/subprocess.js +31 -12
- package/lib/process.js +7 -6
- package/lib/proxy.d.ts +1 -1
- package/lib/proxy.js +2 -2
- package/lib/resource-pool.js +10 -6
- package/lib/shell.d.ts +3 -3
- package/lib/shell.js +12 -16
- package/lib/staging/codeartifact.js +17 -18
- package/lib/staging/maven.d.ts +2 -2
- package/lib/staging/maven.js +3 -5
- package/lib/staging/npm.d.ts +2 -2
- package/lib/staging/npm.js +1 -1
- package/lib/staging/nuget.d.ts +2 -2
- package/lib/staging/nuget.js +1 -1
- package/lib/staging/parallel-shell.js +2 -2
- package/lib/staging/pypi.d.ts +2 -2
- package/lib/staging/pypi.js +1 -1
- package/lib/staging/usage-dir.js +4 -1
- package/lib/with-aws.d.ts +2 -2
- package/lib/with-aws.js +5 -4
- package/lib/with-cdk-app.d.ts +9 -6
- package/lib/with-cdk-app.js +48 -61
- package/lib/with-cli-lib.d.ts +4 -3
- package/lib/with-cli-lib.js +5 -8
- package/lib/with-packages.d.ts +3 -2
- package/lib/with-packages.js +3 -2
- package/lib/with-sam.d.ts +3 -3
- package/lib/with-sam.js +15 -33
- package/lib/with-temporary-directory.d.ts +1 -1
- package/lib/with-temporary-directory.js +1 -1
- package/lib/xpmutex.js +11 -4
- package/lib/yarn.d.ts +6 -0
- package/lib/yarn.js +31 -0
- package/npm-shrinkwrap.json +8724 -0
- package/package.json +16 -11
- package/resources/cdk-apps/refactoring/cdk.json +7 -0
- package/resources/cdk-apps/refactoring/refactoring.js +18 -0
- package/resources/integ.jest.config.js +45 -8
- package/test-reports/junit.xml +15 -0
- package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.js +12 -12
- package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.js +10 -10
- package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.js +5 -7
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.js +5 -6
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-diff.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-ls.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-cdk-synth.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-context-setting.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-all.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-deploy.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.js +6 -7
- package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-fast-deploy.integtest.js +5 -6
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.js +3 -3
- package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.js +7 -6
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.js +4 -5
- package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.js +6 -7
- package/tests/cli-integ-tests/cdk-iam-diff.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-import-interactive.integtest.js +5 -6
- package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.js +2 -3
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-migrate/testcase.d.ts +1 -1
- package/tests/cli-integ-tests/cdk-migrate/testcase.js +4 -6
- package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-refactor-dry-run.integtest.js +41 -0
- package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.js +3 -4
- package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.js +6 -7
- package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-termination-protection.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.js +5 -5
- package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-test-resource-import.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.js +2 -2
- package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.js +6 -7
- package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.js +2 -2
- package/tests/cli-integ-tests/proxy.integtest.js +2 -3
- package/tests/init-csharp/init-csharp.integtest.js +4 -4
- package/tests/init-fsharp/init-fsharp.integtest.js +4 -4
- package/tests/init-go/init-go.integtest.js +4 -5
- package/tests/init-java/init-java.integtest.js +3 -3
- package/tests/init-javascript/init-javascript.integtest.js +3 -3
- package/tests/init-python/init-python.integtest.js +3 -3
- package/tests/init-typescript-app/init-typescript-app.integtest.js +3 -3
- package/tests/init-typescript-lib/init-typescript-lib.integtest.js +2 -2
- package/tests/tool-integrations/amplify.integtest.js +6 -6
- package/tests/tool-integrations/with-tool-context.d.ts +5 -5
- package/tests/tool-integrations/with-tool-context.js +1 -1
- package/tests/toolkit-lib-integ-tests/toolkit-can-cdk-deploy.integtest.d.ts +1 -0
- package/tests/toolkit-lib-integ-tests/toolkit-can-cdk-deploy.integtest.js +17 -0
- package/tests/toolkit-lib-integ-tests/toolkit-helpers.d.ts +15 -0
- package/tests/toolkit-lib-integ-tests/toolkit-helpers.js +45 -0
- package/tests/uberpackage/uberpackage.integtest.js +2 -2
- package/.eslintrc.js +0 -9
- package/lib/aws.ts +0 -303
- package/lib/cli/query-github.ts +0 -56
- package/lib/cli/run-suite.ts +0 -153
- package/lib/cli/stage-distribution.ts +0 -262
- package/lib/cli/test-root.ts +0 -3
- package/lib/corking.ts +0 -33
- package/lib/eventually.ts +0 -42
- package/lib/files.ts +0 -80
- package/lib/github.ts +0 -43
- package/lib/index.ts +0 -13
- package/lib/integ-test.ts +0 -110
- package/lib/lists.ts +0 -9
- package/lib/memoize.ts +0 -14
- package/lib/npm.ts +0 -41
- package/lib/package-sources/release-source.d.ts +0 -23
- package/lib/package-sources/release-source.js +0 -71
- package/lib/package-sources/release-source.ts +0 -82
- package/lib/package-sources/repo-source.d.ts +0 -30
- package/lib/package-sources/repo-source.js +0 -97
- package/lib/package-sources/repo-source.ts +0 -112
- package/lib/package-sources/repo-tools/npm.ts +0 -48
- package/lib/package-sources/source.ts +0 -35
- package/lib/package-sources/subprocess.ts +0 -15
- package/lib/process.ts +0 -154
- package/lib/proxy.ts +0 -64
- package/lib/resource-pool.ts +0 -140
- package/lib/resources.ts +0 -4
- package/lib/shell.ts +0 -331
- package/lib/staging/codeartifact.ts +0 -387
- package/lib/staging/maven.ts +0 -95
- package/lib/staging/npm.ts +0 -62
- package/lib/staging/nuget.ts +0 -75
- package/lib/staging/parallel-shell.ts +0 -51
- package/lib/staging/pypi.ts +0 -50
- package/lib/staging/usage-dir.ts +0 -99
- package/lib/with-aws.ts +0 -111
- package/lib/with-cdk-app.ts +0 -847
- package/lib/with-cli-lib.ts +0 -150
- package/lib/with-packages.ts +0 -15
- package/lib/with-sam.ts +0 -295
- package/lib/with-temporary-directory.ts +0 -35
- package/lib/with-timeout.ts +0 -33
- package/lib/xpmutex.ts +0 -218
- package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/nested-stack.js +0 -19
- package/resources/cli-regression-patches/v2.130.0/node_modules/@aws-cdk-testing/cli-integ/resources/cdk-apps/sam_cdk_integ_app/lib/test-stack.js +0 -134
- package/tests/cli-integ-tests/cdk---exclusively-selects-only-selected-stack.integtest.ts +0 -29
- package/tests/cli-integ-tests/cdk-assets/cdk-assets-uses-profile.integtest.ts +0 -92
- package/tests/cli-integ-tests/cdk-assets/smoketest.integtest.ts +0 -82
- package/tests/cli-integ-tests/cdk-automatic-ordering-with-concurrency.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-automatic-ordering.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and---no-rollback-is-removed-from-flags.integtest.ts +0 -40
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-paused-and-change-contains-a-replacement.integtest.ts +0 -40
- package/tests/cli-integ-tests/cdk-automatic-rollback-if-replacement-and---no-rollback-is-removed-from-flags.integtest.ts +0 -29
- package/tests/cli-integ-tests/cdk-bootstrap-a-customized-template-vendor-will-not-overwrite-the-default-template.integtest.ts +0 -42
- package/tests/cli-integ-tests/cdk-bootstrap-add-tags.integtest.ts +0 -26
- package/tests/cli-integ-tests/cdk-bootstrap-can-add-tags-then-update-tags-during-re-bootstrap.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-bootstrap-can-and-deploy-if-omitting-execution-policies.integtest.ts +0 -21
- package/tests/cli-integ-tests/cdk-bootstrap-can-bootstrap-without-execution.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-a-legacy-bootstrap-stack-with---public-access-block-configuration-false.integtest.ts +0 -21
- package/tests/cli-integ-tests/cdk-bootstrap-can-create-multiple-legacy-bootstrap-stacks.integtest.ts +0 -27
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-modern-synthesized-stack-even-if-bootstrap-stack-name-is-unknown.integtest.ts +0 -24
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-with-session-tags-on-the-deploy.integtest.ts +0 -25
- package/tests/cli-integ-tests/cdk-bootstrap-can-deploy-without-execution-role-and-with-session-tags-on-deploy-role.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-bootstrap-can-dump-the-template.integtest.ts +0 -32
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-custompermissionsboundary.integtest.ts +0 -77
- package/tests/cli-integ-tests/cdk-bootstrap-can-remove-trusted-account.integtest.ts +0 -30
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-(with-slashes)-to-bootstrap.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-custom-permissions-boundary-to-bootstrap.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-bootstrap-can-use-the-default-permissions-boundary-to-bootstrap.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-bootstrap-create-ecr-with-tag-immutability-to-set-on.integtest.ts +0 -34
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap-(with-docker-image).integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-new-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-bootstrap-deploy-old-style-synthesis-to-new-style-bootstrap.integtest.ts +0 -21
- package/tests/cli-integ-tests/cdk-bootstrap-switch-on-termination-protection.integtest.ts +0 -24
- package/tests/cli-integ-tests/cdk-bootstrap-upgrade-legacy-bootstrap-stack-to-new-bootstrap-stack-while-in-use.integtest.ts +0 -47
- package/tests/cli-integ-tests/cdk-can-still-load-old-assemblies.integtest.ts +0 -57
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-on-multiple-stacks-exits-with-error-if-any-of-the-stacks-contains-a-diff.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-cdk-diff---fail-with-multiple-stack-exits-with-if-any-of-the-stacks-contains-a-diff.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-cdk-diff---quiet-does-not-print-there-were-no-differences-message-for-stacks-which-have-no-differences.integtest.ts +0 -19
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-changes-are-present.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-access-control-config.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-assignment.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-with-managed-policy.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only---fail-exits-when-security-diff-for-sso-perm-set-without-managed-policy.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-access-control-information.integtest.ts +0 -35
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-assignment-information.integtest.ts +0 -37
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-with-managed-policy-information.integtest.ts +0 -35
- package/tests/cli-integ-tests/cdk-cdk-diff---security-only-successfully-outputs-sso-permission-set-without-managed-policy-information.integtest.ts +0 -37
- package/tests/cli-integ-tests/cdk-cdk-diff-doesnt-show-resource-metadata-changes.integtest.ts +0 -23
- package/tests/cli-integ-tests/cdk-cdk-diff-shows-resource-metadata-changes-with---no-change-set.integtest.ts +0 -23
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-and-custom-toolkit-stack-name-and-qualifier-does-not-fail.integtest.ts +0 -39
- package/tests/cli-integ-tests/cdk-cdk-diff-with-large-changeset-does-not-fail.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-cdk-diff.integtest.ts +0 -18
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json---long.integtest.ts +0 -50
- package/tests/cli-integ-tests/cdk-cdk-ls---show-dependencies---json.integtest.ts +0 -95
- package/tests/cli-integ-tests/cdk-cdk-ls.integtest.ts +0 -36
- package/tests/cli-integ-tests/cdk-cdk-notices-are-displayed-correctly.integtest.ts +0 -42
- package/tests/cli-integ-tests/cdk-cdk-notices-with---unacknowledged.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-cdk-synth-add-the-metadata-properties-expected-by-sam.integtest.ts +0 -126
- package/tests/cli-integ-tests/cdk-cdk-synth-bundled-functions-as-expected.integtest.ts +0 -80
- package/tests/cli-integ-tests/cdk-cdk-synth.integtest.ts +0 -53
- package/tests/cli-integ-tests/cdk-ci-output-to-stderr.integtest.ts +0 -19
- package/tests/cli-integ-tests/cdk-ci-true-output-to-stdout.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-construct-with-builtin-lambda-function.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-context-in-stage-propagates-to-top.integtest.ts +0 -20
- package/tests/cli-integ-tests/cdk-context-setting.integtest.ts +0 -33
- package/tests/cli-integ-tests/cdk-deploy---method-direct.integtest.ts +0 -23
- package/tests/cli-integ-tests/cdk-deploy-all-concurrently.integtest.ts +0 -17
- package/tests/cli-integ-tests/cdk-deploy-all.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-deploy-and-test-stack-with-lambda-asset.integtest.ts +0 -31
- package/tests/cli-integ-tests/cdk-deploy-deletes-all-notification-arns-when-empty-array-is-passed.integtest.ts +0 -50
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-error.integtest.ts +0 -18
- package/tests/cli-integ-tests/cdk-deploy-no-stacks-with---ignore-no-stacks.integtest.ts +0 -17
- package/tests/cli-integ-tests/cdk-deploy-preserves-existing-notification-arns-when-not-specified.integtest.ts +0 -51
- package/tests/cli-integ-tests/cdk-deploy-stack-with-docker-asset.integtest.ts +0 -11
- package/tests/cli-integ-tests/cdk-deploy-stack-with-lambda-asset-to-object-lock-enabled-asset-bucket.integtest.ts +0 -42
- package/tests/cli-integ-tests/cdk-deploy-stack-without-resource.integtest.ts +0 -32
- package/tests/cli-integ-tests/cdk-deploy-wildcard-with-outputs.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-deploy-with-import-existing-resources-true.integtest.ts +0 -29
- package/tests/cli-integ-tests/cdk-deploy-with-method-direct-and-import-existing-resources-fails.integtest.ts +0 -17
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-flag.integtest.ts +0 -36
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop-and-flag.integtest.ts +0 -45
- package/tests/cli-integ-tests/cdk-deploy-with-notification-arn-as-prop.integtest.ts +0 -37
- package/tests/cli-integ-tests/cdk-deploy-with-parameters-multi.integtest.ts +0 -33
- package/tests/cli-integ-tests/cdk-deploy-with-parameters.integtest.ts +0 -26
- package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.js +0 -97
- package/tests/cli-integ-tests/cdk-deploy-with-role.integtest.ts +0 -119
- package/tests/cli-integ-tests/cdk-deploy-with-wildcard-and-parameters.integtest.ts +0 -22
- package/tests/cli-integ-tests/cdk-deploy-without-execute-a-named-change-set.integtest.ts +0 -36
- package/tests/cli-integ-tests/cdk-deploy-without-import-existing-resources.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-deploy.integtest.ts +0 -20
- package/tests/cli-integ-tests/cdk-destroy-interactive.integtest.ts +0 -36
- package/tests/cli-integ-tests/cdk-doubly-nested-stack.integtest.ts +0 -12
- package/tests/cli-integ-tests/cdk-enablediffnofail.integtest.ts +0 -44
- package/tests/cli-integ-tests/cdk-failed-deploy-does-not-hang.integtest.ts +0 -12
- package/tests/cli-integ-tests/cdk-fast-deploy.integtest.ts +0 -41
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-ecr-images.integtest.ts +0 -48
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-deletes-unused-s3-objects.integtest.ts +0 -51
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-ecr-images.integtest.ts +0 -48
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-keeps-in-use-s3-objects.integtest.ts +0 -52
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-ecr-images.integtest.ts +0 -47
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-tags-unused-s3-objects.integtest.ts +0 -63
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-ecr-images.integtest.ts +0 -55
- package/tests/cli-integ-tests/cdk-gc-garbage-collection-untags-in-use-s3-objects.integtest.ts +0 -63
- package/tests/cli-integ-tests/cdk-generating-and-loading-assembly.integtest.ts +0 -52
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-detects-failed-deployment-and-errors.integtest.ts +0 -29
- package/tests/cli-integ-tests/cdk-hotswap-deployment-for-ecs-service-waits-for-deployment-to-complete.integtest.ts +0 -45
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-appsync-apis-with-many-functions.integtest.ts +0 -36
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-ecs-service.integtest.ts +0 -41
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-fn::importvalue-intrinsic.integtest.ts +0 -53
- package/tests/cli-integ-tests/cdk-hotswap-deployment-supports-lambda-functions-description-and-environment-variables.integtest.ts +0 -43
- package/tests/cli-integ-tests/cdk-hotswap-ecs-deployment-respects-properties-override.integtest.ts +0 -59
- package/tests/cli-integ-tests/cdk-iam-diff.integtest.ts +0 -23
- package/tests/cli-integ-tests/cdk-import-interactive.integtest.ts +0 -57
- package/tests/cli-integ-tests/cdk-lib-cli-lib-deploy.integtest.ts +0 -32
- package/tests/cli-integ-tests/cdk-lib-cli-lib-list.integtest.ts +0 -12
- package/tests/cli-integ-tests/cdk-lib-cli-lib-synth.integtest.ts +0 -27
- package/tests/cli-integ-tests/cdk-lib-security-related-changes-without-a-cli-are-expected-to-fail-when-approval-is-required.integtest.ts +0 -32
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-csharp.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-java.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-python.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate--from-stack-creates-deployable-app-typescript.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-csharp.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-java.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-python.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-deploys-successfully-typescript.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-migrate/cdk-migrate-generates-migrate.json.integtest.ts +0 -20
- package/tests/cli-integ-tests/cdk-migrate/testcase.ts +0 -69
- package/tests/cli-integ-tests/cdk-nested-stack-with-parameters.integtest.ts +0 -28
- package/tests/cli-integ-tests/cdk-requests-go-through-a-proxy-when-configured.integtest.ts +0 -39
- package/tests/cli-integ-tests/cdk-sam-can-locally-test-the-synthesized-cdk-application.integtest.ts +0 -25
- package/tests/cli-integ-tests/cdk-security-related-changes-without-a-cli-are-expected-to-fail.integtest.ts +0 -30
- package/tests/cli-integ-tests/cdk-skips-notice-refresh.integtest.ts +0 -26
- package/tests/cli-integ-tests/cdk-ssm-parameter-provider-error.integtest.ts +0 -18
- package/tests/cli-integ-tests/cdk-stack-in-update_rollback_complete-state-can-be-updated.integtest.ts +0 -59
- package/tests/cli-integ-tests/cdk-stage-with-bundled-lambda-function.integtest.ts +0 -13
- package/tests/cli-integ-tests/cdk-synth---quiet-can-be-specified-in-cdk.json.integtest.ts +0 -20
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-can-be-suppressed.integtest.ts +0 -15
- package/tests/cli-integ-tests/cdk-synthing-a-stage-with-errors-leads-to-failure.integtest.ts +0 -18
- package/tests/cli-integ-tests/cdk-templates-on-disk-contain-metadata-resource.integtest.ts +0 -25
- package/tests/cli-integ-tests/cdk-termination-protection.integtest.ts +0 -19
- package/tests/cli-integ-tests/cdk-test-cdk-rollback---force.integtest.ts +0 -48
- package/tests/cli-integ-tests/cdk-test-cdk-rollback.integtest.ts +0 -38
- package/tests/cli-integ-tests/cdk-test-migrate-deployment-for-app-with-localfile-source-in-migrate.json.integtest.ts +0 -56
- package/tests/cli-integ-tests/cdk-test-resource-import-with-construct-that-requires-bundling.integtest.ts +0 -74
- package/tests/cli-integ-tests/cdk-test-resource-import.integtest.ts +0 -64
- package/tests/cli-integ-tests/cdk-two-ways-of-showing-the-version.integtest.ts +0 -14
- package/tests/cli-integ-tests/cdk-update-to-stack-in-rollback_complete-state-will-delete-stack-and-create-a-new-one.integtest.ts +0 -47
- package/tests/cli-integ-tests/cdk-vpc-lookup.integtest.ts +0 -26
- package/tests/cli-integ-tests/proxy.integtest.ts +0 -168
- package/tests/init-csharp/init-csharp.integtest.ts +0 -15
- package/tests/init-fsharp/init-fsharp.integtest.ts +0 -15
- package/tests/init-go/init-go.integtest.ts +0 -28
- package/tests/init-java/init-java.integtest.ts +0 -14
- package/tests/init-javascript/init-javascript.integtest.ts +0 -58
- package/tests/init-python/init-python.integtest.ts +0 -20
- package/tests/init-typescript-app/init-typescript-app.integtest.ts +0 -67
- package/tests/init-typescript-lib/init-typescript-lib.integtest.ts +0 -13
- package/tests/tool-integrations/amplify.integtest.ts +0 -117
- package/tests/tool-integrations/with-tool-context.ts +0 -14
- package/tests/uberpackage/uberpackage.integtest.ts +0 -11
- /package/tests/cli-integ-tests/{cdk-deploy-with-role.integtest.d.ts → cdk-refactor-dry-run.integtest.d.ts} +0 -0
package/lib/xpmutex.ts
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import { watch, promises as fs, mkdirSync } from 'fs';
|
|
2
|
-
import * as os from 'os';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
|
|
5
|
-
export class XpMutexPool {
|
|
6
|
-
public static fromDirectory(directory: string) {
|
|
7
|
-
mkdirSync(directory, { recursive: true });
|
|
8
|
-
return new XpMutexPool(directory);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
public static fromName(name: string) {
|
|
12
|
-
return XpMutexPool.fromDirectory(path.join(os.tmpdir(), name));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
private readonly waitingResolvers = new Set<() => void>();
|
|
16
|
-
private watcher: ReturnType<typeof watch> | undefined;
|
|
17
|
-
|
|
18
|
-
private constructor(public readonly directory: string) {
|
|
19
|
-
this.startWatch();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public mutex(name: string) {
|
|
23
|
-
return new XpMutex(this, name);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Await an unlock event
|
|
28
|
-
*
|
|
29
|
-
* (An unlock event is when a file in the directory gets deleted, with a tiny
|
|
30
|
-
* random sleep attached to it).
|
|
31
|
-
*/
|
|
32
|
-
public awaitUnlock(maxWaitMs?: number): Promise<void> {
|
|
33
|
-
const wait = new Promise<void>(ok => {
|
|
34
|
-
this.waitingResolvers.add(async () => {
|
|
35
|
-
await randomSleep(10);
|
|
36
|
-
ok();
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
if (maxWaitMs) {
|
|
41
|
-
return Promise.race([wait, sleep(maxWaitMs)]);
|
|
42
|
-
} else {
|
|
43
|
-
return wait;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
private startWatch() {
|
|
48
|
-
this.watcher = watch(this.directory);
|
|
49
|
-
(this.watcher as any).unref(); // @types doesn't know about this but it exists
|
|
50
|
-
this.watcher.on('change', async (eventType, fname) => {
|
|
51
|
-
// Only trigger on 'deletes'.
|
|
52
|
-
// After receiving the event, we check if the file exists.
|
|
53
|
-
// - If no: the file was deleted! Huzzah, this counts as a wakeup.
|
|
54
|
-
// - If yes: either the file was just created (in which case we don't need to wakeup)
|
|
55
|
-
// or the event was due to a delete but someone raced us to it and claimed the
|
|
56
|
-
// file already (in which case we also don't need to wake up).
|
|
57
|
-
if (eventType === 'rename' && !await fileExists(path.join(this.directory, fname.toString()))) {
|
|
58
|
-
this.notifyWaiters();
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
this.watcher.on('error', async (e) => {
|
|
62
|
-
// eslint-disable-next-line no-console
|
|
63
|
-
console.error(e);
|
|
64
|
-
await randomSleep(100);
|
|
65
|
-
this.startWatch();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
private notifyWaiters() {
|
|
70
|
-
for (const promise of this.waitingResolvers) {
|
|
71
|
-
promise();
|
|
72
|
-
}
|
|
73
|
-
this.waitingResolvers.clear();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Cross-process mutex
|
|
79
|
-
*
|
|
80
|
-
* Uses the presence of a file on disk and `fs.watch` to represent the mutex
|
|
81
|
-
* and discover unlocks.
|
|
82
|
-
*/
|
|
83
|
-
export class XpMutex {
|
|
84
|
-
private readonly fileName: string;
|
|
85
|
-
|
|
86
|
-
constructor(private readonly pool: XpMutexPool, public readonly mutexName: string) {
|
|
87
|
-
this.fileName = path.join(pool.directory, `${mutexName}.mutex`);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Try to acquire the lock (may fail)
|
|
92
|
-
*/
|
|
93
|
-
public async tryAcquire(): Promise<ILock | undefined> {
|
|
94
|
-
while (true) {
|
|
95
|
-
// Acquire lock by being the one to create the file
|
|
96
|
-
try {
|
|
97
|
-
return await this.writePidFile('wx'); // Fails if the file already exists
|
|
98
|
-
} catch (e: any) {
|
|
99
|
-
if (e.code !== 'EEXIST') { throw e; }
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// File already exists. Read the contents, see if it's an existent PID (if so, the lock is taken)
|
|
103
|
-
const ownerPid = await this.readPidFile();
|
|
104
|
-
if (ownerPid === undefined) {
|
|
105
|
-
// File got deleted just now, maybe we can acquire it again
|
|
106
|
-
continue;
|
|
107
|
-
}
|
|
108
|
-
if (processExists(ownerPid)) {
|
|
109
|
-
return undefined;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
// If not, the lock is stale and will never be released anymore. We may
|
|
113
|
-
// delete it and acquire it anyway, but we may be racing someone else trying
|
|
114
|
-
// to do the same. Solve this as follows:
|
|
115
|
-
// - Try to acquire a lock that gives us permissions to declare the existing lock stale.
|
|
116
|
-
// - Sleep a small random period to reduce contention on this operation
|
|
117
|
-
await randomSleep(10);
|
|
118
|
-
const innerMux = new XpMutex(this.pool, `${this.mutexName}.${ownerPid}`);
|
|
119
|
-
const innerLock = await innerMux.tryAcquire();
|
|
120
|
-
if (!innerLock) {
|
|
121
|
-
return undefined;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// We may not release the 'inner lock' we used to acquire the rights to declare the other
|
|
125
|
-
// lock stale until we release the actual lock itself. If we did, other contenders might
|
|
126
|
-
// see it released while they're still in this fallback block and accidentally steal
|
|
127
|
-
// from a new legitimate owner.
|
|
128
|
-
return this.writePidFile('w', innerLock); // Force write lock file, attach inner lock as well
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Acquire the lock, waiting until we can
|
|
134
|
-
*/
|
|
135
|
-
public async acquire(): Promise<ILock> {
|
|
136
|
-
while (true) {
|
|
137
|
-
// Start the wait here, so we don't miss the signal if it comes after
|
|
138
|
-
// we try but before we sleep.
|
|
139
|
-
//
|
|
140
|
-
// We also periodically retry anyway since we may have missed the delete
|
|
141
|
-
// signal due to unfortunate timing.
|
|
142
|
-
const wait = this.pool.awaitUnlock(5000);
|
|
143
|
-
|
|
144
|
-
const lock = await this.tryAcquire();
|
|
145
|
-
if (lock) {
|
|
146
|
-
// Ignore the wait (count as handled)
|
|
147
|
-
wait.then(() => {}, () => {});
|
|
148
|
-
return lock;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
await wait;
|
|
152
|
-
await randomSleep(100);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
private async readPidFile(): Promise<number | undefined> {
|
|
157
|
-
const deadLine = Date.now() + 1000;
|
|
158
|
-
while (Date.now() < deadLine) {
|
|
159
|
-
let contents;
|
|
160
|
-
try {
|
|
161
|
-
contents = await fs.readFile(this.fileName, { encoding: 'utf-8' });
|
|
162
|
-
} catch (e: any) {
|
|
163
|
-
if (e.code === 'ENOENT') { return undefined; }
|
|
164
|
-
throw e;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Retry until we've seen the full contents
|
|
168
|
-
if (contents.endsWith('.')) { return parseInt(contents.substring(0, contents.length - 1), 10); }
|
|
169
|
-
await sleep(10);
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
throw new Error(`${this.fileName} was never completely written`);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
private async writePidFile(mode: string, additionalLock?: ILock): Promise<ILock> {
|
|
176
|
-
const fd = await fs.open(this.fileName, mode); // May fail if the file already exists
|
|
177
|
-
await fd.write(`${process.pid}.`); // Period guards against partial reads
|
|
178
|
-
await fd.close();
|
|
179
|
-
|
|
180
|
-
return {
|
|
181
|
-
release: async () => {
|
|
182
|
-
await fs.unlink(this.fileName);
|
|
183
|
-
await additionalLock?.release();
|
|
184
|
-
},
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
export interface ILock {
|
|
190
|
-
release(): Promise<void>;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
async function fileExists(fileName: string) {
|
|
194
|
-
try {
|
|
195
|
-
await fs.stat(fileName);
|
|
196
|
-
return true;
|
|
197
|
-
} catch (e: any) {
|
|
198
|
-
if (e.code === 'ENOENT') { return false; }
|
|
199
|
-
throw e;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
function processExists(pid: number) {
|
|
204
|
-
try {
|
|
205
|
-
process.kill(pid, 0);
|
|
206
|
-
return true;
|
|
207
|
-
} catch {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
function sleep(ms: number): Promise<void> {
|
|
213
|
-
return new Promise(ok => (setTimeout(ok, ms) as any).unref());
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
function randomSleep(ms: number) {
|
|
217
|
-
return sleep(Math.floor(Math.random() * ms));
|
|
218
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
2
|
-
var { NestedStack } = require('@aws-cdk/core');
|
|
3
|
-
var { Function, Runtime, Code } = require('@aws-cdk/aws-lambda');
|
|
4
|
-
} else {
|
|
5
|
-
var { NestedStack } = require('aws-cdk-lib');
|
|
6
|
-
var { Function, Runtime, Code } = require('aws-cdk-lib/aws-lambda');
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
class NestedStack1 extends NestedStack {
|
|
10
|
-
constructor(scope, id, props) {
|
|
11
|
-
super(scope, id, props);
|
|
12
|
-
new Function(this, 'FunctionPythonRuntime', {
|
|
13
|
-
runtime: Runtime.PYTHON_3_12,
|
|
14
|
-
code: Code.fromAsset('./src/python/Function'),
|
|
15
|
-
handler: 'app.lambda_handler',
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.NestedStack1 = NestedStack1;
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
var path = require('path');
|
|
2
|
-
var { NestedStack1 } = require('./nested-stack');
|
|
3
|
-
if (process.env.PACKAGE_LAYOUT_VERSION === '1') {
|
|
4
|
-
var { Stack } = require('@aws-cdk/core');
|
|
5
|
-
var { Runtime, LayerVersion, Code, Function, DockerImageFunction, DockerImageCode } = require('@aws-cdk/aws-lambda');
|
|
6
|
-
var { SpecRestApi, ApiDefinition } = require('@aws-cdk/aws-apigateway');
|
|
7
|
-
var { NodejsFunction } = require('@aws-cdk/aws-lambda-nodejs');
|
|
8
|
-
var { GoFunction } = require('@aws-cdk/aws-lambda-go');
|
|
9
|
-
var { PythonFunction, PythonLayerVersion } = require('@aws-cdk/aws-lambda-python');
|
|
10
|
-
var { Role, ServicePrincipal, PolicyStatement } = require('@aws-cdk/aws-iam');
|
|
11
|
-
var { RetentionDays } = require('@aws-cdk/aws-logs');
|
|
12
|
-
} else {
|
|
13
|
-
var { Stack } = require('aws-cdk-lib');
|
|
14
|
-
var { Runtime, LayerVersion, Code, Function, DockerImageFunction, DockerImageCode } = require('aws-cdk-lib/aws-lambda');
|
|
15
|
-
var { SpecRestApi, ApiDefinition } = require('aws-cdk-lib/aws-apigateway');
|
|
16
|
-
var { NodejsFunction } = require('aws-cdk-lib/aws-lambda-nodejs');
|
|
17
|
-
var { GoFunction } = require('@aws-cdk/aws-lambda-go-alpha');
|
|
18
|
-
var { PythonFunction, PythonLayerVersion } = require('@aws-cdk/aws-lambda-python-alpha');
|
|
19
|
-
var { Role, ServicePrincipal, PolicyStatement } = require('aws-cdk-lib/aws-iam');
|
|
20
|
-
var { RetentionDays } = require('aws-cdk-lib/aws-logs');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const isRunningOnCodeBuild = !!process.env.CODEBUILD_BUILD_ID;
|
|
24
|
-
|
|
25
|
-
class CDKSupportDemoRootStack extends Stack{
|
|
26
|
-
constructor(scope, id, props) {
|
|
27
|
-
super(scope, id, props);
|
|
28
|
-
// Python Runtime
|
|
29
|
-
// Layers
|
|
30
|
-
new PythonLayerVersion(this, 'PythonLayerVersion', {
|
|
31
|
-
compatibleRuntimes: [
|
|
32
|
-
Runtime.PYTHON_3_12,
|
|
33
|
-
],
|
|
34
|
-
entry: './src/python/Layer',
|
|
35
|
-
});
|
|
36
|
-
new LayerVersion(this, 'LayerVersion', {
|
|
37
|
-
compatibleRuntimes: [
|
|
38
|
-
Runtime.PYTHON_3_12,
|
|
39
|
-
],
|
|
40
|
-
code: Code.fromAsset('./src/python/Layer'),
|
|
41
|
-
});
|
|
42
|
-
new LayerVersion(this, 'BundledLayerVersionPythonRuntime', {
|
|
43
|
-
compatibleRuntimes: [
|
|
44
|
-
Runtime.PYTHON_3_12,
|
|
45
|
-
],
|
|
46
|
-
code: Code.fromAsset('./src/python/Layer', {
|
|
47
|
-
bundling: {
|
|
48
|
-
command: [
|
|
49
|
-
'/bin/sh',
|
|
50
|
-
'-c',
|
|
51
|
-
'rm -rf /tmp/asset-input && mkdir /tmp/asset-input && cp * /tmp/asset-input && cd /tmp/asset-input && pip install -r requirements.txt -t . && mkdir /asset-output/python && cp -R /tmp/asset-input/* /asset-output/python',
|
|
52
|
-
],
|
|
53
|
-
image: Runtime.PYTHON_3_12.bundlingImage,
|
|
54
|
-
user: 'root',
|
|
55
|
-
}
|
|
56
|
-
}),
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
// ZIP package type Functions
|
|
60
|
-
new PythonFunction(this, 'PythonFunction', {
|
|
61
|
-
entry: './src/python/Function',
|
|
62
|
-
index: 'app.py',
|
|
63
|
-
handler: 'lambda_handler',
|
|
64
|
-
runtime: Runtime.PYTHON_3_12,
|
|
65
|
-
functionName: 'pythonFunc',
|
|
66
|
-
logRetention: RetentionDays.THREE_MONTHS,
|
|
67
|
-
});
|
|
68
|
-
new Function(this, 'FunctionPythonRuntime', {
|
|
69
|
-
runtime: Runtime.PYTHON_3_12,
|
|
70
|
-
code: Code.fromAsset('./src/python/Function'),
|
|
71
|
-
handler: 'app.lambda_handler',
|
|
72
|
-
});
|
|
73
|
-
new Function(this, 'BundledFunctionPythonRuntime', {
|
|
74
|
-
runtime: Runtime.PYTHON_3_12,
|
|
75
|
-
code: Code.fromAsset('./src/python/Function/', {
|
|
76
|
-
bundling: {
|
|
77
|
-
command: [
|
|
78
|
-
'/bin/sh',
|
|
79
|
-
'-c',
|
|
80
|
-
'rm -rf /tmp/asset-input && mkdir /tmp/asset-input && cp * /tmp/asset-input && cd /tmp/asset-input && pip install -r requirements.txt -t . && cp -R /tmp/asset-input/* /asset-output',
|
|
81
|
-
],
|
|
82
|
-
image: Runtime.PYTHON_3_12.bundlingImage,
|
|
83
|
-
user: 'root',
|
|
84
|
-
}
|
|
85
|
-
}),
|
|
86
|
-
handler: 'app.lambda_handler',
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
// NodeJs Runtime
|
|
90
|
-
new NodejsFunction(this, 'NodejsFunction', {
|
|
91
|
-
entry: path.join(__dirname, '../src/nodejs/NodeJsFunctionConstruct/app.ts'),
|
|
92
|
-
depsLockFilePath: path.join(__dirname, '../src/nodejs/NodeJsFunctionConstruct/package-lock.json'),
|
|
93
|
-
bundling: {
|
|
94
|
-
forceDockerBundling: true,
|
|
95
|
-
},
|
|
96
|
-
handler: 'lambdaHandler',
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
// Go Runtime
|
|
100
|
-
new GoFunction(this, 'GoFunction', {
|
|
101
|
-
entry: './src/go/GoFunctionConstruct',
|
|
102
|
-
bundling: {
|
|
103
|
-
forcedDockerBundling: true,
|
|
104
|
-
// Only use Google proxy in the CI tests, as it is blocked on workstations
|
|
105
|
-
goProxies: isRunningOnCodeBuild ? [GoFunction.GOOGLE_GOPROXY, 'direct'] : undefined,
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
// Image Package Type Functions
|
|
110
|
-
new DockerImageFunction(this, 'DockerImageFunction', {
|
|
111
|
-
code: DockerImageCode.fromImageAsset('./src/docker/DockerImageFunctionConstruct', {
|
|
112
|
-
file: 'Dockerfile',
|
|
113
|
-
}),
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// Spec Rest Api
|
|
117
|
-
new SpecRestApi(this, 'SpecRestAPI', {
|
|
118
|
-
apiDefinition: ApiDefinition.fromAsset('./src/rest-api-definition.yaml'),
|
|
119
|
-
});
|
|
120
|
-
// Role to be used as credentials for the Spec rest APi
|
|
121
|
-
// it is used inside the spec rest api definition file
|
|
122
|
-
new Role(this, 'SpecRestApiRole', {
|
|
123
|
-
assumedBy: new ServicePrincipal('apigateway.amazonaws.com'),
|
|
124
|
-
roleName: 'SpecRestApiRole',
|
|
125
|
-
}).addToPolicy(new PolicyStatement({
|
|
126
|
-
actions: ['lambda:InvokeFunction'],
|
|
127
|
-
resources: ['*'],
|
|
128
|
-
}));
|
|
129
|
-
|
|
130
|
-
// Nested Stack
|
|
131
|
-
new NestedStack1(this, 'NestedStack', {});
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
exports.CDKSupportDemoRootStack = CDKSupportDemoRootStack;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { promises as fs } from 'fs';
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { integTest, withDefaultFixture } from '../../lib';
|
|
4
|
-
|
|
5
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
6
|
-
|
|
7
|
-
integTest(
|
|
8
|
-
'--exclusively selects only selected stack',
|
|
9
|
-
withDefaultFixture(async (fixture) => {
|
|
10
|
-
// Deploy the "depends-on-failed" stack, with --exclusively. It will NOT fail (because
|
|
11
|
-
// of --exclusively) and it WILL create an output we can check for to confirm that it did
|
|
12
|
-
// get deployed.
|
|
13
|
-
const outputsFile = path.join(fixture.integTestDir, 'outputs', 'outputs.json');
|
|
14
|
-
await fs.mkdir(path.dirname(outputsFile), { recursive: true });
|
|
15
|
-
|
|
16
|
-
await fixture.cdkDeploy('depends-on-failed', {
|
|
17
|
-
options: ['--exclusively', '--outputs-file', outputsFile],
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
// Verify the output to see that the stack deployed
|
|
21
|
-
const outputs = JSON.parse((await fs.readFile(outputsFile, { encoding: 'utf-8' })).toString());
|
|
22
|
-
expect(outputs).toEqual({
|
|
23
|
-
[`${fixture.stackNamePrefix}-depends-on-failed`]: {
|
|
24
|
-
TopicName: `${fixture.stackNamePrefix}-depends-on-failedMyTopic`,
|
|
25
|
-
},
|
|
26
|
-
});
|
|
27
|
-
}),
|
|
28
|
-
);
|
|
29
|
-
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import { promises as fs } from 'fs';
|
|
3
|
-
import * as path from 'path';
|
|
4
|
-
import { integTest, withDefaultFixture } from '../../../lib';
|
|
5
|
-
|
|
6
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
7
|
-
|
|
8
|
-
integTest(`cdk-assets uses profile when specified`, withDefaultFixture(async (fixture) => {
|
|
9
|
-
|
|
10
|
-
const currentCreds = await fixture.aws.credentials();
|
|
11
|
-
|
|
12
|
-
await fixture.shell(['npm', 'init', '-y']);
|
|
13
|
-
await fixture.shell(['npm', 'install', `cdk-assets@latest`]);
|
|
14
|
-
|
|
15
|
-
const account = await fixture.aws.account();
|
|
16
|
-
const region = fixture.aws.region;
|
|
17
|
-
const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
|
|
18
|
-
|
|
19
|
-
// Write some asset files. Its important to have more than 1 because cdk-assets
|
|
20
|
-
// code has some funky state mutations that happens on each asset publishing.
|
|
21
|
-
const assetFile1 = 'testfile.txt';
|
|
22
|
-
const assetFile2 = 'testfile.txt';
|
|
23
|
-
await fs.writeFile(path.join(fixture.integTestDir, assetFile1), 'some asset file');
|
|
24
|
-
await fs.writeFile(path.join(fixture.integTestDir, assetFile2), 'some asset file');
|
|
25
|
-
|
|
26
|
-
// Write an asset JSON file to publish to the bootstrapped environment
|
|
27
|
-
const assetsJson = {
|
|
28
|
-
version: "38.0.1",
|
|
29
|
-
files: {
|
|
30
|
-
testfile1: {
|
|
31
|
-
source: {
|
|
32
|
-
path: assetFile1,
|
|
33
|
-
packaging: 'file',
|
|
34
|
-
},
|
|
35
|
-
destinations: {
|
|
36
|
-
current: {
|
|
37
|
-
region,
|
|
38
|
-
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
|
|
39
|
-
bucketName,
|
|
40
|
-
objectKey: `test-file1-${Date.now()}.json`,
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
testfile2: {
|
|
45
|
-
source: {
|
|
46
|
-
path: assetFile2,
|
|
47
|
-
packaging: 'file',
|
|
48
|
-
},
|
|
49
|
-
destinations: {
|
|
50
|
-
current: {
|
|
51
|
-
region,
|
|
52
|
-
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
|
|
53
|
-
bucketName,
|
|
54
|
-
objectKey: `test-file2-${Date.now()}.json`,
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// create a profile with our current credentials.
|
|
62
|
-
//
|
|
63
|
-
// if you're wondering why can't we do the reverse (i.e write a bogus profile and assert a failure),
|
|
64
|
-
// its because when cdk-assets discovers the current account, it DOES consider the profile.
|
|
65
|
-
// writing a bogus profile would fail this operation and we won't be able to reach the code
|
|
66
|
-
// we're trying to test.
|
|
67
|
-
const credentialsFile = path.join(fixture.integTestDir, 'aws.credentials');
|
|
68
|
-
const profile = 'cdk-assets';
|
|
69
|
-
|
|
70
|
-
// this kind sucks but its what it is given we need to write a working profile
|
|
71
|
-
await fs.writeFile(credentialsFile, `[${profile}]
|
|
72
|
-
aws_access_key_id=${currentCreds.accessKeyId}
|
|
73
|
-
aws_secret_access_key=${currentCreds.secretAccessKey}
|
|
74
|
-
aws_session_token=${currentCreds.sessionToken}`);
|
|
75
|
-
|
|
76
|
-
await fs.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
|
|
77
|
-
await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', 'publish', '--profile', profile], {
|
|
78
|
-
modEnv: {
|
|
79
|
-
...fixture.cdkShellEnv(),
|
|
80
|
-
AWS_SHARED_CREDENTIALS_FILE: credentialsFile,
|
|
81
|
-
|
|
82
|
-
// remove the default creds so that if the command doesn't use
|
|
83
|
-
// the profile, it will fail with "Could not load credentials from any providers"
|
|
84
|
-
AWS_ACCESS_KEY_ID: '',
|
|
85
|
-
AWS_SECRET_ACCESS_KEY: '',
|
|
86
|
-
AWS_SESSION_TOKEN: ''
|
|
87
|
-
|
|
88
|
-
},
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
}),
|
|
92
|
-
);
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for the standalone cdk-assets executable, as used by CDK Pipelines
|
|
3
|
-
*/
|
|
4
|
-
import { promises as fs } from 'fs';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { integTest, withDefaultFixture } from '../../../lib';
|
|
7
|
-
|
|
8
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
9
|
-
|
|
10
|
-
integTest(
|
|
11
|
-
`cdk-assets smoke test`,
|
|
12
|
-
withDefaultFixture(async (fixture) => {
|
|
13
|
-
await fixture.shell(['npm', 'init', '-y']);
|
|
14
|
-
await fixture.shell(['npm', 'install', `cdk-assets@latest`]);
|
|
15
|
-
|
|
16
|
-
const account = await fixture.aws.account();
|
|
17
|
-
const region = fixture.aws.region;
|
|
18
|
-
const bucketName = `cdk-hnb659fds-assets-${account}-${region}`;
|
|
19
|
-
const repositoryName = `cdk-hnb659fds-container-assets-${account}-${region}`;
|
|
20
|
-
|
|
21
|
-
const imageDir = 'imagedir';
|
|
22
|
-
await fs.mkdir(path.join(fixture.integTestDir, imageDir), { recursive: true });
|
|
23
|
-
|
|
24
|
-
// Write an asset file and a data file for the Docker image
|
|
25
|
-
const assetFile = 'testfile.txt';
|
|
26
|
-
for (const toCreate of [assetFile, `${imageDir}/datafile.txt`]) {
|
|
27
|
-
await fs.writeFile(path.join(fixture.integTestDir, toCreate), 'some asset file');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Write a Dockerfile for the image build with a data file in it
|
|
31
|
-
await fs.writeFile(path.join(fixture.integTestDir, imageDir, 'Dockerfile'), [
|
|
32
|
-
'FROM scratch',
|
|
33
|
-
'ADD datafile.txt datafile.txt',
|
|
34
|
-
].join('\n'));
|
|
35
|
-
|
|
36
|
-
// Write an asset JSON file to publish to the bootstrapped environment
|
|
37
|
-
const assetsJson = {
|
|
38
|
-
version: "38.0.1",
|
|
39
|
-
files: {
|
|
40
|
-
testfile: {
|
|
41
|
-
source: {
|
|
42
|
-
path: assetFile,
|
|
43
|
-
packaging: 'file',
|
|
44
|
-
},
|
|
45
|
-
destinations: {
|
|
46
|
-
current: {
|
|
47
|
-
region,
|
|
48
|
-
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-file-publishing-role-${account}-${region}`,
|
|
49
|
-
bucketName,
|
|
50
|
-
objectKey: `test-file-${Date.now()}.json`,
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
dockerImages: {
|
|
56
|
-
testimage: {
|
|
57
|
-
source: {
|
|
58
|
-
directory: imageDir,
|
|
59
|
-
},
|
|
60
|
-
destinations: {
|
|
61
|
-
current: {
|
|
62
|
-
region,
|
|
63
|
-
assumeRoleArn: `arn:\${AWS::Partition}:iam::${account}:role/cdk-hnb659fds-image-publishing-role-${account}-${region}`,
|
|
64
|
-
repositoryName,
|
|
65
|
-
imageTag: `test-image`, // Not fresh on every run because we'll run out of tags too easily
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
await fs.writeFile(path.join(fixture.integTestDir, 'assets.json'), JSON.stringify(assetsJson, undefined, 2));
|
|
73
|
-
await fixture.shell(['npx', 'cdk-assets', '--path', 'assets.json', '--verbose', 'publish'], {
|
|
74
|
-
modEnv: {
|
|
75
|
-
...fixture.cdkShellEnv(),
|
|
76
|
-
// This is necessary for cdk-assets v2, if the credentials are supplied via
|
|
77
|
-
// config file (which they are on the CodeBuild canaries).
|
|
78
|
-
AWS_SDK_LOAD_CONFIG: '1',
|
|
79
|
-
},
|
|
80
|
-
});
|
|
81
|
-
}),
|
|
82
|
-
);
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { integTest, withDefaultFixture } from '../../lib';
|
|
2
|
-
|
|
3
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
4
|
-
|
|
5
|
-
integTest(
|
|
6
|
-
'automatic ordering with concurrency',
|
|
7
|
-
withDefaultFixture(async (fixture) => {
|
|
8
|
-
// Deploy the consuming stack which will include the producing stack
|
|
9
|
-
await fixture.cdkDeploy('order-consuming', { options: ['--concurrency', '2'] });
|
|
10
|
-
|
|
11
|
-
// Destroy the providing stack which will include the consuming stack
|
|
12
|
-
await fixture.cdkDestroy('order-providing');
|
|
13
|
-
}),
|
|
14
|
-
);
|
|
15
|
-
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { integTest, withDefaultFixture } from '../../lib';
|
|
2
|
-
|
|
3
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
4
|
-
|
|
5
|
-
integTest(
|
|
6
|
-
'automatic ordering',
|
|
7
|
-
withDefaultFixture(async (fixture) => {
|
|
8
|
-
// Deploy the consuming stack which will include the producing stack
|
|
9
|
-
await fixture.cdkDeploy('order-consuming');
|
|
10
|
-
|
|
11
|
-
// Destroy the providing stack which will include the consuming stack
|
|
12
|
-
await fixture.cdkDestroy('order-providing');
|
|
13
|
-
}),
|
|
14
|
-
);
|
|
15
|
-
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { integTest, withSpecificFixture } from '../../lib';
|
|
2
|
-
|
|
3
|
-
jest.setTimeout(2 * 60 * 60_000); // Includes the time to acquire locks, worst-case single-threaded runtime
|
|
4
|
-
|
|
5
|
-
integTest(
|
|
6
|
-
'automatic rollback if paused and --no-rollback is removed from flags',
|
|
7
|
-
withSpecificFixture('rollback-test-app', async (fixture) => {
|
|
8
|
-
let phase = '1';
|
|
9
|
-
|
|
10
|
-
// Should succeed
|
|
11
|
-
await fixture.cdkDeploy('test-rollback', {
|
|
12
|
-
options: ['--no-rollback'],
|
|
13
|
-
modEnv: { PHASE: phase },
|
|
14
|
-
verbose: false,
|
|
15
|
-
});
|
|
16
|
-
try {
|
|
17
|
-
phase = '2a';
|
|
18
|
-
|
|
19
|
-
// Should fail
|
|
20
|
-
const deployOutput = await fixture.cdkDeploy('test-rollback', {
|
|
21
|
-
options: ['--no-rollback'],
|
|
22
|
-
modEnv: { PHASE: phase },
|
|
23
|
-
verbose: false,
|
|
24
|
-
allowErrExit: true,
|
|
25
|
-
});
|
|
26
|
-
expect(deployOutput).toContain('UPDATE_FAILED');
|
|
27
|
-
|
|
28
|
-
// Do a deployment removing --no-rollback: this will roll back first and then deploy normally
|
|
29
|
-
phase = '1';
|
|
30
|
-
await fixture.cdkDeploy('test-rollback', {
|
|
31
|
-
options: ['--force'],
|
|
32
|
-
modEnv: { PHASE: phase },
|
|
33
|
-
verbose: false,
|
|
34
|
-
});
|
|
35
|
-
} finally {
|
|
36
|
-
await fixture.cdkDestroy('test-rollback');
|
|
37
|
-
}
|
|
38
|
-
}),
|
|
39
|
-
);
|
|
40
|
-
|