diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index d7241b5..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: Packager Release Process - -run-name: Triggered by ${{ github.actor }}. -on: workflow_dispatch - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -env: - CN_APPLICATION: lume/coop - -jobs: - draft: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Create draft release - uses: crabnebula-dev/cloud-release@v0 - with: - command: release draft ${{ env.CN_APPLICATION }} --framework packager - api-key: ${{ secrets.CN_API_KEY }} - - build: - needs: draft - - strategy: - fail-fast: false - matrix: - os: [macos-latest, windows-latest] - - runs-on: ${{ matrix.os }} - - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - - name: Install stable toolchain - uses: actions-rust-lang/setup-rust-toolchain@v1 - with: - toolchain: stable - cache: true - - - name: install cargo packager - run: | - cargo install cargo-packager --locked - - - name: Build packager app - run: | - cargo packager --release - - - name: Move assets to workdir - run: | - mv target/release/* . - - - name: Upload assets - uses: crabnebula-dev/cloud-release@v0 - with: - command: release upload ${{ env.CN_APPLICATION }} --framework packager - api-key: ${{ secrets.CN_API_KEY }} - - publish: - needs: build - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Publish release - uses: crabnebula-dev/cloud-release@v0 - with: - command: release publish ${{ env.CN_APPLICATION }} --framework packager - api-key: ${{ secrets.CN_API_KEY }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..4b8811f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,124 @@ +name: Build and Release + +on: + workflow_dispatch: + push: + tags: + - "v*" + pull_request: + branches: [master] + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [windows-latest, macos-latest, ubuntu-latest] + include: + - os: windows-latest + target: x86_64-pc-windows-msvc + - os: windows-latest + target: aarch64-pc-windows-msvc # ARM Windows + - os: macos-latest + target: x86_64-apple-darwin + - os: ubuntu-latest + target: x86_64-unknown-linux-gnu + - os: ubuntu-latest + target: aarch64-unknown-linux-gnu # ARM Linux + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Make get-crate-version executable + run: chmod +x script/get-crate-version + + - name: Install Rust + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + profile: minimal + override: true + target: ${{ matrix.target }} + + - name: Install cargo-packager (Windows/macOS) + if: matrix.os != 'ubuntu-latest' + run: cargo install cargo-packager --locked + + - name: Build and package (Windows/macOS) + if: matrix.os != 'ubuntu-latest' + run: | + cd crates/coop + cargo packager --release --target ${{ matrix.target }} + + - name: Install dependencies for Linux (Flatpak/Snap) + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y flatpak flatpak-builder snapd squashfs-tools + flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + sudo snap install snapcraft --classic + + - name: Build Flatpak (Linux) + if: matrix.os == 'ubuntu-latest' && matrix.target == 'x86_64-unknown-linux-gnu' + run: | + cd coop/script/flatpak + ./deps + ./bundle-flatpak + + - name: Build Snap (Linux) + if: matrix.os == 'ubuntu-latest' && matrix.target == 'x86_64-unknown-linux-gnu' + run: | + cd coop/script + ./snap-build $(script/get-crate-version coop) + + - name: Build for ARM Linux (if needed) + if: matrix.os == 'ubuntu-latest' && matrix.target == 'aarch64-unknown-linux-gnu' + run: | + # Add custom ARM build steps here, e.g., cross-compilation or native build + echo "ARM Linux build placeholder (adjust as needed)" + + - name: Upload artifacts (Windows/macOS) + if: matrix.os != 'ubuntu-latest' + uses: actions/upload-artifact@v3 + with: + name: ${{ matrix.os }}-${{ matrix.target }}-artifacts + path: crates/coop/dist/ + + - name: Upload artifacts (Linux) + if: matrix.os == 'ubuntu-latest' + uses: actions/upload-artifact@v3 + with: + name: linux-${{ matrix.target }}-artifacts + path: | + target/release/*.flatpak + target/release/*.snap + # Add ARM-specific artifacts if applicable + + release: + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Get version + id: get_version + run: | + echo "version=$(script/get-crate-version coop)" >> $GITHUB_OUTPUT + + - name: Download artifacts + uses: actions/download-artifact@v3 + with: + path: artifacts + + - name: Create draft release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ steps.get_version.outputs.version }} + name: Release v${{ steps.get_version.outputs.version }} + draft: true + prerelease: false + files: | + artifacts/windows-latest-*/**/* + artifacts/macos-latest-*/**/* + artifacts/linux-*/**/* diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index ed4e51f..f7fc33c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -2,29 +2,31 @@ name: Rust on: push: - branches: [ "**" ] + branches: ["**"] pull_request: - branches: [ "m**" ] + branches: ["m**"] env: CARGO_TERM_COLOR: always jobs: build: - strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] rustup: [stable, nightly] + runs-on: ${{ matrix.os }} + steps: - - uses: actions/checkout@v4 - - name: script/linux - run: chmod +x ./script/linux && ./script/linux - if: matrix.os == 'ubuntu-latest' - #- name: cargo update - # run: cargo update - - name: Build - run: cargo build --verbose - - name: Run tests - run: cargo test --verbose + - uses: actions/checkout@v4 + + - name: script/linux + run: chmod +x ./script/linux && ./script/linux + if: matrix.os == 'ubuntu-latest' + + - name: Build + run: cargo build --verbose + + - name: Run tests + run: cargo test --verbose