name: Build Quickgui ๐Ÿ—๏ธ on: pull_request: branches: - main paths: - pubspec.yaml - assets/** - lib/** - linux/** push: branches: - main paths: - pubspec.yaml - assets/** - lib/** - linux/** workflow_dispatch: # TODO: arm64 runner # https://github.blog/changelog/2024-06-03-actions-arm-based-linux-and-windows-runners-are-now-in-public-beta/ jobs: test-build-linux-x64: runs-on: ubuntu-22.04 steps: - name: "Checkout ๐Ÿฅก" uses: actions/checkout@v4 - name: "Install Flutter ๐Ÿฆ‹" uses: subosito/flutter-action@v2 with: channel: stable architecture: x64 flutter-version-file: pubspec.yaml - name: "Install dependencies ๐Ÿ’พ" run: | sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config - name: Install Flutter dependencies ๐Ÿฆ‹ run: flutter pub get - name: Enable Linux Desktop ๐Ÿง run: flutter config --enable-linux-desktop - name: Build artifacts ๐Ÿ—๏ธ run: flutter build linux --release - name: Show artifacts ๐Ÿ‘€ run: tree build/linux/x64/release/bundle - name: Upload artifacts โคด๏ธ uses: actions/upload-artifact@v4 with: name: Quickgui-${{github.run_number}}-linux-x64 path: build/linux/x64/release/bundle overwrite: true test-build-ppa-x64: runs-on: ubuntu-22.04 steps: - name: "Checkout ๐Ÿฅก" uses: actions/checkout@v4 - name: "Install Flutter ๐Ÿฆ‹" uses: subosito/flutter-action@v2 with: channel: stable architecture: x64 flutter-version-file: pubspec.yaml - name: "Install dependencies ๐Ÿ’พ" run: | sudo apt-get -y install clang cmake libblkid1 liblzma5 libgtk-3-0 libgtk-3-dev ninja-build pkg-config sudo apt-get -y install debhelper-compat distro-info dput devscripts rsync - name: Install Flutter dependencies ๐Ÿฆ‹ run: flutter pub get - name: Enable Linux Desktop ๐Ÿง run: flutter config --enable-linux-desktop - name: Build artifacts ๐Ÿ—๏ธ run: flutter build linux --release - name: "Import gpg key ๐Ÿ”‘" uses: crazy-max/ghaction-import-gpg@v6 with: gpg_private_key: ${{ secrets.PPA_GPG_PRIVATE_KEY }} passphrase: ${{ secrets.PPA_GPG_PASSPHRASE }} - name: "Upload to PPA โคด๏ธ" env: DEBEMAIL: ${{ secrets.DEBEMAIL }} DEBFULLNAME: ${{ secrets.DEBFULLNAME }} run: | # Version variables DEB_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+/-/') TAR_VER=$(grep "^version" pubspec.yaml | cut -d' ' -f2 | sed 's/+.*//') STAMP=$(date +%y%j.%H%M) # Create a "fake" orig.tar.xz mkdir -p ubuntu/build cp -a build/linux/x64/release/bundle/* ubuntu/build/ cp -a assets/resources/quickgui.desktop ubuntu/build/ for SIZE in 16 32 48 64 128 256 512; do mkdir -p ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/ cp -av assets/resources/quickgui_${SIZE}.png ubuntu/build/icons/hicolor/${SIZE}x${SIZE}/apps/quickgui.png done tar cvf "ubuntu/quickgui_${TAR_VER}.orig.tar" --directory ubuntu/build . xz -vv -fz "ubuntu/quickgui_${TAR_VER}.orig.tar" # Make a debian "source" package mkdir -p ubuntu/build/debian cp -a linux/packaging/debian/* ubuntu/build/debian/ sed -i 's/Architecture: any/Architecture: amd64/g' ubuntu/build/debian/control cd ubuntu/build for CODENAME in $(distro-info --supported); do rm debian/changelog dch --package quickgui --newversion="${DEB_VER}~${CODENAME}${STAMP}" --distribution=${CODENAME} "New upstream release." --create dpkg-buildpackage -d -S -sa #dput ppa:flexiondotorg/rubbish ../quickgui_${DEB_VER}~${CODENAME}${STAMP}_source.changes done - name: Show artifacts ๐Ÿ‘€ run: tree ubuntu/ test-build-nix-x64: runs-on: ubuntu-22.04 permissions: id-token: "write" contents: "read" steps: - name: "Checkout ๐Ÿฅก" uses: "actions/checkout@v4" - name: "Install Nix โ„๏ธ" uses: "DeterminateSystems/nix-installer-action@v17" - name: "Enable Magic Nix Cache ๐Ÿช„" uses: "DeterminateSystems/magic-nix-cache-action@v9" - name: "Build with Nix โ„๏ธ" run: | nix build .#quickgui tree ./result