ES-DE/.github/workflows/build_es-de.yml

156 lines
6.2 KiB
YAML

name: "Build ES-DE"
on:
push:
branches:
- retrodeck-main
- main
- feat/*
workflow_dispatch:
jobs:
Set_Release_Metadata:
runs-on: ubuntu-latest
outputs:
branch_name: ${{ steps.set-vars.outputs.branch_name }}
date: ${{ steps.set-vars.outputs.date }}
steps:
- name: Set Branch and Date
id: set-vars
run: |
BRANCH_NAME=$(echo "${GITHUB_REF#refs/heads/}")
DATE=$(date +'%d%m%y.%S')
echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
echo "date=$DATE" >> $GITHUB_OUTPUT
Building_RetroDECK-ES-DE:
runs-on: ubuntu-latest
needs: Set_Release_Metadata
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'recursive'
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
fetch-depth: 1
- name: Install dependencies
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
- name: Pre-build automation
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
- name: Build flatpak
run: |
git config --global protocol.file.allow always
flatpak-builder --user --force-clean \
--install-deps-from=flathub \
--install-deps-from=flathub-beta \
--repo=${GITHUB_WORKSPACE}/es-de-repo \
"${GITHUB_WORKSPACE}/es-de-build-dir" \
net.retrodeck.es-de.yml
- name: Package flatpak artifact
run: |
tar -czf RetroDECK-ES-DE-Artifact.tar.gz -C es-de-build-dir .
tree -H ./ > tree.html
- name: Upload flatpak to GitHub Release
uses: ncipollo/release-action@v1
with:
tag: "${{ needs.Set_Release_Metadata.outputs.branch_name }}-${{ needs.Set_Release_Metadata.outputs.date }}"
name: "${{ needs.Set_Release_Metadata.outputs.branch_name }} Build"
body: |
# Release Notes
These are the artifact of RetroDECK ES-DE, commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
On branch [${{ needs.Set_Release_Metadata.outputs.branch_name }}](https://github.com/${{ github.repository }}/tree/${{ needs.Set_Release_Metadata.outputs.branch_name }}).
artifacts: |
RetroDECK-ES-DE-Artifact.tar.gz
tree.html
allowUpdates: true
makeLatest: ${{ contains(needs.Set_Release_Metadata.outputs.branch_name, 'feat/') && 'false' || 'true' }}
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
Create_AppImage_RetroDECK:
runs-on: ubuntu-latest
needs: Set_Release_Metadata
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: 'recursive'
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
fetch-depth: 1
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential clang-format git cmake gettext libharfbuzz-dev libicu-dev libsdl2-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libfreeimage-dev libfreetype6-dev libgit2-dev libcurl4-openssl-dev libpugixml-dev libasound2-dev libgl1-mesa-dev libpoppler-cpp-dev libpipewire-0.3-dev libbluetooth-dev fuse
- name: Build AppImage
run: |
chmod +x tools/create_AppImage_RetroDECK.sh
./tools/create_AppImage_RetroDECK.sh
- name: Upload AppImage to GitHub Release
uses: ncipollo/release-action@v1
with:
tag: "${{ needs.Set_Release_Metadata.outputs.branch_name }}-${{ needs.Set_Release_Metadata.outputs.date }}"
name: "${{ needs.Set_Release_Metadata.outputs.branch_name }} Build"
body: |
# Release Notes
These are the artifact of RetroDECK ES-DE, commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
On branch [${{ needs.Set_Release_Metadata.outputs.branch_name }}](https://github.com/${{ github.repository }}/tree/${{ needs.Set_Release_Metadata.outputs.branch_name }}).
artifacts: |
ES-DE_x64_RetroDECK.AppImage
allowUpdates: true
makeLatest: ${{ contains(needs.Set_Release_Metadata.outputs.branch_name, 'feat/') && 'false' || 'true' }}
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
Check_And_Delete_Empty_Release:
runs-on: ubuntu-latest
if: ${{ always() }}
needs:
- Set_Release_Metadata
- Building_RetroDECK-ES-DE
- Create_AppImage_RetroDECK
steps:
- name: Check if all required jobs succeeded
id: check_status
run: |
echo "build1: ${{ needs.Building_RetroDECK-ES-DE.result }}"
echo "build2: ${{ needs.Create_AppImage_RetroDECK.result }}"
if [ "${{ needs.Building_RetroDECK-ES-DE.result }}" = "success" ] || [ "${{ needs.Create_AppImage_RetroDECK.result }}" = "success" ]; then
echo "At least one build succeeded, skipping release deletion."
echo "proceed=false" >> $GITHUB_OUTPUT
else
echo "All builds failed. Proceeding to check for empty release."
echo "proceed=true" >> $GITHUB_OUTPUT
fi
- name: Delete release if empty and all builds failed
if: steps.check_status.outputs.proceed == 'true'
env:
GH_TOKEN: ${{ secrets.TRIGGER_BUILD_TOKEN }}
REPO: ${{ github.repository }}
TAG_NAME: "${{ needs.Set_Release_Metadata.outputs.branch_name }}-${{ needs.Set_Release_Metadata.outputs.date }}"
run: |
echo "Checking release $TAG_NAME on $REPO"
RELEASE_JSON=$(gh api repos/$REPO/releases/tags/$TAG_NAME)
ASSET_COUNT=$(echo "$RELEASE_JSON" | jq '.assets | length')
echo "Assets in release: $ASSET_COUNT"
if [ "$ASSET_COUNT" -le 2 ]; then
RELEASE_ID=$(echo "$RELEASE_JSON" | jq -r '.id')
echo "Deleting empty release (ID: $RELEASE_ID)..."
gh api --method DELETE repos/$REPO/releases/$RELEASE_ID
git push origin --delete "$TAG_NAME"
echo "✅ Empty release deleted: $TAG_NAME"
else
echo "🛑 Release has assets. Not deleting."
fi