version: 0.2 #this buildspec assumes the aws-common-runtime/ubuntu-16.04 image # This job is responsible for artifacting the JAR which will have all of the other shared libs stuffed # into it once all platforms are built and artifacted phases: install: commands: - sudo add-apt-repository ppa:openjdk-r/ppa - sudo apt-get update -y - sudo apt-get install openjdk-11-jdk-headless maven wget unzip -y -f # install android sdk - wget --quiet https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip - export ANDROID_SDK_ROOT=$CODEBUILD_SRC_DIR/android-sdk - mkdir -p $ANDROID_SDK_ROOT/cmdline-tools - unzip commandlinetools-linux-7583922_latest.zip -d $ANDROID_SDK_ROOT/cmdline-tools # This weird path needed for cmd tool to work - mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest # install android build tools - echo y | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "build-tools;30.0.3" "platforms;android-30" "ndk;21.4.7075529" pre_build: commands: - cd $CODEBUILD_SRC_DIR/aws-crt-java - export PKG_VERSION=$(git describe --tags | cut -f2 -dv) - echo $PKG_VERSION - mkdir -p target/cmake-build/lib # mv all the platform-specific jars to target/ - aws s3 cp --recursive s3://aws-crt-java-pipeline/v${PKG_VERSION}/jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ - mv $CODEBUILD_SRC_DIR_linux_x64/dist/aws-crt-1.0.0-SNAPSHOT-linux-x86_64.jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ - mv $CODEBUILD_SRC_DIR_linux_x86/dist/aws-crt-1.0.0-SNAPSHOT-linux-x86_32.jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ # cp all the shared libs to cmake-build - aws s3 cp --recursive s3://aws-crt-java-pipeline/v${PKG_VERSION}/lib $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/lib - cp -rv $CODEBUILD_SRC_DIR_linux_x64/dist/* $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/ - cp -rv $CODEBUILD_SRC_DIR_linux_x86/dist/* $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/ - ls -alR $CODEBUILD_SRC_DIR/aws-crt-java/target # install settings.xml to ~/.m2/settings.xml - mkdir -p $HOME/.m2 - aws s3 cp s3://code-sharing-aws-crt/aws-crt-java.settings.xml $HOME/.m2/settings.xml # import gpg key - aws s3 cp s3://code-sharing-aws-crt/aws-sdk-common-runtime.key.asc /tmp/aws-sdk-common-runtime.key.asc - gpg --import /tmp/aws-sdk-common-runtime.key.asc - export GPG_PASSPHRASE=$(aws --query "SecretString" secretsmanager get-secret-value --secret-id aws-sdk-common-runtime.key.asc/password | cut -f2 -d":" | sed -e 's/[\\\"\}]//g') - export ST_PASSWORD=$(aws --query "SecretString" secretsmanager get-secret-value --secret-id Sonatype/JIRA/Password | cut -f2 -d":" | sed -e 's/[\\\"\}]//g') # Use the password from secret manager to update the settings - sed -i 's/password-to-replace/'"$ST_PASSWORD"'/g' $HOME/.m2/settings.xml build: commands: - cd $CODEBUILD_SRC_DIR/aws-crt-java # update the version to match the git tag, make a snapshot version we can test - export DEPLOY_VERSION=${PKG_VERSION}-SNAPSHOT - mvn -B versions:set -DnewVersion=${DEPLOY_VERSION} # do a full build/deploy, but skip shared libs and tests, since the shared libs were artifacts above - mvn -B deploy -Prelease -Dshared-lib.skip=true -Dmaven.test.skip=true -Dgpg.passphrase=$GPG_PASSPHRASE - bash ./codebuild/cd/deploy-platform-specific-jars.sh # update the version to match the git tag, make a staging release which we will release once snapshot testing passes - export DEPLOY_VERSION=${PKG_VERSION} - mvn -B versions:set -DnewVersion=${DEPLOY_VERSION} - mvn -B deploy -Prelease -Dshared-lib.skip=true -Dmaven.test.skip=true -Dgpg.passphrase=$GPG_PASSPHRASE | tee /tmp/deploy.log - export STAGING_REPO_ID=$(cat /tmp/deploy.log | grep "Created staging repository with ID" | cut -d\" -f2 | tee /tmp/repositoryId.txt) # upload the platform specific jars to staging repo and close the staging repo. - bash ./codebuild/cd/deploy-platform-specific-jars.sh - mvn nexus-staging:close -Prelease -DstagingRepositoryId=$STAGING_REPO_ID # deploy android - ./codebuild/cd/deploy-snapshot-android.sh post_build: commands: artifacts: discard-paths: yes files: - $CODEBUILD_SRC_DIR/aws-crt-java/target/aws-crt-*.jar - $CODEBUILD_SRC_DIR/aws-crt-java/target/aws-crt-*.asc - /tmp/repositoryId.txt - /tmp/android_repositoryId.txt cache: paths: - "/root/.m2/**/*"