Skip to content

Commit

Permalink
chore: create Rust release runbook (#1488)
Browse files Browse the repository at this point in the history
* chore: automate release
  • Loading branch information
ajewellamz authored Dec 6, 2024
1 parent 67f3d2e commit e51f340
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 36 deletions.
10 changes: 10 additions & 0 deletions DynamoDbEncryption/runtimes/rust/RELEASE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
To publish a new version of the aws-db-esdk for version N.N.N

1. Acquire the appropriate permissions
1. Ensure git checkout of main is fresh and clean
1. ./start_release.sh N.N.N
1. cd ../../../releases/rust/db_esdk
1. Create a PR with all changed or added files
1. cargo publish
1. cd ../../../DynamoDbEncryption/runtimes/rust/ # i.e. return here
1. ./test_published.sh N.N.N
4 changes: 3 additions & 1 deletion DynamoDbEncryption/runtimes/rust/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

#![allow(warnings, unconditional_panic)]
#![allow(nonstandard_style)]
#![allow(clippy::never_loop)]
#![allow(clippy::absurd_extreme_comparisons)]

pub mod client;
pub mod conversions;
Expand Down Expand Up @@ -30,7 +32,7 @@ pub use crate::deps::aws_cryptography_materialProviders;
pub use crate::deps::aws_cryptography_primitives;

pub(crate) mod implementation_from_dafny;
pub(crate) use crate::implementation_from_dafny::r#_Wrappers_Compile;
pub(crate) use crate::implementation_from_dafny::_Wrappers_Compile;
pub(crate) use crate::implementation_from_dafny::software;
pub(crate) use crate::implementation_from_dafny::AesKdfCtr;
pub(crate) use crate::implementation_from_dafny::ConcurrentCall;
Expand Down
36 changes: 36 additions & 0 deletions DynamoDbEncryption/runtimes/rust/start_release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#!/bin/bash -eu

if [ "$#" -ne 1 ]; then
echo 1>&2 "USAGE: start_release.sh N.N.N"
exit 1
fi

cd $( dirname ${BASH_SOURCE[0]} )

REGEX_VERSION='^\d+\.\d+\.\d+$'
MATCHES=$(echo "$1" | egrep $REGEX_VERSION | wc -l)
if [ $MATCHES -eq 0 ]; then
echo 1>&2 "Version \"$1\" must be N.N.N"
exit 1
fi

perl -pe "s/^version = .*$/version = \"$1\"/" < Cargo.toml > new_Cargo.toml
mv new_Cargo.toml Cargo.toml

find src -depth 1 | egrep -v '(intercept.rs|lib.rs|software_externs.rs)' | xargs rm -rf
cd ../..
make polymorph_rust transpile_rust test_rust
cd runtimes/rust
rm -rf target
rm -rf ../../../releases/rust/db_esdk
cp -r . ../../../releases/rust/db_esdk
cd ../../../releases/rust/db_esdk
git checkout dafny_runtime_rust
rm -rf *~ copy_externs.sh start_release.sh test_published.sh test_examples *.pem RELEASE.md
echo Cargo.lock > .gitignore
echo target >> .gitignore

cargo test
cargo run --example main
rm -f Cargo.lock *.pem

3 changes: 3 additions & 0 deletions DynamoDbEncryption/runtimes/rust/test_examples/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*~
*.pem
src
22 changes: 22 additions & 0 deletions DynamoDbEncryption/runtimes/rust/test_examples/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[package]
name = "aws-db-esdk-examples"
version = "0.1.0"
edition = "2021"
rust-version = "1.80.0"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
aws-config = "1.5.10"
aws-lc-rs = "1.11.1"
aws-lc-sys = "0.23.1"
aws-sdk-dynamodb = "1.54.0"
aws-sdk-kms = "1.50.0"
aws-smithy-runtime-api = {version = "1.7.3", features = ["client"] }
aws-smithy-types = "1.2.9"
chrono = "0.4.38"
dafny-runtime = "0.1.1"
dashmap = "6.1.0"
pem = "3.0.4"
tokio = {version = "1.41.1", features = ["full"] }
uuid = { version = "1.11.0", features = ["v4"] }
30 changes: 30 additions & 0 deletions DynamoDbEncryption/runtimes/rust/test_published.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash -eu

if [ "$#" -ne 1 ]; then
echo 1>&2 "USAGE: test_published.sh N.N.N"
exit 1
fi

cd $( dirname ${BASH_SOURCE[0]} )

REGEX_VERSION='^\d+\.\d+\.\d+$'

echo "$1" | egrep -q $REGEX_VERSION
if [ $? -ne 0 ]; then
echo 1>&2 "Version \"$1\" must be N.N.N"
exit 1
fi

VERSION=$1

rm -rf test_examples/src
cp -r examples test_examples/src/
cd test_examples
cargo add aws-db-esdk
MATCH=$(fgrep "aws-db-esdk = \"$VERSION\"" Cargo.toml | wc -l)
if [ $MATCH -eq "0" ]; then
echo Version $VERSION of aws-db-esdk not the most recent
egrep '^aws-db-esdk' Cargo.toml
exit 1
fi
cargo run
35 changes: 0 additions & 35 deletions releases/rust/db_esdk/.gitignore~

This file was deleted.

0 comments on commit e51f340

Please sign in to comment.