From 208e57da02d41490b4874568c6098a600f59abc9 Mon Sep 17 00:00:00 2001 From: Jacob Alexander Date: Wed, 11 Oct 2023 17:15:05 -0700 Subject: [PATCH] Setup GitHub Actions for Rust --- .github/workflows/audit.yml | 69 ++++++++++++++++++++++ .github/workflows/build.yml | 17 +++--- .github/workflows/rust_linux.yml | 92 ++++++++++++++++++++++++++++++ .github/workflows/rust_macos.yml | 17 ++++++ .github/workflows/rust_windows.yml | 17 ++++++ 5 files changed, 205 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/audit.yml create mode 100644 .github/workflows/rust_linux.yml create mode 100644 .github/workflows/rust_macos.yml create mode 100644 .github/workflows/rust_windows.yml diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml new file mode 100644 index 00000000..f80f02f7 --- /dev/null +++ b/.github/workflows/audit.yml @@ -0,0 +1,69 @@ +name: "Audit Dependencies" +on: + push: + paths: + # Run if workflow changes + - '.github/workflows/audit.yml' + # Run on changed dependencies + - '**/Cargo.toml' + - '**/Cargo.lock' + # Run if the configuration file changes + - '**/audit.toml' + # Rerun periodicly to pick up new advisories + schedule: + - cron: '0 0 * * *' + # Run manually + workflow_dispatch: + +permissions: read-all + +jobs: + audit: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: dtolnay/rust-toolchain@nightly + - uses: actions-rust-lang/audit@v1 + name: Audit Rust Dependencies + with: + ignore: RUSTSEC-2020-0071,RUSTSEC-2021-0139 + + deny: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: dtolnay/rust-toolchain@nightly + - name: cargo-binstall + run: | + mkdir -p ~/.cargo/bin + wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz + tar xf cargo-binstall*.tgz -C ~/.cargo/bin + - run: cargo binstall --no-confirm cargo-deny + - name: Cargo Deny + run: cargo deny check licenses + + pants: + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: dtolnay/rust-toolchain@nightly + - name: cargo-binstall + run: | + mkdir -p ~/.cargo/bin + wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz + tar xf cargo-binstall*.tgz -C ~/.cargo/bin + - run: cargo binstall --no-confirm cargo-pants + - name: Cargo Pants + run: cargo pants diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 83bc7d23..c1dd4c1a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,9 @@ on: [push, pull_request] env: PIPENV_ACTIVE: 1 + deb_packages: >- + libreadline-dev + libwxgtk3.0-gtk3-dev jobs: linux: @@ -11,17 +14,17 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | sudo apt-get update - sudo apt-get install libwxgtk3.0-dev libreadline-dev -y + sudo apt-get install -y ${{ env.deb_packages }} - name: Build run: | make -j make install bin/bossac --help - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v3 if: always() with: name: linux @@ -32,7 +35,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Install dependencies run: | brew update @@ -42,7 +45,7 @@ jobs: make -j make install bin/bossac --help - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v3 if: always() with: name: macos @@ -53,7 +56,7 @@ jobs: strategy: fail-fast: false steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: numworks/setup-msys2@v1 with: msystem: MSYS32 @@ -64,7 +67,7 @@ jobs: msys2do make -j msys2do make install bin/bossac --help - - uses: actions/upload-artifact@v1 + - uses: actions/upload-artifact@v3 if: always() with: name: windows diff --git a/.github/workflows/rust_linux.yml b/.github/workflows/rust_linux.yml new file mode 100644 index 00000000..63bbce09 --- /dev/null +++ b/.github/workflows/rust_linux.yml @@ -0,0 +1,92 @@ +name: Rust Linux + +on: [push, pull_request] + +env: + deb_packages: >- + libreadline-dev + libwxgtk3.0-gtk3-dev + +jobs: + check: + name: Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ${{ env.deb_packages }} + - name: Cargo Check + run: cargo check --all + + build: + name: Build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ${{ env.deb_packages }} + - name: ls + run: | + ls + pwd + - name: Cargo Build + run: cargo build --all + - name: Cargo Install + run: cargo install --path bossac --bins --root dist + - uses: actions/upload-artifact@v3 + with: + name: linux_release_binaries + path: dist/bin + + fmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + with: + components: rustfmt + - name: Rustfmt Check + uses: actions-rust-lang/rustfmt@v1 + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + with: + components: clippy + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ${{ env.deb_packages }} + - name: Cargo Clippy + run: cargo clippy --all-targets -- -D warnings + + udeps: + name: cargo-udeps + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - uses: dtolnay/rust-toolchain@nightly + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ${{ env.deb_packages }} + - name: cargo-binstall + run: | + mkdir -p ~/.cargo/bin + wget https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz + tar xf cargo-binstall*.tgz -C ~/.cargo/bin + - run: cargo binstall --no-confirm cargo-udeps + - name: Cargo Udeps + run: cargo udeps --all-targets diff --git a/.github/workflows/rust_macos.yml b/.github/workflows/rust_macos.yml new file mode 100644 index 00000000..260ecd8d --- /dev/null +++ b/.github/workflows/rust_macos.yml @@ -0,0 +1,17 @@ +name: Rust macOS + +on: [push, pull_request] + +jobs: + build: + name: Build + runs-on: macOS-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + - name: Cargo Install + run: cargo install --path bossac --bins --root dist + - uses: actions/upload-artifact@v3 + with: + name: macos_release_binaries + path: dist/bin diff --git a/.github/workflows/rust_windows.yml b/.github/workflows/rust_windows.yml new file mode 100644 index 00000000..7f6b874a --- /dev/null +++ b/.github/workflows/rust_windows.yml @@ -0,0 +1,17 @@ +name: Rust Windows + +on: [push, pull_request] + +jobs: + build: + name: Build + runs-on: windows-latest + steps: + - uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@nightly + - name: Cargo Install + run: cargo install --path bossac --bins --root dist + - uses: actions/upload-artifact@v3 + with: + name: win_release_binaries + path: dist/bin