Concourse Fly Integration
Manage Concourse CI directly from VS Code. Browse pipelines and jobs across multiple teams, trigger builds, view logs, intercept containers, deploy pipeline templates — all without leaving your editor. Powered by the fly CLI.
Features
Login to multiple teams. Pipelines grouped by team, jobs show last build status:
Pipelines
├── 🏢 main (ci) [🚪]
│ ├── hello [👁] [📊] [⏸]
│ │ ├── ✅ say-hello [#5](https://github.com/samuelBarreto/concourse-fly-vscode/issues/5) — succeeded [▶] [>_] [👁]
│ │ └── ❌ run-tests [#3](https://github.com/samuelBarreto/concourse-fly-vscode/issues/3) — failed [▶] [>_] [👁]
│ └── my-app
│ └── ⏳ deploy pending [▶] [>_] [👁]
├── 🏢 dev-team (ci) [🚪]
│ └── staging
└── ➕ Add Team...
Recent Builds
├── 🏢 main (ci)
│ ├── 📦 hello
│ │ ├── ✅ [#6](https://github.com/samuelBarreto/concourse-fly-vscode/issues/6) hello/build [📋] [>_]
│ │ └── ✅ [#5](https://github.com/samuelBarreto/concourse-fly-vscode/issues/5) hello/build [📋] [>_]
│ └── 📦 my-app
│ └── ⏳ [#1](https://github.com/samuelBarreto/concourse-fly-vscode/issues/1) my-app/deploy [📋] [>_]
└── 🏢 dev-team (ci)
└── 📦 staging
└── ✅ [#2](https://github.com/samuelBarreto/concourse-fly-vscode/issues/2) staging/deploy [📋] [>_]
Templates
├── 📄 Hello World [📄] [🚀]
├── 📄 Git Resource [📄] [🚀]
├── 📄 Time Triggered [📄] [🚀]
├── 📄 Docker Build [📄] [🚀]
└── 📄 Multi-Job Pipeline [📄] [🚀]
Quick Actions
├── 🔑 Login / Add Team
├── 🚪 Logout / Remove Team
├── ☁️ Set Pipeline
├── 🚀 Quick Deploy
├── 📊 Diff with Concourse
├── 📄 New Pipeline from Template
└── 🔄 Refresh
Click 📋 on any build to open a formatted log file in the editor:
✅ concourse-golang / build [#6](https://github.com/samuelBarreto/concourse-fly-vscode/issues/6)
Status: SUCCEEDED
Lines: 15 | Errors: 0 | Warnings: 0
════════════════════════════════════════════════════════════
════════════════════════════════════════════════════════════
initializing
selected worker: 96fda3fbbe21
running sh -c cd my-repo
go build -o ../built/app .
succeeded
When there are errors, they're extracted and shown at the top:
❌ concourse-golang / test [#3](https://github.com/samuelBarreto/concourse-fly-vscode/issues/3)
Status: FAILED
Lines: 25 | Errors: 2 | Warnings: 1
════════════════════════════════════════════════════════════
❌ ERRORS
────────────────────────────────────────────────────────
│ FAIL: TestHandler (0.00s)
│ exit status 1
⚠️ WARNINGS
────────────────────────────────────────────────────────
│ warning: unused variable
════════════════════════════════════════════════════════════
[full logs below]
- Opens as a
.log file with syntax highlighting
- Searchable with
Ctrl+F
- Accessible by screen readers
🔮 Smart Deploy with CodeLens
YAML pipeline files get inline actions:
- First deploy:
▶ Deploy "hello" to Concourse
- After deploy:
🚀 Deploy "hello" to main (ci) + 📊 Diff with Concourse
- Pipeline name auto-detected from filename
- Remembers last team/target per file
📐 Pipeline Graph
Click 📊 on any pipeline to see a visual diagram with resources inside jobs, status colors, and dependency arrows.
Right-click any YAML file: Set Pipeline, Quick Deploy, Diff, New Template.
🔔 Build Monitor
Notifications when build status changes (succeeded, failed, errored).
Inline Actions
Pipelines
| Icon |
Action |
| 👁 |
View/save pipeline YAML |
| 📊 |
Show pipeline graph |
| ⏸/▶ |
Pause/Unpause |
| 🚪 |
Logout team |
Jobs
| Icon |
Action |
| ▶ |
Trigger job |
| >_ |
Intercept (shell into container) |
| 👁 |
View/save job YAML |
Builds
| Icon |
Action |
| 📋 |
View formatted logs in editor |
| >_ |
Intercept (shell into container) |
Templates
| Icon |
Action |
| 📄 |
Save template to workspace |
| 🚀 |
Deploy to Concourse |
Requirements
- fly CLI installed
- A running Concourse instance
Setup
Adding a Team
- Command Palette → Concourse: Login
- Select fly binary (first time only)
- Choose: Browser login or Username & Password
- Enter Concourse URL and target name
- TLS: skip verification or select CA certificate
- Enter team name
- Enter credentials (if basic auth)
Removing a Team
Click 🚪 next to team name, or Quick Actions → Logout.
Manual Configuration
{
"concourse.url": "http://localhost:8080",
"concourse.flyPath": "C:\\concourse\\fly.exe",
"concourse.skipTls": false,
"concourse.caCert": "",
"concourse.enableSounds": true
}
Commands
| Command |
Description |
Concourse: Login |
Add a new team |
Concourse: Logout |
Remove a team |
Concourse: Set Pipeline |
Deploy YAML (auto-names from filename) |
Concourse: Quick Deploy |
Redeploy to last target |
Concourse: Diff with Concourse |
Diff local vs remote |
Concourse: Show Pipeline Graph |
Visual pipeline diagram |
Concourse: Trigger Job |
Start a job |
Concourse: Pause Pipeline |
Pause a pipeline |
Concourse: Unpause Pipeline |
Unpause a pipeline |
Concourse: View Pipeline YAML |
Save pipeline config |
Concourse: View Job YAML |
Save job config |
Concourse: Intercept Build |
Shell into build container |
Concourse: Intercept Job |
Shell into job container |
Concourse: New Pipeline from Template |
Create from template |
Concourse: Deploy Template |
Deploy template to team |
Concourse: Refresh |
Refresh all data |
License
MIT