TwlNandTool/.github/workflows/build.yml
Lillian Skinner 2787a3d5cf
First commit
2024-11-11 01:22:54 -05:00

116 lines
4.1 KiB
YAML

name: Build TwlNandTool
on:
push:
branches: ["*"]
paths-ignore:
- 'README.md'
pull_request:
branches: ["*"]
paths-ignore:
- 'README.md'
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
container: devkitpro/devkitarm
name: Build with Docker using devkitARM
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup environment
run: git config --global safe.directory '*'
- name: Build TwlNandTool
run: make
- name: Upload prod SRL
uses: actions/upload-artifact@v4.3.6
with:
path: "TwlNandTool.prod.srl"
name: TwlNandTool-Prod
devsign:
runs-on: windows-latest
needs: [build]
name: Devsign TwlNandTool and build a TAD
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: TwlNandTool-Prod
path: TwlNandTool-Prod
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Clone ntool
uses: GuillaumeFalourd/clone-github-repo-action@v2.1
with:
depth: 1
owner: 'xprism1'
repository: 'ntool'
- name: Devsign TwlNandTool
run: |
cp TwlNandTool-Prod\TwlNandTool.prod.srl ntool
pip install pycryptodome
python ntool/ntool.py srl_retail2dev ntool/TwlNandTool.prod.srl --out ntool/TwlNandTool.dev.srl
- name: Make a devsigned TAD
run: |
curl https://cdn.randommeaninglesscharacters.com/tools/maketad/maketad.zip -o maketad.zip
7z e maketad.zip
cp ntool/TwlNandTool.dev.srl .
.\maketad-20090604.exe TwlNandTool.dev.srl -s -o TwlNandTool.dev.tad
- name: Upload devsigned TAD
uses: actions/upload-artifact@v4.3.6
with:
path: "TwlNandTool.dev.tad"
name: TwlNandTool-Tad
- name: Upload devsigned SRL
uses: actions/upload-artifact@v4.3.6
with:
path: "ntool/TwlNandTool.dev.srl"
name: TwlNandTool-Dev
# Only run this for non-PR jobs.
publish_build:
runs-on: ubuntu-latest
name: Upload to release
if: ${{ success() && startsWith(github.ref, 'refs/tags') }}
needs: [devsign]
steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: TwlNandTool-Prod
path: TwlNandTool-Prod
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: TwlNandTool-Dev
path: TwlNandTool-Dev
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: TwlNandTool-Tad
path: TwlNandTool-Tad
- name: Publish Build
run: |
ID=$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)
AUTH_HEADER="Authorization: token ${{ secrets.TOKEN }}"
CONTENT_TYPE="Content-Type: application/7z-x-compressed"
for file in ${{ github.workspace }}/TwlNandTool-Prod/*; do
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
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
for file in ${{ github.workspace }}/TwlNandTool-Dev/*; do
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
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
for file in ${{ github.workspace }}/TwlNandTool-Tad/*; do
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
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