mirror of
https://github.com/aljazceru/notedeck.git
synced 2025-12-29 05:54:20 +01:00
214 lines
5.9 KiB
YAML
214 lines
5.9 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- ci
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
|
|
jobs:
|
|
lint:
|
|
name: Rustfmt + Clippy
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: rustfmt,clippy
|
|
- run: |
|
|
cargo fmt --all -- --check
|
|
cargo clippy
|
|
|
|
linux-test:
|
|
name: Test (Linux)
|
|
uses: ./.github/workflows/build-and-test.yml
|
|
with:
|
|
os: ubuntu-latest
|
|
additional-setup: |
|
|
sudo apt-get install libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libspeechd-dev libxkbcommon-dev libssl-dev
|
|
|
|
macos-test:
|
|
name: Test (macOS)
|
|
uses: ./.github/workflows/build-and-test.yml
|
|
with:
|
|
os: macos-latest
|
|
|
|
windows-test:
|
|
name: Test (Windows)
|
|
uses: ./.github/workflows/build-and-test.yml
|
|
with:
|
|
os: windows-latest
|
|
|
|
packaging:
|
|
name: rpm/deb
|
|
runs-on: ubuntu-latest
|
|
needs: linux-test
|
|
if: github.ref_name == 'master' || github.ref_name == 'ci'
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: [x86_64, aarch64]
|
|
|
|
steps:
|
|
# Checkout the repository
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
# Install Packaging Tools
|
|
- name: Install Packaging Tools
|
|
run: |
|
|
sudo apt-get update
|
|
if [ "${{ matrix.arch }}" != "$(uname -m)" ]; then
|
|
sudo apt-get install -y gcc-${{ matrix.arch }}-linux-gnu g++-aarch64-linux-gnu
|
|
rustup target add ${{ matrix.arch }}-unknown-linux-gnu
|
|
fi
|
|
cargo install cargo-generate-rpm cargo-deb
|
|
|
|
- name: Rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Build Cross (${{ matrix.arch }})
|
|
if: matrix.arch != runner.arch
|
|
run: cargo build --release --target=${{ matrix.arch }}-unknown-linux-gnu
|
|
|
|
- name: Build Native (${{ matrix.arch }})
|
|
if: matrix.arch == runner.arch
|
|
run: cargo build --release
|
|
|
|
- name: Build RPM (Cross)
|
|
if: matrix.arch != runner.arch
|
|
run: cargo generate-rpm --target=${{ matrix.arch }}-unknown-linux-gnu
|
|
|
|
- name: Build RPM
|
|
if: matrix.arch == runner.arch
|
|
run: cargo generate-rpm
|
|
|
|
- name: Build deb (Cross)
|
|
if: matrix.arch != runner.arch
|
|
run: cargo deb --target=${{ matrix.arch }}-unknown-linux-gnu
|
|
|
|
- name: Build deb
|
|
if: matrix.arch == runner.arch
|
|
run: cargo deb
|
|
|
|
- name: Upload RPM
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.arch == matrix.arch
|
|
with:
|
|
name: notedeck-${{ matrix.arch }}.rpm
|
|
path: target/release/generate-rpm/notedeck.rpm
|
|
|
|
- name: Upload RPM (Cross)
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.arch != matrix.arch
|
|
with:
|
|
name: notedeck-${{ matrix.arch }}.rpm
|
|
path: target/${{ matrix.arch }}-unknown-linux-gnu/generate-rpm/*.rpm
|
|
|
|
- name: Upload deb (Native)
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.arch == matrix.arch
|
|
with:
|
|
name: notedeck-${{ matrix.arch }}.deb
|
|
path: target/release/debian/notedeck.deb
|
|
|
|
# Upload Debian Package (Cross)
|
|
- name: Upload deb (Cross)
|
|
uses: actions/upload-artifact@v4
|
|
if: runner.arch != matrix.arch
|
|
with:
|
|
name: notedeck-${{ matrix.arch }}.deb
|
|
path: target/${{ matrix.arch }}-unknown-linux-gnu/debian/*.deb
|
|
|
|
macos-dmg:
|
|
name: macOS dmg
|
|
runs-on: macos-latest
|
|
needs: macos-test
|
|
if: github.ref_name == 'master' || github.ref_name == 'ci'
|
|
env:
|
|
NOTEDECK_APPLE_RELEASE_CERT_ID: ${{ secrets.NOTEDECK_APPLE_RELEASE_CERT_ID }}
|
|
NOTEDECK_RELEASE_APPLE_ID: ${{ secrets.NOTEDECK_RELEASE_APPLE_ID }}
|
|
NOTEDECK_APPLE_APP_SPECIFIC_PW: ${{ secrets.NOTEDECK_APPLE_APP_SPECIFIC_PW }}
|
|
NOTEDECK_APPLE_TEAM_ID: ${{ secrets.NOTEDECK_APPLE_TEAM_ID }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
arch: [x86_64, aarch64]
|
|
|
|
steps:
|
|
# Checkout the repository
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Required Tools
|
|
run: |
|
|
brew install create-dmg
|
|
cargo install cargo-bundle
|
|
rustup target add ${{ matrix.arch }}-apple-darwin
|
|
|
|
- name: Import apple codesign cert
|
|
uses: apple-actions/import-codesign-certs@v3
|
|
with:
|
|
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
|
|
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
|
|
|
|
- name: Rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Run macOS DMG Build Script
|
|
run: ARCH=${{ matrix.arch }} ./scripts/macos_build.sh
|
|
|
|
- name: Upload DMG Artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: notedeck-${{ matrix.arch }}.dmg
|
|
path: packages/notedeck-${{ matrix.arch }}.dmg
|
|
|
|
windows-installer:
|
|
name: Build Windows Installer (x86_64)
|
|
runs-on: windows-latest
|
|
needs: windows-test
|
|
if: github.ref_name == 'master' || github.ref_name == 'ci'
|
|
steps:
|
|
# Checkout the repository
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
|
|
# Build cache
|
|
- name: Rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
|
|
# Build
|
|
- name: Build (Native Only)
|
|
run: cargo build --release
|
|
|
|
# Create packages directory
|
|
- name: Create packages directory
|
|
run: mkdir packages
|
|
|
|
# Install Inno Setup
|
|
- name: Install Inno Setup
|
|
run: choco install innosetup --no-progress --yes
|
|
|
|
# Build Installer
|
|
- name: Run Inno Setup Script
|
|
run: |
|
|
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "scripts\windows-installer.iss"
|
|
|
|
# List outputs
|
|
- name: List Inno Script outputs
|
|
run: dir packages
|
|
|
|
# Upload the installer as an artifact
|
|
- name: Upload Installer
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: DamusNotedeckInstaller.exe
|
|
path: packages\DamusNotedeckInstaller.exe
|
|
|