A Visual Studio Code extension to manage, monitor, and trigger Xcode Cloud builds directly from your editor. Similar to the GitHub Actions extension but for Apple's Xcode Cloud CI/CD service.
- View all your Xcode Cloud workflows in a dedicated sidebar
- See workflow status (Enabled/Disabled) at a glance
- Trigger builds directly from any workflow
- Real-time build status updates with auto-refresh
- View build history for each workflow
- See build progress with animated status icons
- Desktop notifications when builds complete or fail
- Inspect individual build steps and their status
- View action timing and duration
- Track progress of running builds step-by-step
- Trigger Build - Start a new build with branch/tag selection
- Cancel Build - Stop running builds
- Open in Browser - Jump to App Store Connect
- Status Bar - At-a-glance view of active builds
- Apple Developer Account with Xcode Cloud access
- App Store Connect API Key with the following permissions:
- Access to Xcode Cloud
- Read/Write access to CI workflows and builds
- Go to App Store Connect → Users and Access → Integrations → App Store Connect API
- Click the + button to create a new key
- Name your key (e.g., "VS Code Xcode Cloud")
- Select the appropriate access level (Admin or App Manager recommended)
- Download the
.p8private key file (you can only download it once!) - Note your Issuer ID and Key ID
- Open VS Code Command Palette (
Cmd+Shift+P) - Run "Xcode Cloud: Configure App Store Connect Credentials"
- Enter your:
- Issuer ID - Found in App Store Connect API Keys section
- Key ID - The ID of your API key
- Private Key - Paste the entire contents of your
.p8file
Your credentials are stored securely using VS Code's Secret Storage.
- Click the Xcode Cloud icon in the Activity Bar
- The Workflows panel shows all your Xcode Cloud workflows
- Click a workflow to trigger a build
From the Workflows panel:
- Right-click a workflow
- Select "Trigger Build"
- Optionally select a branch/tag
- Build starts and you'll see a notification
From Command Palette:
- Run "Xcode Cloud: Trigger Build"
- Select a workflow
- Select a branch/tag
- The Build Runs panel shows recent builds
- Icons indicate status:
- 🟢
✓- Succeeded - 🔴
✗- Failed - 🔵
◷- Pending - ⚪
●- Running (animated)
- 🟢
- Right-click a build in the Build Runs panel
- Select "View Build Logs"
- The Build Actions panel shows individual steps
- Right-click a running build
- Select "Cancel Build"
- Confirm the cancellation
| Command | Description |
|---|---|
Xcode Cloud: Configure App Store Connect Credentials |
Set up your API credentials |
Xcode Cloud: Trigger Build |
Start a new build |
Xcode Cloud: Cancel Build |
Stop a running build |
Xcode Cloud: View Build Logs |
View build actions/steps |
Xcode Cloud: Refresh Workflows |
Refresh workflow list |
Xcode Cloud: Refresh Build Runs |
Refresh build list |
Xcode Cloud: Refresh Build Actions |
Refresh action list |
Xcode Cloud: Open in App Store Connect |
Open App Store Connect |
The extension automatically notifies you when:
- ✅ A build succeeds
- ❌ A build fails
⚠️ A build is canceled
Notifications include a "View Builds" action to jump directly to the build list.
- All credentials are stored using VS Code's Secret Storage (encrypted)
- API tokens are generated locally using your private key
- Tokens expire after 18 minutes and are automatically refreshed
- No credentials are ever sent to third parties
git clone https://github.com/TJMusiitwa/vscode-xcode-cloud-control
cd vscode-xcode-cloud-control
npm installnpm run compilePress F5 in VS Code to launch the Extension Development Host.
npm testThis extension uses the App Store Connect API for Xcode Cloud:
/v1/ciWorkflows- List workflows/v1/ciBuildRuns- List, create, and delete build runs/v1/ciBuildRuns/{id}/actions- List build actions/v1/scmGitReferences- List branches and tags
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by the GitHub Actions VS Code extension
- Uses the jose library for JWT generation
- Uses undici for HTTP requests