diff --git a/.github/workflows/ci_test_java.yml b/.github/workflows/ci_test_java.yml index dd807149f..91eb11700 100644 --- a/.github/workflows/ci_test_java.yml +++ b/.github/workflows/ci_test_java.yml @@ -78,8 +78,4 @@ jobs: - name: Test ${{ matrix.library }} working-directory: ./${{ matrix.library }} run: | - # Clear MPL from cache - # We have to do this because MakeFile does not do this yet. The MakeFile automatically builds and deploys dependencies - # instead it should be picking it up from Maven. - rm -rf ~/.m2/repository/software/amazon/cryptography/aws-cryptographic-material-providers make test_java diff --git a/.github/workflows/ci_test_vector_java.yml b/.github/workflows/ci_test_vector_java.yml index 7f26a5773..19917495e 100644 --- a/.github/workflows/ci_test_vector_java.yml +++ b/.github/workflows/ci_test_vector_java.yml @@ -60,8 +60,4 @@ jobs: - name: Test TestVectors working-directory: ./TestVectors run: | - # Clear MPL from cache - # We have to do this because MakeFile does not do this yet. The MakeFile automatically builds and deploys dependencies - # instead it should be picking it up from Maven. - rm -rf ~/.m2/repository/software/amazon/cryptography/aws-cryptographic-material-providers make test_java diff --git a/DynamoDbEncryption/runtimes/java/build.gradle.kts b/DynamoDbEncryption/runtimes/java/build.gradle.kts index bdc5b734e..acaf93455 100644 --- a/DynamoDbEncryption/runtimes/java/build.gradle.kts +++ b/DynamoDbEncryption/runtimes/java/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.File +import java.io.FileInputStream +import java.util.Properties import java.net.URI import javax.annotation.Nullable import org.gradle.api.tasks.testing.logging.TestExceptionFormat @@ -11,10 +14,18 @@ plugins { id("io.github.gradle-nexus.publish-plugin") version "1.3.0" } +var props = Properties().apply { + load(FileInputStream(File(rootProject.rootDir, "../../../project.properties"))) +} + group = "software.amazon.cryptography" -version = "3.1.0" +version = props.getProperty("projectJavaVersion") description = "Aws Database Encryption Sdk for DynamoDb Java" +var mplVersion = props.getProperty("mplDependencyJavaVersion") +var dafnyRuntimeJavaVersion = props.getProperty("dafnyRuntimeJavaVersion") +var smithyDafnyJavaConversionVersion = props.getProperty("smithyDafnyJavaConversionVersion") + java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) sourceSets["main"].java { @@ -68,9 +79,9 @@ repositories { val dynamodb by configurations.creating dependencies { - implementation("org.dafny:DafnyRuntime:4.1.0") - implementation("software.amazon.smithy.dafny:conversion:0.1") - implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") + implementation("org.dafny:DafnyRuntime:${dafnyRuntimeJavaVersion}") + implementation("software.amazon.smithy.dafny:conversion:${smithyDafnyJavaConversionVersion}") + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:${mplVersion}") implementation(platform("software.amazon.awssdk:bom:2.20.128")) implementation("software.amazon.awssdk:dynamodb") diff --git a/Examples/runtimes/java/DynamoDbEncryption/build.gradle.kts b/Examples/runtimes/java/DynamoDbEncryption/build.gradle.kts index 9d7e54e84..bcf62436d 100644 --- a/Examples/runtimes/java/DynamoDbEncryption/build.gradle.kts +++ b/Examples/runtimes/java/DynamoDbEncryption/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.File +import java.io.FileInputStream +import java.util.Properties import java.net.URI import javax.annotation.Nullable import org.gradle.api.tasks.testing.logging.TestExceptionFormat @@ -9,10 +12,17 @@ plugins { id("io.freefair.lombok") version "8.1.0" } +var props = Properties().apply { + load(FileInputStream(File(rootProject.rootDir, "../../../../project.properties"))) +} + group = "software.amazon.cryptography" version = "1.0-SNAPSHOT" description = "DynamoDbEncryptionExamples" +var mplVersion = props.getProperty("mplDependencyJavaVersion") +var ddbecVersion = props.getProperty("projectJavaVersion") + java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) sourceSets["main"].java { @@ -57,8 +67,8 @@ repositories { } dependencies { - implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:3.1.0") - implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") + implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:${ddbecVersion}") + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:${mplVersion}") implementation(platform("software.amazon.awssdk:bom:2.19.1")) implementation("software.amazon.awssdk:arns") diff --git a/Examples/runtimes/java/Migration/DDBECToAWSDBE/build.gradle.kts b/Examples/runtimes/java/Migration/DDBECToAWSDBE/build.gradle.kts index 2af95a34c..fa2bcc413 100644 --- a/Examples/runtimes/java/Migration/DDBECToAWSDBE/build.gradle.kts +++ b/Examples/runtimes/java/Migration/DDBECToAWSDBE/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.File +import java.io.FileInputStream +import java.util.Properties import java.net.URI import javax.annotation.Nullable import org.gradle.api.tasks.testing.logging.TestExceptionFormat @@ -8,10 +11,17 @@ plugins { `java-library` } +var props = Properties().apply { + load(FileInputStream(File(rootProject.rootDir, "../../../../../project.properties"))) +} + group = "software.amazon.cryptography" version = "1.0-SNAPSHOT" description = "AWSDatabaseEncryptionSDKMigrationExamples" +var mplVersion = props.getProperty("mplDependencyJavaVersion") +var ddbecVersion = props.getProperty("projectJavaVersion") + java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) sourceSets["main"].java { @@ -56,8 +66,8 @@ repositories { } dependencies { - implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:3.1.0") - implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") + implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:${ddbecVersion}") + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:${mplVersion}") implementation(platform("software.amazon.awssdk:bom:2.19.1")) implementation("software.amazon.awssdk:dynamodb") diff --git a/Examples/runtimes/java/Migration/PlaintextToAWSDBE/build.gradle.kts b/Examples/runtimes/java/Migration/PlaintextToAWSDBE/build.gradle.kts index a688e75d9..d548fe6f5 100644 --- a/Examples/runtimes/java/Migration/PlaintextToAWSDBE/build.gradle.kts +++ b/Examples/runtimes/java/Migration/PlaintextToAWSDBE/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.File +import java.io.FileInputStream +import java.util.Properties import java.net.URI import javax.annotation.Nullable import org.gradle.api.tasks.testing.logging.TestExceptionFormat @@ -8,10 +11,17 @@ plugins { `java-library` } +var props = Properties().apply { + load(FileInputStream(File(rootProject.rootDir, "../../../../../project.properties"))) +} + group = "software.amazon.cryptography" version = "1.0-SNAPSHOT" description = "AWSDatabaseEncryptionSDKMigrationExamples" +var mplVersion = props.getProperty("mplDependencyJavaVersion") +var ddbecVersion = props.getProperty("projectJavaVersion") + java { toolchain.languageVersion.set(JavaLanguageVersion.of(8)) sourceSets["main"].java { @@ -56,8 +66,8 @@ repositories { } dependencies { - implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:3.1.0") - implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") + implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:${ddbecVersion}") + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:${mplVersion}") implementation(platform("software.amazon.awssdk:bom:2.19.1")) implementation("software.amazon.awssdk:dynamodb") diff --git a/TestVectors/runtimes/java/build.gradle.kts b/TestVectors/runtimes/java/build.gradle.kts index 4778aa0f6..e26dfab41 100644 --- a/TestVectors/runtimes/java/build.gradle.kts +++ b/TestVectors/runtimes/java/build.gradle.kts @@ -1,3 +1,6 @@ +import java.io.File +import java.io.FileInputStream +import java.util.Properties import java.net.URI import javax.annotation.Nullable import org.gradle.api.tasks.testing.logging.TestExceptionFormat @@ -12,6 +15,15 @@ plugins { `maven-publish` } +var props = Properties().apply { + load(FileInputStream(File(rootProject.rootDir, "../../../project.properties"))) +} + +var mplVersion = props.getProperty("mplDependencyJavaVersion") +var ddbecVersion = props.getProperty("projectJavaVersion") +var dafnyRuntimeJavaVersion = props.getProperty("dafnyRuntimeJavaVersion") +var smithyDafnyJavaConversionVersion = props.getProperty("smithyDafnyJavaConversionVersion") + group = "software.amazon.cryptography" version = "1.0-SNAPSHOT" description = "TestVectorsDynamoDbEncryption" @@ -70,10 +82,10 @@ repositories { val dynamodb by configurations.creating dependencies { - implementation("org.dafny:DafnyRuntime:4.1.0") - implementation("software.amazon.smithy.dafny:conversion:0.1") - implementation("software.amazon.cryptography:aws-cryptographic-material-providers:1.0.0") - implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:3.1.0") + implementation("org.dafny:DafnyRuntime:${dafnyRuntimeJavaVersion}") + implementation("software.amazon.smithy.dafny:conversion:${smithyDafnyJavaConversionVersion}") + implementation("software.amazon.cryptography:aws-cryptographic-material-providers:${mplVersion}") + implementation("software.amazon.cryptography:aws-database-encryption-sdk-dynamodb:${ddbecVersion}") implementation("software.amazon.cryptography:TestAwsCryptographicMaterialProviders:1.0-SNAPSHOT") implementation(platform("software.amazon.awssdk:bom:2.20.138")) diff --git a/codebuild/staging/release-staging.yml b/codebuild/staging/release-staging.yml index 539dac9f0..818ccc5d4 100644 --- a/codebuild/staging/release-staging.yml +++ b/codebuild/staging/release-staging.yml @@ -47,8 +47,10 @@ phases: - aws sts get-caller-identity build: commands: - - cd DynamoDbEncryption/ + # Validate the MPL submodule points to the correct release + - scripts/validate-mpl-submodule.sh # Build and deploy to maven local + - cd DynamoDbEncryption/ - make transpile_implementation_java - make transpile_test_java - make mvn_local_deploy diff --git a/project.properties b/project.properties new file mode 100644 index 000000000..2cacfbd4c --- /dev/null +++ b/project.properties @@ -0,0 +1,4 @@ +projectJavaVersion=3.1.0 +mplDependencyJavaVersion=1.0.0 +dafnyRuntimeJavaVersion=4.1.0 +smithyDafnyJavaConversionVersion=0.1 diff --git a/scripts/validate-mpl-submodule.sh b/scripts/validate-mpl-submodule.sh new file mode 100755 index 000000000..38050fcca --- /dev/null +++ b/scripts/validate-mpl-submodule.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# A tiny script to verify that the MPL submodule points to a valid release, +# and that this release matches the MPL dependency defined in this repo's gradle projects. +# Run this script from the root of the repo. + +# Get the MPL version used in DB-ESDK's build.gradle +DBESDK_MPL_VERSION=$(cat project.properties | grep "mplDependencyJavaVersion" | sed 's/^.*=//') + +# Get version from tag of HEAD in MaterialProviders submodule +cd submodules/MaterialProviders +MPL_SUBMODULE_VERSION=$(git tag --points-at HEAD | sed 's/v//'); +if [ "$MPL_SUBMODULE_VERSION" == "" ]; then + echo "Invalid MaterialProviders submodule. The submodule must be set to a commit that is tagged as a release."; + exit 1; +fi + +# Validate this version matches the version used in the DB-ESDK's build.gradle +if [ "$DBESDK_MPL_VERSION" != "$MPL_SUBMODULE_VERSION" ]; then + echo "Invalid MaterialProviders submodule. Mismatch between the submodule version ("$MPL_SUBMODULE_VERSION") and the version of the configured dependency in project.properties ("$DBESDK_MPL_VERSION")."; + exit 1; +fi