-
Notifications
You must be signed in to change notification settings - Fork 0
143 lines (127 loc) · 5.49 KB
/
unity-test.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
name: Unity Test Suite
on:
push:
branches:
- staging
pull_request:
jobs:
unity-testsuite:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true
# Grab the branch name from the PR description. If it's not found, master will be used instead.
- name: Extract SpacetimeDB branch name or PR link from PR description
id: extract-branch
if: github.event_name == 'pull_request'
env:
description: ${{ github.event.pull_request.body }}
run: |
# Check if description contains a branch name or a PR link
branch_or_pr=$(echo "$description" | grep -oP '(?<=SpacetimeDB branch name:\s).+')
echo "Branch or PR found: $branch_or_pr"
if [[ -z "$branch_or_pr" ]]; then
branch="master"
elif [[ "$branch_or_pr" =~ ^https://github.com/.*/pull/[0-9]+$ ]]; then
# If it's a PR link, extract the branch name from the PR
pr_number=$(echo "$branch_or_pr" | grep -oP '[0-9]+$')
branch=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \
https://api.github.com/repos/clockworklabs/SpacetimeDB/pulls/$pr_number | jq -r '.head.ref')
else
# It's already a branch name
branch="$branch_or_pr"
fi
echo "branch=$branch" >> $GITHUB_OUTPUT
echo "Final branch name: $branch"
- name: Replace com.clockworklabs.spacetimedbsdk in manifest.json
run: |
# Get the branch name from the environment variable
branch_name="${{ github.head_ref }}"
# Replace any reference to com.clockworklabs.spacetimedbsdk with the correct GitHub URL using the current branch
sed -i "s|\"com.clockworklabs.spacetimedbsdk\":.*|\"com.clockworklabs.spacetimedbsdk\": \"https://github.com/clockworklabs/com.clockworklabs.spacetimedbsdk.git#$branch_name\",|" unity-tests~/client/Packages/manifest.json
cat unity-tests~/client/Packages/manifest.json
- name: Replace spacetimedb dependency in Cargo.toml
run: |
# Get the branch name from the environment variable
branch_name="${{ github.head_ref }}"
# Make sure we're using the correct bindings when building the module TODO
sed -i "s|spacetimedb.*=.*|spacetimedb = \{ path = \"../SpacetimeDB/crates/bindings\" \}|" unity-tests~/server/Cargo.toml
cat unity-tests~/server/Cargo.toml
- name: Install Rust toolchain
run: |
curl https://sh.rustup.rs -sSf | sh -s -- -y
source $HOME/.cargo/env
rustup install stable
rustup default stable
- name: Cache Cargo target directory
uses: actions/cache@v3
with:
path: unity-tests~/server/target
key: server-target-SpacetimeDBUnityTestsuite-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }}
restore-keys: |
server-target-SpacetimeDBUnityTestsuite-${{ runner.os }}-${{ runner.arch }}-
server-target-SpacetimeDBUnityTestsuite-
- name: Cache Cargo registry
uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: cargo-registry-${{ runner.os }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }}
restore-keys: |
cargo-registry-${{ runner.os }}-
cargo-registry-
- name: Cache Cargo index
uses: actions/cache@v3
with:
path: ~/.cargo/git
key: cargo-index-${{ runner.os }}-${{ hashFiles('unity-tests~/server/Cargo.lock') }}
restore-keys: |
cargo-index-${{ runner.os }}-
cargo-index-
- name: Install SpacetimeDB CLI from specific branch
run: |
cd unity-tests~
git clone https://github.com/clockworklabs/SpacetimeDB.git
cd SpacetimeDB
# Sanitize the branch name by trimming any newlines or spaces
branch_name=$(echo "${{ steps.extract-branch.outputs.branch }}" | tr -d '[:space:]')
# If the branch name is not found, default to master
if [ -z "$branch_name" ]; then
branch_name="master"
fi
git checkout "$branch_name"
echo "Checked out branch: $branch_name"
cargo build --release -p spacetimedb-cli
sudo mv target/release/spacetime /usr/bin/spacetime
- name: Generate client bindings
run: |
cd unity-tests~/server
bash ./generate.sh -y
- name: Start SpacetimeDB
run: |
spacetime start &
disown
- name: Publish module to SpacetimeDB
run: |
cd unity-tests~/server
bash ./publish.sh
- uses: actions/cache@v3
with:
path: unity-tests~/client/Library
key: Library-SpacetimeDBUnityTestsuite-Linux-x86
restore-keys: |
Library-SpacetimeDBUnityTestsuite-
Library-
- name: Set up Unity
uses: game-ci/unity-test-runner@v4
with:
unityVersion: 2022.3.32f1 # Adjust Unity version to a valid tag
projectPath: unity-tests~/client # Path to the Unity project subdirectory
githubToken: ${{ secrets.GITHUB_TOKEN }}
testMode: playmode
useHostNetwork: true
env:
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
UNITY_SERIAL: ${{ secrets.UNITY_SERIAL }}