Unity Testsuite #16
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: Check Unity Testsuite Bindings | |
on: | |
push: | |
branches: | |
- staging | |
pull_request: | |
jobs: | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
# 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' | |
run: | | |
description=$(curl -s -H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
${{ github.event.pull_request.url }} | jq -r '.body') | |
# 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: Install Rust toolchain | |
run: | | |
curl https://sh.rustup.rs -sSf | sh -s -- -y | |
source $HOME/.cargo/env | |
rustup install stable | |
rustup default stable | |
- 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: Check for changes | |
run: | | |
git diff --exit-code | |
continue-on-error: true | |
- name: Fail if there are changes | |
if: ${{ steps.check-for-changes.outcome == 'failure' }} | |
run: | | |
echo "Error: Bindings are dirty. Please generate bindings again and commit them to this branch." | |
exit 1 |