feat(desktop): enable Linux AppImage updates
This commit is contained in:
1 parent
ac7f953c94
commit
930d2d7e36
20 files changed
+373
-42
No files matched your search
@@ -132,9 +132,10 @@ jobs:
|
||||
--pattern 'latest-windows.json.sig' \
|
||||
--pattern 'SHA256SUMS-windows.txt' \
|
||||
--pattern 'EdgeEver-*-linux-x64.AppImage' \
|
||||
--pattern 'latest-linux.yml' \
|
||||
--pattern 'SHA256SUMS-linux.txt' \
|
||||
--dir "$RUNNER_TEMP/native-assets"
|
||||
test "$(find "$RUNNER_TEMP/native-assets" -type f | wc -l | tr -d ' ')" = "16"
|
||||
test "$(find "$RUNNER_TEMP/native-assets" -type f | wc -l | tr -d ' ')" = "17"
|
||||
gh release upload "$CURRENT_TAG" "$RUNNER_TEMP/native-assets/"* \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--clobber
|
||||
@@ -618,6 +619,43 @@ jobs:
|
||||
- name: Build x64 Rust sidecar
|
||||
run: cargo build --manifest-path crates/desktop-sidecar/Cargo.toml --release
|
||||
|
||||
- name: Build Linux automatic update predecessor
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
PREVIOUS_TAG: ${{ needs.release-plan.outputs.previous_tag }}
|
||||
run: |
|
||||
if [[ -n "$PREVIOUS_TAG" ]]; then
|
||||
git fetch --depth=1 origin "refs/tags/${PREVIOUS_TAG}:refs/tags/${PREVIOUS_TAG}"
|
||||
if git show "${PREVIOUS_TAG}:apps/desktop/src/main/index.mjs" | grep -q 'linuxUpdateTestMode'; then
|
||||
previous_directory="$RUNNER_TEMP/edgeever-previous-linux-x64"
|
||||
mkdir -p "$previous_directory"
|
||||
gh release download "$PREVIOUS_TAG" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--pattern 'EdgeEver-*-linux-x64.AppImage' \
|
||||
--dir "$previous_directory"
|
||||
previous_app_image="$(find "$previous_directory" -maxdepth 1 -name 'EdgeEver-*-linux-x64.AppImage' -type f -print -quit)"
|
||||
test -n "$previous_app_image"
|
||||
test "$(find "$previous_directory" -maxdepth 1 -name 'EdgeEver-*-linux-x64.AppImage' -type f | wc -l | tr -d ' ')" = "1"
|
||||
mv "$previous_app_image" "$RUNNER_TEMP/EdgeEver-linux-update-source.AppImage"
|
||||
chmod +x "$RUNNER_TEMP/EdgeEver-linux-update-source.AppImage"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# The first release that enables Linux updates has no update-capable
|
||||
# predecessor in the wild. Build the same packaged updater at an older
|
||||
# version so the bootstrap release still exercises a real replacement.
|
||||
package_backup="$RUNNER_TEMP/edgeever-desktop-package.json"
|
||||
cp apps/desktop/package.json "$package_backup"
|
||||
trap 'cp "$package_backup" apps/desktop/package.json' EXIT
|
||||
node -e "const fs=require('fs');const path='apps/desktop/package.json';const value=JSON.parse(fs.readFileSync(path,'utf8'));value.version='0.0.1';fs.writeFileSync(path, JSON.stringify(value, null, 2)+'\n')"
|
||||
EDGE_EVER_DESKTOP_ARCH=x64 EDGE_EVER_DESKTOP_TARGET=linux \
|
||||
bun scripts/run-desktop-builder.mjs --publish never
|
||||
mv release/desktop/EdgeEver-0.0.1-linux-x64.AppImage \
|
||||
"$RUNNER_TEMP/EdgeEver-linux-update-source.AppImage"
|
||||
cp "$package_backup" apps/desktop/package.json
|
||||
trap - EXIT
|
||||
|
||||
- name: Package Linux AppImage
|
||||
env:
|
||||
EDGE_EVER_DESKTOP_ARCH: x64
|
||||
@@ -667,12 +705,26 @@ jobs:
|
||||
sha256sum "EdgeEver-${version}-linux-x64.AppImage" > SHA256SUMS-linux.txt
|
||||
sha256sum --check SHA256SUMS-linux.txt
|
||||
|
||||
- name: Verify Linux automatic update metadata
|
||||
run: |
|
||||
version="$(node -p "JSON.parse(require('fs').readFileSync('apps/desktop/package.json', 'utf8')).version")"
|
||||
node scripts/verify-linux-update-release.mjs release/desktop "$version"
|
||||
|
||||
- name: Verify real Linux AppImage automatic update
|
||||
run: |
|
||||
version="$(node -p "JSON.parse(require('fs').readFileSync('apps/desktop/package.json', 'utf8')).version")"
|
||||
xvfb-run -a bun scripts/verify-linux-appimage-update.mjs \
|
||||
"$RUNNER_TEMP/EdgeEver-linux-update-source.AppImage" \
|
||||
"release/desktop/EdgeEver-${version}-linux-x64.AppImage" \
|
||||
"$version"
|
||||
|
||||
- name: Stage Linux Preview assets
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: edgeever-desktop-Linux-x64-staging
|
||||
path: |
|
||||
release/desktop/EdgeEver-*-linux-x64.AppImage
|
||||
release/desktop/latest-linux.yml
|
||||
release/desktop/SHA256SUMS-linux.txt
|
||||
if-no-files-found: error
|
||||
retention-days: 14
|
||||
@@ -750,7 +802,7 @@ jobs:
|
||||
run: |
|
||||
version="$(node -p "JSON.parse(require('fs').readFileSync('apps/desktop/package.json', 'utf8')).version")"
|
||||
node scripts/create-mac-update-metadata.mjs release/desktop "$version"
|
||||
(cd release/desktop && sha256sum --check SHA256SUMS-linux.txt)
|
||||
node scripts/verify-linux-update-release.mjs release/desktop "$version"
|
||||
asset_ready="$(
|
||||
find release/desktop -maxdepth 1 -type f -exec basename {} \; |
|
||||
node scripts/check-native-release-assets.mjs desktop true "v${version}" "$version" allow-missing-windows-signature
|
||||
@@ -837,12 +889,9 @@ jobs:
|
||||
gh release download "$RELEASE_TAG" \
|
||||
--repo "$GITHUB_REPOSITORY" \
|
||||
--pattern 'EdgeEver-*-linux-x64.AppImage' \
|
||||
--pattern 'latest-linux.yml' \
|
||||
--pattern 'SHA256SUMS-linux.txt' \
|
||||
--dir release/desktop
|
||||
|
||||
- name: Verify Linux checksum
|
||||
run: |
|
||||
app_image="$(find release/desktop -maxdepth 1 -name 'EdgeEver-*-linux-x64.AppImage' -type f -print -quit)"
|
||||
test -n "$app_image"
|
||||
test "$(find release/desktop -maxdepth 1 -name 'EdgeEver-*-linux-x64.AppImage' -type f | wc -l | tr -d ' ')" = "1"
|
||||
(cd release/desktop && sha256sum --check SHA256SUMS-linux.txt)
|
||||
- name: Verify Linux automatic update release
|
||||
run: node scripts/verify-linux-update-release.mjs release/desktop
|
||||
Reference in new issue
Block a user