[Shell] block registery #1834
This file contains hidden or 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 OpenMinecraft native version | |
| on: [push, pull_request] | |
| env: | |
| LINK_JOBS: 16 | |
| JOBS: 16 | |
| MODE: releasedbg | |
| XMAKE_ARGS: -v | |
| ANDROID_NDK_VERSION: r27c | |
| OHOS_SDK_VERSION: 6.1-Release | |
| CROSS_TOOL_VERSION: toolchain-20260719-1 | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: windows-latest | |
| plat: windows | |
| arch: x64 | |
| loaderarch: amd64 | |
| - os: windows-latest | |
| plat: windows | |
| arch: x86 | |
| loaderarch: x86 | |
| - os: windows-latest | |
| plat: windows | |
| arch: arm64 | |
| loaderarch: arm64 | |
| - os: ubuntu-latest | |
| plat: mingw | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: ubuntu-22.04 | |
| plat: harmony | |
| arch: arm64-v8a | |
| loaderarch: arm64 | |
| - os: ubuntu-22.04 | |
| plat: harmony | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: ubuntu-22.04 | |
| plat: android | |
| arch: arm64-v8a | |
| loaderarch: arm64 | |
| - os: ubuntu-22.04 | |
| plat: android | |
| arch: armeabi-v7a | |
| loaderarch: arm32 | |
| - os: ubuntu-22.04 | |
| plat: android | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: ubuntu-22.04 | |
| plat: linux | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: ubuntu-24.04-arm | |
| plat: linux | |
| arch: arm64 | |
| loaderarch: arm64 | |
| - os: ubuntu-latest | |
| plat: linux-cross | |
| arch: loong64 | |
| loaderarch: loong64 | |
| - os: ubuntu-latest | |
| plat: linux-cross | |
| arch: riscv64 | |
| loaderarch: riscv64 | |
| - os: ubuntu-latest | |
| plat: linux-cross | |
| arch: s390x | |
| loaderarch: s390x | |
| - os: ubuntu-latest | |
| plat: linux-cross | |
| arch: ppc64 | |
| loaderarch: ppc64 | |
| - os: macos-latest | |
| plat: macos | |
| arch: arm64 | |
| loaderarch: arm64 | |
| - os: macos-15-intel | |
| plat: macos | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: macos-latest | |
| plat: ios | |
| arch: arm64 | |
| loaderarch: arm64 | |
| - os: ubuntu-latest | |
| plat: freebsd | |
| arch: x86_64 | |
| loaderarch: amd64 | |
| - os: ubuntu-latest | |
| plat: freebsd | |
| arch: arm64 | |
| loaderarch: arm64 | |
| - os: ubuntu-latest | |
| plat: freebsd | |
| arch: riscv64 | |
| loaderarch: riscv64 | |
| - os: ubuntu-latest | |
| plat: freebsd | |
| arch: ppc64 | |
| loaderarch: ppc64 | |
| name: Build ${{ matrix.plat }}-${{ matrix.loaderarch }} | |
| runs-on: ${{ matrix.os }} | |
| permissions: | |
| actions: write | |
| contents: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| submodules: 'true' | |
| - name: Fetch Resource | |
| run: python ./scripts/fetchsrc.py | |
| - name: Generate cache name (UNIX) | |
| if: matrix.plat != 'windows' | |
| run: | | |
| CACHENAME=$(python ./misc/simple_name_gen.py) | |
| echo $CACHENAME | |
| echo "CACHENAME=$CACHENAME" >> $GITHUB_ENV | |
| echo "CACHEPATH=~/.xmake/packages" >> $GITHUB_ENV | |
| - name: Generate cache name (Windows) | |
| if: matrix.plat == 'windows' | |
| run: | | |
| $CACHENAME = python ./misc/simple_name_gen.py | |
| echo "CACHENAME=$CACHENAME" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| echo "CACHEPATH=C:/Users/runneradmin/AppData/Local/.xmake/packages" | Out-File -FilePath $env:GITHUB_ENV -Append | |
| - name: MacOS JIT Test | |
| if: matrix.plat == 'macos' | |
| run: | | |
| /usr/libexec/PlistBuddy -c "Add :com.apple.security.cs.allow-jit bool true" jit.entitlements | |
| gcc -g -std=c17 -Wall -Wdeprecated -Wpedantic -Wextra -o ./jit ./misc/jit.c | |
| codesign -s - -f --entitlements jit.entitlements jit | |
| lldb -o r -o exit ./jit | |
| rm jit | |
| - name: Install xmake | |
| if: matrix.plat != 'freebsd' | |
| uses: xmake-io/github-action-setup-xmake@v1 | |
| with: | |
| xmake-version: branch@dev | |
| - name: Install xmake from source | |
| if: matrix.plat == 'freebsd' | |
| run: | | |
| git clone https://github.com/OpenMinecraft-Dev/xmake | |
| cd xmake | |
| git submodule update --recursive --init | |
| ./scripts/get.sh __local__ | |
| source ~/.xmake/profile | |
| - name: Setup Python packages | |
| run: pip install wheel | |
| - name: Restore xmake packages (Core) | |
| uses: actions/cache/restore@v5 | |
| with: | |
| path: ${{ env.CACHEPATH }} | |
| key: ${{ matrix.plat }}-${{ matrix.loaderarch }}-corepkgs- | |
| restore-keys: ${{ matrix.plat }}-${{ matrix.loaderarch }}-corepkgs- | |
| - name: Setup OpenHarmony SDK | |
| if: matrix.plat == 'harmony' | |
| run: | | |
| wget https://repo.huaweicloud.com/openharmony/os/${{ env.OHOS_SDK_VERSION }}/ohos-sdk-windows_linux-public.tar.gz | |
| tar -zxvf ohos-sdk-windows_linux-public.tar.gz | |
| unzip linux/native*.zip | |
| - name: Setup Android NDK | |
| if: matrix.plat == 'android' | |
| run: | | |
| wget https://dl.google.com/android/repository/android-ndk-${{ env.ANDROID_NDK_VERSION }}-linux.zip | |
| unzip android-ndk-${{ env.ANDROID_NDK_VERSION }}-linux.zip | |
| - name: Configure MacOS | |
| if: matrix.plat == 'macos' | |
| run: xmake f -m ${{ env.MODE }} --cxx="clang++" -yc ${{ env.XMAKE_ARGS }} | |
| - name: Configure IOS | |
| if: matrix.plat == 'ios' | |
| run: xmake f -p iphoneos -m ${{ env.MODE }} --cc="clang" -yc ${{ env.XMAKE_ARGS | |
| }} | |
| - name: Configure OpenHarmony | |
| if: matrix.plat == 'harmony' | |
| run: xmake f -p harmony -a ${{ matrix.arch }} --toolchain=hdk --sdk=${{ | |
| github.workspace }}/native --cxflags="-fPIC" --cflags="-fPIC" -m ${{ | |
| env.MODE }} -yc ${{ env.XMAKE_ARGS }} | |
| - name: Configure Android | |
| if: matrix.plat == 'android' | |
| run: xmake f -p android -a ${{ matrix.arch }} --ndk=${{ github.workspace | |
| }}/android-ndk-${{ env.ANDROID_NDK_VERSION }} -m ${{ env.MODE }} -yc | |
| ${{ env.XMAKE_ARGS }} --cxxflags="-fPIC" | |
| - name: Configure Linux | |
| if: ${{ matrix.plat == 'linux' }} | |
| run: | | |
| sudo apt update | |
| sudo apt install libgl1-mesa-dev | |
| xmake f -a ${{ matrix.arch }} -m ${{ env.MODE }} -yc ${{ env.XMAKE_ARGS }} | |
| - name: Configure Linux Cross | |
| if: ${{ matrix.plat == 'linux-cross' }} | |
| run: | | |
| sudo apt update | |
| sudo apt install clang llvm | |
| wget https://github.com/OpenMinecraft-Dev/cross-toolchain-sysroot/releases/download/${{ env.CROSS_TOOL_VERSION }}/llvm-toolchain-linux-debian-${{ matrix.arch }}.tar.xz | |
| mkdir toolchain | |
| tar -xJf llvm-toolchain-linux-debian-${{ matrix.arch }}.tar.xz -C ./toolchain/ | |
| rm llvm-toolchain-linux-debian-${{ matrix.arch }}.tar.xz | |
| xmake f --toolchain=llvm --sdk=${{ github.workspace }}/toolchain -a ${{ matrix.arch }} -m ${{ env.MODE }} -yc ${{ env.XMAKE_ARGS }} | |
| - name: Configure FreeBSD Cross | |
| if: ${{ matrix.plat == 'freebsd' }} | |
| run: | | |
| sudo apt update | |
| sudo apt install clang llvm | |
| wget https://github.com/OpenMinecraft-Dev/cross-toolchain-sysroot/releases/download/${{ env.CROSS_TOOL_VERSION }}/llvm-toolchain-freebsd-${{ matrix.arch }}.tar.xz | |
| mkdir toolchain | |
| tar -xJf llvm-toolchain-freebsd-${{ matrix.arch }}.tar.xz -C ./toolchain/ | |
| rm llvm-toolchain-freebsd-${{ matrix.arch }}.tar.xz | |
| xmake f --toolchain=llvm --sdk=${{ github.workspace }}/toolchain -a ${{ matrix.arch }} -m ${{ env.MODE }} -p bsd --target_os=FreeBSD -yc ${{ env.XMAKE_ARGS }} | |
| - name: Configure Windows | |
| if: matrix.plat == 'windows' | |
| run: xmake f --toolchain=msvc -a ${{ matrix.arch }} -m ${{ env.MODE }} -yc ${{ | |
| env.XMAKE_ARGS }} | |
| - name: Configure mingw | |
| if: matrix.plat == 'mingw' | |
| run: | | |
| sudo apt install gcc-mingw-w64 g++-mingw-w64 binutils-mingw-w64 mingw-w64-common mingw-w64-i686-dev mingw-w64-x86-64-dev libz-mingw-w64-dev | |
| xmake f -p mingw -a ${{ matrix.arch }} --toolchain=mingw --sdk=/usr/x86_64-w64-mingw32 --ldflags="-static" -m ${{ env.MODE }} -yc ${{ env.XMAKE_ARGS }} | |
| - name: Save xmake packages (Core) | |
| uses: actions/cache/save@v5 | |
| with: | |
| path: ${{ env.CACHEPATH }} | |
| key: ${{ matrix.plat }}-${{ matrix.loaderarch }}-corepkgs-${{ env.CACHENAME }} | |
| - name: Install zip via Chocolatey | |
| if: matrix.plat == 'windows' | |
| run: choco install zip -y | |
| - name: Generate Bundle | |
| run: | | |
| cd bootassets | |
| zip -9 -r boot.bundle . | |
| mv boot.bundle .. | |
| cd .. | |
| cd externalassets | |
| zip -9 -r external.bundle . | |
| mv external.bundle .. | |
| cd .. | |
| - name: Build | |
| run: xmake build -y --jobs=${{ env.JOBS }} --linkjobs=${{ env.LINK_JOBS }} ${{ | |
| env.XMAKE_ARGS }} openminecraft | |
| - name: Build network tools | |
| run: xmake build -y --jobs=${{ env.JOBS }} --linkjobs=${{ env.LINK_JOBS }} ${{ | |
| env.XMAKE_ARGS }} openminecraft-test-network | |
| - name: Build VM tools | |
| run: xmake build -y --jobs=${{ env.JOBS }} --linkjobs=${{ env.LINK_JOBS }} ${{ | |
| env.XMAKE_ARGS }} openminecraft-elysiavis | |
| - name: Xmake Install | |
| run: xmake install -o prod ${{ env.XMAKE_ARGS }} openminecraft | |
| - name: Upload Artifacts | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: target-${{ matrix.plat }}-${{ matrix.loaderarch }}-${{ env.CACHENAME }} | |
| path: prod/ | |
| compression-level: 9 |