Skip to content

Instantly share code, notes, and snippets.

@sbeckeriv
Last active July 21, 2020 17:57
Show Gist options
  • Save sbeckeriv/849774ee19f23aaaf9d5197ddbe97474 to your computer and use it in GitHub Desktop.
Save sbeckeriv/849774ee19f23aaaf9d5197ddbe97474 to your computer and use it in GitHub Desktop.
Github action for rust to cross compile to mac with caching and releases
name: Rust
on: [push]
jobs:
rustfmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: rustup component add rustfmt
- run: cargo fmt -- --check
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
# cache the build assets so they dont recompile every time.
- name: Cache Rust dependencies
uses: actions/cache@v1.0.1
with:
path: target
key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.OS }}-build-
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: beta
default: true
override: true
- name: Install system dependencies
run: |
sudo apt-get update \
&& sudo apt-get install -y \
libdbus-1-dev
- name: Build
run: cargo build --all --release && strip target/release/#{your taget here bin} && mv target/release/#{your taget here bin} target/release/#{your final bin name here}
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v1-release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/release/#{your final bin name here}
asset_name: #{your final bin name here}
tag: build-${{ github.ref }}
overwrite: true
build-mac:
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Cache Rust dependencies
uses: actions/cache@v1.0.1
with:
path: target
key: ${{ runner.OS }}-build-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.OS }}-build-
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: beta
target: x86_64-apple-darwin
default: true
override: true
- name: Build for mac
run: cargo build --all --release && strip target/release/rust-aha-cli && mv target/release/rust-aha-cli target/release/#{your final bin name here}
- name: Upload binaries to release
uses: svenstaro/upload-release-action@v1-release
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: target/release/#{your final bin name here}
asset_name: #{your final bin name here}
tag: build-${{ github.ref }}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment