This repository was archived by the owner on Dec 29, 2025. It is now read-only.
Update for new nightly method, pin to devkitpro/devkitarm:20241104 #7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Relaunch | |
| on: | |
| push: | |
| branches-ignore: [translation] | |
| paths-ignore: | |
| - 'README.md' | |
| pull_request: | |
| branches: ["*"] | |
| paths-ignore: | |
| - 'README.md' | |
| release: | |
| types: [published] | |
| workflow_dispatch: | |
| concurrency: | |
| group: ci-${{ startsWith(github.ref, 'refs/pull') && github.ref || 'publish' }} | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| container: devkitpro/devkitarm:20241104 | |
| name: Build with Docker using devkitARM | |
| outputs: | |
| commit_tag: ${{ steps.build.outputs.commit_tag }} | |
| commit_hash: ${{ steps.build.outputs.commit_hash }} | |
| author_name: ${{ steps.build.outputs.author_name }} | |
| committer_name: ${{ steps.build.outputs.committer_name }} | |
| commit_subject: ${{ steps.build.outputs.commit_subject }} | |
| commit_message: ${{ steps.build.outputs.commit_message }} | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Setup environment | |
| run: git config --global safe.directory '*' | |
| - name: Install tools | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install p7zip-full -y | |
| - name: Build | |
| id: build | |
| run: | | |
| make | |
| 7z a Relaunch.7z Relaunch | |
| mkdir -p ~/artifacts | |
| cp Relaunch.7z ~/artifacts | |
| echo ::set-output name=commit_tag::$(git describe --abbrev=0 --tags --exclude git) | |
| echo ::set-output name=commit_hash::$(git log --format=%h -1) | |
| # Webhook info | |
| echo "::set-output name=author_name::$(git log -1 $GITHUB_SHA --pretty=%aN)" | |
| echo "::set-output name=committer_name::$(git log -1 $GITHUB_SHA --pretty=%cN)" | |
| echo "::set-output name=commit_subject::$(git log -1 $GITHUB_SHA --pretty=%s)" | |
| echo "::set-output name=commit_message::$(git log -1 $GITHUB_SHA --pretty=%b)" | |
| - name: Publish build to GH Actions | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| path: ~/artifacts/* | |
| name: build | |
| # Only run this for non-PR jobs. | |
| publish_build: | |
| runs-on: ubuntu-latest | |
| name: Publish build | |
| if: ${{ success() && !startsWith(github.ref, 'refs/pull') }} | |
| needs: build | |
| env: | |
| COMMIT_TAG: ${{ needs.build.outputs.commit_tag }} | |
| COMMIT_HASH: ${{ needs.build.outputs.commit_hash }} | |
| AUTHOR_NAME: ${{ needs.build.outputs.author_name }} | |
| COMMIT_SUBJECT: ${{ needs.build.outputs.commit_subject }} | |
| COMMIT_MESSAGE: ${{ needs.build.outputs.commit_message }} | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: build | |
| path: build | |
| # This one always runs | |
| - name: Delete the 'git' release | |
| run: | | |
| # Get the release ID for tag 'git' | |
| AUTH_HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}" | |
| CONTENT_TYPE="Content-Type: application/json" | |
| API_URL="https://api.github.com/repos/${{ github.repository }}/releases/tags/git" | |
| RESPONSE=$(curl -H "$AUTH_HEADER" -H "$CONTENT_TYPE" "$API_URL") | |
| STATUS=$(echo $RESPONSE | jq -r .status) | |
| if [ "$STATUS" != "404" ]; then | |
| # If it exists, delete it | |
| ID=$(echo $RESPONSE | jq -r .id) | |
| API_URL="https://api.github.com/repos/${{ github.repository }}/releases/$ID" | |
| curl -XDELETE -H "$AUTH_HEADER" -H "$CONTENT_TYPE" "$API_URL" | |
| fi | |
| # This one only runs for releases | |
| - name: Upload to ${{ github.ref_name }} release | |
| if: ${{ startsWith(github.ref, 'refs/tags') }} | |
| run: | | |
| ID=$(jq -r '.release.id' $GITHUB_EVENT_PATH) | |
| for file in ${{ github.workspace }}/build/*; do | |
| AUTH_HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}" | |
| CONTENT_LENGTH="Content-Length: $(stat -c%s $file)" | |
| CONTENT_TYPE="Content-Type: application/7z-x-compressed" | |
| UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)" | |
| curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL" | |
| done | |
| # This one only runs if it's not a release run | |
| - name: Upload to 'git' release | |
| if: ${{ !startsWith(github.ref, 'refs/tags') }} | |
| run: | | |
| AUTH_HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}" | |
| CONTENT_TYPE="Content-Type: application/json" | |
| API_URL="https://api.github.com/repos/${{ github.repository }}/releases" | |
| RELEASE_INFO="{\"tag_name\": \"git\", \"name\": \"Continuous Build - $COMMIT_HASH\", \"body\": \"$AUTHOR_NAME - $COMMIT_SUBJECT\n\n$COMMIT_MESSAGE\", \"prerelease\": true}" | |
| RESPONSE=$(curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_TYPE" "$API_URL" -d "$RELEASE_INFO") | |
| ID=$(echo $RESPONSE | jq -r '.id') | |
| for file in ${{ github.workspace }}/build/*; do | |
| CONTENT_LENGTH="Content-Length: $(stat -c%s $file)" | |
| CONTENT_TYPE="Content-Type: application/7z-x-compressed" | |
| UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)" | |
| curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL" | |
| done | |
| send_success_webhook: | |
| runs-on: ubuntu-latest | |
| needs: [publish_build, build] | |
| name: Send success webhook | |
| if: ${{ !startsWith(github.ref, 'refs/pull') && success() }} | |
| env: | |
| COMMIT_HASH: ${{ needs.build.outputs.commit_hash }} | |
| AUTHOR_NAME: ${{ needs.build.outputs.author_name }} | |
| COMMITTER_NAME: ${{ needs.build.outputs.committer_name }} | |
| COMMIT_SUBJECT: ${{ needs.build.outputs.commit_subject }} | |
| COMMIT_MESSAGE: ${{ needs.build.outputs.commit_message }} | |
| steps: | |
| - name: Send success webhook | |
| run: | | |
| curl -o send.sh https://raw.githubusercontent.com/Universal-Team/discord-webhooks/master/send-ghactions.sh | |
| chmod +x send.sh | |
| ./send.sh success ${{ secrets.WEBHOOK_URL }} | |
| send_failure_webhook: | |
| runs-on: ubuntu-latest | |
| needs: [publish_build, build] | |
| name: Send failure webhook | |
| if: ${{ !startsWith(github.ref, 'refs/pull') && failure() }} | |
| steps: | |
| - name: Send failure webhook | |
| run: | | |
| curl -o send.sh https://raw.githubusercontent.com/Universal-Team/discord-webhooks/master/send-ghactions.sh | |
| chmod +x send.sh | |
| ./send.sh failure ${{ secrets.WEBHOOK_URL }} |