Announcing Ferris' Mean Bean CI Machine! Build and Test Your Rust Projects With Zero Configuration

Do you want to build and test your Rust project virtually anywhere? Do you want automatic deployments? Do you want parallelisation that's almost too much ? Then check out Ferris' Mean Bean CI Machine! A CI template for GitHub Actions I made to replace japaric/trust on projects such as my own tokei .

7 Likes

Nice!

I just went through this process myself for snap, so I took a peek at this to see if we did anything differently. I really like this trick:

        # We're using using a fork of `actions/create-release` that detects
        # whether a release is already available or not first.
      - uses: XAMPPRocky/create-release@v1.0.2

If you don't have idempotency, then you wind up needing to do some shenanigans with GitHub Actions artifacts. The rust-analyzer repo actually stores the executable for each target as an artifact and then combines them all together in a separate job to create the release. The approach I took was to create the release first and store the release upload URL as an artifact. Then each job would run to build the release for each target, which can just upload the release directly as a release asset.

But your approach is quite a bit more elegant! I wish the official actions were better maintained by GitHub. :-/

1 Like

But your approach is quite a bit more elegant! I wish the official actions were better maintained by GitHub. :-/

Writing this made really wish releases as whole was more put to together. This solution doesn't work with draft releases because GitHub provides no way to get a draft release if you weren't the client who created the draft. So if you enable that feature it will generate a seperate draft release for each target with the same name and ref.

1 Like

Though I would say GitHub Actions overall is very powerful. I think having it entirely git based makes very easy to extend in the ways you want. As maybe a sub announcement. I have also released get-github-release which allows you to download any tool released on GitHub through GitHub releases. I used it here for downloading cross, and I plan to build a github action for mdbook deployments that uses it.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.