name: "pre-release" on: push: branches: [ "main" ] env: CARGO_TERM_COLOR: always jobs: linux-release-build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: install dependencies run: | sudo apt-get update sudo apt-get install libx11-dev libxtst-dev sudo apt-get install libadwaita-1-dev libgtk-4-dev - name: Release Build run: cargo build --release - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse-linux path: target/release/lan-mouse windows-release-build: runs-on: windows-latest steps: - uses: actions/setup-python@v5 with: python-version: '3.11' # needed for cache restore - name: create gtk dir run: mkdir C:\gtk-build\gtk\x64\release - uses: actions/cache@v3 id: cache with: path: c:/gtk-build/gtk/x64/release/** key: gtk-windows-build restore-keys: gtk-windows-build - name: Update path run: | echo "PKG_CONFIG=C:\gtk-build\gtk\x64\release\bin\pkgconf.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append echo "C:\pkg-config-lite-0.28-1\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo "C:\gtk-build\gtk\x64\release\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append echo $env:GITHUB_PATH echo $env:PATH - name: Install dependencies if: steps.cache.outputs.cache-hit != 'true' run: | # choco install msys2 # choco install visualstudio2022-workload-vctools # choco install pkgconfiglite py -m venv .venv .venv\Scripts\activate.ps1 py -m pip install gvsbuild # see https://github.com/wingtk/gvsbuild/pull/1004 Move-Item "C:\Program Files\Git\usr\bin" "C:\Program Files\Git\usr\notbin" Move-Item "C:\Program Files\Git\bin" "C:\Program Files\Git\notbin" gvsbuild build --msys-dir=C:\msys64 gtk4 libadwaita librsvg Move-Item "C:\Program Files\Git\usr\notbin" "C:\Program Files\Git\usr\bin" Move-Item "C:\Program Files\Git\notbin" "C:\Program Files\Git\bin" - uses: actions/checkout@v4 - name: Release Build run: cargo build --release - name: Create Archive run: | mkdir "lan-mouse-windows" Get-Childitem -Path "C:\\gtk-build\\gtk\\x64\\release\\bin\\*.dll" -File -Recurse | Copy-Item -Destination "lan-mouse-windows" Copy-Item -Path "target\release\lan-mouse.exe" -Destination "lan-mouse-windows" Compress-Archive -Path "lan-mouse-windows\*" -DestinationPath lan-mouse-windows.zip - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse-windows path: lan-mouse-windows.zip macos-release-build: runs-on: macos-13 steps: - uses: actions/checkout@v4 - name: install dependencies run: brew install gtk4 libadwaita imagemagick - name: Release Build run: | cargo build --release cp target/release/lan-mouse lan-mouse-macos-intel - name: Make icns run: scripts/makeicns.sh - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle run: | cargo bundle --release scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx zip -r "lan-mouse-macos-intel.zip" "Lan Mouse.app" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse-macos-intel path: target/release/bundle/osx/lan-mouse-macos-intel.zip macos-aarch64-release-build: runs-on: macos-14 steps: - uses: actions/checkout@v4 - name: install dependencies run: brew install gtk4 libadwaita imagemagick - name: Release Build run: | cargo build --release cp target/release/lan-mouse lan-mouse-macos-aarch64 - name: Make icns run: scripts/makeicns.sh - name: Install cargo bundle run: cargo install cargo-bundle - name: Bundle run: | cargo bundle --release scripts/copy-macos-dylib.sh "target/release/bundle/osx/Lan Mouse.app/Contents/MacOS/lan-mouse" - name: Zip bundle run: | cd target/release/bundle/osx zip -r "lan-mouse-macos-aarch64.zip" "Lan Mouse.app" - name: Upload build artifact uses: actions/upload-artifact@v4 with: name: lan-mouse-macos-aarch64 path: target/release/bundle/osx/lan-mouse-macos-aarch64.zip pre-release: name: "Pre Release" needs: [windows-release-build, linux-release-build, macos-release-build, macos-aarch64-release-build] runs-on: "ubuntu-latest" steps: - name: Download build artifacts uses: actions/download-artifact@v4 - name: Create Release uses: "marvinpinto/action-automatic-releases@latest" with: repo_token: "${{ secrets.GITHUB_TOKEN }}" automatic_release_tag: "latest" prerelease: true title: "Development Build" files: | lan-mouse-linux/lan-mouse lan-mouse-macos-intel/lan-mouse-macos-intel.zip lan-mouse-macos-aarch64/lan-mouse-macos-aarch64.zip lan-mouse-windows/lan-mouse-windows.zip