diff --git a/.github/workflows/build_artifacts.yml b/.github/workflows/build_artifacts.yml new file mode 100644 index 0000000..7e2d27d --- /dev/null +++ b/.github/workflows/build_artifacts.yml @@ -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 \ No newline at end of file diff --git a/automation_tools/install_dependencies.sh b/automation_tools/install_dependencies.sh new file mode 100755 index 0000000..3daa4ed --- /dev/null +++ b/automation_tools/install_dependencies.sh @@ -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 diff --git a/update_from_upstream.sh b/update_from_upstream.sh new file mode 100755 index 0000000..1280ade --- /dev/null +++ b/update_from_upstream.sh @@ -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 \ No newline at end of file