RetroDECK 0.8.1b #203
This file contains 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 main" | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- '.github/workflows/**' | |
- 'automation_tools/**' | |
- 'emu-configs/**' | |
- 'es-configs/**' | |
- 'functions/**' | |
- 'rd-submodules/**' | |
- '*.sh' | |
- 'net.retrodeck.retrodeck.yml' | |
- 'net.retrodeck.retrodeck.appdata.xml' | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
Building_RetroDECK: | |
runs-on: self-hosted | |
steps: | |
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317 | |
- name: Remove stuck mounts | |
run: sudo umount -f /home/ubuntu/actions-runner/_work/RetroDECK/RetroDECK/.flatpak-builder/rofiles/* | |
continue-on-error: true | |
- name: Clone RetroDECK repo | |
uses: actions/checkout@v3 | |
with: | |
submodules: 'true' | |
- name: "Install dependencies" | |
run: "automation_tools/install_dependencies.sh" | |
# backing up manifest in case download fails and hashes must be recalculated | |
- name: Manifest backup | |
run: "cp ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml ${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" | |
- name: Run pre-build automation tasks | |
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" | |
- name: Read manifest content | |
id: read_manifest | |
run: echo "::set-output name=file_content::$(cat net.retrodeck.retrodeck.yml)" | |
# - name: "Updating release notes in appdata" | |
# run: "automation_tools/appdata_management.sh" | |
- name: Check versions (main only) | |
id: check_version_string | |
run: "automation_tools/main_version_checker.sh" | |
- name: "[DEBUG] Outputting manifest" | |
run: cat net.retrodeck.retrodeck.yml | |
- name: "Build flatpak: download only" | |
id: "flatpak-download" | |
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" | |
continue-on-error: true | |
# Sometimes flatpak download fails, in this case it tries a second time | |
- name: "Build flatpak: download only (retry)" | |
if: steps.flatpak-download.outcome == 'failure' | |
run: | | |
echo "Download failed, maybe some hash changed since the build start." | |
echo "Recalculating hashes and retrying download..." | |
rm -f "{GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" | |
cp "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml.bak" "${GITHUB_WORKSPACE}/net.retrodeck.retrodeck.yml" | |
"${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh" | |
"${GITHUB_WORKSPACE}/automation_tools/flatpak_build_download_only.sh" | |
- name: Build flatpak | |
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_only.sh" | |
- name: Create Artifact for flathub | |
run: | | |
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/retrodeck-flatpak-main . | |
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-Artifact.tar.gz)) | |
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact.sha | |
mv -f RetroDECK-Artifact.* ${{ secrets.ARTIFACT_REPO }} | |
- name: Create Bundle | |
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" | |
- name: Getting version info | |
id: version | |
run: | | |
appdata="https://raw.githubusercontent.com/XargonWan/RetroDECK/main/net.retrodeck.retrodeck.appdata.xml" | |
REL_VER=$(curl -s $appdata | xmlstarlet sel -t -v "//release/@version" | head -1) | |
DES="$(curl -s $appdata | xmlstarlet sel -t -m "//release[1]" -v "description" -n | sed '1,2d;$d;s/^ */- /;/^- $/d')" | |
echo "REL_VER=$REL_VER" >> $GITHUB_ENV | |
echo -e "# Release Notes\n" >> "body.md" | |
echo "$DES" >> "body.md" | |
- name: Publish the flatpak in a new release | |
uses: ncipollo/release-action@v1 | |
env: | |
REL_VER: ${{ env.REL_VER }} | |
with: | |
tag: ${{ env.REL_VER }} | |
name: "RetroDECK v${{ env.REL_VER }}" | |
bodyFile: "body.md" | |
artifacts: "RetroDECK.flatpak,RetroDECK.flatpak.sha,RetroDECK-Artifact.tar.gz" | |
allowUpdates: true | |
makeLatest: true | |
token: ${{ secrets.TRIGGER_BUILD_TOKEN }} | |
repo: RetroDECK | |
continue-on-error: true | |
# In case it cannot publish the release at least it's providing the flatpak file for creating a manual release | |
- name: Upload RetroDECK.flatpak | |
uses: actions/upload-artifact@v3 | |
with: | |
name: retrodeck-flatpak | |
path: RetroDECK.flatpak | |
continue-on-error: true | |
- name: Publish the flatpak in a new release on Gitea | |
uses: ncipollo/release-action@v1 | |
env: | |
REL_VER: ${{ env.REL_VER }} | |
with: | |
tag: ${{ env.REL_VER }} | |
name: "RetroDECK v${{ env.REL_VER }}" | |
bodyFile: "body.md" | |
artifacts: "RetroDECK.flatpak,RetroDECK-Artifact.tar.gz" | |
allowUpdates: true | |
makeLatest: true | |
token: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }} | |
repo: "https://repo.retrodeck.net/RetroDECK/RetroDECK" | |
continue-on-error: true | |
- name: Upload RetroDECK.flatpak to Gitea Release | |
run: | | |
curl -X POST \ | |
-H "Authorization: token ${GITEA_TOKEN}" \ | |
-F "file=@RetroDECK.flatpak" \ | |
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak" | |
env: | |
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }} | |
- name: Upload RetroDECK.flatpak.sha to Gitea Release | |
run: | | |
curl -X POST \ | |
-H "Authorization: token ${GITEA_TOKEN}" \ | |
-F "file=@RetroDECK.flatpak.sha" \ | |
"https://repo.retrodeck.net/RetroDECK/RetroDECK/releases/${{ env.REL_VER }}/assets?name=RetroDECK.flatpak.sha" | |
env: | |
GITEA_TOKEN: ${{ secrets.GITEA_TRIGGER_BUILD_TOKEN }} |