mirror of
https://github.com/CraftyBoss/SuperMarioOdysseyOnline.git
synced 2024-11-21 18:55:16 +00:00
Merge pull request #22 from Istador/workflow
GitHub Actions to automatically build and release
This commit is contained in:
commit
261848fdd3
7 changed files with 248 additions and 0 deletions
40
.github/actions/attach/action.yml
vendored
Normal file
40
.github/actions/attach/action.yml
vendored
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
name: Attach build artifacts to release
|
||||||
|
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
filename:
|
||||||
|
description : 'Filename of the build artifact'
|
||||||
|
required : true
|
||||||
|
upload_url:
|
||||||
|
description : 'Upload URL of the release'
|
||||||
|
required : true
|
||||||
|
GITHUB_TOKEN:
|
||||||
|
description : 'Secret GitHub token required for uploading to the release'
|
||||||
|
required : true
|
||||||
|
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Download artifacts
|
||||||
|
uses : actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name : ${{ inputs.filename }}
|
||||||
|
path : ./starlight_patch_100/
|
||||||
|
-
|
||||||
|
name : Zip artifacts
|
||||||
|
shell : bash
|
||||||
|
run: |
|
||||||
|
cd ./starlight_patch_100/
|
||||||
|
zip -rmT9 ${{ inputs.filename }}.zip ./*
|
||||||
|
-
|
||||||
|
name : Attach to release
|
||||||
|
uses : actions/upload-release-asset@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
upload_url : ${{ inputs.upload_url }}
|
||||||
|
asset_path : ./starlight_patch_100/${{ inputs.filename }}.zip
|
||||||
|
asset_name : ${{ inputs.filename }}.zip
|
||||||
|
asset_content_type : application/zip
|
61
.github/actions/build/action.yml
vendored
Normal file
61
.github/actions/build/action.yml
vendored
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
name: Build artifacts
|
||||||
|
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description : 'version tag'
|
||||||
|
required : false
|
||||||
|
default : ''
|
||||||
|
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
filename:
|
||||||
|
description : 'Filename for the build artifacts'
|
||||||
|
value : ${{ steps.env.outputs.filename }}
|
||||||
|
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Environment
|
||||||
|
id : env
|
||||||
|
shell : bash
|
||||||
|
run: |
|
||||||
|
VERS=${{ inputs.tag }}
|
||||||
|
echo "::set-output name=version::${VERS:1}"
|
||||||
|
echo "::set-output name=filename::SMO_Online${{ (inputs.tag != '' && format('_{0}', inputs.tag)) || '' }}"
|
||||||
|
-
|
||||||
|
name : Set up Docker Buildx
|
||||||
|
uses : docker/setup-buildx-action@v2
|
||||||
|
-
|
||||||
|
name : Build environment
|
||||||
|
uses : docker/build-push-action@v3
|
||||||
|
with:
|
||||||
|
pull : true
|
||||||
|
push : false
|
||||||
|
load : true
|
||||||
|
context : .
|
||||||
|
file : ./Dockerfile
|
||||||
|
tags : smoo-build-env
|
||||||
|
platforms : linux/amd64
|
||||||
|
cache-from : type=gha,scope=smoo-build-env
|
||||||
|
cache-to : type=gha,scope=smoo-build-env,mode=max
|
||||||
|
-
|
||||||
|
name : Build mod
|
||||||
|
shell : bash
|
||||||
|
run: |
|
||||||
|
docker run --rm \
|
||||||
|
-u `id -u`:`id -g` \
|
||||||
|
-v "/$PWD/":/app/ \
|
||||||
|
${{ (steps.env.outputs.version != '' && format('-e BUILDVER={0}', steps.env.outputs.version)) || '' }} \
|
||||||
|
smoo-build-env \
|
||||||
|
;
|
||||||
|
cp -r ./romfs/ ./starlight_patch_100/atmosphere/contents/0100000000010000/.
|
||||||
|
-
|
||||||
|
name : Upload artifacts
|
||||||
|
uses : actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name : ${{ steps.env.outputs.filename }}
|
||||||
|
path : ./starlight_patch_100/
|
||||||
|
if-no-files-found : error
|
36
.github/actions/release/action.yml
vendored
Normal file
36
.github/actions/release/action.yml
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
name: Create release
|
||||||
|
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
tag:
|
||||||
|
description : 'Version tag'
|
||||||
|
required : true
|
||||||
|
GITHUB_TOKEN:
|
||||||
|
description : 'Secret GitHub token required to create the release'
|
||||||
|
required : true
|
||||||
|
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
id:
|
||||||
|
value: ${{ steps.release.outputs.id }}
|
||||||
|
html_url:
|
||||||
|
value: ${{ steps.release.outputs.html_url }}
|
||||||
|
upload_url:
|
||||||
|
value: ${{ steps.release.outputs.upload_url }}
|
||||||
|
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Create release
|
||||||
|
id : release
|
||||||
|
uses : actions/create-release@v1
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ inputs.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
tag_name : ${{ inputs.tag }}
|
||||||
|
release_name : Release ${{ inputs.tag }}
|
||||||
|
body : ''
|
||||||
|
draft : true
|
||||||
|
prerelease : false
|
26
.github/workflows/build.yml
vendored
Normal file
26
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
name: Build
|
||||||
|
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
tags:
|
||||||
|
- '**'
|
||||||
|
- '!v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Checkout
|
||||||
|
uses : actions/checkout@v3
|
||||||
|
-
|
||||||
|
name : Build artifacts
|
||||||
|
uses : ./.github/actions/build
|
47
.github/workflows/release.yml
vendored
Normal file
47
.github/workflows/release.yml
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
name: Release
|
||||||
|
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v[0-9]+.[0-9]+.[0-9]+'
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
filename: ${{ steps.build.outputs.filename }}
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Checkout
|
||||||
|
uses : actions/checkout@v3
|
||||||
|
-
|
||||||
|
name : Build artifacts
|
||||||
|
id : build
|
||||||
|
uses : ./.github/actions/build
|
||||||
|
with:
|
||||||
|
tag : ${{ github.ref_name }}
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
-
|
||||||
|
name : Checkout
|
||||||
|
uses : actions/checkout@v3
|
||||||
|
-
|
||||||
|
name : Create release
|
||||||
|
id : release
|
||||||
|
uses : ./.github/actions/release
|
||||||
|
with:
|
||||||
|
tag : ${{ github.ref_name }}
|
||||||
|
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
-
|
||||||
|
name : Attach build artifacts to release
|
||||||
|
uses : ./.github/actions/attach
|
||||||
|
with:
|
||||||
|
filename : ${{ needs.build.outputs.filename }}
|
||||||
|
upload_url : ${{ steps.release.outputs.upload_url }}
|
||||||
|
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
|
26
Dockerfile
Normal file
26
Dockerfile
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
FROM ubuntu:20.04 as builder
|
||||||
|
|
||||||
|
# install dependencies
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y \
|
||||||
|
curl \
|
||||||
|
apt-transport-https \
|
||||||
|
python3 \
|
||||||
|
python3-pip \
|
||||||
|
&& pip install keystone-engine \
|
||||||
|
;
|
||||||
|
|
||||||
|
# install devkitpro
|
||||||
|
RUN ln -s /proc/self/mounts /etc/mtab \
|
||||||
|
&& mkdir /devkitpro/ \
|
||||||
|
&& echo "deb [signed-by=/devkitpro/pub.gpg] https://apt.devkitpro.org stable main" >/etc/apt/sources.list.d/devkitpro.list \
|
||||||
|
&& curl --fail -o /devkitpro/pub.gpg https://apt.devkitpro.org/devkitpro-pub.gpg \
|
||||||
|
&& apt-get update \
|
||||||
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -y devkitpro-pacman \
|
||||||
|
&& dkp-pacman --noconfirm -S switch-dev \
|
||||||
|
;
|
||||||
|
|
||||||
|
WORKDIR /app/
|
||||||
|
|
||||||
|
ENV DEVKITPRO /opt/devkitpro
|
||||||
|
ENTRYPOINT make
|
12
docker-build.sh
Executable file
12
docker-build.sh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export DOCKER_BUILDKIT=1
|
||||||
|
docker build . -t smoo-client-build
|
||||||
|
docker run --rm \
|
||||||
|
-u $(id -u):$(id -g) \
|
||||||
|
-v "/$PWD/":/app/ \
|
||||||
|
smoo-client-build \
|
||||||
|
;
|
||||||
|
docker rmi smoo-client-build
|
||||||
|
|
||||||
|
cp -r ./romfs/ ./starlight_patch_*/atmosphere/contents/0100000000010000/.
|
Loading…
Reference in a new issue