Skip to content

Build GE-Proton AppImage #600

Build GE-Proton AppImage

Build GE-Proton AppImage #600

Workflow file for this run

name: Build GE-Proton AppImage
on:
schedule:
- cron: '0 */6 * * *' # Runs every 6 hours
workflow_dispatch:
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v5
- name: Install Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libfuse2 jq tar wget
- name: Check if Tag Exists
id: check_version
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
# Get the latest release tag from GloriousEggroll
GE_RELEASE_JSON=$(gh api repos/GloriousEggroll/proton-ge-custom/releases/latest)
GE_VERSION=$(echo "$GE_RELEASE_JSON" | jq -r '.tag_name')
if [ -z "$GE_VERSION" ] || [ "$GE_VERSION" == "null" ]; then
echo "Error: Could not fetch GE-Proton version."
echo "skip=true" >> $GITHUB_OUTPUT
exit 0
fi
# Check if this specific tag already exists in YOUR repository
# We check the git ref directly; if it returns 404, the tag is new to us.
if gh api repos/${{ github.repository }}/git/ref/tags/$GE_VERSION --silent > /dev/null 2>&1; then
echo "Tag $GE_VERSION already exists in this repo. Skipping build."
echo "skip=true" >> $GITHUB_OUTPUT
else
echo "New tag $GE_VERSION detected! Preparing build..."
echo "skip=false" >> $GITHUB_OUTPUT
echo "GE_VERSION=$GE_VERSION" >> $GITHUB_ENV
# Extract the download URL for the .tar.gz asset from the GE release
DOWNLOAD_URL=$(echo "$GE_RELEASE_JSON" | jq -r '.assets[] | select((.name | endswith(".tar.gz")) and (.name | contains("aarch64") | not)) | .browser_download_url')
echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> $GITHUB_ENV
echo "FINAL_NAME=${GE_VERSION}-standalone.AppImage" >> $GITHUB_ENV
fi
- name: Fetch and Extract GE-Proton
if: steps.check_version.outputs.skip != 'true'
run: |
mkdir -p AppDir/opt/GE-Proton
wget -qO archive.tar "${{ env.DOWNLOAD_URL }}"
tar -xf archive.tar -C AppDir/opt/GE-Proton --strip-components=1
rm archive.tar
- name: Build AppImage
if: steps.check_version.outputs.skip != 'true'
run: |
# Ensure the tool is executable
chmod +x appimagetool-x86_64.AppImage
# Build the AppImage using the extracted content in AppDir
ARCH=x86_64 ./appimagetool-x86_64.AppImage --appimage-extract-and-run AppDir
- name: Rename Output Safely
if: steps.check_version.outputs.skip != 'true'
run: |
# Find the newly generated AppImage while ignoring the build tool
GENERATED_FILE=$(find . -maxdepth 1 -name "*.AppImage" ! -name "appimagetool-x86_64.AppImage" -print -quit)
mv "$GENERATED_FILE" "${{ env.FINAL_NAME }}"
- name: Create Release
if: steps.check_version.outputs.skip != 'true' && github.ref == 'refs/heads/main'
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.GE_VERSION }}
name: Release ${{ env.GE_VERSION }} Standalone AppImage
files: "${{ env.FINAL_NAME }}"
body: |
Automated standalone build of ${{ env.GE_VERSION }}
This Proton build runs in WoW64 mode.
Source: [GloriousEggroll/proton-ge-custom](https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/${{ env.GE_VERSION }})
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}