|
| 1 | +--- |
| 2 | +title: v8 - New Year, New Concourse Release |
| 3 | +date: 2026-01-15 |
| 4 | +authors: |
| 5 | + - tsilva |
| 6 | +--- |
| 7 | + |
| 8 | +[v8.0.0](https://github.com/concourse/concourse/releases/tag/v8.0.0) of |
| 9 | +Concourse is out! I'm going to explain why a new major was needed and flag |
| 10 | +anything that pipeline writers and Concourse operators should keep an eye out |
| 11 | +for. |
| 12 | + |
| 13 | +<!-- more --> |
| 14 | + |
| 15 | +## β¨ New Website |
| 16 | + |
| 17 | +First, huge thanks to [kcbimonte](https://github.com/kcbimonte) for doing the |
| 18 | +tedious work of migrating the website off of [booklit](https://booklit.page/) |
| 19 | +and onto MkDocs. We will eventually move it all over to |
| 20 | +[Zensical](https://zensical.org/) once they have all the features we need. |
| 21 | + |
| 22 | +My hope with the new site is that it's easier for users to contribute to the |
| 23 | +docs now. Booklit had its pros, particularly with how internal links were |
| 24 | +handled, but it was definitely a bit of a challenge to extend and change. It |
| 25 | +was also quite a hurdle for new users to understand. |
| 26 | + |
| 27 | +Now, onto the new release! |
| 28 | + |
| 29 | +## Why a New Major Version? |
| 30 | + |
| 31 | +As a project, Concourse avoids making actually breaking changes. For example, a |
| 32 | +pipeline from v4 of Concourse should still continue to work on v8 of Concourse. |
| 33 | +That said, we have made major version bumps over the years, but they're usually |
| 34 | +not for "breaking changes" in the traditional sense. |
| 35 | + |
| 36 | +With Concourse, major version bumps have been motivated by large/long-running |
| 37 | +database migrations. Those were the reasons behind the v5, v6, and v7 major |
| 38 | +bumps. That was also the initial reason for this new major, kicked off by [PR #9165](https://github.com/concourse/concourse/pull/9165). |
| 39 | + |
| 40 | +[#9165](https://github.com/concourse/concourse/pull/9165) changes how Concourse |
| 41 | +stores resource versions, using SHA256 instead of MD5 to create and store |
| 42 | +digests. This helps operators running Concourse in secure environments, where |
| 43 | +algorithms like MD5 are not allowed. |
| 44 | + |
| 45 | +The migration from this PR alone will take a few minutes to run. I recommend |
| 46 | +scaling down your web nodes to one node and then upgrading that single node. |
| 47 | +I've tested running this migration on |
| 48 | +[ci.concourse-ci.org](https://ci.concourse-ci.org) and it took ~5 minutes on a |
| 49 | +Postgresql instance with 4 vCPU and 5GB of RAM. We have `4,358,045` records in |
| 50 | +our `resource_config_versions` table, which is the main table modified in |
| 51 | +the migration. You can run the following query against your Concourse database |
| 52 | +to check how many records your table has: |
| 53 | + |
| 54 | +```sql |
| 55 | +SELECT COUNT(*) FROM resource_config_versions; |
| 56 | +``` |
| 57 | + |
| 58 | +This is very much a "behind the scenes" change, as users shouldn't see anything |
| 59 | +different happening with regards to how their pipelines behave. This change |
| 60 | +future-proofs Concourse and enables Concourse to continue running in secure |
| 61 | +environments around the world. |
| 62 | + |
| 63 | +Not wanting to let a good major go to waste, I decided to also tackle a lot of |
| 64 | +outstanding chore issues to improve and refresh Concourse a bit. Let's go over |
| 65 | +all the big changes that landed in v8. Full release notes can be found on |
| 66 | +Github: |
| 67 | +[https://github.com/concourse/concourse/releases/tag/v8.0.0](https://github.com/concourse/concourse/releases/tag/v8.0.0) |
| 68 | + |
| 69 | +## π οΈ Changing Defaults |
| 70 | + |
| 71 | + |
| 72 | +### π¦ Container Runtime |
| 73 | + |
| 74 | +We've changed the default container runtime to `containerd`! Guardian is still |
| 75 | +a supported runtime but is no longer the default. The main motivation for this |
| 76 | +change was the issues we'd see from users trying to run Guardian on newer |
| 77 | +kernel versions, specifically systems only using cgroups v2. `containerd` has |
| 78 | +proven very stable for us and many users in the community. |
| 79 | + |
| 80 | +### π Secret Redaction |
| 81 | + |
| 82 | +Secret redaction is now always enabled and its corresponding feature flag has |
| 83 | +no effect. This feature was initially feature flagged to monitor for any |
| 84 | +performance issues. We have seen none over the many years that this feature has |
| 85 | +been available. We consider this feature safe to use in all production environments. |
| 86 | + |
| 87 | +### π Instance Pipelines and `across` Step |
| 88 | + |
| 89 | +Instance pipelines and `across` steps are now always enabled, and their feature |
| 90 | +flags have no effect. Their "experimental" labels and warnings have also been |
| 91 | +removed. Both features have been available for years now and I see no reason to |
| 92 | +change their current behaviour. Users can consider these features stable. |
| 93 | + |
| 94 | +### β‘οΈ Inputs for `put` Steps |
| 95 | + |
| 96 | +The default value for `put.inputs` is changed from `all` to `detect`. Streaming |
| 97 | +all volumes into a `put` step has always been overkill and results in long |
| 98 | +initialization times for `put` steps. `detect` works by reviewing all values in |
| 99 | +`put.params` and only mounting volumes with matching names. |
| 100 | + |
| 101 | +This is a breaking change if you have a custom resource type that has |
| 102 | +hard-coded the expected names of volumes into your scripts. I haven't seen any |
| 103 | +resources like this personally, but if they do exist, simply set |
| 104 | +[`put.inputs`](../../../../docs/steps/put.md) to `all` or an array of the |
| 105 | +volumes to mount in your put step. |
| 106 | + |
| 107 | +## βοΈ New Features and Enhancements |
| 108 | + |
| 109 | +It wouldn't be a major release without a couple new features and enhancements. |
| 110 | + |
| 111 | +### π’ Broadcast Message System |
| 112 | + |
| 113 | +Operators can now broadcast messages to their Concourse cluster and it will |
| 114 | +appear as a banner in the Concourse web UI. Thank you to |
| 115 | +[ceco556](https://github.com/ceco556) for finishing the implementation. |
| 116 | + |
| 117 | +There are three `fly` commands used to manage this system: |
| 118 | + |
| 119 | +* `fly set-wall` |
| 120 | + * Can only be used by users of the `main` team |
| 121 | +* `fly get-wall` |
| 122 | + * Can be used by all users |
| 123 | +* `fly clear-wall` |
| 124 | + * Can only be used by users of the `main` team |
| 125 | + |
| 126 | +!!! tip "Fun Fact!" |
| 127 | + "Wall" is a reference to the [Unix `wall`](https://en.wikipedia.org/wiki/Wall_(Unix)) CLI. |
| 128 | + |
| 129 | +When setting the message with `fly set-wall`, you can include emojis and links. |
| 130 | +Links will be parsed and turned into HTML links that users can click. We made |
| 131 | +sure that no XSS vulnerabilities were introduced. |
| 132 | + |
| 133 | + |
| 134 | +/// caption |
| 135 | +Concourse dashboard showing a broadcast message |
| 136 | +/// |
| 137 | + |
| 138 | +### π·οΈ Build URLs for Step Metadata |
| 139 | + |
| 140 | +There are two new handy env vars made available to `get` and `put` steps: |
| 141 | + |
| 142 | +* `BUILD_URL` - Same URL as what you see in the web UI that includes team, pipeline, and job name |
| 143 | +* `BUILD_URL_SHORT` - Shorter URL that uses the build's internal ID instead of the pipeline scoped ID |
| 144 | + |
| 145 | +See [the docs](../../../../docs/resource-types/implementing.md#metadata) for more details. |
| 146 | + |
| 147 | +### π₯ Team Name in `set_pipeline` Steps |
| 148 | + |
| 149 | +Users of the `main` team have been able to set pipelines for other teams for |
| 150 | +quite a while now. In the web UI though, it wasn't obvious that a pipeline was |
| 151 | +being set for another team. The team name is now displayed when setting a |
| 152 | +pipeline for another team. |
| 153 | + |
| 154 | + |
| 155 | + |
| 156 | +/// caption |
| 157 | +Concourse build logs show `set_pipeline` steps with the team name |
| 158 | +/// |
| 159 | + |
| 160 | +### π₯ Highlighted Group Tabs |
| 161 | + |
| 162 | +To make finding failed builds even easier, especially on large pipelines with |
| 163 | +lots of jobs and groups, group tabs will be highlighted red/orange. |
| 164 | + |
| 165 | + |
| 166 | +/// caption |
| 167 | +Concourse group tabs highlighted red |
| 168 | +/// |
| 169 | + |
| 170 | +Thank you to [analytically](https://github.com/analytically) for these last |
| 171 | +three enhancements! He's made many other useful contributions this |
| 172 | +release that you can find in the release notes. |
| 173 | + |
| 174 | +### βΆοΈ Tasks Can Use `ENTRYPOINT`/`CMD` |
| 175 | + |
| 176 | +If you don't define a `run.path` in your Task's config, Concourse will now |
| 177 | +fall back to running the `ENTRYPOINT`/`CMD` defined in the container image. If |
| 178 | +you define any `run.args` in your Task's config, those will be appended to the |
| 179 | +`ENTRYPOINT`/`CMD` from the container. This is the same behaviour you get with |
| 180 | +`[docker/podman] run` today. |
| 181 | + |
| 182 | +To be clear, Concourse still uses its custom rootfs format behind-the-scenes. |
| 183 | +I assume the majority of users use the |
| 184 | +[registry-image](https://github.com/concourse/registry-image-resource) to pull |
| 185 | +in their images in rootfs format and can therefore leverage this feature. If |
| 186 | +you have some tooling that creates its own rootfs formatted images, you can |
| 187 | +review [this PR](https://github.com/concourse/registry-image-resource/pull/394) |
| 188 | +for how to pass that info along to Concourse. |
| 189 | + |
| 190 | +## 2026 and Support |
| 191 | + |
| 192 | +Thank you to everyone who contributed to this new release. There are already |
| 193 | +more PRs open that will land in v8.1.0 in a few months. Moving forward, I'm |
| 194 | +planning to make new minor releases approximately every quarter. Patches will |
| 195 | +be released for any critical bugs and security fixes as needed. My main focus |
| 196 | +will be on continuing to make Concourse more robust and stable. |
| 197 | + |
| 198 | +I am still looking for more commercial users of Concourse that are interested |
| 199 | +in supporting the project. If your company uses Concourse and is interested in |
| 200 | +seeing the continued development and maintenance of the project, please [reach |
| 201 | +out to me](https://pixelair.io/contact/). You get direct access to me to |
| 202 | +address any Concourse issues you have, as well as training on Concourse |
| 203 | +best practices. |
| 204 | + |
| 205 | +Thank you to all the individuals and the organization |
| 206 | +([SAPπ](https://github.com/SAP)) that support me over on |
| 207 | +[GitHub](https://github.com/sponsors/taylorsilva) as well. They, along with my |
| 208 | +commercial customers, have made this first year of Concourse development |
| 209 | +possible! βοΈ |
0 commit comments