A Github Actions based CI release template for Rust binaries

Overview


Rust CI Release Template

A Github Actions based CI release template.

This repo serves as a live template, and reference for building your own CI powered Rust release process on Github Action. This was built to fill a gap that Rust has, and Go doesn't have because Go has GoReleaser.

Heavily inspired from the helix editor project CI workflow + some small tweaks.

Development On each commit, the following is automated:

  • CI with caching: check, test, lint

Release Upon pushing a new tag, the following is automated:

  • Build for multi-platform binaries: Linux, Windows, macOS
  • Create GitHub releases
  • Update Homebrew formula

Quick Start

Just copy .github/workflows to your own repo, and set a binary name in your own Cargo.toml using a [[bin]] block (see the example Cargo.toml).

Next, check out the point of interest for you to configure / tune below.

Points of interest

  • Cargo.toml - set your binary name explicitly and take note of it
  • build.yml - you can use as-is, no parameters to configure
  • release.yml
    • Project: at the top of the file, set your own parameters under env
    • Project: your binary name should be the same as in your Cargo.toml
    • Targets: configure platforms as you wish
    • Homebrew: remove the Homebrew pragma if not needed
    • Homebrew: macOS with ARM chips: customize your formula

Thanks

To all Contributors - you make this happen, thanks!

Copyright

Copyright (c) 2021 @jondot. See LICENSE for further details.

You might also like...
dm-jitaux is a Rust-based JIT compiler using modified auxtools, dmasm and Inkwell LLVM wrapper for boosting Byond DM performance without any hassle!

dm-jitaux is a Rust-based JIT compiler using modified auxtools, dmasm and Inkwell LLVM wrapper for boosting Byond DM performance without any hassle (such as rewriting/refactroing your DM code).

A rust-based extension module for Halo 3: MCC PC

halo3-rs This project is a rust-based extension module for Halo 3 in the Master Chief Collection on PC. The DLL wrapper contains a collection of patch

cargo extension for flashing embedded rust programs via dfu based on jacobrosenthals cargo-hf2

cargo-dfu This crate provides a cargo subcommand to flash ELF binaries via dfu Most STM chips will probably work with this, although you might need to

A Rust Based GMod Module for finding system info.

gm_sysinfo Fetching System Information in Rust to Lua. Installation Download the Module. Compile it. Cry because it doesn't work. Spend 2 hours debugg

A trading bot written in Rust based on the orderbook delta volume.

The strategy based on the concept of mean reversion. We look for large deviations in the volume delta of BTC-PERP on FTX at a depth of 1. These deviations could be caused by over-enthusiastic and over-leveraged market participants.

A Rust-based dropper for shellcode payloads.

A Rust-based dropper for shellcode payloads.

A simple, terminal-based Erlang dashboard written in Rust
A simple, terminal-based Erlang dashboard written in Rust

erldash A simple, terminal-based Erlang dashboard. erldash connects to an Erlang node using the dynamic node name feature (since OTP-23) to collect me

A rust(serenity) based discord bot for the hacksquad discord server

A Discord Bot for Hacksquad How to Deploy? Requirements Docker Docker Compose Steps To Run Copy the docker-compose.yml and .env.example files to your

Swayidle alternative to handle wayland idle notifications, sleep and lock events in Rust with Lua scripting based configuration language

swayidle-rs This is intended as a replacement of sway's idle management daemon. I use it as a tool to understand rust message passing and state manage

Comments
  • Unset exe variable

    Unset exe variable

    If a Windows build happens to run before a Linux one, the ".exe" suffix carries over to the Linux build as well and causes issues; this commit fixes the issue.

    opened by Asha20 0
Owner
Automated Code Security for Modern Teams
null
Unsafe assertions that allow for optimizations in release mode.

assert-unchecked Unsafe assertions that allow for optimizations in release mode. These macros use core::hint::unreachable_unchecked, which make it pos

Sebastian Mendez 3 Feb 7, 2022
A Github webhook server to help with CI/CD written in Rust.

This application will automatically updates local GitHub repositories and triggers a command once the update is complete. This can be extremely useful

Luca 9 Apr 4, 2023
Gathering some metrics about github projects

rust-metrics This is an experimental project to start gathering metrics about github organizations and repositories. The goal is to get an idea of var

null 51 Apr 9, 2022
A GitHub Action to automatically build and deploy your mdbook project.

?? deploy-mdbook The deploy-mdbook action allows you to easily build and deploy your mdBook project to GitHub Pages. See action.yml for configuration

null 27 Oct 24, 2022
🛡️ Automatically protect the default branch of new repositories in a GitHub organization

The Branch Autoprotector watches a GitHub organization and automatically protects the default branch in new repositories. This service notifies the creator of the default branch of this automatic branch protection setup by filing an issue in the repository.

Branch Autoprotector 2 Jan 31, 2022
Help project managers and project owners with easy-to-understand views of github issue dependencies.

Help project managers and project owners with easy-to-understand views of github issue dependencies.

nasa 56 Dec 15, 2022
Hot-reload template for Rust

This is a template for cargo-generate. Use with cargo generate rksm/rust-hot-reload. {{project-name}} A workflow for quick feedback while writing Rust

Robert Krahn 10 Dec 27, 2022
Telegram Bot Template with Cloudflare Workers

cf-workers-telegram-bot-template Usage This template starts you off with a src/lib.rs file, acting as an entrypoint for requests hitting your Worker.

Lee Taehoon 2 Sep 23, 2021
A template for kick starting a Cloudflare worker project using workers-rs.

Getting Started A template for kick starting a Cloudflare worker project using workers-rs. This template is designed for compiling Rust to WebAssembly

Abid Omar 1 Oct 13, 2021
Axum server starter template

Axum Starter Template A template to get started with Axum Features Tracing and bunyan formatting SQLx support (with testing) Server as library Example

Jordan 2 Jan 15, 2022