Skip to content
34 changes: 27 additions & 7 deletions .github/workflows/publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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: ''

Expand Down Expand Up @@ -141,7 +145,7 @@ jobs:
- name: Rust Cache ${{ matrix.target }}
uses: Swatinem/[email protected]
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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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:
Expand Down
12 changes: 12 additions & 0 deletions scripts/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Comment on lines +230 to +241
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Byron I figured we could do something of a middleground. We make the Ubuntu 22.04 build the "default" Linux build, which will be linked from the website without any changes to any infra.

But we still build the Ubuntu 24.04 (noble) build, and just stash it away under a different S3 key. So we can direct users to "try that AppImage instead" if they report issues. At least it'll be accessible.

Depending on how the S3 access control is configured, there may be a need for some updates there, but the items should be uploaded at least.

Seems like a good middleground, don't you think? Could you try making a nightly and we'll see what happens?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lemme know if you feel like "nah, let's just go with the Ubuntu 22.04 build alone", and we'll do that.


mkdir -p "$RELEASE_DIR"

if [ "$OS" = "macos" ]; then
Expand Down
Loading