|
| 1 | +version: 0.2 |
| 2 | + |
| 3 | +phases: |
| 4 | + install: |
| 5 | + commands: |
| 6 | + - pip install awscli --upgrade --user |
| 7 | + |
| 8 | + pre_build: |
| 9 | + commands: |
| 10 | + - ROOT=`pwd` |
| 11 | + - SETTINGS_XML_TEMPLATE=buildspecs/resources/maven-central-release-settings.xml |
| 12 | + - SETTINGS_XML=release-settings-final.xml |
| 13 | + - SDK_SIGNING_GPG_SECRING=secring.gpg |
| 14 | + - SDK_SIGNING_GPG_SECRING_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-secret-ring-9d0YXc" |
| 15 | + - SDK_SIGNING_GPG_KEYNAME_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-keyname-wFsOOg" |
| 16 | + - SDK_SIGNING_GPG_PASSPHRASE_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:sdk-signing-gpg-passphrase-A0H1Kq" |
| 17 | + - SONATYPE_PASSWORD_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:maven-central-publishing-password-yktnUc" |
| 18 | + - SONATYPE_USERNAME_ARN="arn:aws:secretsmanager:us-east-1:103431983078:secret:maven-central-publishing-username-RDvOnW" |
| 19 | + - MODULES_TO_SKIP="protocol-tests,protocol-tests-core,codegen-generated-classes-test,sdk-benchmarks,module-path-tests,tests-coverage-reporting,stability-tests,sdk-native-image-test,auth-tests,s3-benchmarks,http-client-benchmarks,region-testing,old-client-version-compatibility-test,crt-unavailable-tests,bundle-shading-tests,v2-migration-tests,architecture-tests,s3-tests" |
| 20 | + |
| 21 | + build: |
| 22 | + commands: |
| 23 | + - RELEASE_VERSION=`mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec` |
| 24 | + - ARTIFACT_URL="https://repo1.maven.org/maven2/software/amazon/awssdk/aws-sdk-java/$RELEASE_VERSION/" |
| 25 | + - | |
| 26 | + if ! curl -f --head $ARTIFACT_URL; then |
| 27 | + SONATYPE_USERNAME=`aws secretsmanager get-secret-value --secret-id $SONATYPE_USERNAME_ARN --query SecretString --output text` |
| 28 | + SONATYPE_PASSWORD=`aws secretsmanager get-secret-value --secret-id $SONATYPE_PASSWORD_ARN --query SecretString --output text` |
| 29 | + SDK_SIGNING_GPG_KEYNAME=`aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_KEYNAME_ARN --query SecretString --output text` |
| 30 | + SDK_SIGNING_GPG_PASSPHRASE=`aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_PASSPHRASE_ARN --query SecretString --output text` |
| 31 | + aws secretsmanager get-secret-value --secret-id $SDK_SIGNING_GPG_SECRING_ARN --query SecretBinary --output text | base64 -d > $SDK_SIGNING_GPG_SECRING |
| 32 | + gpg --passphrase $SDK_SIGNING_GPG_PASSPHRASE --batch --import $SDK_SIGNING_GPG_SECRING |
| 33 | +
|
| 34 | + cat $SETTINGS_XML_TEMPLATE | \ |
| 35 | + awk 'BEGIN { var=ENVIRON["SONATYPE_USERNAME"] } { gsub("\\$SONATYPE_USERNAME", var, $0); print }' | \ |
| 36 | + awk 'BEGIN { var=ENVIRON["SONATYPE_PASSWORD"] } { gsub("\\$SONATYPE_PASSWORD", var, $0); print }' | \ |
| 37 | + awk 'BEGIN { var=ENVIRON["SDK_SIGNING_GPG_PASSPHRASE"] } { gsub("\\$SDK_SIGNING_GPG_PASSPHRASE", var, $0); print }' | \ |
| 38 | + awk 'BEGIN { var=ENVIRON["SDK_SIGNING_GPG_KEYNAME"] } { gsub("\\$SDK_SIGNING_GPG_KEYNAME", var, $0); print }' > \ |
| 39 | + $SETTINGS_XML |
| 40 | +
|
| 41 | + # Convert comma-separated list to space-separated list with !: prefix for each module |
| 42 | + MODULES_TO_SKIP_FORMATTED=$(echo $MODULES_TO_SKIP | sed 's/,/,!:/g' | sed 's/^/!:/') |
| 43 | + |
| 44 | + mvn clean deploy -B -s $SETTINGS_XML -Pcentral-portal-publishing -DperformRelease -DautoPublish=true -DdeploymentName="software.amazon.awssdk-$RELEASE_VERSION" -Dspotbugs.skip -DskipTests -Dcheckstyle.skip -Djapicmp.skip -Ddoclint=none -DstagingProgressTimeoutMinutes=30 -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.requestSentEnabled=true -pl $MODULES_TO_SKIP_FORMATTED |
| 45 | +
|
| 46 | + # Report staging folder size to CloudWatch |
| 47 | + if [ -d "target/central-staging" ]; then |
| 48 | + STAGING_SIZE_MB=$(du -sm target/central-staging | cut -f1) |
| 49 | + aws cloudwatch put-metric-data \ |
| 50 | + --namespace "AwsJavaSdkRelease" \ |
| 51 | + --metric-data "MetricName=StagingFolderSize,Value=$STAGING_SIZE_MB,Unit=Megabytes" |
| 52 | + else |
| 53 | + echo "Staging folder target/central-staging not found" |
| 54 | + fi |
| 55 | + else |
| 56 | + echo "This version was already released." |
| 57 | + fi |
0 commit comments