Merge branch 'main' into cooker

This commit is contained in:
XargonWan 2025-02-05 09:23:42 +09:00
commit 46af970010
3 changed files with 74 additions and 38 deletions

View file

@ -278,6 +278,21 @@ jobs:
- name: Create Bundle - name: Create Bundle
run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh" run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/flatpak_build_bundle.sh"
# TODO: Until we add support for Flathub-beta this is restricted to main
- name: Create Artifact for Flathub
if: github.ref == 'refs/heads/main'
run: |
if [[ "$GITHUB_REF" == "refs/heads/main" ]]; then
artifact_name="RetroDECK-Artifact"
artifact_folder="retrodeck-flatpak-main"
else
artifact_name="RetroDECK-Artifact-cooker"
artifact_folder="retrodeck-flatpak-cooker"
fi
tar -czf ${GITHUB_WORKSPACE}/${artifact_name}.tar.gz -C ${GITHUB_WORKSPACE}/"$artifact_folder" .
hash=($(sha256sum ${GITHUB_WORKSPACE}/${artifact_name}.tar.gz))
echo $hash > ${GITHUB_WORKSPACE}/${artifact_name}.sha
# Upload artifacts for other jobs # Upload artifacts for other jobs
- name: Upload Build Artifacts - name: Upload Build Artifacts
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@ -287,7 +302,8 @@ jobs:
path: | path: |
RetroDECK*.flatpak RetroDECK*.flatpak
RetroDECK*.flatpak.sha RetroDECK*.flatpak.sha
RetroDECK*Artifact.tar.gz RetroDECK-Artifact*.tar.gz
RetroDECK-Artifact*.sha
GitHub-publish: GitHub-publish:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -304,7 +320,7 @@ jobs:
with: with:
app-id: ${{ vars.REKKU_APP_ID }} app-id: ${{ vars.REKKU_APP_ID }}
private-key: ${{ secrets.REKKU_PRIVATE_KEY }} private-key: ${{ secrets.REKKU_PRIVATE_KEY }}
repositories: "RetroDECK,Cooker" repositories: "RetroDECK,Cooker,Artifacts"
owner: "RetroDECK" owner: "RetroDECK"
- name: Download all workflow run artifacts - name: Download all workflow run artifacts
@ -334,6 +350,20 @@ jobs:
repo: ${{ env.REPO_NAME }} repo: ${{ env.REPO_NAME }}
token: ${{ steps.generate-rekku-token.outputs.token }} token: ${{ steps.generate-rekku-token.outputs.token }}
# Publish Artifacts
- name: Publish Artifacts
uses: ncipollo/release-action@v1
with:
tag: ${{ env.TAG }}
name: "RetroDECK Artifacts - ${{ env.TAG }}"
body: "Flathub artifacts for version ${{ env.TAG }}"
artifacts: "retrodeck-artifacts/RetroDECK-Artifact*.tar.gz,retrodeck-artifacts/RetroDECK-Artifact*.sha"
allowUpdates: true
omitBodyDuringUpdate: true
makeLatest: ${{ env.MAKE_LATEST }}
repo: Artifacts
token: ${{ steps.generate-rekku-token.outputs.token }}
- name: Post PR comment with artifacts - name: Post PR comment with artifacts
if: github.event_name == 'pull_request_target' || github.event_name == 'pull_request' if: github.event_name == 'pull_request_target' || github.event_name == 'pull_request'
uses: marocchino/sticky-pull-request-comment@v2 uses: marocchino/sticky-pull-request-comment@v2
@ -434,4 +464,4 @@ jobs:
# Uninstall RetroDECK Flatpak - Not needed on a thorwaway ubuntu-latest # Uninstall RetroDECK Flatpak - Not needed on a thorwaway ubuntu-latest
# - name: Uninstall RetroDECK Flatpak # - name: Uninstall RetroDECK Flatpak
# run: | # run: |
# flatpak remove --user --noninteractive -y net.retrodeck.retrodeck # flatpak remove --user --noninteractive -y net.retrodeck.retrodeck

View file

@ -1,51 +1,60 @@
#!/bin/bash #!/bin/bash
# EDITABLES: # Check if GITHUB_WORKSPACE is set, if not, set gits_folder to /tmp/gits
#rd_branch=${GITHUB_REF_NAME} # should be main
if [ -z "${GITHUB_WORKSPACE}" ]; then if [ -z "${GITHUB_WORKSPACE}" ]; then
gits_folder="${GITHUB_WORKSPACE}/tmp/gits" # without last / gits_folder="${GITHUB_WORKSPACE}/tmp/gits" # without last /
else else
gits_folder="/tmp/gits" # without last / gits_folder="/tmp/gits" # without last /
fi fi
rd_branch="main" rd_branch="main"
flathub_target_repo='flathub/net.retrodeck.retrodeck' flathub_target_repo='flathub/net.retrodeck.retrodeck'
retrodeck_repo='RetroDECK/RetroDECK' retrodeck_repo='RetroDECK/RetroDECK'
artifacts_sha_link="https://artifacts.retrodeck.net/artifacts/RetroDECK-Artifact.sha"
artifacts_link="https://artifacts.retrodeck.net/artifacts/RetroDECK-Artifact.tar.gz"
if -d "$gits_folder"; then # Get the latest artifact SHA and download URL from the RetroDECK Artifacts repository
artifacts_sha_link=$(curl -s https://api.github.com/repos/RetroDECK/Artifacts/releases/latest | jq -r '.assets[] | select(.name == "RetroDECK-Artifact.sha").browser_download_url')
artifacts_link=$(curl -s https://api.github.com/repos/RetroDECK/Artifacts/releases/latest | jq -r '.assets[] | select(.name == "RetroDECK-Artifact.tar.gz").browser_download_url')
# Remove existing gits_folder if it exists and create a new one
if [ -d "$gits_folder" ] ; then
rm -rf "$gits_folder" rm -rf "$gits_folder"
fi fi
mkdir -vp "$gits_folder" mkdir -vp "$gits_folder"
cd "$gits_folder" && echo "Moving in $gits_folder" || exit 1 cd "$gits_folder" && echo "Moving in $gits_folder" || exit 1
# Remove existing flathub and RetroDECK directories if they exist
if [ -d flathub ]; then if [ -d flathub ]; then
rm -rf "$gits_folder/flathub" rm -rf "$gits_folder/flathub"
fi fi
if [ -d flathub ]; then if [ -d flathub ]; then
rm -rf "$gits_folder/RetroDECK" rm -rf "$gits_folder/RetroDECK"
fi fi
# Clone the flathub and RetroDECK repositories
git clone --depth=1 --recursive "https://github.com/$flathub_target_repo.git" "$gits_folder/flathub" git clone --depth=1 --recursive "https://github.com/$flathub_target_repo.git" "$gits_folder/flathub"
git clone --depth=1 --recursive "https://github.com/$retrodeck_repo.git" "$gits_folder/RetroDECK" git clone --depth=1 --recursive "https://github.com/$retrodeck_repo.git" "$gits_folder/RetroDECK"
relname=$(curl -s https://api.github.com/repos/$retrodeck_repo/releases | jq -r '[.[] | select(.prerelease == true)][0].tag_name // empty') # Get the latest release name, preferring prereleases if available and published after 2025-01-01
relname=$(curl -s "https://api.github.com/repos/$retrodeck_repo/releases" | jq -r '[.[] | select(.prerelease == true and (.published_at | fromdateiso8601) > 1735689600)][0].tag_name // empty')
if [ -z "$relname" ]; then if [ -z "$relname" ]; then
relname=$(curl -s https://api.github.com/repos/$retrodeck_repo/releases/latest | jq -r .tag_name) relname=$(curl -s https://api.github.com/repos/$retrodeck_repo/releases/latest | jq -r .tag_name)
fi fi
echo "Using release: $relname" echo "Using release: $relname"
# Checkout the main branch in the RetroDECK repository
cd "$gits_folder/RetroDECK" && echo "Moving in $gits_folder/RetroDECK" && git checkout "$rd_branch" cd "$gits_folder/RetroDECK" && echo "Moving in $gits_folder/RetroDECK" && git checkout "$rd_branch"
# Create a new branch in the flathub repository with the release name
cd "$gits_folder"/flathub && echo "Moving in $gits_folder/flathub" || exit 1 cd "$gits_folder"/flathub && echo "Moving in $gits_folder/flathub" || exit 1
git checkout -b "$relname" git checkout -b "$relname"
echo "Current directory: $(pwd)" echo "Current directory: $(pwd)"
ls -lah ls -lah
git rm -rf *
git clean -fxd # restroing git index
# Copying only a few files as the others are cloned by git in retrodeck.sh # Remove all files in the flathub repository and clean the git index
git rm -rf *
git clean -fxd # restoring git index
# Copy specific files from the RetroDECK repository to the flathub repository
files_to_copy=('LICENSE' 'README.md' 'other_licenses.txt' 'net.retrodeck.retrodeck.yml' 'net.retrodeck.retrodeck.metainfo.xml') files_to_copy=('LICENSE' 'README.md' 'other_licenses.txt' 'net.retrodeck.retrodeck.yml' 'net.retrodeck.retrodeck.metainfo.xml')
for file in "${files_to_copy[@]}"; do for file in "${files_to_copy[@]}"; do
if ! cp -fv "$gits_folder/RetroDECK/$file" "$gits_folder/flathub"; then if ! cp -fv "$gits_folder/RetroDECK/$file" "$gits_folder/flathub"; then
@ -56,7 +65,7 @@ done
cd "$gits_folder/flathub" && echo "Moving in $gits_folder/flathub" || exit 1 cd "$gits_folder/flathub" && echo "Moving in $gits_folder/flathub" || exit 1
ls -lah ls -lah
# Creating the manifest for flathub # Create the manifest for flathub
manifest='net.retrodeck.retrodeck.yml' manifest='net.retrodeck.retrodeck.yml'
sed -n '/cleanup:/q;p' $gits_folder/RetroDECK/net.retrodeck.retrodeck.yml > $manifest sed -n '/cleanup:/q;p' $gits_folder/RetroDECK/net.retrodeck.retrodeck.yml > $manifest
sed -i '/^[[:space:]]*#/d' $manifest sed -i '/^[[:space:]]*#/d' $manifest
@ -74,18 +83,20 @@ modules:
sha256: $(curl -sL "$artifacts_sha_link") sha256: $(curl -sL "$artifacts_sha_link")
EOF EOF
# Create a flathub.json file specifying the architecture
cat << EOF >> flathub.json cat << EOF >> flathub.json
{ {
"only-arches": ["x86_64"] "only-arches": ["x86_64"]
} }
EOF EOF
# If we are in a GitHub workflow... # If running in a GitHub workflow, configure git and authenticate with GitHub
if [ -n "${GITHUB_WORKFLOW}" ]; then if [ -n "${GITHUB_WORKFLOW}" ]; then
git config --global user.name "$GIT_NAME" git config --global user.name "$GIT_NAME"
git config --global user.email "$GIT_MAIL" git config --global user.email "$GIT_MAIL"
git config --global credential.helper store git config --global credential.helper store
gh auth login gh auth login
# If not in a GitHub workflow, prompt the user for git configuration if not already set
elif [[ -z $(git config --get user.name) || -z $(git config --get user.email) ]]; then elif [[ -z $(git config --get user.name) || -z $(git config --get user.email) ]]; then
read -p "No git user.name set, please enter your name: " git_username read -p "No git user.name set, please enter your name: " git_username
git config --local user.name "$git_username" git config --local user.name "$git_username"
@ -93,9 +104,11 @@ elif [[ -z $(git config --get user.name) || -z $(git config --get user.email) ]]
git config --local user.email "$git_email" git config --local user.email "$git_email"
fi fi
# Commit the changes and push to the new branch
git add . git add .
git commit -m "Update RetroDECK to v$relname from RetroDECK/$rd_branch" git commit -m "Update RetroDECK to v$relname from RetroDECK/$rd_branch"
# Push the changes to the remote repository, using authentication if in a GitHub workflow
if [ -n "${GITHUB_WORKFLOW}" ]; then if [ -n "${GITHUB_WORKFLOW}" ]; then
git remote set-url origin https://x-access-token:${GH_TOKEN}@github.com/${flathub_target_repo} git remote set-url origin https://x-access-token:${GH_TOKEN}@github.com/${flathub_target_repo}
git push --force origin "$relname" git push --force origin "$relname"

View file

@ -36,29 +36,22 @@
</screenshot> </screenshot>
</screenshots> </screenshots>
<description> <description>
<p>What is Retrodeck?</p> <p>RetroDECK is an emulation and retro gaming application powered by the ES-DE Frontend that allows you to catalog and play your game collection directly on Linux in one unified experience. It's inspired by other embedded emulation systems like AmberELEC, EmuELEC, CoreELEC, Lakka, and Batocera. The goal is to have everything you need included in one package, so no other software is required.</p>
<p>RetroDECK is an emulation and retro gaming solution to catalog and play your game collection directly from Linux in one unified application. <p>Currently in Beta, RetroDECK focuses on SteamOS, Steam Deck, and Linux Desktop. It uses Steam Input for controller inputs and hotkeys. For the best experience, play and launch RetroDECK via Steam, though manual tweaks via RetroDECK Configurator may be needed if played without it.</p>
It's inspired by other embedded emulation systems like AmberELEC, EmuELEC, CoreELEC, Lakka, and Batocera. <p>Thanks to the built-in RetroENGINE, RetroDECK can be used as a headless engine, and with Steam Sync, you can synchronize your favorites as non-Steam games (powered by Steam ROM Manager).</p>
RetroDECK is powered by EmulationStation Desktop Edition, that uses RetroArch and other standalone emulators to allow you to import and play your favorite games in a tidy environment. <p>What is it in detail?
No other software is needed as everything it's already included in one package!</p> https://retrodeck.readthedocs.io/en/latest/wiki_about/what-is-retrodeck/</p>
<p>BETA NOTICE: RetroDECK is still in Beta and the team is actively developing and adding more features. <p>How-to: Get Started using RetroDECK
The primary focus during the beta period is on SteamOS and the Steam Deck but we hope to expand to more devices and general Linux desktop in the future</p> https://retrodeck.readthedocs.io/en/latest/wiki_general/retrodeck-start/</p>
<p>NOTE: It can be run on Linux desktop right now but there will be some manual configurations needed for input, storage location and other tiny hickups.</p>
<p>
INSTALLATION INSTRUCTIONS FOR THE STEAM DECK:
1. Start RetroDECK from the Desktop mode (only needed for the initial first time configuration)
2. Add RetroDECK to your Steam Library by pressing "Add a non-steam game to my library"
3. Download the offical RetroDECK controller profile from Steam
4. [OPTIONAL] Download Steam Grids graphics for RetroDECK with BoilR
</p>
<p>For more detailed information check our wiki:
https://github.com/RetroDECK/RetroDECK/wiki</p>
<p>If you want to sponsor the project: <p>If you want to sponsor the project:
https://www.patreon.com/RetroDECK</p> https://www.patreon.com/RetroDECK</p>
<p>If you want to join the RetroDECK community check our:</p> <p>The RetroDECK Community:</p>
<p>Reddit: https://www.reddit.com/r/RetroDECK/</p> <p>Blog: https://retrodeck.readthedocs.io/en/latest/blog/</p>
<p>Discord: https://discord.gg/WDc5C9YWMx <p>Discord: https://discord.gg/WDc5C9YWMx</p>
(If you want to help out with the project join the "i-want-to-help" channel)</p> <p>Matrix: https://matrix.to/#/#retrodeck:matrix.org</p>
<p>Lemmy Community: https://lemmy.zip/c/retrodeck</p>
<p>Subreddit: https://www.reddit.com/r/retrodeck</p>
<p>Bluesky: https://bsky.app/profile/retrodeck.net</p>
</description> </description>
<branding> <branding>
<color type="primary" scheme_preference="light">#94a6fb</color> <color type="primary" scheme_preference="light">#94a6fb</color>
@ -73,7 +66,7 @@
<p>Welcome to RetroDECK cooker-0.9.1b</p> <p>Welcome to RetroDECK cooker-0.9.1b</p>
</description> </description>
</release> </release>
<release version="0.9.0b" date="2025-01-31"> <release version="0.9.0b" date="2025-02-04">
<url>https://github.com/RetroDECK/RetroDECK/releases/tag/0.9.0b</url> <url>https://github.com/RetroDECK/RetroDECK/releases/tag/0.9.0b</url>
<description> <description>
<p>New Additions:</p> <p>New Additions:</p>