Xcode Cloud workflow shows "There are no branches available" for Tuist-based repository

Description: I'm trying to set up Xcode Cloud for a tvOS project that uses Tuist for project generation. The workflow is created successfully, but when I try to manually start a build, no branches are listed — it just shows "There are no branches available."

Setup:

  1. tvOS app project using Tuist 4.x for project generation
  2. Hosted on GitHub (private repository, organization)
  3. The .xcodeproj and .xcworkspace files were originally in .gitignore (standard practice for Tuist projects)
  4. ci_scripts/ci_post_clone.sh is configured to install Tuist and run tuist generate --no-open after cloning

What I've tried:

  • Removed *.xcodeproj and *.xcworkspace from .gitignore and committed the generated project.pbxproj to Git — branches still not visible
  • Changed the "Project or Workspace" path in the workflow settings to match the actual location of project.pbxproj (Projects/App/<project>.xcodeproj) — no change
  • Temporarily changed the default branch to one that contains the committed .xcodeproj with project.pbxproj — still no branches available
  • Verified GitHub App (Xcode Cloud) has proper repository access with read permissions for code, metadata, and pull requests
  • Confirmed no webhook configuration issues (compared with another working repository that also has no webhooks)

Key observation: When I switch the workflow's source repository to a different repository (a standard Xcode project, not Tuist-based) within the same organization, branches appear correctly. Switching back to the Tuist-based repository shows no branches again. This suggests the issue is specific to the repository structure, not GitHub permissions or workflow configuration.

Project structure:

Root/
├── Workspace.swift          # Tuist workspace definition
├── Tuist/
│   └── Package.swift        # SPM dependencies
├── Projects/
│   └── App/
│       ├── Project.swift    # Tuist project definition
│       └── <project>.xcodeproj/
│           └── project.pbxproj  ← (committed to Git)
├── <project>.xcodeproj/     # Root-level (no project.pbxproj, only xcshareddata/schemes)
├── ci_scripts/
│   └── ci_post_clone.sh     # Installs Tuist & generates project
└── .gitignore

Environment:

  • Xcode version: Latest Release (26.4)
  • macOS: Latest Release (Tahoe 26.4)
  • Tuist version: 4.161.0

Question

  • How does Xcode Cloud discover branches for a repository? Does it require a valid .xcodeproj with project.pbxproj at a specific path on every branch? Is there a known limitation or recommended setup for Tuist-based projects where project files are generated at build time via ci_post_clone.sh?
Xcode Cloud workflow shows "There are no branches available" for Tuist-based repository
 
 
Q