Updating unity-tests #145
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: 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 }} |