chore: add release action

This commit is contained in:
2025-08-04 08:59:24 +07:00
parent ed6e4f2082
commit ab4597cb6f
3 changed files with 139 additions and 88 deletions

View File

@@ -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 }}

124
.github/workflows/release.yml vendored Normal file
View File

@@ -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-*/**/*

View File

@@ -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