-
Notifications
You must be signed in to change notification settings - Fork 168
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #183 from aws/pipeline
Continuous Delivery: Added scripts for Continuous Delivery and provide version stamping, Used a higher version of nexus-staging-maven-plugin to fix release issue
- Loading branch information
Showing
8 changed files
with
100 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
version: 0.2 | ||
#this buildspec assumes the ubuntu 16.04:x64 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-8-jdk-headless maven -y -f | ||
- sudo apt-get install jq -y | ||
# need latest awscli for secretsmanager | ||
- sudo pip3 install awscli --upgrade | ||
|
||
pre_build: | ||
commands: | ||
- cd $CODEBUILD_SRC_DIR/aws-iot-device-sdk-java | ||
- export PKG_VERSION=$(git describe --tags | cut -f2 -dv) | ||
- echo PKG_VERSION=$PKG_VERSION | ||
# Set version to PKG_VERSION | ||
- sed -i 's/0.0.1-dev/'"$PKG_VERSION"'/g' pom.xml | ||
- sed -i 's/0.0.1-dev/'"$PKG_VERSION"'/g' aws-iot-device-sdk-java/pom.xml | ||
- sed -i 's/0.0.1-dev/'"$PKG_VERSION"'/g' aws-iot-device-sdk-java-samples/pom.xml | ||
- sed -i 's/0.0.1-dev/'"$PKG_VERSION"'/g' aws-iot-device-sdk-java/src/main/java/com/amazonaws/services/iot/client/mqtt/AwsIotMqttConnection.java | ||
# Get java v1 gpg files | ||
- aws s3 cp --recursive s3://code-sharing-aws-crt/gpg-java-v1/ maven-gpg | ||
# manully copy the maven-gpg in subfolder, since codeBuild does not set localRepository correctly | ||
- cp -r maven-gpg aws-iot-device-sdk-java/maven-gpg | ||
- cp -r maven-gpg aws-iot-device-sdk-java-samples/maven-gpg | ||
# install settings.xml to ~/.m2/settings.xml | ||
- mkdir -p $HOME/.m2 | ||
- aws s3 cp s3://code-sharing-aws-crt/iot-sdk-java-v1.settings.xml $HOME/.m2/settings.xml | ||
- aws --query "SecretString" secretsmanager get-secret-value --secret-id Sonatype/JIRA/Password/V1 > sonatype_secret | ||
- jq fromjson sonatype_secret > sonatype_json | ||
- export ST_PASSWORD=$(jq -r '.password' sonatype_json) | ||
- export ST_USERNAME=$(jq -r '.username' sonatype_json) | ||
- aws --query "SecretString" secretsmanager get-secret-value --secret-id gpg/IoT/JAVA/V1 > gpg_secret | ||
- jq fromjson gpg_secret > gpg_json | ||
- export GPG_PRINCIPAL=$(jq -r '.username' gpg_json) | ||
- export GPG_CREDENTIAL=$(jq -r '.password' gpg_json) | ||
# Use the password from secret manager to update the settings | ||
- sed -i 's/sonatype_Principal/'"$ST_USERNAME"'/g' $HOME/.m2/settings.xml | ||
- sed -i 's/sonatype_Credential/'"$ST_PASSWORD"'/g' $HOME/.m2/settings.xml | ||
- sed -i 's/gpg_Principal/'"$GPG_PRINCIPAL"'/g' $HOME/.m2/settings.xml | ||
- sed -i 's/gpg_Credential/'"$GPG_CREDENTIAL"'/g' $HOME/.m2/settings.xml | ||
|
||
|
||
build: | ||
commands: | ||
- cd $CODEBUILD_SRC_DIR/aws-iot-device-sdk-java | ||
# Trigger the release of the last staged package in the staging repository | ||
- mvn -s $HOME/.m2/settings.xml clean package -Dmaven.test.skip=true | ||
- mvn -s $HOME/.m2/settings.xml clean deploy -P publishing -e -X | ||
- mvn -s $HOME/.m2/settings.xml nexus-staging:release -e -X | ||
|
||
cache: | ||
paths: | ||
- "/root/.m2/**/*" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/usr/bin/env bash | ||
set -e | ||
set -x | ||
# force a failure if there's no tag | ||
git describe --tags | ||
# now get the tag | ||
CURRENT_TAG=$(git describe --tags | cut -f2 -dv) | ||
# convert v0.2.12-2-g50254a9 to 0.2.12 | ||
CURRENT_TAG_VERSION=$(git describe --tags | cut -f1 -d'-' | cut -f2 -dv) | ||
# if there's a hash on the tag, then this is not a release tagged commit | ||
if [ "$CURRENT_TAG" != "$CURRENT_TAG_VERSION" ]; then | ||
echo "Current tag version is not a release tag, cut a new release if you want to publish." | ||
exit 1 | ||
fi | ||
|
||
PUBLISHED_TAG_VERSION=$(curl -s "https://repo.maven.apache.org/maven2/com/amazonaws/aws-iot-device-sdk-java/maven-metadata.xml" | grep "<latest>" | cut -f2 -d ">" | cut -f1 -d "<") | ||
if [ "$PUBLISHED_TAG_VERSION" == "$CURRENT_TAG_VERSION" ]; then | ||
echo "$CURRENT_TAG_VERSION is already in Sonatype, cut a new tag if you want to upload another version." | ||
exit 1 | ||
fi | ||
|
||
echo "$CURRENT_TAG_VERSION currently does not exist in Sonatype, allowing pipeline to continue." | ||
exit 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
version: 0.2 | ||
#this build spec assumes the ubuntu 16.04:x64 image | ||
#this build run simply verifies we haven't published something at this tag yet. | ||
#if we have we fail the build and stop the pipeline, if we haven't we allow the pipeline to run. | ||
phases: | ||
build: | ||
commands: | ||
- cd $CODEBUILD_SRC_DIR/aws-iot-device-sdk-java | ||
- bash ./codebuild/cd/test-version-exists.sh | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters