v8 Breaking Changes Discussion #9184
Replies: 5 comments 8 replies
-
|
Looks good, thank you for your work on this. I would want to confirm that the long database migrations don't cause concourse to fail health checks and go into a restart loop on k8s |
Beta Was this translation helpful? Give feedback.
-
|
Added another "Actually Breaking" item:
This field has been superseded by |
Beta Was this translation helpful? Give feedback.
-
|
From #9026 (comment) it was found that The tests that ensure this still works already called them "old-style templated" values. I'm going to assume no one is using this so I think it's fine to remove it in this 8.x release. |
Beta Was this translation helpful? Give feedback.
-
|
The valid identifiers RFC was opened and implemented 5 years ago. The RFC initially proposed a one year transition time. Users have had 5 years to transition instead. Because we've only warned instead of errored, users have still been bitten by creating things with invalid identifiers:
From this discussion here: #8725 (comment) |
Beta Was this translation helpful? Give feedback.
-
|
v8 is coming out soon and all items have been resolved. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey folks, there are some changes that are motivating me to make the next release a major bump to v8. None of them are new features, they're more along the lines of updates to existing functionality, refactors, and just paying down tech debt.
Please share your thoughts below about the changes proposed here. Feel free to suggest other breaking changes as well that you think may improve things for users.
Behavioural Changes
put.inputstodetect. Current default isallallresults in all artifacts from your build being mounted into yourputstep. This is usually not what you want. You usually only need a few artifacts from your build and they're usually declared in theput.params, which is howdetectfinds the artifacts to mount into theputstep. I see this change only being an issue for resources who'sput/outsteps expect artifacts to have a certain name and don't let users of their resource declare anyput.params. None of the built-in resource-types do this.containerdworker/runtimepackage. The Guardian runtime only just got support for cgroups v2 working this year while containerd has had it for years. There have been a bunch of issues where people say they can't start Concourse and the solution is "set the runtime to containerd". The OSS cluster has been using containerd for years now without issue. The runtime feels VERY stable at this point and I feel confident setting it as the default runtime for Concourse moving forward.acrossstep by defaultI'll add to this list if I think of more behavioural stuff to change, or if folks suggest any.
Large Database Migrations
Large database migrations have been the reason for the last two majors of Concourse (v6 and v7). These are also the main motivation for doing a major bump.
Actually Breaking
We're migrating the resource-types and theThis landed in v7.14concourse/concourseimages to use Chainguard'swolfi-base. Functionality-wise this won't break anything in your pipelines. If users had some kind of tests or scanners that depended on stuff in the previous Paketo-based images then things might break in those systems external to Concourse. I don't expect this to be an issue though.wolfi-baseseems like a good alternative and should even result in smaller image sizes.gopkg.in/yaml.v3) is now unmaintained. This might be a good time to move to a new library and figure out what breaks while doing it and how to ease the transition. That said, the library itself has no dependencies (it's go.mod has a dependency that's used for testing) and currently has no CVE's. It hasn't had a CVE for quite a few years now too. Regardless, we should explore alternatives.job.build_logs_to_retain. Users have been told to usejob.build_logs_retentionfor a while now, so I think we can remove this field now.fly's old-style templated values that used{{ }}instead of the current(( ))style. The old-style isn't even documented. It was only possible to use that syntax if you were setting a pipeline with `fly.{{old_style}}var resolution #9194Return an error instead of a warning when an invalid identifier is detected, as proposed by the RFC. Users have had 5 years to transition their identifiers to meet these requirements.This has proven too hard to enforce, mostly due to secrets. Kicking the can down the road!{}- an empty version has no semantic meaning in Concourse and results in a blank rectangle in the web UI. This was never explicitly invalid in the past, but is moving forward. Resources can emit empty versions #9279Beta Was this translation helpful? Give feedback.
All reactions