Adding build workflow

This commit is contained in:
XargonWan 2024-07-21 10:48:43 +09:00
parent 2f1bbfd3a7
commit ff7030b48e
3 changed files with 138 additions and 0 deletions

103
.github/workflows/build_artifacts.yml vendored Normal file
View file

@ -0,0 +1,103 @@
name: "Build solarus Artifacts for RetroDECK"
on:
push:
branches:
- master
workflow_dispatch:
jobs:
Building_RetroDECK-solarus:
runs-on: ubuntu-latest
steps:
# Circumventing this bug: https://github.com/flatpak/flatpak-builder/issues/317
# - name: Remove stuck mounts
# run: sudo umount -f /home/ubuntu/solarus-runner/_work/RetroDECK-solarus/RetroDECK-solarus/.flatpak-builder/rofiles/*
# continue-on-error: true
- name: Clone repo
uses: actions/checkout@v3
with:
submodules: 'true'
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
- name: "Install dependencies"
run: "automation_tools/install_dependencies.sh"
# - name: "Creating solarus manifest"
# run: "/bin/bash ${GITHUB_WORKSPACE}/automation_tools/update_solarus_manifest.sh"
# - name: "[DEBUG] Outputting manifest"
# run: cat net.retrodeck.solarus.yml
- name: "Build flatpak"
id: "flatpak-download"
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}/solarus-repo \
"${GITHUB_WORKSPACE}"/solarus-build-dir \
org.solarus_games.solarus.Launcher.yml
- name: "Exporting dir tree"
id: tree
run: tree -H ./ > ${GITHUB_WORKSPACE}/tree.html
- name: Create Artifact for RetroDECK
run: |
tar -czf ${GITHUB_WORKSPACE}/RetroDECK-solarus-Artifact.tar.gz -C ${GITHUB_WORKSPACE}/solarus-build-dir .
hash=($(sha256sum ${GITHUB_WORKSPACE}/RetroDECK-solarus-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 new release
uses: ncipollo/release-action@v1
with:
tag: "${{env.BRANCH_NAME}}-${{env.DATE}}"
body: |
# Release Notes
These are the artifact of RetroDECK solarus, commit: ${{ github.event.repository.full_name }}@${{github.sha}}.
On branch [${{env.BRANCH_NAME}}](https://github.com/XargonWan/RetroDECK-solarus/tree/${{env.BRANCH_NAME}}).
artifacts: "RetroDECK-solarus-Artifact.tar.gz, tree.html"
allowUpdates: true
makeLatest: true
token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
continue-on-error: true
# - name: "Committing changes"
# with:
# github_token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
# run: |
# git config user.name "GitHub Actions"
# git config user.email "actions@github.com"
# git add * net.retrodeck.solarus.yml
# git commit -m '[AUTOMATED] Updating solarus after build [skip ci]'
# git push origin main
# continue-on-error: true # TODO: would be good to update the manifest but it's broken
# - name: GitHub Commit & Push
# uses: actions-js/push@v1.4
# with:
# github_token: ${{ secrets.TRIGGER_BUILD_TOKEN }}
# message: '[AUTOMATED] Updating solarus after build [skip ci]'
# branch: retrodeck-main
# continue-on-error: true # TODO: would be good to update the manifest but it's broken

View file

@ -0,0 +1,31 @@
#!/bin/bash
# This script is installing the required dependencies to correctly run the pipeline and build the flatpak
unset pkg_mgr
# rpm-ostree must be checked before dnf because a dnf (wrapper) command also works on rpm-ostree distros (not what we want)
for potential_pkg_mgr in apt pacman rpm-ostree dnf; do
command -v "$potential_pkg_mgr" &> /dev/null && pkg_mgr="$potential_pkg_mgr" && break
done
case "$pkg_mgr" in
apt)
sudo apt install -y flatpak flatpak-builder p7zip-full xmlstarlet bzip2 curl jq
;;
pacman)
sudo pacman -S --noconfirm flatpak flatpak-builder p7zip xmlstarlet bzip2
;;
rpm-ostree)
echo "When using a distro with rpm-ostree, you shouldn't build directly on the host. Try using a distrobox."
exit 1
;;
dnf)
sudo dnf install -y flatpak flatpak-builder p7zip p7zip-plugins xmlstarlet bzip2 curl
;;
*)
echo "Package manager $pkg_mgr not supported. Please open an issue."
;;
esac
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak remote-add --user --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo

4
update_from_upstream.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
git fetch https://github.com/flathub/org.solarus_games.solarus.Launcher master # Fetch the latest changes from the remote master branch
git merge FETCH_HEAD # Merge the fetched changes into your current branch