@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
|
@@ -1,387 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AssociateExternalConnectionCommand,
|
|
3
|
-
CodeartifactClient,
|
|
4
|
-
CreateDomainCommand,
|
|
5
|
-
CreateRepositoryCommand,
|
|
6
|
-
DeleteRepositoryCommand,
|
|
7
|
-
DescribeDomainCommand,
|
|
8
|
-
DescribeRepositoryCommand,
|
|
9
|
-
GetAuthorizationTokenCommand,
|
|
10
|
-
GetRepositoryEndpointCommand,
|
|
11
|
-
ListPackagesCommand,
|
|
12
|
-
ListPackagesRequest,
|
|
13
|
-
ListRepositoriesCommand,
|
|
14
|
-
ListTagsForResourceCommand,
|
|
15
|
-
PutPackageOriginConfigurationCommand,
|
|
16
|
-
} from '@aws-sdk/client-codeartifact';
|
|
17
|
-
import { sleep } from '../aws';
|
|
18
|
-
|
|
19
|
-
const COLLECT_BY_TAG = 'collect-by';
|
|
20
|
-
const REPO_LIFETIME_MS = 24 * 3600 * 1000; // One day
|
|
21
|
-
|
|
22
|
-
export class TestRepository {
|
|
23
|
-
public static readonly DEFAULT_DOMAIN = 'test-cdk';
|
|
24
|
-
|
|
25
|
-
public static async newRandom() {
|
|
26
|
-
const qualifier = Math.random()
|
|
27
|
-
.toString(36)
|
|
28
|
-
.replace(/[^a-z0-9]+/g, '');
|
|
29
|
-
|
|
30
|
-
const repo = new TestRepository(`test-${qualifier}`);
|
|
31
|
-
await repo.prepare();
|
|
32
|
-
return repo;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
public static async newWithName(name: string) {
|
|
36
|
-
const repo = new TestRepository(name);
|
|
37
|
-
await repo.prepare();
|
|
38
|
-
return repo;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public static existing(repositoryName: string) {
|
|
42
|
-
return new TestRepository(repositoryName);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Garbage collect repositories
|
|
47
|
-
*/
|
|
48
|
-
public static async gc() {
|
|
49
|
-
if (!(await TestRepository.existing('*dummy*').domainExists())) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const codeArtifact = new CodeartifactClient();
|
|
54
|
-
|
|
55
|
-
let nextToken: string | undefined;
|
|
56
|
-
do {
|
|
57
|
-
const page = await codeArtifact.send(
|
|
58
|
-
new ListRepositoriesCommand({
|
|
59
|
-
nextToken: nextToken,
|
|
60
|
-
}),
|
|
61
|
-
);
|
|
62
|
-
|
|
63
|
-
for (const repo of page.repositories ?? []) {
|
|
64
|
-
const tags = await codeArtifact.send(
|
|
65
|
-
new ListTagsForResourceCommand({
|
|
66
|
-
resourceArn: repo.arn!,
|
|
67
|
-
}),
|
|
68
|
-
);
|
|
69
|
-
const collectable = tags?.tags?.find((t) => t.key === COLLECT_BY_TAG && Number(t.value) < Date.now());
|
|
70
|
-
if (collectable) {
|
|
71
|
-
// eslint-disable-next-line no-console
|
|
72
|
-
console.log('Deleting', repo.name);
|
|
73
|
-
await codeArtifact.send(
|
|
74
|
-
new DeleteRepositoryCommand({
|
|
75
|
-
domain: repo.domainName!,
|
|
76
|
-
repository: repo.name!,
|
|
77
|
-
}),
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
nextToken = page.nextToken;
|
|
83
|
-
} while (nextToken);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
public readonly npmUpstream = 'npm-upstream';
|
|
87
|
-
public readonly pypiUpstream = 'pypi-upstream';
|
|
88
|
-
public readonly nugetUpstream = 'nuget-upstream';
|
|
89
|
-
public readonly mavenUpstream = 'maven-upstream';
|
|
90
|
-
public readonly domain = TestRepository.DEFAULT_DOMAIN;
|
|
91
|
-
|
|
92
|
-
private readonly codeArtifact = new CodeartifactClient();
|
|
93
|
-
|
|
94
|
-
private _loginInformation: LoginInformation | undefined;
|
|
95
|
-
|
|
96
|
-
private constructor(public readonly repositoryName: string) {}
|
|
97
|
-
|
|
98
|
-
public async prepare() {
|
|
99
|
-
await this.ensureDomain();
|
|
100
|
-
await this.ensureUpstreams();
|
|
101
|
-
|
|
102
|
-
await this.ensureRepository(this.repositoryName, {
|
|
103
|
-
description: 'Testing repository',
|
|
104
|
-
upstreams: [this.npmUpstream, this.pypiUpstream, this.nugetUpstream, this.mavenUpstream],
|
|
105
|
-
tags: {
|
|
106
|
-
[COLLECT_BY_TAG]: `${Date.now() + REPO_LIFETIME_MS}`,
|
|
107
|
-
},
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
public async loginInformation(): Promise<LoginInformation> {
|
|
112
|
-
if (this._loginInformation) {
|
|
113
|
-
return this._loginInformation;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
this._loginInformation = {
|
|
117
|
-
authToken: (
|
|
118
|
-
await this.codeArtifact.send(
|
|
119
|
-
new GetAuthorizationTokenCommand({
|
|
120
|
-
domain: this.domain,
|
|
121
|
-
durationSeconds: 12 * 3600,
|
|
122
|
-
}),
|
|
123
|
-
)
|
|
124
|
-
).authorizationToken!,
|
|
125
|
-
repositoryName: this.repositoryName,
|
|
126
|
-
|
|
127
|
-
npmEndpoint: (
|
|
128
|
-
await this.codeArtifact.send(
|
|
129
|
-
new GetRepositoryEndpointCommand({
|
|
130
|
-
domain: this.domain,
|
|
131
|
-
repository: this.repositoryName,
|
|
132
|
-
format: 'npm',
|
|
133
|
-
}),
|
|
134
|
-
)
|
|
135
|
-
).repositoryEndpoint!,
|
|
136
|
-
|
|
137
|
-
mavenEndpoint: (
|
|
138
|
-
await this.codeArtifact.send(
|
|
139
|
-
new GetRepositoryEndpointCommand({
|
|
140
|
-
domain: this.domain,
|
|
141
|
-
repository: this.repositoryName,
|
|
142
|
-
format: 'maven',
|
|
143
|
-
}),
|
|
144
|
-
)
|
|
145
|
-
).repositoryEndpoint!,
|
|
146
|
-
|
|
147
|
-
nugetEndpoint: (
|
|
148
|
-
await this.codeArtifact.send(
|
|
149
|
-
new GetRepositoryEndpointCommand({
|
|
150
|
-
domain: this.domain,
|
|
151
|
-
repository: this.repositoryName,
|
|
152
|
-
format: 'nuget',
|
|
153
|
-
}),
|
|
154
|
-
)
|
|
155
|
-
).repositoryEndpoint!,
|
|
156
|
-
|
|
157
|
-
pypiEndpoint: (
|
|
158
|
-
await this.codeArtifact.send(
|
|
159
|
-
new GetRepositoryEndpointCommand({
|
|
160
|
-
domain: this.domain,
|
|
161
|
-
repository: this.repositoryName,
|
|
162
|
-
format: 'pypi',
|
|
163
|
-
}),
|
|
164
|
-
)
|
|
165
|
-
).repositoryEndpoint!,
|
|
166
|
-
};
|
|
167
|
-
return this._loginInformation;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
public async delete() {
|
|
171
|
-
try {
|
|
172
|
-
await this.codeArtifact.send(
|
|
173
|
-
new DeleteRepositoryCommand({
|
|
174
|
-
domain: this.domain,
|
|
175
|
-
repository: this.repositoryName,
|
|
176
|
-
}),
|
|
177
|
-
);
|
|
178
|
-
|
|
179
|
-
// eslint-disable-next-line no-console
|
|
180
|
-
console.log('Deleted', this.repositoryName);
|
|
181
|
-
} catch (e: any) {
|
|
182
|
-
if (e.name !== 'ResourceNotFoundException') {
|
|
183
|
-
throw e;
|
|
184
|
-
}
|
|
185
|
-
// Okay
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* List all packages and mark them as "allow upstream versions".
|
|
191
|
-
*
|
|
192
|
-
* If we don't do this and we publish `foo@2.3.4-rc.0`, then we can't
|
|
193
|
-
* download `foo@2.3.0` anymore because by default CodeArtifact will
|
|
194
|
-
* block different versions from the same package.
|
|
195
|
-
*/
|
|
196
|
-
public async markAllUpstreamAllow() {
|
|
197
|
-
for await (const pkg of this.listPackages({ upstream: 'BLOCK' })) {
|
|
198
|
-
await retryThrottled(() =>
|
|
199
|
-
this.codeArtifact.send(
|
|
200
|
-
new PutPackageOriginConfigurationCommand({
|
|
201
|
-
domain: this.domain,
|
|
202
|
-
repository: this.repositoryName,
|
|
203
|
-
|
|
204
|
-
format: pkg.format!,
|
|
205
|
-
package: pkg.package!,
|
|
206
|
-
namespace: pkg.namespace!,
|
|
207
|
-
restrictions: {
|
|
208
|
-
publish: 'ALLOW',
|
|
209
|
-
upstream: 'ALLOW',
|
|
210
|
-
},
|
|
211
|
-
}),
|
|
212
|
-
),
|
|
213
|
-
);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
private async ensureDomain() {
|
|
218
|
-
if (await this.domainExists()) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
await this.codeArtifact.send(
|
|
222
|
-
new CreateDomainCommand({
|
|
223
|
-
domain: this.domain,
|
|
224
|
-
tags: [{ key: 'testing', value: 'true' }],
|
|
225
|
-
}),
|
|
226
|
-
);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
private async ensureUpstreams() {
|
|
230
|
-
await this.ensureRepository(this.npmUpstream, {
|
|
231
|
-
description: 'The upstream repository for NPM',
|
|
232
|
-
external: 'public:npmjs',
|
|
233
|
-
});
|
|
234
|
-
await this.ensureRepository(this.mavenUpstream, {
|
|
235
|
-
description: 'The upstream repository for Maven',
|
|
236
|
-
external: 'public:maven-central',
|
|
237
|
-
});
|
|
238
|
-
await this.ensureRepository(this.nugetUpstream, {
|
|
239
|
-
description: 'The upstream repository for NuGet',
|
|
240
|
-
external: 'public:nuget-org',
|
|
241
|
-
});
|
|
242
|
-
await this.ensureRepository(this.pypiUpstream, {
|
|
243
|
-
description: 'The upstream repository for PyPI',
|
|
244
|
-
external: 'public:pypi',
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
private async ensureRepository(
|
|
249
|
-
name: string,
|
|
250
|
-
options?: {
|
|
251
|
-
readonly description?: string;
|
|
252
|
-
readonly external?: string;
|
|
253
|
-
readonly upstreams?: string[];
|
|
254
|
-
readonly tags?: Record<string, string>;
|
|
255
|
-
},
|
|
256
|
-
) {
|
|
257
|
-
if (await this.repositoryExists(name)) {
|
|
258
|
-
return;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
await this.codeArtifact.send(
|
|
262
|
-
new CreateRepositoryCommand({
|
|
263
|
-
domain: this.domain,
|
|
264
|
-
repository: name,
|
|
265
|
-
description: options?.description,
|
|
266
|
-
upstreams: options?.upstreams?.map((repositoryName) => ({ repositoryName })),
|
|
267
|
-
tags: options?.tags ? Object.entries(options.tags).map(([key, value]) => ({ key, value })) : undefined,
|
|
268
|
-
}),
|
|
269
|
-
);
|
|
270
|
-
|
|
271
|
-
if (options?.external) {
|
|
272
|
-
const externalConnection = options.external;
|
|
273
|
-
await retry(() =>
|
|
274
|
-
this.codeArtifact.send(
|
|
275
|
-
new AssociateExternalConnectionCommand({
|
|
276
|
-
domain: this.domain,
|
|
277
|
-
repository: name,
|
|
278
|
-
externalConnection,
|
|
279
|
-
}),
|
|
280
|
-
),
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
private async domainExists() {
|
|
286
|
-
try {
|
|
287
|
-
await this.codeArtifact.send(new DescribeDomainCommand({ domain: this.domain }));
|
|
288
|
-
return true;
|
|
289
|
-
} catch (e: any) {
|
|
290
|
-
if (e.name !== 'ResourceNotFoundException') {
|
|
291
|
-
throw e;
|
|
292
|
-
}
|
|
293
|
-
return false;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
private async repositoryExists(name: string) {
|
|
298
|
-
try {
|
|
299
|
-
await this.codeArtifact.send(new DescribeRepositoryCommand({ domain: this.domain, repository: name }));
|
|
300
|
-
return true;
|
|
301
|
-
} catch (e: any) {
|
|
302
|
-
if (e.name !== 'ResourceNotFoundException') {
|
|
303
|
-
throw e;
|
|
304
|
-
}
|
|
305
|
-
return false;
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
private async *listPackages(filter: Pick<ListPackagesRequest, 'upstream' | 'publish' | 'format'> = {}) {
|
|
310
|
-
let response = await retryThrottled(() =>
|
|
311
|
-
this.codeArtifact.send(
|
|
312
|
-
new ListPackagesCommand({
|
|
313
|
-
domain: this.domain,
|
|
314
|
-
repository: this.repositoryName,
|
|
315
|
-
...filter,
|
|
316
|
-
}),
|
|
317
|
-
),
|
|
318
|
-
);
|
|
319
|
-
|
|
320
|
-
while (true) {
|
|
321
|
-
for (const p of response.packages ?? []) {
|
|
322
|
-
yield p;
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
if (!response.nextToken) {
|
|
326
|
-
break;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
response = await retryThrottled(() =>
|
|
330
|
-
this.codeArtifact.send(
|
|
331
|
-
new ListPackagesCommand({
|
|
332
|
-
domain: this.domain,
|
|
333
|
-
repository: this.repositoryName,
|
|
334
|
-
...filter,
|
|
335
|
-
nextToken: response.nextToken,
|
|
336
|
-
}),
|
|
337
|
-
),
|
|
338
|
-
);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
async function retry<A>(block: () => Promise<A>) {
|
|
344
|
-
let attempts = 3;
|
|
345
|
-
while (true) {
|
|
346
|
-
try {
|
|
347
|
-
return await block();
|
|
348
|
-
} catch (e: any) {
|
|
349
|
-
if (attempts-- === 0) {
|
|
350
|
-
throw e;
|
|
351
|
-
}
|
|
352
|
-
// eslint-disable-next-line no-console
|
|
353
|
-
console.debug(e.message);
|
|
354
|
-
await sleep(500);
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
async function retryThrottled<A>(block: () => Promise<A>) {
|
|
360
|
-
let time = 100;
|
|
361
|
-
let attempts = 15;
|
|
362
|
-
while (true) {
|
|
363
|
-
try {
|
|
364
|
-
return await block();
|
|
365
|
-
} catch (e: any) {
|
|
366
|
-
// eslint-disable-next-line no-console
|
|
367
|
-
console.debug(e.message);
|
|
368
|
-
if (e.name !== 'ThrottlingException') {
|
|
369
|
-
throw e;
|
|
370
|
-
}
|
|
371
|
-
if (attempts-- === 0) {
|
|
372
|
-
throw e;
|
|
373
|
-
}
|
|
374
|
-
await sleep(Math.floor(Math.random() * time));
|
|
375
|
-
time *= 2;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
export interface LoginInformation {
|
|
381
|
-
readonly authToken: string;
|
|
382
|
-
readonly repositoryName: string;
|
|
383
|
-
readonly npmEndpoint: string;
|
|
384
|
-
readonly mavenEndpoint: string;
|
|
385
|
-
readonly nugetEndpoint: string;
|
|
386
|
-
readonly pypiEndpoint: string;
|
|
387
|
-
}
|
package/lib/staging/maven.ts
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { pathExists } from 'fs-extra';
|
|
4
|
-
import { LoginInformation } from './codeartifact';
|
|
5
|
-
import { parallelShell } from './parallel-shell';
|
|
6
|
-
import { UsageDir } from './usage-dir';
|
|
7
|
-
import { writeFile } from '../files';
|
|
8
|
-
import { shell } from '../shell';
|
|
9
|
-
|
|
10
|
-
// Do not try to JIT the Maven binary
|
|
11
|
-
const NO_JIT = '-XX:+TieredCompilation -XX:TieredStopAtLevel=1';
|
|
12
|
-
|
|
13
|
-
export async function mavenLogin(login: LoginInformation, usageDir: UsageDir) {
|
|
14
|
-
await writeMavenSettingsFile(settingsFile(usageDir), login);
|
|
15
|
-
|
|
16
|
-
// Write env var
|
|
17
|
-
// Twiddle JVM settings a bit to make Maven survive running on a CodeBuild box.
|
|
18
|
-
await usageDir.addToEnv({
|
|
19
|
-
MAVEN_OPTS: `-Duser.home=${usageDir.directory} ${NO_JIT} ${process.env.MAVEN_OPTS ?? ''}`.trim(),
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
function settingsFile(usageDir: UsageDir) {
|
|
24
|
-
// If we configure usageDir as a fake home directory Maven will find this file.
|
|
25
|
-
// (No other way to configure the settings file as part of the environment).
|
|
26
|
-
return path.join(usageDir.directory, '.m2', 'settings.xml');
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export async function uploadJavaPackages(packages: string[], login: LoginInformation, usageDir: UsageDir) {
|
|
30
|
-
await parallelShell(packages, async (pkg, output) => {
|
|
31
|
-
console.log(`⏳ ${pkg}`);
|
|
32
|
-
|
|
33
|
-
const sourcesFile = pkg.replace(/.pom$/, '-sources.jar');
|
|
34
|
-
const javadocFile = pkg.replace(/.pom$/, '-javadoc.jar');
|
|
35
|
-
|
|
36
|
-
await shell(['mvn',
|
|
37
|
-
`--settings=${settingsFile(usageDir)}`,
|
|
38
|
-
'org.apache.maven.plugins:maven-deploy-plugin:3.0.0:deploy-file',
|
|
39
|
-
`-Durl=${login.mavenEndpoint}`,
|
|
40
|
-
'-DrepositoryId=codeartifact',
|
|
41
|
-
`-DpomFile=${pkg}`,
|
|
42
|
-
`-Dfile=${pkg.replace(/.pom$/, '.jar')}`,
|
|
43
|
-
...await pathExists(sourcesFile) ? [`-Dsources=${sourcesFile}`] : [],
|
|
44
|
-
...await pathExists(javadocFile) ? [`-Djavadoc=${javadocFile}`] : []], {
|
|
45
|
-
outputs: [output],
|
|
46
|
-
modEnv: {
|
|
47
|
-
// Do not try to JIT the Maven binary
|
|
48
|
-
MAVEN_OPTS: `${NO_JIT} ${process.env.MAVEN_OPTS ?? ''}`.trim(),
|
|
49
|
-
},
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
console.log(`✅ ${pkg}`);
|
|
53
|
-
},
|
|
54
|
-
(pkg, output) => {
|
|
55
|
-
if (output.toString().includes('409 Conflict')) {
|
|
56
|
-
console.log(`❌ ${pkg}: already exists. Skipped.`);
|
|
57
|
-
return 'skip';
|
|
58
|
-
}
|
|
59
|
-
if (output.toString().includes('Too Many Requests')) {
|
|
60
|
-
console.log(`♻️ ${pkg}: Too many requests. Retrying.`);
|
|
61
|
-
return 'retry';
|
|
62
|
-
}
|
|
63
|
-
return 'fail';
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export async function writeMavenSettingsFile(filename: string, login: LoginInformation) {
|
|
68
|
-
await writeFile(filename, `<?xml version="1.0" encoding="UTF-8" ?>
|
|
69
|
-
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
|
70
|
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
71
|
-
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
|
72
|
-
http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
|
73
|
-
<servers>
|
|
74
|
-
<server>
|
|
75
|
-
<id>codeartifact</id>
|
|
76
|
-
<username>aws</username>
|
|
77
|
-
<password>${login.authToken}</password>
|
|
78
|
-
</server>
|
|
79
|
-
</servers>
|
|
80
|
-
<profiles>
|
|
81
|
-
<profile>
|
|
82
|
-
<id>default</id>
|
|
83
|
-
<repositories>
|
|
84
|
-
<repository>
|
|
85
|
-
<id>codeartifact</id>
|
|
86
|
-
<url>${login.mavenEndpoint}</url>
|
|
87
|
-
</repository>
|
|
88
|
-
</repositories>
|
|
89
|
-
</profile>
|
|
90
|
-
</profiles>
|
|
91
|
-
<activeProfiles>
|
|
92
|
-
<activeProfile>default</activeProfile>
|
|
93
|
-
</activeProfiles>
|
|
94
|
-
</settings>`);
|
|
95
|
-
}
|
package/lib/staging/npm.ts
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import * as path from 'path';
|
|
3
|
-
import { LoginInformation } from './codeartifact';
|
|
4
|
-
import { parallelShell } from './parallel-shell';
|
|
5
|
-
import { UsageDir } from './usage-dir';
|
|
6
|
-
import { updateIniKey, loadLines, writeLines } from '../files';
|
|
7
|
-
import { shell } from '../shell';
|
|
8
|
-
|
|
9
|
-
export async function npmLogin(login: LoginInformation, usageDir: UsageDir) {
|
|
10
|
-
// Creating an ~/.npmrc that references an envvar is what you're supposed to do. (https://docs.npmjs.com/private-modules/ci-server-config)
|
|
11
|
-
await writeNpmLoginToken(usageDir, login.npmEndpoint, '${NPM_TOKEN}');
|
|
12
|
-
|
|
13
|
-
// Add variables to env file
|
|
14
|
-
await usageDir.addToEnv(npmEnv(usageDir, login));
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function npmEnv(usageDir: UsageDir, login: LoginInformation) {
|
|
18
|
-
return {
|
|
19
|
-
npm_config_userconfig: path.join(usageDir.directory, '.npmrc'),
|
|
20
|
-
npm_config_registry: login.npmEndpoint,
|
|
21
|
-
npm_config_always_auth: 'true', // Necessary for NPM 6, otherwise it will sometimes not pass the token
|
|
22
|
-
NPM_TOKEN: login.authToken,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function uploadNpmPackages(packages: string[], login: LoginInformation, usageDir: UsageDir) {
|
|
27
|
-
await parallelShell(packages, async (pkg, output) => {
|
|
28
|
-
console.log(`⏳ ${pkg}`);
|
|
29
|
-
|
|
30
|
-
// path.resolve() is required -- if the filename ends up looking like `js/bla.tgz` then NPM thinks it's a short form GitHub name.
|
|
31
|
-
await shell(['node', require.resolve('npm'), 'publish', path.resolve(pkg)], {
|
|
32
|
-
modEnv: npmEnv(usageDir, login),
|
|
33
|
-
show: 'error',
|
|
34
|
-
outputs: [output],
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
console.log(`✅ ${pkg}`);
|
|
38
|
-
}, (pkg, output) => {
|
|
39
|
-
if (output.toString().includes('code EPUBLISHCONFLICT')) {
|
|
40
|
-
console.log(`❌ ${pkg}: already exists. Skipped.`);
|
|
41
|
-
return 'skip';
|
|
42
|
-
}
|
|
43
|
-
if (output.toString().includes('code EPRIVATE')) {
|
|
44
|
-
console.log(`❌ ${pkg}: is private. Skipped.`);
|
|
45
|
-
return 'skip';
|
|
46
|
-
}
|
|
47
|
-
return 'fail';
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async function writeNpmLoginToken(usageDir: UsageDir, endpoint: string, token: string) {
|
|
52
|
-
const rcFile = path.join(usageDir.directory, '.npmrc');
|
|
53
|
-
const lines = await loadLines(rcFile);
|
|
54
|
-
|
|
55
|
-
const key = `${endpoint.replace(/^https:/, '')}:_authToken`;
|
|
56
|
-
updateIniKey(lines, key, token);
|
|
57
|
-
|
|
58
|
-
await writeLines(rcFile, lines);
|
|
59
|
-
return rcFile;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Environment variable, .npmrc in same directory as package.json or in home dir
|
package/lib/staging/nuget.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-console */
|
|
2
|
-
import { LoginInformation } from './codeartifact';
|
|
3
|
-
import { parallelShell } from './parallel-shell';
|
|
4
|
-
import { UsageDir } from './usage-dir';
|
|
5
|
-
import { writeFile } from '../files';
|
|
6
|
-
import { shell } from '../shell';
|
|
7
|
-
|
|
8
|
-
export async function nugetLogin(login: LoginInformation, usageDir: UsageDir) {
|
|
9
|
-
// NuGet.Config MUST live in the current directory or in the home directory, and there is no environment
|
|
10
|
-
// variable to configure its location.
|
|
11
|
-
await writeNuGetConfigFile(usageDir.cwdFile('NuGet.Config'), login);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function uploadDotnetPackages(packages: string[], usageDir: UsageDir) {
|
|
15
|
-
await usageDir.copyCwdFileHere('NuGet.Config');
|
|
16
|
-
|
|
17
|
-
await parallelShell(packages, async (pkg, output) => {
|
|
18
|
-
console.log(`⏳ ${pkg}`);
|
|
19
|
-
|
|
20
|
-
await shell(['dotnet', 'nuget', 'push',
|
|
21
|
-
pkg,
|
|
22
|
-
'--source', 'CodeArtifact',
|
|
23
|
-
'--no-symbols',
|
|
24
|
-
'--force-english-output',
|
|
25
|
-
'--disable-buffering',
|
|
26
|
-
'--timeout', '600',
|
|
27
|
-
'--skip-duplicate'], {
|
|
28
|
-
outputs: [output],
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
console.log(`✅ ${pkg}`);
|
|
32
|
-
},
|
|
33
|
-
(pkg, output) => {
|
|
34
|
-
if (output.toString().includes('Conflict')) {
|
|
35
|
-
console.log(`❌ ${pkg}: already exists. Skipped.`);
|
|
36
|
-
return 'skip';
|
|
37
|
-
}
|
|
38
|
-
if (output.includes('System.Threading.AbandonedMutexException')) {
|
|
39
|
-
console.log(`♻️ ${pkg}: AbandonedMutexException. Probably a sign of throttling, retrying.`);
|
|
40
|
-
return 'retry';
|
|
41
|
-
}
|
|
42
|
-
if (output.includes('Too Many Requests')) {
|
|
43
|
-
console.log(`♻️ ${pkg}: Too many requests. Retrying.`);
|
|
44
|
-
return 'retry';
|
|
45
|
-
}
|
|
46
|
-
if (output.includes('System.IO.IOException: The system cannot open the device or file specified.')) {
|
|
47
|
-
console.log(`♻️ ${pkg}: Some error that we've seen before as a result of throttling. Retrying.`);
|
|
48
|
-
return 'retry';
|
|
49
|
-
}
|
|
50
|
-
return 'fail';
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
async function writeNuGetConfigFile(filename: string, login: LoginInformation) {
|
|
55
|
-
// `dotnet nuget push` has an `--api-key` parameter, but CodeArtifact
|
|
56
|
-
// does not support that. We must authenticate with Basic auth.
|
|
57
|
-
await writeFile(filename, `<?xml version="1.0" encoding="utf-8"?>
|
|
58
|
-
<configuration>
|
|
59
|
-
<packageSources>
|
|
60
|
-
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
|
61
|
-
<add key="CodeArtifact" value="${login.nugetEndpoint}v3/index.json" />
|
|
62
|
-
</packageSources>
|
|
63
|
-
<activePackageSource>
|
|
64
|
-
<add key="CodeArtifact" value="${login.nugetEndpoint}v3/index.json" />
|
|
65
|
-
</activePackageSource>
|
|
66
|
-
<packageSourceCredentials>
|
|
67
|
-
<CodeArtifact>
|
|
68
|
-
<add key="Username" value="aws" />
|
|
69
|
-
<add key="ClearTextPassword" value="${login.authToken}" />
|
|
70
|
-
</CodeArtifact>
|
|
71
|
-
</packageSourceCredentials>
|
|
72
|
-
</configuration>`);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
// NuGet.Config in current directory
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import PQueue from 'p-queue';
|
|
2
|
-
import { sleep } from '../aws';
|
|
3
|
-
import { MemoryStream } from '../corking';
|
|
4
|
-
|
|
5
|
-
export type ErrorResponse = 'fail' | 'skip' | 'retry';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Run a function in parallel with cached output
|
|
9
|
-
*/
|
|
10
|
-
export async function parallelShell<A>(
|
|
11
|
-
inputs: A[],
|
|
12
|
-
block: (x: A, output: NodeJS.WritableStream) => Promise<void>,
|
|
13
|
-
swallowError?: (x: A, output: string) => ErrorResponse,
|
|
14
|
-
) {
|
|
15
|
-
// Limit to 10 for now, too many instances of Maven exhaust the CodeBuild instance memory
|
|
16
|
-
const q = new PQueue({ concurrency: Number(process.env.CONCURRENCY) || 10 });
|
|
17
|
-
await q.addAll(inputs.map(input => async () => {
|
|
18
|
-
let attempts = 10;
|
|
19
|
-
let sleepMs = 500;
|
|
20
|
-
while (true) {
|
|
21
|
-
const output = new MemoryStream();
|
|
22
|
-
try {
|
|
23
|
-
await block(input, output);
|
|
24
|
-
return;
|
|
25
|
-
} catch (e) {
|
|
26
|
-
switch (swallowError?.(input, output.toString())) {
|
|
27
|
-
case 'skip':
|
|
28
|
-
return;
|
|
29
|
-
|
|
30
|
-
case 'retry':
|
|
31
|
-
if (--attempts > 0) {
|
|
32
|
-
await sleep(Math.floor(Math.random() * sleepMs));
|
|
33
|
-
sleepMs *= 2;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
break;
|
|
37
|
-
|
|
38
|
-
case 'fail':
|
|
39
|
-
case undefined:
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// eslint-disable-next-line no-console
|
|
44
|
-
console.error(output.toString());
|
|
45
|
-
throw e;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}));
|
|
49
|
-
|
|
50
|
-
await q.onEmpty();
|
|
51
|
-
}
|