|
| 1 | +--- |
| 2 | +title: v8.1.0 Release |
| 3 | +date: 2026-03-03 |
| 4 | +authors: |
| 5 | + - tsilva |
| 6 | +--- |
| 7 | + |
| 8 | +[v8.1.0](https://github.com/concourse/concourse/releases/tag/v8.1.0) is out, |
| 9 | +earlier than expected. I initially planned for a release closer to the end of |
| 10 | +March, but found we had a lot of unreleased code after only two months. In the |
| 11 | +spirit of being [Agile ](https://agilemanifesto.org/principles.html), it felt |
| 12 | +right to get this release out sooner rather than later. |
| 13 | + |
| 14 | +Let's go over some of the new features and how to use them. Check the [release |
| 15 | +notes](https://github.com/concourse/concourse/releases/tag/v8.1.0) for all the |
| 16 | +new features and bug fixes. |
| 17 | + |
| 18 | +<!-- more --> |
| 19 | + |
| 20 | +## 🔎 Search Bar for your Jobs |
| 21 | + |
| 22 | +Added in [PR 9459](https://github.com/concourse/concourse/pull/9459) by |
| 23 | +[@ceco556](https://github.com/ceco556). |
| 24 | + |
| 25 | +This PR adds a search bar to the pipeline overview page that allows users to |
| 26 | +fuzzy search for jobs. The pipeline overview filters for any matching jobs, |
| 27 | +allowing users with large pipelines to quickly filter down to the job they're |
| 28 | +looking for. You can also filter by the status of the job (paused, failed, |
| 29 | +running, etc.). If your pipeline has groups, the filter will apply to the |
| 30 | +currently selected group(s). |
| 31 | + |
| 32 | +<video controls> |
| 33 | +<source src="/blog/2026/03/assets/job-search-bar.mp4" type="video/mp4"> |
| 34 | +</video> |
| 35 | +/// caption |
| 36 | +Video demonstrating the search bar for job filtering within a pipeline. |
| 37 | +/// |
| 38 | + |
| 39 | +## *️⃣ Glob Patterns for Passed Constraints |
| 40 | + |
| 41 | +Added in [PR 9418](https://github.com/concourse/concourse/pull/9418) by |
| 42 | +[@kcbimonte](https://github.com/kcbimonte). |
| 43 | + |
| 44 | +You can now specify a shell glob pattern for [passed |
| 45 | +constraints](../../../../docs/steps/get.md#passed) in your `get` steps. The |
| 46 | +pattern is evaluated by Go's [`path.Match()`](https://pkg.go.dev/path#Match). |
| 47 | + |
| 48 | +If you have a long list of passed constraints with jobs that have similar |
| 49 | +names, you can now replace them with a simple glob pattern. This is also useful |
| 50 | +for users doing complex pipeline templating where jobs may or may not be |
| 51 | +present depending on how your pipeline is rendered. |
| 52 | + |
| 53 | +Here's an example pipeline showcasing how to use this new feature. |
| 54 | + |
| 55 | +```yaml |
| 56 | +resources: |
| 57 | + - name: repo |
| 58 | + type: mock |
| 59 | + |
| 60 | +jobs: |
| 61 | + - name: unit-tests |
| 62 | + plan: |
| 63 | + - get: repo |
| 64 | + |
| 65 | + - name: web-tests |
| 66 | + plan: |
| 67 | + - get: repo |
| 68 | + |
| 69 | + - name: db-tests |
| 70 | + plan: |
| 71 | + - get: repo |
| 72 | + |
| 73 | + - name: integration-tests |
| 74 | + plan: |
| 75 | + - get: repo |
| 76 | + |
| 77 | + - name: api-tests |
| 78 | + plan: |
| 79 | + - get: repo |
| 80 | + |
| 81 | + - name: cve-scan |
| 82 | + plan: |
| 83 | + - get: repo |
| 84 | + passed: |
| 85 | + - "*-tests" #Glob pattern! |
| 86 | + |
| 87 | + - name: go-vuln-scan |
| 88 | + plan: |
| 89 | + - get: repo |
| 90 | + passed: |
| 91 | + - "*-tests" #Glob pattern! |
| 92 | + |
| 93 | + - name: deploy |
| 94 | + plan: |
| 95 | + - get: repo |
| 96 | + passed: |
| 97 | + - "*-scan" #Glob pattern! |
| 98 | +``` |
| 99 | +
|
| 100 | +The pipeline still renders as expected. |
| 101 | +
|
| 102 | + |
| 103 | +/// caption |
| 104 | +Web UI view of the previous pipeline configuration. |
| 105 | +/// |
| 106 | +
|
| 107 | +## 🏷️ Resource Metadata is Exposed via Local Vars |
| 108 | +
|
| 109 | +Added in [PR 9419](https://github.com/concourse/concourse/pull/9419) by |
| 110 | +[PentaHelix](https://github.com/PentaHelix). |
| 111 | +
|
| 112 | +This PR takes the metadata emitted by resources in `get` steps (the key-value |
| 113 | +pairs that appear in the table if you expand the `get` step) and adds them as |
| 114 | +local variables under the name of the get step `((.:<get-step-name>))`. The |
| 115 | +local var can then be used later in a job. This potentially eliminates some |
| 116 | +uses of the `load_var` step. |
| 117 | + |
| 118 | +Here's an example pipeline using this new feature. |
| 119 | + |
| 120 | +```yaml |
| 121 | +resources: |
| 122 | + - name: repo |
| 123 | + type: git |
| 124 | + source: |
| 125 | + uri: https://github.com/concourse/concourse.git |
| 126 | +
|
| 127 | +jobs: |
| 128 | + - name: print |
| 129 | + plan: |
| 130 | + - get: repo |
| 131 | + - task: print-metadata |
| 132 | + config: |
| 133 | + platform: linux |
| 134 | + image_resource: |
| 135 | + type: registry-image |
| 136 | + source: |
| 137 | + repository: chainguard/bash |
| 138 | + run: |
| 139 | + path: echo |
| 140 | + args: |
| 141 | + - "printing repo metadata from local vars:\n" |
| 142 | + - "commit: ((.:repo.commit))\n" |
| 143 | + - "branch: ((.:repo.branch))\n" |
| 144 | + - "url: ((.:repo.url))\n" |
| 145 | +``` |
| 146 | + |
| 147 | + |
| 148 | +/// caption |
| 149 | +Web UI showing build output of the previous pipeline. |
| 150 | +/// |
| 151 | + |
| 152 | +## 🚫 Disable Rerunning Previous Builds of a Job |
| 153 | + |
| 154 | +Added in [PR 9463](https://github.com/concourse/concourse/pull/9463) by |
| 155 | +[@ceco556](https://github.com/ceco556). |
| 156 | + |
| 157 | +This PR adds a `disable_reruns` to the [job config](../../../../docs/jobs.md). |
| 158 | +Similar to `disable_manual_trigger`, this setting will disable users ability to |
| 159 | +rerun builds of a job. This is useful when you job is designed to "fail |
| 160 | +forward", like a job that runs `terraform apply`. Rerunning an old build is |
| 161 | +usually not useful in this scenario, so this config option gives pipeline |
| 162 | +authors a way to ensure old builds of their jobs are not rerun. |
| 163 | + |
| 164 | +Here's how you use `disable_reruns` in your job config: |
| 165 | + |
| 166 | +```yaml |
| 167 | +resources: |
| 168 | + - name: repo |
| 169 | + type: mock |
| 170 | +
|
| 171 | +jobs: |
| 172 | + - name: no-reruns |
| 173 | + disable_reruns: true |
| 174 | + plan: |
| 175 | + - get: repo |
| 176 | +``` |
| 177 | + |
| 178 | +When users hover over the button in the web UI they'll see a tooltip that says: |
| 179 | +> re-run disabled in job config |
| 180 | + |
| 181 | + |
| 182 | +/// caption |
| 183 | +Image showing tooltip saying "re-run disabled in job config" |
| 184 | +/// |
| 185 | + |
| 186 | +Trying to rerun the job with `fly` results in an error. |
| 187 | + |
| 188 | +## 🌈 Charming Fly |
| 189 | + |
| 190 | +Added in [PR 9438](https://github.com/concourse/concourse/pull/9438) and |
| 191 | +[9439](https://github.com/concourse/concourse/pull/9439) by yours truly! |
| 192 | + |
| 193 | +I had previously used [Bubble Tea](https://github.com/charmbracelet/bubbletea) |
| 194 | +for some projects and loved how easy the library makes it to create a nice |
| 195 | +terminal/CLI experience. I decided to use Bubble Tea to tackle an annoyance |
| 196 | +I've had with the `fly intercept` command, which was when there are too many |
| 197 | +containers to pick from! My eyes would go cross trying to scan the list of |
| 198 | +containers for the one I want to exec into. |
| 199 | + |
| 200 | +The `fly intercept` command now displays the list of containers as an |
| 201 | +interactive list. You can manually navigate up and down the list, or fuzzy |
| 202 | +search the list by the step name or type. The list is also paginated, so the |
| 203 | +list won't disappear out of view, no matter the size of your terminal window. |
| 204 | + |
| 205 | +<video controls> |
| 206 | +<source src="/blog/2026/03/assets/fly-intercept.mp4" type="video/mp4"> |
| 207 | +</video> |
| 208 | +/// caption |
| 209 | +Video demonstrating `fly intercept`'s interactive list and search feature. |
| 210 | +/// |
| 211 | + |
| 212 | +After making this change for `fly intercept`, I re-worked all user prompts in |
| 213 | +`fly` to use Bubble Tea. This helped resolve a [long-standing |
| 214 | +issue](https://github.com/concourse/concourse/issues/2414) we had with fly's |
| 215 | +auto-login flow. Previously we weren't able to correctly close `stdin` when |
| 216 | +listening for a login token to be manually entered by the user. Bubble Tea does |
| 217 | +not have this issue, so now the `fly login` experience is significantly less janky! |
| 218 | + |
| 219 | +## 🎉 Enjoy the Release! |
| 220 | + |
| 221 | +Thank you to all the contributors that contributed the above features and |
| 222 | +reported or resolved various bugs as well. Five new contributors over a two |
| 223 | +month period is great! Please check out the [release |
| 224 | +notes](https://github.com/concourse/concourse/releases/tag/v8.1.0) for all the |
| 225 | +new features and bug fixes that were made. |
| 226 | + |
| 227 | +Thank you to all my individual and corporate |
| 228 | +[sponsors](https://github.com/sponsors/taylorsilva) as well! I'm happy to add |
| 229 | +[Pix4D](https://www.pix4d.com/) and [RamNode](https://ramnode.com/?ref=A792924) |
| 230 | +as new sponsors so far this year. Between them and my corporate clients, |
| 231 | +development of Concourse won't be stopping anytime soon. If your company is |
| 232 | +interested in supporting Concourse's development or looking for commercial |
| 233 | +support, please [reach out](https://pixelair.io/contact/), I'm always happy to |
| 234 | +chat about Concourse. |
0 commit comments