This document provides step-by-step instructions for publishing Rustyll v0.8.0 to crates.io, GitHub, and Homebrew.
Before starting the release process, ensure you have:
- ✅ A crates.io account with API token
- ✅ GitHub CLI (
gh) installed and authenticated - ✅ Write access to the Rustyll repository
- ✅ Write access to a Homebrew tap repository (optional)
If you haven't already, login to crates.io:
cargo loginYou'll be prompted to enter your API token from https://crates.io/me
Test the publish process without actually uploading:
cargo publish --dry-runThis will:
- Package your crate
- Check all files are included
- Verify metadata is correct
- Ensure there are no errors
Once the dry run succeeds, publish for real:
cargo publishNote: Once published to crates.io, you cannot delete or replace a version. Make sure everything is correct!
Check your package on crates.io:
- Visit: https://crates.io/crates/rustyll
- Verify version 0.8.0 appears
- Check that README and documentation render correctly
# Push the commit
git push origin main
# Create and push the tag
git tag -a v0.8.0 -m "Release v0.8.0"
git push origin v0.8.0You can create the release using the GitHub CLI:
gh release create v0.8.0 \
--title "Rustyll v0.8.0 - Jekyll-Compatible Static Site Generator" \
--notes-file RELEASE_NOTES_v0.8.0.md \
--draftThe --draft flag creates a draft release for review. Remove it to publish immediately.
Alternatively, manually create the release:
- Go to https://github.com/betterwebinit/rustyll/releases/new
- Choose tag:
v0.8.0 - Release title:
Rustyll v0.8.0 - Jekyll-Compatible Static Site Generator - Copy content from
RELEASE_NOTES_v0.8.0.mdto the description - Check "Set as the latest release"
- Click "Publish release"
For better user experience, you can build and upload binaries for different platforms:
# Linux x86_64
cargo build --release --target x86_64-unknown-linux-gnu
tar -czf rustyll-v0.8.0-linux-x86_64.tar.gz -C target/x86_64-unknown-linux-gnu/release rustyll
# macOS x86_64
cargo build --release --target x86_64-apple-darwin
tar -czf rustyll-v0.8.0-macos-x86_64.tar.gz -C target/x86_64-apple-darwin/release rustyll
# macOS ARM64
cargo build --release --target aarch64-apple-darwin
tar -czf rustyll-v0.8.0-macos-arm64.tar.gz -C target/aarch64-apple-darwin/release rustyll
# Windows x86_64
cargo build --release --target x86_64-pc-windows-msvc
zip rustyll-v0.8.0-windows-x86_64.zip target/x86_64-pc-windows-msvc/release/rustyll.exeThen upload these files to the GitHub release.
After creating the GitHub release, download the source tarball and calculate its SHA256:
curl -L https://github.com/betterwebinit/rustyll/archive/refs/tags/v0.8.0.tar.gz -o rustyll-0.8.0.tar.gz
shasum -a 256 rustyll-0.8.0.tar.gzUpdate the sha256 field in rustyll.rb with the hash from step 3.1.
To submit to Homebrew core:
- Fork https://github.com/Homebrew/homebrew-core
- Add
rustyll.rbtoFormula/r/rustyll.rb - Test the formula:
brew install --build-from-source ./Formula/r/rustyll.rb - Submit a pull request
Requirements for Homebrew core:
- Project must be stable and notable
- Must have 75+ GitHub stars
- Must have 30+ forks
- Must be actively maintained
Create your own tap for easier installation:
# Create a tap repository
gh repo create betterwebinit/homebrew-rustyll --public
# Clone it
git clone https://github.com/betterwebinit/homebrew-rustyll
cd homebrew-rustyll
# Create Formula directory
mkdir -p Formula
# Copy the formula
cp /path/to/rustyll/rustyll.rb Formula/rustyll.rb
# Commit and push
git add Formula/rustyll.rb
git commit -m "Add Rustyll v0.8.0 formula"
git push origin mainUsers can then install with:
brew tap betterwebinit/rustyll
brew install rustyll# Audit the formula
brew audit --strict --online rustyll
# Test installation
brew install rustyll
# Test the binary
rustyll --version
# Uninstall
brew uninstall rustyll- Update the website at rustyll.better-web.org with v0.8.0 information
- Update any installation guides
- Update the README if needed
Consider announcing on:
- Twitter/X
- Reddit (r/rust, r/webdev)
- Hacker News
- Dev.to
- Your blog or website
- Update project status badges
- Mark milestone as complete
- Close related issues
- Update roadmap
Before considering the release complete, verify:
- Package appears on https://crates.io/crates/rustyll
-
cargo install rustyllworks - GitHub release is published at https://github.com/betterwebinit/rustyll/releases
- Git tag v0.8.0 exists
- Homebrew formula works (if published)
- Documentation is updated
- CHANGELOG.md is accurate
- Release announcement is published
If you need to rollback:
- You cannot delete a version from crates.io
- You can yank a version:
cargo yank --vers 0.8.0 - Yanked versions won't be used for new projects but existing ones still work
- Publish a patch version (0.8.1) with fixes
- You can delete a release and tag
- Use
gh release delete v0.8.0or delete from the web UI - Delete the tag:
git push origin :refs/tags/v0.8.0
- Submit a new PR removing or updating the formula
- Or update your tap repository
- Wait a few minutes and try again
- crates.io might be experiencing issues
- Your upload was interrupted
- Try again with a better internet connection
- Check the SHA256 hash matches
- Ensure the tarball URL is accessible
- Test with
brew install --build-from-source - Check Homebrew logs:
brew gist-logs rustyll
After releasing v0.8.0:
- Start planning v0.8.1 or v0.9.0
- Address known issues mentioned in release notes
- Respond to user feedback and issues
- Continue development on the main branch
For questions or issues with the release process, contact the Rustyll team or open an issue.