Skip to content
This repository has been archived by the owner on May 3, 2022. It is now read-only.

Commit

Permalink
feat(release): prepare release notes
Browse files Browse the repository at this point in the history
Signed-off-by: Paul Pietkiewicz <[email protected]>
  • Loading branch information
platten committed Feb 25, 2022
1 parent bcde9e2 commit 14deccc
Show file tree
Hide file tree
Showing 2 changed files with 189 additions and 1 deletion.
188 changes: 188 additions & 0 deletions docs/Contributing/Release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,188 @@
# Release Process

## Prerequisites:
- Prepare release notes


## Weekly chores
### Enarx dependency update
- Update local code
```bash
git fetch --all
git checkout origin/main
```
- Checkout chore branch
```bash
git checkout -b chore/cargo-update
```
- Run `cargo update` within all individual sub-crates
```bash
for d in internal/*/ ; do (cd "$d" && cargo update); done
```
- Git commit sub-crate update
```bash
git commit -asS -m 'chore(deps): update internal crate dependencies'
```
- Run cargo update on `enarx`
```bash
cargo update
```
- Git commit sub-crate update
```bash
git commit -asS -m 'chore(deps): update Enarx dependencies'
```
- Run build and tests
```bash
cargo clean
cargo build
cargo tests
```
- Create PR
```bash
git push origin chore/cargo-update
gh pr create --title "chore(deps): update Enarx dependencies"
```


## Enarx Release

### Update and release prerequiste crates
> **NOTE: ** This may be an optional step dependant on whether there are relevant changes in the prerequisite crates (e.g. `xsave`, `sallyport`, etc.):
- Determine expected version by reviewing output of `git log`
- Set new version
```bash
export MAJOR=0
export MINOR=2
export PATCH=2
export NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
```
- Ensure all approved PRs are merged
- Get latest updates and checkout branch
```bash
git fetch --all
git checkout origin/main
git checkout -b "b${MAJOR}.${MINOR}.z"
```
- Update dependencies
```bash
cargo update
```
- Determine if crate builds and if it works
```bash
cargo clean
cargo build
cargo test
```
- Update version in `Cargo.toml`
```bash
sed -i 's/^version = .*/version = \"'${NEW_VERSION}'\"/' Cargo.toml
cargo update -p $(grep name Cargo.toml | cut -d'"' -f2)
```
- Run `cargo test` again
```bash
cargo clean
cargo build
cargo test
```
- Commit change and push to repo
```bash
git commit -asS -m "chore(release): Release v${NEW_VERSION}"
git push origin
```
- Confirm that changes passed on CI
- Create a git tag
```bash
git tag --sign -m "chore(release): Release v${NEW_VERSION}" v${NEW_VERSION}
git push --tags origin "b${MAJOR}.${MINOR}.z"
```
- Cargo publish
```bash
cargo publish
```
- Create a PR
```bash
gh pr create --title "Release v${NEW_VERSION}"
```

### The Enarx release itself
- Determine expected version by reviewing output of `git log`
- Set new version
```bash
export MAJOR=0
export MINOR=2
export PATCH=2
export NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}"
```
- Get latest updates and checkout branch
```bash
git fetch --all
git checkout origin/main
git checkout -b "b${MAJOR}.${MINOR}.z"
```
- Bump version inside sub-crate `internal/{shim-sev,shim-sgx,wasmdr}/Cargo.toml` files
```bash
for d in internal/*/ ; do ( cd "$d"
sed -i 's/^version = .*/version = \"'${NEW_VERSION}'\"/' Cargo.toml
cargo update -p $(basename ${d})
git mv Cargo.toml Cargo.tml )
done
sed -i 's/^version = .*/version = \"'${NEW_VERSION}'\"/' Cargo.toml
cargo update -p $(grep name Cargo.toml | cut -d'"' -f2)
```
- _POTENTIALLY OPTIONAL STEP: If there are any changes in the prerequisite crates (e.g. `xsave`, `sallyport`, etc) then it will be required to manually update the crates now_
```bash
export UPDATED_PREREQUISTES=(xsave sallyport)
for d in internal/*/ ; do ( cd "$d"
for p in ${UPDATED_PREREQUISTES[@]]}; do
cargo update -p "${p}"
done
done
for p in ${UPDATED_PREREQUISTES[@]]}; do cargo update -p ${p}; done
```
- Run unit tests
```bash
cargo clean
cargo build
cargo test
```
- Rename Cargo.toml to Cargo.tml in sub-crates to address `cargo` sub-crate limitation
```bash
for d in internal/*/ ; do ( cd "$d"
git mv Cargo.toml Cargo.tml )
done
- Check cargo manifest
```bash
cargo package --allow-dirty -l
```
- Commit change and push to repo
```bash
git commit -asS -m "chore(release): Release v${NEW_VERSION}"
git push origin "release/${NEW_VERSION}"
```
- Create and push `git` tag
```bash
git tag --sign -m "chore(release): Release v${NEW_VERSION}" v${NEW_VERSION}
git push --tags origin "b${MAJOR}.${MINOR}.z"
```
- Package and publish Enarx crate
```bash
cargo publish -v
```
- Restore Cargo.tml files to Cargo.toml files
```bash
for i in internal/*/Cargo.tml; do git mv $i ${i%.tml}.toml; done
git commit -asS -m 'chore(release): put back Cargo.toml files'
git push origin "b${MAJOR}.${MINOR}.z"
```
- Create a PR
```bash
gh pr create --title "Release v${NEW_VERSION}"
- Create draft GitHub release
```bash
gh release create -d --generate-notes "v${NEW_VERSION}"
```
- Update GitHub release notes
- Merge release PR
- Publish GitHub release
- Send notification to RocketChat #annoucements & #general channels
- Assign issue to post release to social media channels
2 changes: 1 addition & 1 deletion sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const sidebars = {
{
type: 'category',
label: 'Contributing Guide',
items: ['Contributing/Introduction','Contributing/Onboarding','Contributing/Code','Contributing/Coding-Style','Contributing/Git-hook','Contributing/PRs','Contributing/Issues','Contributing/RFCs','Contributing/Docs','Contributing/Outreach','Contributing/Lab'],
items: ['Contributing/Introduction','Contributing/Onboarding','Contributing/Code','Contributing/Coding-Style','Contributing/Git-hook','Contributing/PRs','Contributing/Issues','Contributing/RFCs','Contributing/Docs','Contributing/Outreach','Contributing/Lab', 'Contributing/Release'],
},
{
type: 'category',
Expand Down

0 comments on commit 14deccc

Please sign in to comment.