Skip to content
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

Update for new nightly method, pin to devkitpro/devkitarm:20241104

Update for new nightly method, pin to devkitpro/devkitarm:20241104 #7

Workflow file for this run

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 }}