diff --git a/.gitea/workflows/build-flatpak.yml b/.gitea/workflows/build-flatpak.yml new file mode 100644 index 00000000..f86deb3a --- /dev/null +++ b/.gitea/workflows/build-flatpak.yml @@ -0,0 +1,100 @@ +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: + # Wir nutzen ein Standard Ubuntu Image, in dem wir die nötigen Flatpak-Tools installieren + image: ubuntu:22.04 + steps: + - name: Install dependencies + run: | + apt-get update + apt-get install -y curl 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 }} \ No newline at end of file