# Sparkle-DNS Release Checklist 1. Resolve any `FIXME` comments in the code. 2. Ensure the `sparkle` crate builds and runs using the latest dependencies. $ cargo update && cargo test && cargo test --release If any errors occur then fix them. 3. Ensure packaging succeeds. $ cargo package If any errors occur then fix them. 4. Create a temporary Git branch for the release. $ git checkout -b release_prep 5. Update project files. 1. Edit `Cargo.toml` to declare the correct version for this crate. 1. E.g., remove any version suffix (e.g., `-master`). 2. Ensure the documentation link is correct. 2. Edit `CHANGELOG.md` to add the date for the new release and remove the “unreleased” adjective. Ensure the change log is up-to-date, clear, and well formatted. 3. Edit `README.md` to update all references to the latest release and next release. 4. Ensure there are no untracked files in the working directory. 5. Commit changes. $ git commit 6. Merge updates into master. $ git checkout master && git merge release_prep && git branch -d release_prep 7. Publish the crate. $ cargo publish 8. Create Git tag. $ ver=$(grep '^version\s=' Cargo.toml | head -n1 | sed -Ee 's/.*"([0-9]+\.[0-9]+\.[0-9]+)"$/\1/') && test 1 == $(echo "$ver" | wc -w) && git tag -a v$ver -m "v$ver release" && git push --tags 9. Prep for new work. 1. Edit `Cargo.toml` to increment the version, adding the `-master` suffix. 2. Edit `CHANGELOG.md` to add the new “unreleased” section for the next version. 3. Commit changes $ git commit -m "Prep for work on the next release" 4. [Close the issue milestone for the new release]( https://github.com/cmbrandenburg/sparkle-dns/milestones).