Build GE-Proton AppImage #613
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 }} |