ci: autobuild nsp forwarder #431
Workflow file for this run
This file contains 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 wiliwili | |
on: | |
push: | |
branches: | |
- yoga | |
- dev | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
ssh_darwin: | |
description: 'SSH connection to Darwin' | |
required: false | |
default: 'false' | |
ssh_ubuntu: | |
description: 'SSH connection to Ubuntu' | |
required: false | |
default: 'false' | |
arm_flatpak: | |
description: 'build flatpak (aarch64)' | |
required: false | |
default: 'false' | |
universal_macos: | |
description: 'build macos (universal)' | |
required: false | |
default: 'false' | |
release: | |
description: 'Push a new release' | |
required: false | |
default: 'false' | |
version: | |
description: 'Version' | |
required: false | |
default: '0.0.0' | |
jobs: | |
version: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.info.outputs.version }} | |
standard_version: ${{ steps.info.outputs.standard_version }} | |
DIST_EXE: ${{ steps.info.outputs.DIST_EXE }} | |
DIST_UWP: ${{ steps.info.outputs.DIST_UWP }} | |
DIST_NRO: ${{ steps.info.outputs.DIST_NRO }} | |
DIST_DMG_PREFIX: ${{ steps.info.outputs.DIST_DMG_PREFIX }} | |
DIST_INTEL_DMG: ${{ steps.info.outputs.DIST_INTEL_DMG }} | |
DIST_ARM_DMG: ${{ steps.info.outputs.DIST_ARM_DMG }} | |
DIST_UNIVERSAL_DMG: ${{ steps.info.outputs.DIST_UNIVERSAL_DMG }} | |
DIST_FLATPAK_X86_64: ${{ steps.info.outputs.DIST_FLATPAK_X86_64 }} | |
DIST_FLATPAK_AARCH64_GL: ${{ steps.info.outputs.DIST_FLATPAK_AARCH64_GL }} | |
DIST_FLATPAK_AARCH64_GLES2: ${{ steps.info.outputs.DIST_FLATPAK_AARCH64_GLES2 }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ github.repository }} | |
- name: Debug version | |
run: | | |
export VERSION=`git rev-parse --short HEAD` | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
- name: Release version | |
if: github.event.inputs.release == 'true' && github.event.inputs.release != 'false' && !cancelled() | |
run: | | |
export VERSION="${{ github.event.inputs.version }}" | |
echo "VERSION=${VERSION}" >> $GITHUB_ENV | |
- name: Version | |
id: info | |
env: | |
VERSION: ${{ env.VERSION }} | |
run: | | |
echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_EXE=wiliwili-Windows-x64-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_UWP=wiliwili-windows-x64-uwp-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_NRO=wiliwili-NintendoSwitch-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_DMG_PREFIX=wiliwili-macOS" >> $GITHUB_OUTPUT | |
echo "DIST_INTEL_DMG=wiliwili-macOS-IntelChip-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_ARM_DMG=wiliwili-macOS-AppleSilicon-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_UNIVERSAL_DMG=wiliwili-macOS-Universal-${VERSION}" >> $GITHUB_OUTPUT | |
echo "DIST_FLATPAK_X86_64=wiliwili-Linux-${VERSION}-x86_64" >> $GITHUB_OUTPUT | |
echo "DIST_FLATPAK_AARCH64_GL=wiliwili-Linux-${VERSION}-gl-aarch64" >> $GITHUB_OUTPUT | |
echo "DIST_FLATPAK_AARCH64_GLES2=wiliwili-Linux-${VERSION}-gles2-aarch64" >> $GITHUB_OUTPUT | |
echo $VERSION | |
echo "${{ github.event.inputs.version }}" | |
release: | |
needs: [ build-win-x64, build-switch, build-macos, build-flatpak, version ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/download-artifact@v3 | |
- name: Rename Flatpak | |
run: | | |
mv ${{ needs.version.outputs.DIST_FLATPAK_X86_64 }}/wiliwili-Linux-${{ needs.version.outputs.version }}.flatpak \ | |
${{ needs.version.outputs.DIST_FLATPAK_X86_64 }}/${{ needs.version.outputs.DIST_FLATPAK_X86_64 }}.flatpak | |
- name: Upload Release | |
if: github.event.inputs.release == 'true' && !cancelled() | |
uses: ncipollo/release-action@v1 | |
with: | |
name: wiliwili ${{ github.event.inputs.version }} | |
tag: ${{ github.event.inputs.version }} | |
omitBodyDuringUpdate: true | |
body: This release is built by github-action. | |
token: ${{ secrets.GITHUB_TOKEN }} | |
allowUpdates: true | |
artifacts: > | |
${{ needs.version.outputs.DIST_EXE }}/${{ needs.version.outputs.DIST_EXE }}.tar.gz | |
${{ needs.version.outputs.DIST_NRO }}/${{ needs.version.outputs.DIST_NRO }}.tar.gz | |
${{ needs.version.outputs.DIST_INTEL_DMG }}/${{ needs.version.outputs.DIST_INTEL_DMG }}.dmg | |
${{ needs.version.outputs.DIST_ARM_DMG }}/${{ needs.version.outputs.DIST_ARM_DMG }}.dmg | |
${{ needs.version.outputs.DIST_UNIVERSAL_DMG }}/${{ needs.version.outputs.DIST_UNIVERSAL_DMG }}.dmg | |
${{ needs.version.outputs.DIST_FLATPAK_X86_64 }}/${{ needs.version.outputs.DIST_FLATPAK_X86_64 }}.flatpak | |
build-win-x64: | |
needs: [ version ] | |
runs-on: windows-2022 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ github.repository }} | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: Update gamepad db | |
run: | | |
cmake -P library/borealis/library/lib/extern/glfw//CMake/GenerateMappings.cmake library/borealis/library/lib/extern/glfw//src/mappings.h.in library/borealis/library/lib/extern/glfw//src/mappings.h | |
- name: Install dependency | |
uses: msys2/setup-msys2@v2 | |
with: | |
# update: true | |
install: >- | |
mingw-w64-x86_64-gcc | |
mingw-w64-x86_64-cmake | |
mingw-w64-x86_64-make | |
mingw-w64-x86_64-mpv | |
mingw-w64-x86_64-libwebp | |
git | |
p7zip | |
- name: Build | |
shell: msys2 {0} | |
id: compile | |
run: | | |
mkdir -p build && pushd build | |
cmake .. -G "MinGW Makefiles" -DPLATFORM_DESKTOP=ON -DWIN32_TERMINAL=OFF -DCMAKE_BUILD_TYPE=Release | |
mingw32-make wiliwili -j4 | |
strip wiliwili.exe | |
mkdir wiliwili && mv wiliwili.exe wiliwili && mv resources wiliwili | |
for i in {libwinpthread-1,libgcc_s_seh-1,zlib1,libssh2-1,libstdc++-6,libcrypto-3-x64,libwebp-7,libsharpyuv-0}; do | |
cp /mingw64/bin/${i}.dll wiliwili | |
done | |
wget https://github.com/xfangfang/wiliwili/releases/download/v0.1.0/mpv-dev-x86_64-20221204-git-4574dd5.7z -O mpv.7z | |
7z e mpv.7z -ompv | |
cp mpv/mpv-2.dll wiliwili/libmpv-2.dll | |
tar -czvf ../${{ needs.version.outputs.DIST_EXE }}.tar.gz wiliwili | |
- name: Upload dist | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ needs.version.outputs.DIST_EXE }} | |
path: "${{ needs.version.outputs.DIST_EXE }}.tar.gz" | |
build-win-uwp: | |
needs: [ version ] | |
runs-on: windows-2022 | |
steps: | |
- name: Setup Windows 10 SDK | |
uses: GuillaumeFalourd/[email protected] | |
with: | |
sdk-version: 20348 | |
- name: Install NSIS | |
shell: powershell | |
run: | | |
Invoke-Expression (Invoke-Webrequest 'https://xmake.io/psget.text' -UseBasicParsing).Content | |
xmake --version | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: pre-repo | |
shell: powershell | |
run: | | |
$env:path+=";C:\Users\$($env:username)\xmake" | |
xmake repo -a local https://github.com/zeromake/xrepo.git | |
mkdir -p dist | |
mkdir -p build/xrepo | |
cd build/xrepo | |
git clone https://github.com/xfangfang/borealis.git -b wiliwili --depth=1 | |
git clone https://github.com/xfangfang/libpdr.git -b master --depth=1 | |
cd ../../ | |
- name: build | |
shell: powershell | |
env: | |
VERSION: ${{ needs.version.outputs.VERSION }} | |
run: | | |
$env:path+=";C:\Users\$($env:username)\xmake" | |
xmake f -c -y --sw=y --winrt=y --window=sdl --driver=d3d11 | |
xmake build wiliwili | |
cp winrt/key.pfx build/ | |
cp winrt/docs/key.pdf build/key.pdf | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ needs.version.outputs.DIST_UWP }} | |
path: | | |
build/wiliwili.msix | |
build/key.pfx | |
build/key.pdf | |
build-switch: | |
needs: [ version ] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ github.repository }} | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: Build | |
id: compile | |
run: | | |
docker run --rm -v $(pwd):/data devkitpro/devkita64:20230622 bash -c "/data/scripts/build_switch.sh" | |
tar -czvf ${{ needs.version.outputs.DIST_NRO }}.tar.gz -C cmake-build-switch wiliwili.nro | |
- name: Upload dist | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ needs.version.outputs.DIST_NRO }} | |
path: "${{ needs.version.outputs.DIST_NRO }}.tar.gz" | |
build-macos: | |
needs: [ version ] | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
arch: [ IntelChip, AppleSilicon, Universal ] | |
# Don't fail the whole workflow if one architecture fails | |
fail-fast: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
repository: ${{ github.repository }} | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: install deps | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
run: | | |
brew install create-dmg dylibbundler webp boost | |
brew tap xfangfang/wiliwili | |
brew install -v mpv-wiliwili | |
- name: SSH connection to Actions | |
uses: P3TERX/[email protected] | |
if: (github.event.inputs.ssh_darwin == 'true' && github.event.inputs.ssh_darwin != 'false') || contains(github.event.action, 'ssh_darwin') | |
env: | |
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }} | |
TELEGRAM_BOT_TOKEN: ${{ secrets.TELEGRAM_BOT_TOKEN }} | |
- name: Update gamepad mappings | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
id: gamepad | |
run: | | |
BRLS_GLFW="library/borealis/library/lib/extern/glfw" | |
cmake -P ${BRLS_GLFW}/CMake/GenerateMappings.cmake ${BRLS_GLFW}/src/mappings.h.in ${BRLS_GLFW}/src/mappings.h | |
- name: Build | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
id: compile | |
run: | | |
cmake -B build -DPLATFORM_DESKTOP=ON -DCMAKE_BUILD_TYPE=Release -DMAC_${{ matrix.arch }}=ON -DMAC_DOWNLOAD_DYLIB=ON | |
make -C build wiliwili.app -j$(sysctl -n hw.ncpu) | |
- name: Name | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
id: name | |
run: | | |
echo "DMG=${{ needs.version.outputs.DIST_DMG_PREFIX }}-${{ matrix.arch }}-${{ needs.version.outputs.version }}" >> $GITHUB_OUTPUT | |
- name: Bundle | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
id: bundle | |
run: | | |
mkdir -p dist | |
mv build/wiliwili.app dist/ | |
cp ./scripts/mac/readme.txt dist/readme.txt | |
create-dmg --window-pos 200 120 --window-size 800 400 \ | |
--icon-size 100 --icon "wiliwili.app" 200 190 \ | |
--icon "readme.txt" 400 100 --hide-extension "wiliwili.app" \ | |
--app-drop-link 600 185 --volicon ./scripts/mac/dmg.icns \ | |
--volname "wiliwili (${{ needs.version.outputs.version }})" ${{ steps.name.outputs.DMG }}.dmg "dist/" | |
- name: Upload dist | |
if: matrix.arch != 'Universal' || ( matrix.arch == 'Universal' && github.event.inputs.universal_macos == 'true') | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ steps.name.outputs.DMG }} | |
path: "${{ steps.name.outputs.DMG }}.dmg" | |
build-flatpak: | |
needs: [ version ] | |
runs-on: ubuntu-latest | |
container: | |
image: bilelmoussaoui/flatpak-github-actions:freedesktop-22.08 | |
options: --privileged | |
strategy: | |
matrix: | |
arch: [ x86_64, aarch64 ] | |
driver: [ gl, gles2 ] | |
exclude: | |
- arch: x86_64 | |
driver: gles2 | |
# Don't fail the whole workflow if one architecture fails | |
fail-fast: false | |
env: | |
FLATPAK_NAME: wiliwili-Linux-${{ needs.version.outputs.version }}.flatpak | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
if: matrix.arch == 'x86_64' || ( matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true') | |
with: | |
repository: ${{ github.repository }} | |
submodules: 'recursive' | |
fetch-depth: 0 | |
- name: Add OpenGL ES 2.0 build option | |
if: matrix.driver == 'gles2' && ( matrix.arch == 'x86_64' || ( matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true' ) ) | |
run: | | |
sed -i "29i \ - '-DUSE_GLES2=ON'" .flatpak-manifest.yml | |
- name: Rename package | |
if: matrix.arch == 'aarch64' | |
run: | | |
echo "FLATPAK_NAME=wiliwili-Linux-${{ needs.version.outputs.version }}-${{ matrix.driver }}.flatpak" >> $GITHUB_ENV | |
- name: Install docker | |
if: ${{ matrix.arch == 'aarch64' }} | |
run: | | |
dnf -y install docker | |
- name: Install deps | |
id: dep | |
if: matrix.arch == 'x86_64' || ( matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true') | |
run: | | |
dnf -y install cmake | |
BRLS_GLFW="library/borealis/library/lib/extern/glfw/" | |
cmake -P ${BRLS_GLFW}/CMake/GenerateMappings.cmake ${BRLS_GLFW}/src/mappings.h.in ${BRLS_GLFW}/src/mappings.h | |
echo "FLATPAK_NAME=${FLATPAK_NAME}" >> $GITHUB_OUTPUT | |
echo ${FLATPAK_NAME} | |
- name: Set up QEMU | |
id: qemu | |
if: matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true' | |
uses: docker/setup-qemu-action@v2 | |
with: | |
platforms: arm64 | |
- name: Cache | |
id: cache | |
if: matrix.arch == 'x86_64' || ( matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true') | |
uses: actions/cache@v3 | |
with: | |
path: .flatpak-builder | |
key: wiliwili-flatpak-${{ matrix.driver }}-${{ hashFiles('.flatpak-manifest.yml') }}-${{ matrix.arch }} | |
- uses: flatpak/flatpak-github-actions/[email protected] | |
if: matrix.arch == 'x86_64' || ( matrix.arch == 'aarch64' && github.event.inputs.arm_flatpak == 'true') | |
with: | |
bundle: ${{ steps.dep.outputs.FLATPAK_NAME }} | |
manifest-path: .flatpak-manifest.yml | |
cache: false | |
verbose: true | |
arch: ${{ matrix.arch }} |