mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
feat(automation): added the AppImage build job
This commit is contained in:
parent
b2ecbb3d05
commit
5707fc135b
137
.github/workflows/build_es-de.yml
vendored
137
.github/workflows/build_es-de.yml
vendored
|
|
@ -3,110 +3,99 @@ name: "Build ES-DE"
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- retrodeck-main
|
- retrodeck-main
|
||||||
- main
|
- main
|
||||||
- feat/*
|
- feat/*
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
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:
|
Building_RetroDECK-ES-DE:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
needs: Set_Release_Metadata
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout
|
||||||
- name: Clone repo
|
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
# Install Dependencies
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
|
run: curl "https://raw.githubusercontent.com/RetroDECK/components-template/main/automation_tools/install_dependencies.sh" | bash
|
||||||
|
|
||||||
- name: Run pre-build automation tasks
|
- name: Pre-build automation
|
||||||
run : "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/pre_build_automation.sh"
|
||||||
|
|
||||||
- name: "[DEBUG] Outputting manifest"
|
- name: Build flatpak
|
||||||
run: cat net.retrodeck.es-de.yml
|
|
||||||
|
|
||||||
- name: "Build flatpak"
|
|
||||||
id: "flatpak-download"
|
|
||||||
run: |
|
run: |
|
||||||
git config --global protocol.file.allow always
|
git config --global protocol.file.allow always
|
||||||
flatpak-builder --user --force-clean \
|
flatpak-builder --user --force-clean \
|
||||||
--install-deps-from=flathub \
|
--install-deps-from=flathub \
|
||||||
--install-deps-from=flathub-beta \
|
--install-deps-from=flathub-beta \
|
||||||
--repo=${GITHUB_WORKSPACE}/es-de-repo \
|
--repo=${GITHUB_WORKSPACE}/es-de-repo \
|
||||||
"${GITHUB_WORKSPACE}"/es-de-build-dir \
|
"${GITHUB_WORKSPACE}/es-de-build-dir" \
|
||||||
net.retrodeck.es-de.yml
|
net.retrodeck.es-de.yml
|
||||||
|
|
||||||
- name: "Exporting dir tree"
|
- name: Package flatpak artifact
|
||||||
id: tree
|
run: |
|
||||||
run: tree -H ./ > ${GITHUB_WORKSPACE}/tree.html
|
tar -czf RetroDECK-ES-DE-Artifact.tar.gz -C es-de-build-dir .
|
||||||
|
tree -H ./ > tree.html
|
||||||
|
|
||||||
- name: Create Artifact for RetroDECK
|
- name: Upload flatpak to GitHub Release
|
||||||
run: |
|
|
||||||
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-ES-DE-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/es-de-build-dir .
|
|
||||||
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-ES-DE-Artifact.tar.gz))
|
|
||||||
echo $hash > ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha
|
|
||||||
mv -f RetroDECK-Artifact-cooker.* ${{ secrets.ARTIFACT_REPO }}
|
|
||||||
continue-on-error: true
|
|
||||||
timeout-minutes: 1440
|
|
||||||
|
|
||||||
- name: Set environment variable with current branch name
|
|
||||||
run: echo "GITHUB_REF_SLUG=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Get branch name
|
|
||||||
id: branch_name
|
|
||||||
run: echo "BRANCH_NAME=$(echo $GITHUB_REF | sed 's|refs/heads/||')" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Get date
|
|
||||||
id: date
|
|
||||||
run: echo "DATE=$(date +'%d%m%y.%S')" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Publish the artifacts in a release
|
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
with:
|
with:
|
||||||
tag: "${{env.BRANCH_NAME}}-${{env.DATE}}"
|
tag: "${{ needs.Set_Release_Metadata.outputs.branch_name }}-${{ needs.Set_Release_Metadata.outputs.date }}"
|
||||||
|
name: "${{ needs.Set_Release_Metadata.outputs.branch_name }} Build"
|
||||||
body: |
|
body: |
|
||||||
# Release Notes
|
Build of RetroDECK ES-DE from `${{ github.repository }}@${{ github.sha }}`
|
||||||
These are the artifact of RetroDECK ES-DE, commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
|
- Branch: [${{ needs.Set_Release_Metadata.outputs.branch_name }}](https://github.com/${{ github.repository }}/tree/${{ needs.Set_Release_Metadata.outputs.branch_name }})
|
||||||
On branch [${{env.BRANCH_NAME}}](https://github.com/RetroDECK/ES-DE/tree/${{env.BRANCH_NAME}}).
|
artifacts: |
|
||||||
|
RetroDECK-ES-DE-Artifact.tar.gz
|
||||||
artifacts: "RetroDECK-ES-DE-Artifact.tar.gz, tree.html"
|
tree.html
|
||||||
allowUpdates: true
|
allowUpdates: true
|
||||||
makeLatest: ${{ contains(env.BRANCH_NAME, 'feat/') && 'false' || 'true' }}
|
makeLatest: ${{ contains(needs.Set_Release_Metadata.outputs.branch_name, 'feat/') && 'false' || 'true' }}
|
||||||
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
continue-on-error: true
|
|
||||||
|
|
||||||
# - name: Clone Cooker repo
|
Create_AppImage_RetroDECK:
|
||||||
# if: contains(env.BRANCH_NAME, 'feat/') == false
|
runs-on: ubuntu-latest
|
||||||
# uses: actions/checkout@v3
|
needs: Set_Release_Metadata
|
||||||
# with:
|
steps:
|
||||||
# repository: RetroDECK/RetroDECK
|
- name: Checkout
|
||||||
# #ref: cooker
|
uses: actions/checkout@v3
|
||||||
# ref: feat/lighter-manifest # TODO: put cooker when this is merged
|
with:
|
||||||
# submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
# token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
# path: cooker
|
fetch-depth: 1
|
||||||
|
|
||||||
# - name: "Update RetroDECK Cooker manifest with new artifact URL and SHA256"
|
- name: Build AppImage
|
||||||
# if: contains(env.BRANCH_NAME, 'feat/') == false
|
run: |
|
||||||
# run: |
|
chmod +x tools/create_AppImage_RetroDECK.sh
|
||||||
# NEW_URL="https://github.com/RetroDECK/ES-DE/releases/download/${{env.BRANCH_NAME}}-${{env.DATE}}/RetroDECK-ES-DE-Artifact.tar.gz"
|
./tools/create_AppImage_RetroDECK.sh
|
||||||
# NEW_SHA256=$(cat ${GITHUB_WORKSPACE}/RetroDECK-Artifact-cooker.sha)
|
|
||||||
|
|
||||||
# yq e -i '.modules[] | select(.name == "ES-DE") | .sources[0].url = strenv(NEW_URL)' cooker/net.retrodeck.retrodeck.yml
|
|
||||||
# yq e -i '.modules[] | select(.name == "ES-DE") | .sources[0].sha256 = strenv(NEW_SHA256)' cooker/net.retrodeck.retrodeck.yml
|
|
||||||
|
|
||||||
# - name: Commit and push changes to Cooker repo
|
|
||||||
# if: contains(env.BRANCH_NAME, 'feat/') == false
|
|
||||||
# run: |
|
|
||||||
# cd "${GITHUB_WORKSPACE}/cooker"
|
|
||||||
# git config user.name "GitHub Actions"
|
|
||||||
# git config user.email "actions@github.com"
|
|
||||||
# git add net.retrodeck.retrodeck.yml
|
|
||||||
# git commit -m "ES-DE: updated module with new artifact URL and SHA256 [skip ci]"
|
|
||||||
# git push origin HEAD
|
|
||||||
|
|
||||||
|
- 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: |
|
||||||
|
AppImage build for RetroDECK.
|
||||||
|
Branch: [${{ needs.Set_Release_Metadata.outputs.branch_name }}](https://github.com/${{ github.repository }}/tree/${{ needs.Set_Release_Metadata.outputs.branch_name }})
|
||||||
|
artifacts: |
|
||||||
|
RetroDECK-AppImage.tar.gz
|
||||||
|
allowUpdates: true
|
||||||
|
makeLatest: ${{ contains(needs.Set_Release_Metadata.outputs.branch_name, 'feat/') && 'false' || 'true' }}
|
||||||
|
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
|
||||||
|
|
|
||||||
89
tools/create_AppImage_RetroDECK.sh
Normal file
89
tools/create_AppImage_RetroDECK.sh
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/bash
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
#
|
||||||
|
# ES-DE Frontend
|
||||||
|
# create_AppImage_SteamDeck.sh
|
||||||
|
#
|
||||||
|
# Runs the complete process of building a Linux AppImage specific to the Valve Steam Deck.
|
||||||
|
# The SDL library is also built and included in the AppImage.
|
||||||
|
#
|
||||||
|
# This script has only been tested on Ubuntu 20.04 LTS and 22.04 LTS.
|
||||||
|
#
|
||||||
|
|
||||||
|
# How many CPU threads to use for the compilation.
|
||||||
|
JOBS=4
|
||||||
|
|
||||||
|
SDL_RELEASE_TAG=release-2.32.2
|
||||||
|
SDL_SHARED_LIBRARY=libSDL2-2.0.so.0.3200.2
|
||||||
|
|
||||||
|
echo "Building Steam Deck AppImage..."
|
||||||
|
|
||||||
|
if [ ! -f .clang-format ]; then
|
||||||
|
echo "You need to run this script from the root of the repository."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f appimagetool-x86_64.AppImage ]; then
|
||||||
|
echo -e "Can't find appimagetool-x86_64.AppImage, downloading the latest version...\n"
|
||||||
|
wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod a+x appimagetool-x86_64.AppImage
|
||||||
|
|
||||||
|
if [ ! -f linuxdeploy-x86_64.AppImage ]; then
|
||||||
|
echo -e "Can't find linuxdeploy-x86_64.AppImage, downloading the latest version...\n"
|
||||||
|
wget "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
|
||||||
|
fi
|
||||||
|
|
||||||
|
chmod a+x linuxdeploy-x86_64.AppImage
|
||||||
|
|
||||||
|
if [ ! -f external/SDL/build/${SDL_SHARED_LIBRARY} ]; then
|
||||||
|
echo
|
||||||
|
echo "Building the SDL library..."
|
||||||
|
cd external
|
||||||
|
rm -rf SDL
|
||||||
|
git clone https://github.com/libsdl-org/SDL.git
|
||||||
|
cd SDL
|
||||||
|
git checkout $SDL_RELEASE_TAG
|
||||||
|
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Release -S .. -B .
|
||||||
|
|
||||||
|
if [ $(grep PKG_PIPEWIRE_VERSION:INTERNAL= CMakeCache.txt) = "PKG_PIPEWIRE_VERSION:INTERNAL=" ]; then
|
||||||
|
echo
|
||||||
|
echo -e "The SDL library is not configured with PipeWire support, aborting."
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
make -j${JOBS}
|
||||||
|
cd ../../..
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo -e "The SDL library has already been built, skipping this step\n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf ./AppDir
|
||||||
|
mkdir AppDir
|
||||||
|
|
||||||
|
rm -f CMakeCache.txt
|
||||||
|
cmake -DAPPIMAGE_BUILD=on -DRETRODECK=on .
|
||||||
|
make clean
|
||||||
|
make -j${JOBS}
|
||||||
|
make install DESTDIR=AppDir
|
||||||
|
cd AppDir
|
||||||
|
ln -s usr/bin/es-de AppRun
|
||||||
|
ln -s usr/share/pixmaps/es-de.svg .
|
||||||
|
ln -s usr/share/applications/org.es_de.frontend.desktop .
|
||||||
|
ln -s es-de.svg .DirIcon
|
||||||
|
cd usr/bin
|
||||||
|
ln -s ../share/es-de/resources .
|
||||||
|
ln -s ../share/es-de/themes .
|
||||||
|
cd ../../..
|
||||||
|
|
||||||
|
./linuxdeploy-x86_64.AppImage -l /lib/x86_64-linux-gnu/libOpenGL.so.0 -l /lib/x86_64-linux-gnu/libGLdispatch.so.0 -l /lib/x86_64-linux-gnu/libgio-2.0.so.0 --appdir AppDir
|
||||||
|
cp external/SDL/build/${SDL_SHARED_LIBRARY} AppDir/usr/lib/libSDL2-2.0.so.0
|
||||||
|
./appimagetool-x86_64.AppImage AppDir
|
||||||
|
|
||||||
|
mv ES-DE-x86_64.AppImage ES-DE_x64_SteamDeck.AppImage
|
||||||
|
echo -e "\nCreated AppImage ES-DE_x64_SteamDeck.AppImage"
|
||||||
Loading…
Reference in a new issue