diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index ef9f0c3..04fa4c6 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,20 +1,69 @@ -name: Rust +name: Build and Release on: push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -env: - CARGO_TERM_COLOR: always + branches: [ main ] jobs: - build: + build-linux: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build (Linux) + run: cargo build --release - runs-on: ubuntu-latest, windows-latest, macos-latest + build-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + - name: Update Rust (macOS) + run: rustup update stable + - name: Build (macOS) + run: cargo build --release + build-windows: + runs-on: windows-latest steps: - uses: actions/checkout@v4 - - name: Build + - name: Build (Windows) run: cargo build --release + + upload-artifacts: + needs: [build-linux, build-macos, build-windows] + runs-on: ubuntu-latest # Can be any OS + steps: + - uses: actions/checkout@v4 + + - name: Upload Linux Binary + uses: actions/upload-artifact@v3 + with: + name: linux-bin + path: target/linux-x86_64/release + + - name: Upload macOS Binary + uses: actions/upload-artifact@v3 + with: + name: macos-bin + path: target/macos-x86_64/release + + - name: Upload Windows Binary + uses: actions/upload-artifact@v3 + with: + name: windows-bin + path: target/windows-x86_64/release + + download-artifacts: # New job to download artifacts + needs: upload-artifacts + runs-on: ubuntu-latest # Can be any OS (where you want the artifacts) + steps: + - uses: actions/checkout@v4 + + - name: Download Artifacts + run: | + for os in ubuntu-latest macos-latest windows-latest; do + curl -LJO "https://github.com/${{ github.repository }}/actions/artifacts/${{ github.run_id }}/downloads/${os}-bin.zip" + done + + - name: Extract Artifacts + run: | + for file in *.zip; do unzip "$file"; done