name: go test on: push: paths: backend/** jobs: check-runner: runs-on: ubuntu-latest outputs: runner-label: ${{ steps.set-runner.outputs.runner-label }} steps: - name: Set runner id: set-runner run: | runners=$(curl -s -H "Accept: application/vnd.github+json" -H "Authorization: token ${{ secrets.REPO_ACCESS_TOKEN }}" "https://api.github.com/repos/${{ github.repository }}/actions/runners") available=$(echo "$runners" | jq '.runners[] | select(.status == "online" and .busy == false and .labels[] .name == "self-hosted")') if [ -n "$available" ]; then echo "runner-label=self-hosted" >> "$GITHUB_OUTPUT" else echo "runner-label=ubuntu-latest" >> "$GITHUB_OUTPUT" fi build: needs: check-runner runs-on: ${{ needs.check-runner.outputs.runner-label }} steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version-file: "./backend/go.mod" cache-dependency-path: "./backend/go.sum" - name: Test run: | cd backend go test -exec sudo -v ./...