name: Build and Publish O3DE Flatpak on: schedule: - cron: '0 2 * * *' # Täglich um 2:00 Uhr prüfen workflow_dispatch: # Erlaubt manuelles Starten jobs: build-flatpak: runs-on: ubuntu-latest container: image: ubuntu:22.04 steps: - name: Install dependencies run: | apt-get update apt-get install -y curl ca-certificates curl -fsSL https://deb.nodesource.com/setup_20.x | bash - apt-get install -y nodejs jq sed flatpak flatpak-builder ostree git binutils xz-utils zstd - name: Checkout repository uses: actions/checkout@v4 - name: Get latest version and download URL id: check_version run: | DOWNLOAD_URL=$(curl -sL https://o3debinaries.org/download/linux.html | grep -oP 'href="[^"]+\.deb"' | head -n 1 | cut -d '"' -f 2) echo "DOWNLOAD_URL=$DOWNLOAD_URL" >> $GITHUB_ENV VERSION=$(basename "$DOWNLOAD_URL" | sed 's/o3de_//;s/\.deb//;s/_/./g') echo "VERSION=$VERSION" >> $GITHUB_ENV echo "Gefundene Version: $VERSION" echo "URL: $DOWNLOAD_URL" - name: Calculate SHA256 of the .deb run: | echo "Lade $DOWNLOAD_URL herunter..." curl -L -o o3de.deb "$DOWNLOAD_URL" SHA256=$(sha256sum o3de.deb | awk '{print $1}') echo "SHA256=$SHA256" >> $GITHUB_ENV echo "Checksumme: $SHA256" # Die Datei lokal lassen, damit flatpak-builder sie direkt verwenden kann # wenn wir in der Template auf file:// verweisen. Da flatpak-builder URLs cached, # verwenden wir jedoch URL und löschen die lokale Datei um Platz zu sparen. rm o3de.deb - name: Prepare Flatpak Manifest run: | sed -e "s|URL_PLACEHOLDER|$DOWNLOAD_URL|g" \ -e "s|SHA256_PLACEHOLDER|$SHA256|g" \ org.o3de.O3DE.yml.template > org.o3de.O3DE.yml cat org.o3de.O3DE.yml - name: Build Flatpak run: | # Flathub hinzufügen, um Runtimes herunterladen zu können flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak install --user -y flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08 # Flatpak bauen und direkt in das lokale OSTree-Repository "repo" exportieren flatpak-builder --repo=repo --force-clean build-dir org.o3de.O3DE.yml - name: Generate Static OSTree Summary run: | # Erstellt die statischen Zusammenfassungs-Dateien (summary und appstream), die für ein Web-Repo nötig sind flatpak build-update-repo repo/ - name: Publish to Gitea Pages (pages branch) run: | # Git-Benutzer konfigurieren git config --global user.name "Gitea Actions" git config --global user.email "actions@gitea.local" git config --global --add safe.directory "$GITHUB_WORKSPACE" # Temporäres Verzeichnis für den Branch erstellen mkdir -p pages-branch cd pages-branch # Authentifizierte URL für den Push erstellen REPO_URL="https://${GITHUB_ACTOR}:${GITHUB_TOKEN}@${GITHUB_SERVER_URL#*://}/${GITHUB_REPOSITORY}.git" # Versuchen den pages branch zu klonen. Wenn er nicht existiert, einen initialisieren. if git clone --branch pages "$REPO_URL" . ; then echo "Pages branch existiert bereits." else echo "Pages branch wird neu erstellt." git init git checkout -b pages fi # Das gebaute Flatpak OSTree-Repo hineinkopieren (aktualisieren) cp -a ../repo/* . # Änderungen committen und pushen git add . git commit -m "Update Flatpak Repo for O3DE v${VERSION}" || echo "Keine Änderungen zum Committen." git push "$REPO_URL" pages env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}