Skip to content

Restructure the patcher dir, fix type references #77

Restructure the patcher dir, fix type references

Restructure the patcher dir, fix type references #77

Workflow file for this run

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"