1*3c7ae9deSAndroid Build Coastguard Workerversion: 0.2 2*3c7ae9deSAndroid Build Coastguard Worker#this buildspec assumes the aws-common-runtime/ubuntu-16.04 image 3*3c7ae9deSAndroid Build Coastguard Worker# This job is responsible for artifacting the JAR which will have all of the other shared libs stuffed 4*3c7ae9deSAndroid Build Coastguard Worker# into it once all platforms are built and artifacted 5*3c7ae9deSAndroid Build Coastguard Workerphases: 6*3c7ae9deSAndroid Build Coastguard Worker install: 7*3c7ae9deSAndroid Build Coastguard Worker commands: 8*3c7ae9deSAndroid Build Coastguard Worker - sudo add-apt-repository ppa:openjdk-r/ppa 9*3c7ae9deSAndroid Build Coastguard Worker - sudo apt-get update -y 10*3c7ae9deSAndroid Build Coastguard Worker - sudo apt-get install openjdk-11-jdk-headless maven wget unzip -y -f 11*3c7ae9deSAndroid Build Coastguard Worker # install android sdk 12*3c7ae9deSAndroid Build Coastguard Worker - wget --quiet https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip 13*3c7ae9deSAndroid Build Coastguard Worker - export ANDROID_SDK_ROOT=$CODEBUILD_SRC_DIR/android-sdk 14*3c7ae9deSAndroid Build Coastguard Worker - mkdir -p $ANDROID_SDK_ROOT/cmdline-tools 15*3c7ae9deSAndroid Build Coastguard Worker - unzip commandlinetools-linux-7583922_latest.zip -d $ANDROID_SDK_ROOT/cmdline-tools 16*3c7ae9deSAndroid Build Coastguard Worker # This weird path needed for cmd tool to work 17*3c7ae9deSAndroid Build Coastguard Worker - mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest 18*3c7ae9deSAndroid Build Coastguard Worker # install android build tools 19*3c7ae9deSAndroid Build Coastguard Worker - echo y | $ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager --install "build-tools;30.0.3" "platforms;android-30" "ndk;21.4.7075529" 20*3c7ae9deSAndroid Build Coastguard Worker 21*3c7ae9deSAndroid Build Coastguard Worker pre_build: 22*3c7ae9deSAndroid Build Coastguard Worker commands: 23*3c7ae9deSAndroid Build Coastguard Worker - cd $CODEBUILD_SRC_DIR/aws-crt-java 24*3c7ae9deSAndroid Build Coastguard Worker - export PKG_VERSION=$(git describe --tags | cut -f2 -dv) 25*3c7ae9deSAndroid Build Coastguard Worker - echo $PKG_VERSION 26*3c7ae9deSAndroid Build Coastguard Worker - mkdir -p target/cmake-build/lib 27*3c7ae9deSAndroid Build Coastguard Worker # mv all the platform-specific jars to target/ 28*3c7ae9deSAndroid Build Coastguard Worker - aws s3 cp --recursive s3://aws-crt-java-pipeline/v${PKG_VERSION}/jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ 29*3c7ae9deSAndroid Build Coastguard Worker - mv $CODEBUILD_SRC_DIR_linux_x64/dist/aws-crt-1.0.0-SNAPSHOT-linux-x86_64.jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ 30*3c7ae9deSAndroid Build Coastguard Worker - mv $CODEBUILD_SRC_DIR_linux_x86/dist/aws-crt-1.0.0-SNAPSHOT-linux-x86_32.jar $CODEBUILD_SRC_DIR/aws-crt-java/target/ 31*3c7ae9deSAndroid Build Coastguard Worker # cp all the shared libs to cmake-build 32*3c7ae9deSAndroid Build Coastguard Worker - aws s3 cp --recursive s3://aws-crt-java-pipeline/v${PKG_VERSION}/lib $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/lib 33*3c7ae9deSAndroid Build Coastguard Worker - cp -rv $CODEBUILD_SRC_DIR_linux_x64/dist/* $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/ 34*3c7ae9deSAndroid Build Coastguard Worker - cp -rv $CODEBUILD_SRC_DIR_linux_x86/dist/* $CODEBUILD_SRC_DIR/aws-crt-java/target/cmake-build/ 35*3c7ae9deSAndroid Build Coastguard Worker - ls -alR $CODEBUILD_SRC_DIR/aws-crt-java/target 36*3c7ae9deSAndroid Build Coastguard Worker # install settings.xml to ~/.m2/settings.xml 37*3c7ae9deSAndroid Build Coastguard Worker - mkdir -p $HOME/.m2 38*3c7ae9deSAndroid Build Coastguard Worker - aws s3 cp s3://code-sharing-aws-crt/aws-crt-java.settings.xml $HOME/.m2/settings.xml 39*3c7ae9deSAndroid Build Coastguard Worker # import gpg key 40*3c7ae9deSAndroid Build Coastguard Worker - aws s3 cp s3://code-sharing-aws-crt/aws-sdk-common-runtime.key.asc /tmp/aws-sdk-common-runtime.key.asc 41*3c7ae9deSAndroid Build Coastguard Worker - gpg --import /tmp/aws-sdk-common-runtime.key.asc 42*3c7ae9deSAndroid Build Coastguard Worker - 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') 43*3c7ae9deSAndroid Build Coastguard Worker - export ST_PASSWORD=$(aws --query "SecretString" secretsmanager get-secret-value --secret-id Sonatype/JIRA/Password | cut -f2 -d":" | sed -e 's/[\\\"\}]//g') 44*3c7ae9deSAndroid Build Coastguard Worker # Use the password from secret manager to update the settings 45*3c7ae9deSAndroid Build Coastguard Worker - sed -i 's/password-to-replace/'"$ST_PASSWORD"'/g' $HOME/.m2/settings.xml 46*3c7ae9deSAndroid Build Coastguard Worker build: 47*3c7ae9deSAndroid Build Coastguard Worker commands: 48*3c7ae9deSAndroid Build Coastguard Worker - cd $CODEBUILD_SRC_DIR/aws-crt-java 49*3c7ae9deSAndroid Build Coastguard Worker # update the version to match the git tag, make a snapshot version we can test 50*3c7ae9deSAndroid Build Coastguard Worker - export DEPLOY_VERSION=${PKG_VERSION}-SNAPSHOT 51*3c7ae9deSAndroid Build Coastguard Worker - mvn -B versions:set -DnewVersion=${DEPLOY_VERSION} 52*3c7ae9deSAndroid Build Coastguard Worker # do a full build/deploy, but skip shared libs and tests, since the shared libs were artifacts above 53*3c7ae9deSAndroid Build Coastguard Worker - mvn -B deploy -Prelease -Dshared-lib.skip=true -Dmaven.test.skip=true -Dgpg.passphrase=$GPG_PASSPHRASE 54*3c7ae9deSAndroid Build Coastguard Worker - bash ./codebuild/cd/deploy-platform-specific-jars.sh 55*3c7ae9deSAndroid Build Coastguard Worker # update the version to match the git tag, make a staging release which we will release once snapshot testing passes 56*3c7ae9deSAndroid Build Coastguard Worker - export DEPLOY_VERSION=${PKG_VERSION} 57*3c7ae9deSAndroid Build Coastguard Worker - mvn -B versions:set -DnewVersion=${DEPLOY_VERSION} 58*3c7ae9deSAndroid Build Coastguard Worker - mvn -B deploy -Prelease -Dshared-lib.skip=true -Dmaven.test.skip=true -Dgpg.passphrase=$GPG_PASSPHRASE | tee /tmp/deploy.log 59*3c7ae9deSAndroid Build Coastguard Worker - export STAGING_REPO_ID=$(cat /tmp/deploy.log | grep "Created staging repository with ID" | cut -d\" -f2 | tee /tmp/repositoryId.txt) 60*3c7ae9deSAndroid Build Coastguard Worker # upload the platform specific jars to staging repo and close the staging repo. 61*3c7ae9deSAndroid Build Coastguard Worker - bash ./codebuild/cd/deploy-platform-specific-jars.sh 62*3c7ae9deSAndroid Build Coastguard Worker - mvn nexus-staging:close -Prelease -DstagingRepositoryId=$STAGING_REPO_ID 63*3c7ae9deSAndroid Build Coastguard Worker # deploy android 64*3c7ae9deSAndroid Build Coastguard Worker - ./codebuild/cd/deploy-snapshot-android.sh 65*3c7ae9deSAndroid Build Coastguard Worker post_build: 66*3c7ae9deSAndroid Build Coastguard Worker commands: 67*3c7ae9deSAndroid Build Coastguard Worker 68*3c7ae9deSAndroid Build Coastguard Workerartifacts: 69*3c7ae9deSAndroid Build Coastguard Worker discard-paths: yes 70*3c7ae9deSAndroid Build Coastguard Worker files: 71*3c7ae9deSAndroid Build Coastguard Worker - $CODEBUILD_SRC_DIR/aws-crt-java/target/aws-crt-*.jar 72*3c7ae9deSAndroid Build Coastguard Worker - $CODEBUILD_SRC_DIR/aws-crt-java/target/aws-crt-*.asc 73*3c7ae9deSAndroid Build Coastguard Worker - /tmp/repositoryId.txt 74*3c7ae9deSAndroid Build Coastguard Worker - /tmp/android_repositoryId.txt 75*3c7ae9deSAndroid Build Coastguard Worker 76*3c7ae9deSAndroid Build Coastguard Workercache: 77*3c7ae9deSAndroid Build Coastguard Worker paths: 78*3c7ae9deSAndroid Build Coastguard Worker - "/root/.m2/**/*" 79