Skip to content

Version 0.3.0 (2023-09-27)

Compare
Choose a tag to compare
@github-actions github-actions released this 27 Sep 14:50
· 1112 commits to main since this release

Release Notes

This release is a big overhaul of cargo-dist's UX! Our CI scripts have been completely redesigned to allow your release process to be tested in pull-requests, so you don't have to worry as much about your release process breaking!

Since we can now test your release process frequently, we've also made most cargo-dist commands default to erroring out if anything is out of sync and needs to be regenerated.

To make this easier, we've also introduced an experimental new system for user-defined hooks, allowing you to write custom publish jobs without having to actually edit release.yml.

This release also introduces initial support for msi installers with the wonderful help of cargo-wix!

Features

CI redesign

This is the big ticket item of the release, the CI has been completely redesigned! We recommend reading the docs below for details, but some high-level details:

  • The CI now runs cargo dist plan on pull-requests

  • This can be cranked up to cargo dist build, with results uploaded to the PR workflow, allowing you to download+test them

  • To do this, we now use GitHub's upload-artifact/download-artifact system, instead of using a draft GitHub release as scratch storage

  • This means we also no longer create a draft Release on startup, and instead transactionally create the full Release at the very end

  • cargo dist plan will now check that the CI script is up to date and not hand-edited (can be opted out)

    • The user-defined publish jobs feature helps you avoid hand-edits
    • More such features are in the pipeline for the next release!
  • impl

  • docs

user-defined publish jobs

You can now define custom hand-written publish jobs that cargo-dist's CI will know how to invoke, without actually having to hand-edit release.yml!

default to not publishing prereleases to homebrew

Homebrew doesn't have a notion of package "versions", there is Only The Latest Version, so we changed the default to only publishing to your homebrew tap if you're cutting a stable release. You can opt back in to the old behaviour with publish-prereleases = true.

generate command

This feature is a bit of an internal affair that you don't necessarily need to care about, but it's big enough that we figured it's worth mentioning.

The "plumbing" generate-ci command which is invoked by cargo dist init has been reworked into a more general generate command, as the introduction of msi installers means we now have two kinds of checked-in generated output.

Most notably, generate --check now exists, which produces an error if generate would change the contents (ignoring newline-style). Most cargo-dist commands now run generate --check on startup, making it an error to have your release.yml out of date or hand-edited. This is a key piece to the puzzle of the new CI design, as it lets you catch issues with your release process in PRs.

The allow-dirty = ["ci"] config was introduced to disable these generate modifying or checking release.yml, for users that still really need to hand-edit. We're actively working on several features that should make it less necessary to do hand-edits.

msi installer

Initial msi installer support is here, based on the wonderful cargo-wix. We contributed several upstream improvements to cargo-wix for our purposes, and look forward to helping out even more in the future!

Fixes

more useful checksum files

The checksum files we generate are now in the expected format for tools like sha256sum, making them more immediately useful.

Maintenance

more polished cli output

CLI Output has been streamlined and cleaned up a lot in this release!

refreshed docs

The docs have been significantly reworked to reflect how much cargo-dist has changed and improved over the last few releases. Installers have rapidly grown from "something we're trying out" to "the star of the show", so they're now front-and-center with room for their own guides.

This was a big undertaking, and not everything has been reworked yet. Further improvements will be done more incrementally.

Install cargo-dist 0.3.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/axodotdev/cargo-dist/releases/download/v0.3.0/cargo-dist-installer.sh | sh

Install prebuilt binaries via powershell script

irm https://github.com/axodotdev/cargo-dist/releases/download/v0.3.0/cargo-dist-installer.ps1 | iex

Install prebuilt binaries via Homebrew

brew install axodotdev/homebrew-tap/cargo-dist

Download cargo-dist 0.3.0

File Platform Checksum
cargo-dist-aarch64-apple-darwin.tar.xz macOS Apple Silicon checksum
cargo-dist-x86_64-apple-darwin.tar.xz macOS Intel checksum
cargo-dist-x86_64-pc-windows-msvc.zip Windows x64 checksum
cargo-dist-x86_64-unknown-linux-gnu.tar.xz Linux x64 checksum