diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 33a727100b..f2f09d7896 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -100,6 +100,10 @@ jobs: target: '' - platform: ubuntu-24.04-arm # [linux, ARM64] target: '' + - platform: ubuntu-22.04 # [linux, x64] + target: '' + - platform: ubuntu-22.04-arm # [linux, ARM64] + target: '' - platform: windows-latest # [windows, x64] target: '' @@ -141,7 +145,7 @@ jobs: - name: Rust Cache ${{ matrix.target }} uses: Swatinem/rust-cache@v2.8.2 with: - shared-key: app-release-build-${{ github.event.inputs.channel || 'nightly' }}${{ matrix.target }} + shared-key: app-release-build-${{ github.event.inputs.channel || 'nightly' }}${{ matrix.target }}${{ matrix.platform }} - name: Init Node Environment uses: ./.github/actions/init-env-node @@ -183,13 +187,25 @@ jobs: librsvg2-dev \ xdg-utils; + if [ $(lsb_release -cs) = "jammy" ]; then + webkit_version='2.50.*' + elif [ $(lsb_release -cs) = "noble" ]; then + # For noble, we use this older version (that is not available on jammy) for the webkit libs as it + # seems to provide better AppImage compatibility. See https://github.com/gitbutlerapp/gitbutler/issues/5282 + webkit_version='2.44.*' + else + echo "Unknown Linux distribution" + lsb_release -a + exit 1 + fi + sudo apt install -y \ - libwebkit2gtk-4.1-0=2.44.0-2 \ - libwebkit2gtk-4.1-dev=2.44.0-2 \ - libjavascriptcoregtk-4.1-0=2.44.0-2 \ - libjavascriptcoregtk-4.1-dev=2.44.0-2 \ - gir1.2-javascriptcoregtk-4.1=2.44.0-2 \ - gir1.2-webkit2-4.1=2.44.0-2; + libwebkit2gtk-4.1-0="$webkit_version" \ + libwebkit2gtk-4.1-dev="$webkit_version" \ + libjavascriptcoregtk-4.1-0="$webkit_version" \ + libjavascriptcoregtk-4.1-dev="$webkit_version" \ + gir1.2-javascriptcoregtk-4.1="$webkit_version" \ + gir1.2-webkit2-4.1="$webkit_version"; - uses: actions/download-artifact@v6 name: Download SvelteKit build output @@ -352,6 +368,10 @@ jobs: target: '' - platform: ubuntu-24.04-arm # [linux, ARM64] target: '' + - platform: ubuntu-22.04 # [linux, x64] + target: '' + - platform: ubuntu-22.04-arm # [linux, ARM64] + target: '' - platform: windows-latest # [windows, x64] target: '' steps: diff --git a/scripts/release.sh b/scripts/release.sh index 397488e4ee..1b88053cb2 100755 --- a/scripts/release.sh +++ b/scripts/release.sh @@ -227,7 +227,19 @@ else BUNDLE_DIR=$(readlink -f "$PWD/../target/release/bundle") fi +# The release dir determines a (significant portion of) the S3 object keys for +# the artifacts. RELEASE_DIR="$DIST/$OS/$ARCH" +if [ "$OS" = "linux" ] && [ $(lsb_release -cs) = "noble" ]; then + # Our default Linux build is Ubuntu jammy (22.04). We still build for noble + # (24.04) but put the builds in a hidden-away part of the S3 bucket. The + # primary reason for this build existing is that the noble-built AppImage + # tends to work better with newer distros than the jammy-built AppImage. + RELEASE_DIR="$DIST/$OS-$(lsb_release -cs)/$ARCH" +fi + +echo "Resolved RELEASE_DIR=$RELEASE_DIR" + mkdir -p "$RELEASE_DIR" if [ "$OS" = "macos" ]; then