name: Release on: push: tags: - 'v*' env: CARGO_TERM_COLOR: always jobs: release-build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - variant: "default" args: "" distro: "ubuntu" - variant: "no-networking" args: "--no-default-features" distro: "ubuntu" - variant: "default" args: "" distro: "debian" - variant: "default" args: "" distro: "fedora" - variant: "default" args: "" distro: "arch" container: ${{ matrix.distro == 'ubuntu' && 'ubuntu:latest' || matrix.distro == 'debian' && 'debian:stable-slim' || matrix.distro == 'fedora' && 'fedora:latest' || 'archlinux:latest' }} steps: - name: Checkout uses: actions/checkout@v4 - name: Install system dependencies (Ubuntu/Debian) if: matrix.distro == 'ubuntu' || matrix.distro == 'debian' run: | apt-get update apt-get install -y \ curl \ llvm clang libclang-dev \ pkg-config \ libglib2.0-dev libcairo2-dev libpango1.0-dev libatk1.0-dev \ libgdk-pixbuf-2.0-dev libpam0g-dev libdbus-1-dev \ libwayland-dev libxkbcommon-dev - name: Install system dependencies (Fedora) if: matrix.distro == 'fedora' run: | dnf install -y \ curl \ llvm clang clang-devel \ pkgconfig \ glib2-devel cairo-devel cairo-gobject-devel pango-devel atk-devel \ gdk-pixbuf2-devel pam-devel dbus-devel \ wayland-devel libxkbcommon-devel - name: Install system dependencies (Arch) if: matrix.distro == 'arch' run: | pacman -Sy --noconfirm \ base-devel \ llvm clang pkgconf \ glib2 cairo pango atk gdk-pixbuf2 \ pam dbus \ wayland libxkbcommon - name: Install Rust uses: dtolnay/rust-toolchain@stable - name: Build ${{ matrix.variant }} (${{ matrix.distro }}) run: cargo build --release ${{ matrix.args }} - name: Upload artifact uses: actions/upload-artifact@v4 with: name: rustlock-${{ matrix.variant }}-${{ matrix.distro }} path: target/release/rustlock release: runs-on: ubuntu-latest needs: [release-build] permissions: contents: write steps: - name: Checkout uses: actions/checkout@v4 - name: Download all artifacts uses: actions/download-artifact@v4 with: path: artifacts - name: List artifacts run: ls -la artifacts/ - name: Determine tag id: tag run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT - name: Create Release uses: softprops/action-gh-release@v1 with: tag_name: ${{ github.ref_name }} name: RustLock v${{ steps.tag.outputs.VERSION }} draft: true prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') }} files: | artifacts/rustlock-default-ubuntu/rustlock artifacts/rustlock-no-networking-ubuntu/rustlock artifacts/rustlock-default-debian/rustlock artifacts/rustlock-default-fedora/rustlock artifacts/rustlock-default-arch/rustlock env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}