Skip to content

fix: correct release file glob and bump artifact actions (download v8, upload v7) #466

fix: correct release file glob and bump artifact actions (download v8, upload v7)

fix: correct release file glob and bump artifact actions (download v8, upload v7) #466

Workflow file for this run

name: โš™๏ธ๐Ÿš€
on:
pull_request:
workflow_dispatch:
push:
branches: [main]
tags: ['*']
concurrency:
group: ci-cd-${{ github.ref }}
cancel-in-progress: true
jobs:
code-quality:
name: ๐Ÿฆ€ Code Quality
runs-on: ubuntu-latest
steps:
- name: ๐Ÿ›Ž๏ธ Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: ๐Ÿฆ€ Install Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy, rustfmt
- name: โ™ป๏ธ Manage Cache
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
~/.cargo/
target/
key: cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-${{ runner.os }}-${{ hashFiles('**/Cargo.lock') }}
cargo-${{ runner.os }}-
- name: ๐ŸŽจ Check Formatting
run: cargo fmt --check --all
- name: ๐Ÿ“Ž Check Linting
run: cargo clippy --locked --all-targets --all-features -- -D warnings
- name: ๐Ÿงช Run Tests
run: cargo test --locked --all-targets --all-features
- name: ๐Ÿ“ฆ Dry-run publish check
run: cargo publish --dry-run
build-artifacts:
name: โš™๏ธ Build (${{ matrix.artifact-name }})
needs: [code-quality]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
artifact-name: chara-x86_64-unknown-linux-gnu
cargo-target: x86_64-unknown-linux-gnu
- os: ubuntu-latest
artifact-name: chara-aarch64-unknown-linux-gnu
cargo-target: aarch64-unknown-linux-gnu
linker: gcc-aarch64-linux-gnu
- os: ubuntu-latest
artifact-name: chara-aarch64-linux-android
cargo-target: aarch64-linux-android
- os: macos-latest
artifact-name: chara-x86_64-apple-darwin
cargo-target: x86_64-apple-darwin
- os: windows-latest
artifact-name: chara-x86_64-pc-windows-gnu
cargo-target: x86_64-pc-windows-gnu
steps:
- name: ๐Ÿ›Ž๏ธ Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: ๐Ÿฆ€ Install Rust
uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.cargo-target }}
- name: ๐Ÿ”— Install Linker packages
if: matrix.linker != ''
run: |
sudo apt-get -y update
sudo apt-get -y install ${{ matrix.linker }}
- name: ๐Ÿ›ฃ๏ธ Set Linker Path
if: matrix.cargo-target == 'aarch64-linux-android'
run: echo "$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin" >> $GITHUB_PATH
- name: โ™ป๏ธ Manage Build Cache
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: |
~/.cargo/
target/
key: cargo-${{ matrix.artifact-name }}-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
cargo-${{ matrix.artifact-name }}-${{ hashFiles('**/Cargo.lock') }}
cargo-${{ matrix.artifact-name }}-
- name: ๐Ÿ› ๏ธ Build Binary
run: cargo build --locked --release --target ${{ matrix.cargo-target }}
- name: ๐Ÿ“ Setup Archive + Extension
shell: bash
run: |
mkdir -p staging
if [ "${{ matrix.os }}" = "windows-latest" ]; then
cp "target/${{ matrix.cargo-target }}/release/chara.exe" staging/
cd staging
7z a ../${{ matrix.artifact-name }}.zip *
else
cp "target/${{ matrix.cargo-target }}/release/chara" staging/
cd staging
zip ../${{ matrix.artifact-name }}.zip *
fi
- name: โฌ†๏ธ Upload Binary Artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: ${{ matrix.artifact-name }}
path: ${{ matrix.artifact-name }}.zip
retention-days: 5
release:
name: ๐Ÿš€ Create Release
if: github.ref_type == 'tag'
needs: [build-artifacts]
runs-on: ubuntu-latest
steps:
- name: โฌ‡๏ธ Download All Binary Artifacts
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
with:
merge-multiple: true
- name: ๐Ÿ›Ž๏ธ Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: ๐Ÿฆ€ Install Rust (stable)
uses: dtolnay/rust-toolchain@stable
- name: ๐Ÿ“ฆ Publish to crates.io
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: cargo publish
- name: ๐Ÿ—ƒ๏ธ Create Release
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
generate_release_notes: true
files: chara-*.zip