Skip to content

v27.5.2

v27.5.2 #158

Workflow file for this run

name: Build TWiLight Menu++ Release
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
name: Build with Docker using devkitARM
outputs:
commit_tag: ${{ steps.make-cias.outputs.commit_tag }}
commit_hash: ${{ steps.make-cias.outputs.commit_hash }}
author_name: ${{ steps.make-cias.outputs.author_name }}
committer_name: ${{ steps.make-cias.outputs.committer_name }}
commit_subject: ${{ steps.make-cias.outputs.commit_subject }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
with:
submodules: recursive
fetch-depth: 0
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install jq p7zip-full python -y
- name: Setup environment
run: |
git config --global safe.directory '*'
echo "commit_tag=$(git describe --abbrev=0 --tags)" >> $GITHUB_OUTPUT
echo "commit_hash=$(git log --format=%h -1)" >> $GITHUB_OUTPUT
# Webhook info
echo "author_name=$(git log -1 $GITHUB_SHA --pretty=%aN)" >> $GITHUB_OUTPUT
echo "committer_name=$(git log -1 $GITHUB_SHA --pretty=%cN)" >> $GITHUB_OUTPUT
echo "commit_subject=$(git log -1 $GITHUB_SHA --pretty=%s)" >> $GITHUB_OUTPUT
- name: Get manual pages
run: |
cd manual/nitrofiles
curl -LO https://github.com/DS-Homebrew/twilight-manual/releases/download/pages/pages.7z
7z x pages.7z
rm pages.7z
- name: Build TWiLightMenu++
run: make package
- name: Make booter and TWiLightMenu CIAs
id: make-cias
run: |
cd booter/
chmod +x make_cia
./make_cia --srl="booter.nds" --id_0=$(git rev-parse --short=7 HEAD) --tikID=$(git rev-parse --short=16 HEAD)
mkdir -p "../7zfile/3DS - CFW users/"
cp "booter.cia" "../7zfile/3DS - CFW users/TWiLight Menu.cia"
- name: Pack 7z Package for release
run: |
# Make artifacts directory
mkdir -p ~/artifacts
# Debug 7z
mv 7zfile/debug debug
7z a TWiLightMenu-debug-release.7z debug
mv TWiLightMenu-debug-release.7z ~/artifacts
mkdir -p 7zfile/_nds/nds-bootstrap/
mkdir -p 7zfile/_nds/TWiLightMenu/3dsmenu/themes/
mkdir -p 7zfile/_nds/TWiLightMenu/akmenu/themes/
mkdir -p 7zfile/_nds/TWiLightMenu/boxart/
mkdir -p 7zfile/_nds/TWiLightMenu/dsimenu/themes/
mkdir -p 7zfile/_nds/TWiLightMenu/icons/
mkdir -p 7zfile/_nds/TWiLightMenu/extras/
mkdir -p 7zfile/_nds/TWiLightMenu/extras/fonts/
mkdir -p 7zfile/_nds/TWiLightMenu/gamesettings/
mkdir -p 7zfile/_nds/TWiLightMenu/r4menu/themes/
# nds-bootstrap
mkdir -p nds-bootstrap
cd nds-bootstrap
curl -LO https://github.com/DS-Homebrew/nds-bootstrap/releases/latest/download/nds-bootstrap.7z
7z x nds-bootstrap.7z
mv nds-bootstrap.* ..
curl -LO https://github.com/DS-Homebrew/nds-bootstrap-extras/raw/main/preLoadSettings/preLoadSettingsDSi.pck
curl -LO https://github.com/DS-Homebrew/nds-bootstrap-extras/raw/main/preLoadSettings/preLoadSettings3DS.pck
cd ..
mv nds-bootstrap/release-bootstrap.ver 7zfile/_nds/
mv nds-bootstrap/nds-bootstrap-release.nds 7zfile/_nds/
mv nds-bootstrap/nds-bootstrap-hb-release.nds 7zfile/DSi\&3DS\ -\ SD\ card\ users/_nds/
mv nds-bootstrap/preLoadSettingsDSi.pck 7zfile/_nds/nds-bootstrap/
mv nds-bootstrap/preLoadSettings3DS.pck 7zfile/_nds/nds-bootstrap/
# Emulators
mkdir -p 7zfile/_nds/TWiLightMenu/emulators
cd 7zfile/_nds/TWiLightMenu/emulators
curl -LO https://github.com/wavemotion-dave/A8DS/releases/latest/download/A8DS.nds
curl -LO https://github.com/wavemotion-dave/StellaDS/releases/latest/download/StellaDS.nds
curl -LO https://github.com/wavemotion-dave/A5200DS/releases/latest/download/A5200DS.nds
curl -LO https://github.com/wavemotion-dave/A5200DS/releases/latest/download/A5200DSi.nds
curl -LO https://github.com/wavemotion-dave/A7800DS/releases/latest/download/A7800DS.nds
curl -LO https://github.com/wavemotion-dave/NINTV-DS/releases/latest/download/NINTV-DS.nds
curl -LO https://github.com/wavemotion-dave/ColecoDS/releases/latest/download/ColecoDS.nds
curl -LO https://bitbucket.org/Coto88/snemulds/raw/33f5f469b6e6c19cb3e1be9259b407832fce42b9/release/arm7dldi-ntr/SNEmulDS.nds
curl -LO https://bitbucket.org/Coto88/snemulds/raw/33f5f469b6e6c19cb3e1be9259b407832fce42b9/release/arm7dldi-twl/SNEmulDS.srl
curl -LO https://github.com/DS-Homebrew/NesDS/releases/latest/download/nesDS.7z
7z x nesDS.7z nesDS/nesDS.nds
mv nesDS/nesDS.nds nesDS.nds
rm nesDS.7z
rm -rf nesDS
curl -LO https://github.com/FluBBaOfWard/S8DS/releases/latest/download/S8DS.zip
7z x S8DS.zip S8DS.nds
rm S8DS.zip
curl -LO https://github.com/FluBBaOfWard/NGPDS/releases/latest/download/NGPDS.zip
7z x NGPDS.zip NGPDS.nds
rm NGPDS.zip
curl -LO https://github.com/FluBBaOfWard/NitroSwan/releases/latest/download/NitroSwan.zip
7z x NitroSwan.zip NitroSwan.nds
rm NitroSwan.zip
# PicoDriveTWL is a prerelease, so get the latest URL from the GH api
curl -LO $(curl https://api.github.com/repos/DS-Homebrew/PicoDriveTWL/releases | jq --raw-output '.[0].assets[0].browser_download_url' -)
curl -LO https://github.com/DS-Homebrew/PokeMini/releases/latest/download/PokeMini.nds
cd ../../../..
# Players
mkdir -p 7zfile/_nds/TWiLightMenu/apps
cd 7zfile/_nds/TWiLightMenu/apps
curl -LO https://github.com/chishm/tuna-vids/releases/latest/download/tuna-vids_v1.2.zip
7z x tuna-vids_v1.2.zip tuna-vids.nds
rm tuna-vids_v1.2.zip
# curl -LO https://github.com/Gericom/FastVideoDSPlayer/releases/latest/download/FastVideoDS.nds
cd ../../../..
# version.txt
printf "TWiLight Menu++: $(git describe --tags)\nnds-bootstrap: $(cat 7zfile/_nds/release-bootstrap.ver)\n\nRocketRobz, ahezard\n" > 7zfile/version.txt
# Main 7z
cp -r 7zfile TWiLightMenu
cd TWiLightMenu
7z a TWiLightMenu.7z .
mv TWiLightMenu.7z ~/artifacts
# DSi 7z
cp -r DSi\ -\ CFW\ users/SDNAND\ root/* .
rm -rf DSi\ -\ CFW\ users
cp -r DSi\&3DS\ -\ SD\ card\ users/* .
rm -rf DSi\&3DS\ -\ SD\ card\ users
rm -rf 3DS\ -\ CFW\ users
rm -rf Flashcard\ users
rm -rf _nds/GBARunner2_arm7dldi_3ds.nds
rm -rf _nds/GBARunner2_arm7dldi_nodsp_3ds.nds
rm -rf _nds/TWiLightMenu/bootplg.srldr
rm -rf _nds/TWiLightMenu/gbaswitch.srldr
7z a TWiLightMenu-DSi.7z
mv TWiLightMenu-DSi.7z ~/artifacts
# 3DS 7z
cd ..
rm -rf TWiLightMenu
cp -r 7zfile/ TWiLightMenu/
cd TWiLightMenu
cp -r 3DS\ -\ CFW\ users/* .
rm -rf 3DS\ -\ CFW\ users
cp -r DSi\&3DS\ -\ SD\ card\ users/* .
rm -rf DSi\&3DS\ -\ SD\ card\ users
rm -rf DSi\ -\ CFW\ users
rm -rf Flashcard\ users
rm -rf _nds/GBARunner2_arm7dldi_dsi.nds
rm -rf _nds/GBARunner2_arm7dldi_nodsp_dsi.nds
rm -rf _nds/TWiLightMenu/unlaunch
rm -rf _nds/TWiLightMenu/bootplg.srldr
rm -rf _nds/TWiLightMenu/gbaswitch.srldr
7z a TWiLightMenu-3DS.7z
mv TWiLightMenu-3DS.7z ~/artifacts
# Flashcard 7z
cd ..
rm -rf TWiLightMenu
cp -r 7zfile/ TWiLightMenu/
cd TWiLightMenu
cp -r Flashcard\ users/* .
rm -rf Flashcard\ users
rm -rf 3DS\ -\ CFW\ users
rm -rf DSi\&3DS\ -\ SD\ card\ users
rm -rf DSi\ -\ CFW\ users
7z a TWiLightMenu-Flashcard.7z
mv TWiLightMenu-Flashcard.7z ~/artifacts
- name: Publish build to GH Actions
uses: actions/upload-artifact@v3
with:
path: ~/artifacts/*
name: build
# Only run this for non-PR jobs.
publish_build:
runs-on: ubuntu-latest
name: "Publish build to ${{ github.repository }}"
if: ${{ success() }}
needs: build
env:
COMMIT_TAG: ${{ needs.build.outputs.commit_tag }}
outputs:
current_date: ${{ steps.commit.outputs.current_date }}
twlbot_commit: ${{ steps.commit.outputs.twlbot_commit }}
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: build
path: build
- name: Upload to ${{ github.repository }} release
run: |
# Delete debug 7z
rm ${{ github.workspace }}/build/TWiLightMenu-debug-release.7z
ID=$(jq --raw-output '.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
send_success_webhook:
runs-on: ubuntu-latest
needs: [publish_build, build]
name: Send success webhook
if: ${{ !startsWith(github.ref, 'refs/pull') && success() }}
env:
CURRENT_DATE: ${{ needs.publish_build.outputs.current_date }}
AUTHOR_NAME: ${{ needs.build.outputs.author_name }}
COMMITTER_NAME: ${{ needs.build.outputs.committer_name }}
COMMIT_SUBJECT: ${{ needs.build.outputs.commit_subject }}
steps:
- name: Send success webhook
run: |
curl -o send.sh https://raw.githubusercontent.com/DS-Homebrew/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/DS-Homebrew/discord-webhooks/master/send-ghactions.sh
chmod +x send.sh
./send.sh failure ${{ secrets.WEBHOOK_URL }}