diff --git a/codebuild/release/release-prod.yml b/codebuild/release/release-prod.yml index 451a200bf..9699c27a8 100644 --- a/codebuild/release/release-prod.yml +++ b/codebuild/release/release-prod.yml @@ -1,3 +1,6 @@ +## Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +## SPDX-License-Identifier: Apache-2.0 + version: 0.2 env: @@ -13,13 +16,7 @@ phases: java: openjdk11 pre_build: commands: - - git checkout $COMMIT_ID - - FOUND_VERSION=$(grep version pom.xml | head -n 1 | sed -n 's/[ \t]*\(.*\)<\/version>/\1/p') - - | - if expr ${FOUND_VERSION} != ${VERSION}; then - echo "pom.xml version (${FOUND_VERSION}) does not match expected version (${VERSION}), stopping" - exit 1; - fi + - export VERSION=$(grep version pom.xml | head -n 1 | sed -n 's/[ \t]*\(.*\)<\/version>/\1/p') - export SETTINGS_FILE=$(pwd)/codebuild/release/settings.xml - aws secretsmanager get-secret-value --region us-west-2 --secret-id Maven-GPG-Keys --query SecretBinary --output text | base64 -d > ~/mvn_gpg.tgz - tar -xvf ~/mvn_gpg.tgz -C ~ @@ -38,45 +35,4 @@ phases: -Dsonatype.password="$SONA_PASSWORD" \ --no-transfer-progress \ -s $SETTINGS_FILE - - -batch: - fast-fail: false - build-graph: - - identifier: release_to_prod - - identifier: validate_prod_release_openjdk8 - depend-on: - - release_to_prod - buildspec: codebuild/release/validate-prod.yml - env: - variables: - JAVA_ENV_VERSION: openjdk8 - JAVA_NUMERIC_VERSION: 8 - image: aws/codebuild/standard:3.0 - - identifier: validate_prod_release_openjdk11 - depend-on: - - release_to_prod - buildspec: codebuild/release/validate-prod.yml - env: - variables: - JAVA_ENV_VERSION: openjdk11 - JAVA_NUMERIC_VERSION: 11 - image: aws/codebuild/standard:3.0 - - identifier: validate_prod_release_corretto8 - depend-on: - - release_to_prod - buildspec: codebuild/release/validate-prod.yml - env: - variables: - JAVA_ENV_VERSION: corretto8 - JAVA_NUMERIC_VERSION: 8 - image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 - - identifier: validate_prod_release_corretto11 - depend-on: - - release_to_prod - buildspec: codebuild/release/validate-prod.yml - env: - variables: - JAVA_ENV_VERSION: corretto11 - JAVA_NUMERIC_VERSION: 11 - image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 + - ./look_4_version.sh $VERSION diff --git a/codebuild/release/release-staging.yml b/codebuild/release/release-staging.yml index 4ab16d9b5..f6a00238b 100644 --- a/codebuild/release/release-staging.yml +++ b/codebuild/release/release-staging.yml @@ -1,3 +1,6 @@ +## Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +## SPDX-License-Identifier: Apache-2.0 + version: 0.2 env: @@ -14,16 +17,9 @@ env: phases: install: runtime-versions: - java: openjdk11 + java: corretto11 pre_build: commands: - - git checkout $COMMIT_ID - - FOUND_VERSION=$(grep version pom.xml | head -n 1 | sed -n 's/[ \t]*\(.*\)<\/version>/\1/p') - - | - if expr ${FOUND_VERSION} != ${VERSION}; then - echo "pom.xml version (${FOUND_VERSION}) does not match expected version (${VERSION}), stopping" - exit 1; - fi - export SETTINGS_FILE=$(pwd)/codebuild/release/settings.xml - export CODEARTIFACT_TOKEN=$(aws codeartifact get-authorization-token --domain $DOMAIN --domain-owner $ACCOUNT --query authorizationToken --output text --region ${REGION}) - export CODEARTIFACT_REPO_URL=https://${DOMAIN}-${ACCOUNT}.d.codeartifact.${REGION}.amazonaws.com/maven/${REPOSITORY} @@ -31,6 +27,11 @@ phases: - tar -xvf ~/mvn_gpg.tgz -C ~ build: commands: + - VERSION_HASH="$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)-$CODEBUILD_RESOLVED_SOURCE_VERSION" +# See https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html + - echo "Setting version in POM to $VERSION_HASH" + - mvn versions:set -DnewVersion="$VERSION_HASH" --no-transfer-progress + - echo "Version is now $(grep version pom.xml | head -n 1 | sed -n 's/[ \t]*\(.*\)<\/version>/\1/p')" - | mvn deploy \ -PpublishingCodeArtifact \ @@ -44,44 +45,3 @@ phases: -DaltDeploymentRepository=codeartifact::default::$CODEARTIFACT_REPO_URL \ --no-transfer-progress \ -s $SETTINGS_FILE - -batch: - fast-fail: false - build-graph: - - identifier: release_to_staging - - identifier: validate_staging_release_openjdk8 - depend-on: - - release_to_staging - buildspec: codebuild/release/validate-staging.yml - env: - variables: - JAVA_ENV_VERSION: openjdk8 - JAVA_NUMERIC_VERSION: 8 - image: aws/codebuild/standard:3.0 - - identifier: validate_staging_release_openjdk11 - depend-on: - - release_to_staging - buildspec: codebuild/release/validate-staging.yml - env: - variables: - JAVA_ENV_VERSION: openjdk11 - JAVA_NUMERIC_VERSION: 11 - image: aws/codebuild/standard:3.0 - - identifier: validate_staging_release_corretto8 - depend-on: - - release_to_staging - buildspec: codebuild/release/validate-staging.yml - env: - variables: - JAVA_ENV_VERSION: corretto8 - JAVA_NUMERIC_VERSION: 8 - image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 - - identifier: validate_staging_release_corretto11 - depend-on: - - release_to_staging - buildspec: codebuild/release/validate-staging.yml - env: - variables: - JAVA_ENV_VERSION: corretto11 - JAVA_NUMERIC_VERSION: 11 - image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 diff --git a/codebuild/release/release.yml b/codebuild/release/release.yml new file mode 100644 index 000000000..3c53df696 --- /dev/null +++ b/codebuild/release/release.yml @@ -0,0 +1,112 @@ +## Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +## SPDX-License-Identifier: Apache-2.0 + +version: 0.2 + +batch: + fast-fail: true + build-graph: + +# Release to CodeArtifact + - identifier: release_staging + buildspec: codebuild/release/release-staging.yml + +# Validate CodeArtifact with supported JDK and Corretto + - identifier: validate_staging_release_openjdk_8 + depend-on: + - release_staging + buildspec: codebuild/release/validate-staging.yml + env: + variables: + JAVA_ENV_VERSION: openjdk8 + JAVA_NUMERIC_VERSION: 8 + image: aws/codebuild/standard:3.0 + + - identifier: validate_staging_release_openjdk11 + depend-on: + - release_staging + buildspec: codebuild/release/validate-staging.yml + env: + variables: + JAVA_ENV_VERSION: openjdk11 + JAVA_NUMERIC_VERSION: 11 + image: aws/codebuild/standard:3.0 + + - identifier: validate_staging_release_corretto8 + depend-on: + - release_staging + buildspec: codebuild/release/validate-staging.yml + env: + variables: + JAVA_ENV_VERSION: corretto8 + JAVA_NUMERIC_VERSION: 8 + image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 + + - identifier: validate_staging_release_corretto11 + depend-on: + - release_staging + buildspec: codebuild/release/validate-staging.yml + env: + variables: + JAVA_ENV_VERSION: corretto11 + JAVA_NUMERIC_VERSION: 11 + image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 + +# Version Project + - identifier: version + depend-on: + - release_staging + - validate_staging_release_openjdk_8 + - validate_staging_release_openjdk11 + - validate_staging_release_corretto8 + - validate_staging_release_corretto11 + buildspec: codebuild/release/version.yml + env: + image: aws/codebuild/standard:5.0 + +# Publish to Maven Central + - identifier: publish + depend-on: + - version + buildspec: codebuild/release/release-prod.yml + +# Validate Maven Central with supported JDK and Corretto + - identifier: validate_prod_release_openjdk_8 + depend-on: + - publish + buildspec: codebuild/release/validate-prod.yml + env: + variables: + JAVA_ENV_VERSION: openjdk8 + JAVA_NUMERIC_VERSION: 8 + image: aws/codebuild/standard:3.0 + + - identifier: validate_prod_release_openjdk11 + depend-on: + - publish + buildspec: codebuild/release/validate-prod.yml + env: + variables: + JAVA_ENV_VERSION: openjdk11 + JAVA_NUMERIC_VERSION: 11 + image: aws/codebuild/standard:3.0 + + - identifier: validate_prod_release_corretto8 + depend-on: + - publish + buildspec: codebuild/release/validate-prod.yml + env: + variables: + JAVA_ENV_VERSION: corretto8 + JAVA_NUMERIC_VERSION: 8 + image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 + + - identifier: validate_prod_release_corretto11 + depend-on: + - publish + buildspec: codebuild/release/validate-prod.yml + env: + variables: + JAVA_ENV_VERSION: corretto11 + JAVA_NUMERIC_VERSION: 11 + image: aws/codebuild/amazonlinux2-x86_64-standard:3.0 diff --git a/codebuild/release/settings.xml b/codebuild/release/settings.xml index 19587de0e..6d32af9bb 100644 --- a/codebuild/release/settings.xml +++ b/codebuild/release/settings.xml @@ -1,3 +1,7 @@ +