Restructure the patcher dir, fix type references #77
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 | |
on: | |
# Trigger on push to main, dev | |
push: | |
branches: [ main, dev ] | |
# Trigger on any PR | |
pull_request: | |
jobs: | |
grab-reference-assemblies: | |
name: Get reference assemblies from Unity | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
unity-version: [ "2022.3.9" ] | |
transport-version: [ "1.0.0", "2.2.1" ] | |
include: | |
- unity-version: "2022.3.9" | |
unity-version-revision: "f1" | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
- name: Set Unity version | |
run: | | |
echo "m_EditorVersion: ${{ matrix.unity-version }}${{ matrix.unity-version-revision }}" > UnityProject/ProjectSettings/ProjectVersion.txt | |
- name: Set Transport version | |
run: | | |
tmp=$(mktemp) | |
jq '.dependencies["com.unity.transport"] = "${{ matrix.transport-version }}"' UnityProject/Packages/manifest.json > "$tmp" | |
mv "$tmp" UnityProject/Packages/manifest.json | |
- name: Cache Unity project | |
uses: actions/cache@v4 | |
with: | |
path: ./UnityProject/Library | |
key: Library-UnityNetcodePatcher-uv${{ matrix.unity-version }}-tv${{ matrix.transport-version }}-linux-x64 | |
restore-keys: | | |
Library-UnityNetcodePatcher-uv${{ matrix.unity-version }}-tv${{ matrix.transport-version }}- | |
Library-UnityNetcodePatcher-uv${{ matrix.unity-version }}- | |
Library-UnityNetcodePatcher- | |
Library- | |
- name: Restore Unity project | |
uses: game-ci/unity-builder@v4 | |
env: | |
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
with: | |
allowDirtyBuild: true | |
projectPath: ./UnityProject | |
targetPlatform: StandaloneLinux64 | |
buildMethod: UnityBuilderAction.RestoreScript.Restore | |
customParameters: -hostPlatform linux | |
- name: Tree assembly source paths | |
run: | | |
sudo apt-get install tree | |
tree ./UnityProject/Library/ScriptAssemblies/ | |
tree ./UnityProject/UnityEditor | |
- name: Upload assemblies as build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: reference-assemblies-uv${{ matrix.unity-version }}-tv${{ matrix.transport-version }} | |
path: | | |
UnityProject/Library/ScriptAssemblies/ | |
UnityProject/UnityEditor/ | |
build-patchers: | |
name: Build patcher for Netcode ${{ matrix.netcode-version }} | |
needs: grab-reference-assemblies | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
unity-version: [ "2022.3.9" ] | |
netcode-version: [ "1.5.2", "1.6.0", "1.7.0", "1.7.1", "1.8.0", "1.8.1" ] | |
transport-version: [ "1.0.0", "2.2.1" ] | |
native-collection-support: [ true, false ] | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
submodules: recursive | |
- name: Fetch Reference Assemblies | |
uses: actions/download-artifact@v4 | |
with: | |
name: reference-assemblies-uv${{ matrix.unity-version }}-tv${{ matrix.transport-version }} | |
path: UnityProject/ | |
- uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.*" | |
- name: Build patcher | |
shell: bash | |
run: | | |
cd NetcodePatcher.Build | |
./build.sh --unity-version ${{ matrix.unity-version }} --netcode-version ${{ matrix.netcode-version }} --transport-version ${{ matrix.transport-version }} --native-collection-support ${{ matrix.native-collection-support }} --unity-editor-dir "${{ github.workspace }}/UnityProject/UnityEditor" | |
- name: Upload assembly artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: uv${{ matrix.unity-version }}-nv${{ matrix.netcode-version }}-tv${{ matrix.transport-version }}-ncs-${{ matrix.native-collection-support }}-patcher-assemblies | |
path: "./NetcodePatcher/dist/**/*" | |
build-patcher-archive: | |
name: Build patcher archive | |
needs: build-patchers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
submodules: recursive | |
- name: Fetch Patcher Assemblies | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: "*-patcher-assemblies" | |
merge-multiple: true | |
path: ./patchers | |
- name: Create Patcher Archive | |
run: zip -r patchers.zip patchers | |
- name: Upload patcher archive artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: patcher-zip-build | |
path: "./patchers.zip" | |
build-cli-binaries: | |
name: Build CLI for ${{ matrix.target }} | |
needs: build-patchers | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
kind: [ 'linux', 'windows', 'macOS' ] | |
include: | |
- kind: linux | |
target: linux-x64 | |
os: ubuntu-latest | |
- kind: windows | |
target: win-x64 | |
os: windows-latest | |
- kind: macOS | |
target: osx-x64 | |
os: macos-latest | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
submodules: recursive | |
- name: Fetch Patcher Assemblies | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: "*-patcher-assemblies" | |
merge-multiple: true | |
path: ./NetcodePatcher/dist | |
- uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.*" | |
- name: Build CLI binary | |
shell: bash | |
run: | | |
dotnet build NetcodePatcher.Cli/NetcodePatcher.Cli.csproj -c ReleaseTools -t:CreateZip -r "${{ matrix.target }}" --self-contained true -f net8.0 | |
- name: Upload platform binary artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cli-${{ matrix.target }}-zip-build | |
path: "./NetcodePatcher.Cli/bin/ReleaseTools/net8.0/${{ matrix.target }}/*.zip" | |
build-cli-nupkg: | |
name: Build CLI .nupkg | |
needs: build-patchers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
submodules: recursive | |
- name: Fetch Patcher Assemblies | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: "*-patcher-assemblies" | |
merge-multiple: true | |
path: ./NetcodePatcher/dist | |
- uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.*" | |
- name: Pack CLI nupkg | |
shell: bash | |
run: | | |
dotnet pack NetcodePatcher.Cli/NetcodePatcher.Cli.csproj -c ReleaseTools | |
- name: Upload nupkg artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cli-nupkg-build | |
path: "./NetcodePatcher.Cli/bin/ReleaseTools/*.nupkg" | |
build-msbuild-nupkg: | |
name: Build NetcodePatcher.MSBuild | |
needs: build-patchers | |
runs-on: ubuntu-latest | |
steps: | |
- name: Fetch Sources | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
filter: tree:0 | |
submodules: recursive | |
- name: Fetch Patcher Assemblies | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: "*-patcher-assemblies" | |
merge-multiple: true | |
path: ./NetcodePatcher/dist | |
- uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: "8.0.*" | |
- name: Build MSBuild tasks | |
run: | | |
dotnet build NetcodePatcher.MSBuild.Tasks/NetcodePatcher.MSBuild.Tasks.csproj -c Release | |
- name: Build MSBuild package | |
shell: bash | |
run: | | |
dotnet pack NetcodePatcher.MSBuild/NetcodePatcher.MSBuild.csproj -c ReleaseTools | |
- name: Upload nupkg artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: msbuild-nupkg-build | |
path: "./NetcodePatcher.MSBuild/bin/ReleaseTools/*.nupkg" |