Release Date: Feb 28th, 2024
gc_interval
in the spec with gc.interval
, if applicable.cf
resource is no longer included in the Concourse binary, as the cf-resource repository on GitHub has moved to the cloudfoundry-community organization and is no longer maintained by the Concourse team.Added --aws-ssm-shared-path
to configure shared secret paths for AWS SSM cred manager similarly to the one for Vault.
Make cc.xml endpoint public, and only list public pipelines
Emitting "latest_completed_build_status" gauge from prometheus
concourse_builds_latest_completed_build_status
metric
Update base image of all built-in resource types:
Support "raw" encoding for volume streaming:
raw
to CONCOURSE_STREAMING_ARTIFACTS_COMPRESSION
. The new method costs more worker network bandwidth but saves CPU time for many workers, and dramatically speeds up volume streaming. Larger volumes have a more dramatic streaming speed improvement.Add a drift-based number of goroutines to component scheduler:
--num-goroutine-threshold
to specify a goroutine count threshold. If set, when an ATC reaches the goroutine count threshold, the ATC is less likely to run workloads than other ATCs with fewer goroutines. This option helps to evenly distribute workloads across ATCs.Hermetic for task container:
Hermetic: bool
to task step configuration. When set to true, the task container runs without external network access. Only the containerd
worker runtime supports this feature. When setting a pipeline that contains a task step which sets hermetic: true
, you encounter a reminder as a warning.Optimized the database notifications, reducing TPS/QPS in the database side. Add a new ATC option --db-notification-bus-queue-size
, which by default is set to 10000. If the UI is slow to load logs for running builds, consider increasing the value of this option.
Add a maximum streaming volume size:
CONCOURSE_STREAMING_SIZE_LIMITATION
, which restricts the maximum size (in MB) of volumes that can be streamed between workers. This prevents a rogue pipeline from affecting multiple workers.Fix Cloud Foundry connector regression bug introduced in v7.9.1
Fix a fly builds
bug that shows pipeline/job
as not found when both --team
and --pipeline/--job
are provided
Bump ifrit to fix ATC graceful termination issue.
Unhide the --instance-var
option in fly set-pipeline
Bundled resource types and versions
Release Date: Feb 28th, 2023
Fix DB out of range error due to build numbers exceed the integer limit
postgresql.auth
in values.yml.Fixed a bug of leaking resource config scope ids
When global-resources is enabled, resource_config_scopes
tables leaked IDs. A side effect of the bug is that unnecessary insert
will be performed (see #8618 for details).
When global-resources is enabled, old resources were not affected. This fix ensures old resources to switch to global scopes.
With this change, when switching global-resources from OFF to ON, all resource histories will be lost. It is equivalent to changing source
of a resource and causing version history to be lost. Depending on a resource's check
behavior, versions may be regenerated.
If your deployment has turned ON global-resources before the upgrade, or you choose to stay with global-resources OFF, this "breaking" change won't impact your deployment.
If you upgrade to this version then turn ON global-resources, as described, version histories will lost. You can turn OFF global-resources again and old version histories should come back.
If your cluster has turned ON global-resources, and you plan to turn it OFF, no matter what version it is, after turning OFF global-resources, each resource will have an unique version history, thus shared version history will be lost. The behaviour comes with global-resources and it has nothing to do with this change.
Prefer overlay over btrfs in baggageclaim when using driver: detect
btrfs -> overlay -> naive
overlay -> btrfs -> naive
Allow team members to archive pipelines
member
role on a team can now archive pipelines by default. The "archive pipeline" action was previously assigned to the owner
role. If you've configured your own RBAC this change will not effect you.Do not cache secrets indefinitely when using Vault KV v2
Bump dependencies for worker runtime to support Ubuntu Jammy Jellyfish
guardian
runtime is still under development to fully support Ubuntu Jammy. In fact, it does not work on any linux distribution with cgroups v2
enabled.
containerd
runtime, this change won't impact.guardian
runtime, we strongly recommend to use Ubuntu Jammy stemcell on the Broadcom Support portal. Otherwise, a linux distribution with cgroups v1
and kernel version >= 5.15
has to be used to allow worker node to start up.Remove "check build started" and "check build finished" metrics
Automatically pause pipelines
CONCOURSE_PAUSE_PIPELINES_AFTER
. A value of zero (the default) disables this component. On first run it will retroactively pause pipelines that already fall out of the given day range.Add default get/put/task timeout
get
, put
and task
steps.Add optional flag --no-input-container-placement-strategy
for configuring a container placement strategy used for only get
and nested check
steps (e.g. checks triggered by a build for making sure input versions). Configuring this strategy will prevent get and nested check step to be placed to a busy worker. Default to random
.
Add optional flag --check-container-placement-strategy
for configuring a container placement startegy used for resource/resource type check
that triggered by lidar scanner. Default to random
.
Expose ATC_EXTERNAL_URL
to task env.
Add OIDC get user info flag
CONCOURSE_OIDC_DISABLE_GET_USER_INFO
flag. OIDC connector will now fetch additional claims from OpenID UserInfo endpoint. This should fix the problem of configuring Concourse team auth by OIDC user groups due to groups claims missing in some identity providers' auth response.Add Vault srv lookup flag
--disable-srv-lookup
flag to Vault configure. If your current Vault URL contains a port number, this change makes no impact. If your Vault URL dose not contain port number, by default SRV lookup is opt-in for backward compatibility. In this case, one can use the flag to disable the feature to avoid unnecessary requests from Vault client.Enhance Vault API client to auto retry upon rate limit
vault write sys/quotas/config enable_rate_limit_response_headers=true
, so that the response header Retry-After
may guide the Vault API client to retry after a reasonable duration.load_var
step supported var interpolation for file
and format
Support a way to skip implied get after put
no_get
option to put
step to skip implied get
. For example: - put: email
no_get: true
params:
...
Add seccomp profile, hooks dir override for worker containerd cli option
seccomp-profile
to override the seccomp filteroci-hooks-dir
to pass on a oci hooks dir, for i.e. nvidia gpu mappingAdd dry-run mode to fly set-pipeline
command
Prefer FLY_HOME
over HOME
(if set) as the directory for storing .flyrc
Add --team
to following Fly command
fly -t dev check-resource -r some-pipeline/branch:master/myresource --team test
fly -t dev check-resource-type -r some-pipeline/branch:master/myresource --team test
fly -t dev resources -p some-pipeline --team test
fly -t dev resource-versions -r some-pipeline/branch:master/myresource --team test
fly -t dev archive-pipeline --pipeline some-pipeline --team test
fly -t dev watch --job some-pipeline/tests --build 52 --team test
Add fly clear-versions
command
global-resources
is enabled, it can possibly delete version histories of other resources/resource-types in other pipelines so there is a warning message that will show any resources or resource types that are affected.Add prometheus emitter for jobs scheduled duration.
Add audit information for job & pipeline pauses
Optimize build log collection
Avoid peridoic check build to use db
Worker: baggageclaim emits spans
Allow task/set_pipeline name to include across
step var
task
and set_pipeline
steps wrapped by the across
step can now have their identifier/step name as a var ((.:some-var))
and won't receive a warning about the name being deprecatedAWS SecretsManager can be used from var_sources
Garbage collect task caches from paused pipelines
Optimize ATC performance by avoid unneccessary go-routines of no-op check notifiers
Optimize limit active tasks strategy logic
Add no-input-strategy for get/check.
Optimize worker selection when global-resources is enabled
Optimize work load distribution across ATCs by enhancing locks logic.
Force checks on nested resource types when manually triggered build
Disable connection tracker by default and provide an option to enable
/debug/connections
at ATC start time. It can be enabled at runtime by /debug/connections/on
or be disabled by /debug/connections/off
again.Add a drift to component interval
Optimized performance of the login authentication process, which will benefit large deployments that has a lot teams and a lot of UI/fly accesses.
Optimized performance of check-build-events collector.
Fixed a bug where invalidated worker resource caches are not GC-ed.
Propagate groups between subpages of a pipeline
Optimize pipeline svg rendering
Make Build page spacing consistent and color theme updated for accessibility
Indicate if a pipeline is archived in pipeline view
Add build event for volume streaming
Build logs will now contain new events when a volume is being streamed to a worker
Fix default username prompt for local logins
Add tooltip to username if overflow
Fix step header key value UI in build page
Fix a bug where sub step of across
step showing incorrect state.
Sanitize prometheus metric labels
Validate if a Pipeline contains a cycle
Make build reaper more robust
on_error should not run the hook when err is retriable
GC builds based on chronological order
Run task caches collector when ATC starts
Do not send check build events to syslog drainer
Fix acrossStep handling for more than 3 vars
Fix a rendering issue with nested across steps.
Render build page correctly for legacy aggregate step
Show var source error on resource and build page
Delete btrfs volume if it exists when using the overlay driver
Ignore cached input from volume-locality's consideration
EnableCacheStreamedVolume
is enabled and container placement strategy is volume-locality
, as get
step may not fetch a resource if the resource is found in cache, following step containers may all be placed to the worker where cached resource is found. That worker might be overloaded when there are other workers available. This issue is now fixed.Only delete btrfs mounts if *.img
exists
Handling huge volumes transfer in P2P streaming
Avoid duplicating parallel volume streams
waiting-for-streamed-volume
/waiting for volume <name> to be streamed by another step
event is included in build step logs where this behavior occurs.Fix a bug when a worker is pruned, volumes streamed from it got destroyed immediately
EnableCacheStreamedVolumes
, worker cache volumes are kept around whilst they are still in use.Inherite env proxy configure when tls enabled
Bundled resource types and versions
Release Date: July 29th, 2021
If you have a very large deployment you'll see an increase in DB and CPU usage with the 7.4.0 series. Also note that the experimental load_var
step has a memory leak issue in 7.4.0.
If you are using syslog drainer feature, expect increasing amount of logs from check builds. Since resource check now runs as build, every one of them will generate build events. Depends on the resource count and check interval, syslog draining will produce log files that might take large amount of disk space in the external server.
clear-resource-cache
, you could use this following the next format fly -t ci clear-resource-cache -r pipeline/resource [--version some:version]
CONCOURSE_OPA_RESULT_ALLOWED_KEY
: specifies a key of allow flag in OPA returned result
CONCOURSE_OPA_RESULT_SHOULD_BLOCK_KEY
: specifies a key of should-block flag in OPA returned result
CONCOURSE_OPA_RESULT_MESSAGES_KEY
: specifies a key of messages in OPA returned result
For example, if OPA returns the following result:
{
"result": {
"allow": true,
"block": true,
"reasons": ["foo", "bar"]
}
}
then CONCOURSE_OPA_RESULT_ALLOWED_KEY
should be set to result.allow
; CONCOURSE_OPA_RESULT_SHOULD_BLOCK_KEY
should be result.block
, and CONCOURSE_OPA_RESULT_MESSAGES_KEY
should be result.reasons
.
allow
and block
in OPA result should be boolean type, because it is easy to convert other types to boolean in an OPA policy.
concourse_steps_wait_duration
metricsacross
step now supports dynamic interpolation of values. For instance, this can be combined with the set_pipeline
step and instanced pipelines to set a dynamic list of pipelines: - load_var: branches
file: branches/branches.json
- across:
- var: branch
values: ((.:branches))
set_pipeline: my-app
file: ci/pipelines/my-app.yml
instance_vars: {branch: ((.:branch))}
Build page shows name of who triggered the build in header line of build page
Add page to view all builds/resource versions downstream/upstream from a root resource version
--enable-resource-causality
or $CONCOURSE_ENABLE_RESOURCE_CAUSALITY=true
to enable the web UI and API endpoint.
git version: 123
is a direct input to integrate #4 & #5
, there is also an indirect link from git version: 123
→ test #19
→ ... → intermediate-3 version:123
→ integrate #6 & #6.1
Add ability to comment on a build
You can now leave comments on builds. For instance, this can be used to give context to your coworkers about why a particular build failed:
If a build has a comment, it is displayed with a small marker to help you quickly find builds of interest. Hovering over the build displays a portion of the comment:
Use browser cache API for dashboard caching
localStorage
limitsEnable emitting dogstatsd metrics over uds
error
event when one of the sub-steps errorsversion: every
succeeds and is rerunCONCOURSE_MAX_CHECKS_PER_SECOND
is unset, Concourse will try to distribute checks evenly over the course of the check interval to reduce the concurrent load on external systems.set_pipeline
unpauses previously archived pipelines
set_pipeline
step, it will be unpaused--metrics-attribute
now propagates to the prometheus emitter correctly./etc/hosts
and /etc/hostname
/dev/fuse
to privileged containers/etc/passwd
file from runningconcourse worker
restarts gracefully
concourse worker
process gracefully restarting (e.g. via monit restart
)
/tmp
and never delete them. They are now made under the --work-dir
set for the worker and are cleaned up when the container is deleted. You can delete any lingering network files under your workers /tmp
directory after upgrading.Bundled resource types and versions
Release Date: June 14th, 2021
Release Date: May 27th, 2021
Release Date: May 25th, 2021
--tracing-service-name
(CONCOURSE_TRACING_SERVICE_NAME
) rather than --tracing-honeycomb-service-name
(CONCOURSE_TRACING_HONEYCOMB_SERVICE_NAME
)get
can be found on some workers, then get
step will do nothing. This will reduce times of Concourse connecting to external systems, such as git, docker hub, and so on.CONCOURSE_ENABLE_CACHE_STREAMED_VOLUMES
flag.event_id
into syslog-drainer
entries, to get the correct order of "drained" build logs.syslog-drainer
to include more info for "drained" build logs.container_limits
for reusable tasks in pipelines. Any limits set in the pipeline will override the limits set within the reusable task file.fly -t dev oip -g groupName -p key1:var1 -p key2:var2
CONCOURSE_CONTENT_SECURITY_POLICY
no-store, private
. The value of the header is overwritten for some paths (i.e. web assets)pipeline_build_events_*
table in DB when deleting a team. Pipelines belong to the deleted team will be destroyed by DELETE CASCADE
but associated events table was not cleaned up properly.autocomplete="off"
to the top-level form
and username
tags.volume cannot be destroyed as children are present
in web and update or delete on table "volumes" violates foreign key constraint "volumes_parent_id_fkey"
in DB./sbin
) when a user/process was root. Only effects unprivileged containers.containerd
supports running images with non-existent UIDs such as distroless images.Release Date: April 13th, 2021
task
steps when using the limit-active-tasks
placement strategy), the step would simply error the buildconcourse_tasks_waiting
was removed and replaced with concourse_steps_waiting{type="task"}
--password-connector
($CONCOURSE_PASSWORD_CONNECTOR
) to ldap
, you can authenticate to Concourse with fly login -u ... -p ...
using your LDAP credentials
--username-prompt
($CONCOURSE_USERNAME_PROMPT
) to change the help text when logging in via the UIBuildsStarted
, BuildsRunning
, BuildStarted
, BuildFinsished
to exclude check builds.CheckBuildsStarted
, CheckBuildsRunning
, CheckBuildStarted
, CheckBuildFinsished
put.inputs
detect
to ignore prefixed .
and ..
input: detect
now can handle paths prefixed by .
and ..
.migrations_history
table500 error
. This was caused by a foreign key constraint within the build_image_resource_caches
table referencing a job in the jobs
table.CONCOURSE_CONTAINERD_REQUEST_TIMEOUT
is set to 0 that means there is no timeoutcontainerd
runtime where gracefully stopping a container might have failed with an unhandled error. Now it gracefully shuts down.containerd
runtime resulting in lost output for quickly printing-then-exiting processesRelease Date: March 11th, 2021
fly set-pipeline
now prints warning message when the pipeline has already been configured through a set_pipeline
step.fly set-pipeline -v ... -y ...
were interpolated into local vars ((.:var))
check_every: never
(#6603) @taylorsilva :link:
check_every: never
who's type was defined in resource_types
in their pipeline, would fail to check because the parent resource type would never be checkedCONCOURSE_CONTAINERD_EXTERNAL_IP
)CONCOURSE_CONTAINERD_MTU
)Release Date: February 10th, 2021
unique_version_history
can no longer be configured on resource types. No one seemed to be using it, and it made internal architecture unnecessarily complicated. The need for it should go away entirely as we make progress on the v10 roadmap.check
operations, which collect and save versions for pipeline resources, are now run as builds.
fly check-resource
and fly check-resource-type
now stream the checking output to the user, just like fly watch
and fly trigger-job
.id
column of the builds
table and all tables referencing build_id
to a bigint
. This is unfortunately a slow migration, so please anticipate downtime proportional to the amount of builds in your database.
deadlock detected
, shut down the other web
nodes first.aggregate
step
aggregate
step as planned. It is succeeded by the in_parallel
step.fly intercept
to sh
when bash
is missing
fly intercept
will first try to use bash
for an interactive shell, but if the container returns an error indicating bash
is not available, fly
will fallback to the more common (but more limited) sh
bash
as the path argument to the fly intercept
command--team
flag to fly order-pipelines
command--team
option to fly get-pipeline
command--team
option to fly expose-pipeline
commandfly set-pipeline
prints pipeline name and instance varsPerform image fetching using check/get sub-steps (#6153) @vito :link:
check
and get
steps, and can be inspected in the UISpeed up database queries by adding a job_id
column to build image resource caches table and adding an index for ordering builds of a job
Allow globs in groups
groups
in a pipeline can now match jobs based on globs e.g.: groups:
- name: deploy
jobs:
- deploy-*
Implement support for Vault KV v2 backends
add support for exporting traces via OTLP
Add index to speed up build deletion, fix up a few issues with checks as builds
Ensure pipelines contain at least one job
Experimental support for P2P Volume Streaming
--enable-p2p-volume-streaming
or env var $CONCOURSE_ENABLE_P2P_VOLUME_STREAMING
on the web nodes. When this feature is enabled, --baggageclaim-bind-ip
on workers should be set to 0.0.0.0
so that baggage claim can be accessed from another workers.--baggageclaim-p2p-interface-name-pattern
and --baggageclaim-p2p-interface-family
to the worker
command.Log the worker name when creating a container fails
Support chained container placement strategies.
CONCOURSE_CONTAINER_PLACEMENT_STRATEGY=volume-locality,fewest-build-containers
Add new container placement strategies: limit-max-containers
and limit-max-volumes
--max-active-containers-per-worker
, --max-active-volumes-per-worker
[limit-max-containers, limit-max-volumes, volume-locality, fewest-build-containers]
Workers are not guaranteed to never exceed the maximum specified limits.
go-concourse surfaces error messages on saving pipelines
fly set-pipeline
would simply print forbidden
when the underlying API call returned a 403 status, now the body of the response will be printed. In particular, errors originating from OPA policy check rejections will be printed.Don't enforce timeouts during image fetching
Skip checking put-only resources
--enable-skip-checking-not-in-use-resources
flag has been removed as it is no longer needed.Give worker registration its own database connection pool
Allow underscore in identifiers
Support for mTLS
Allow configuring login and query timeouts for Vault
CONCOURSE_VAULT_LOGIN_TIMEOUT
and CONCOURSE_VAULT_QUERY_TIMEOUT
respectively60s
Expose username of who manually triggered build to build metadata.
fly builds
has a new column created by
that shows a user ID if a build is triggered manually.
A new build metadata BUILD_CREATED_BY
may be exposed to resource. It is not exposed by default; you need to turn it by add expose_build_created_by
when defining a resource:
resources:
- name: some-resource
type: some-type
expose_build_created_by: true
source:
...
As different authentication connectors populate different claims, a new concourse web
CLI option --concourse-display-user-id-per-connector
is added that allow cluster administrator to configure which claims field should be consider as unique user id
<connector>:<fieldname>
connector
is one of: ldap
, github
, cf
, bitbucket-cloud
, gitlab
, microsoft
, oauth
, oidc
or saml
fieldname
is one of:
user_id
mapping to claims' user id fieldname
mapping to claims' username fieldusername
mapping to claims' preferred username fieldemail
mapping to claims' email fieldAllow disabling resource checking for individual resources
check_every: never
in a resource's definitiondb: lidar checks put-only resources with failed checks
Add a flag to migrate to the latest db version
--migrate-to-latest-version
flag to the migrate
command. This flag has concourse perform database migrations to the latest database version.concourse web
command will still automatically migrate the databasemetrics: make tasks_wait_duration
histogram record up to 1h
Removes unnecessary indexes from build events tables
Allow @
in vars path
((var:"[email protected]".field))
set_pipeline
step
set_pipeline
step now respects the same policy check as fly set-pipeline
release
that differ by the version
line (1.0.x
, 1.1.x
, 2.0.x
, etc.)--enable-pipeline-instances
($CONCOURSE_ENABLE_PIPELINE_INSTANCES
)set_pipeline
step prints 'no changes to apply'
set_pipeline
now prints "no changes to apply" and thereby behaves similarly to fly set-pipeline
when a pipeline config contains no changes.team:"main" status:paused
)containerd
runtime is now GA and is considered ready for production use
containerd
in coming releases, but we encourage using the containerd
runtime ASAPcontainerd
runtime, set --runtime
($CONCOURSE_RUNTIME
) to containerd
on the concourse worker
command--garden-*
($CONCOURSE_GARDEN_*
) flags to their containerd
counterparts:
--garden-request-timeout
($CONCOURSE_GARDEN_REQUEST_TIMEOUT
) → --containerd-request-timeout
($CONCOURSE_CONTAINERD_REQUEST_TIMEOUT
)--garden-dns-proxy-enable
($CONCOURSE_GARDEN_DNS_PROXY_ENABLE
) → --containerd-dns-proxy-enable
($CONCOURSE_CONTAINERD_DNS_PROXY_ENABLE
)--garden-network-pool
($CONCOURSE_GARDEN_NETWORK_POOL
) → --containerd-network-pool
($CONCOURSE_CONTAINERD_NETWORK_POOL
)--garden-max-containers
($CONCOURSE_GARDEN_MAX_CONTAINERS
) → --containerd-max-containers
($CONCOURSE_CONTAINERD_MAX_CONTAINERS
)$CONCOURSE_GARDEN_DENY_NETWORKS
→ --containerd-restricted-network
($CONCOURSE_CONTAINERD_RESTRICTED_NETWORK
)$CONCOURSE_GARDEN_DNS_SERVER
→ --containerd-dns-server
($CONCOURSE_CONTAINERD_DNS_SERVER
)containerd
runtime
--containerd-init-bin
flag ($CONCOURSE_CONTAINERD_INIT_BIN)containerd
runtime
--containerd-cni-plugins-dir
flag ($CONCOURSE_CONTAINERD_CNI_PLUGINS_DIR
)oom_score
of -999. We want it to be at the level of other system daemons. This is so that containerd never runs into an out of memory state before the containers it's managing are cleaned up. At the same time it should not be unkillable.robocopy
executable for copying local files. This should dramatically improve performance for Windows tasks which utilize caches:
for caching a bunch of tiny files.fly pin-resource
requires a version if the resource is unpinned
set-pipeline
prompted unpause-pipeline
command should have --team
option. (#6336) @evanchaoli :link:
fly set-pipeline
where --team
option was missing in the prompted unpause-pipeline
command.task
, set_pipeline
, load_var
steps have names
task
, set_pipeline
, and load_var
stepsset_pipeline
of a YML pipeline configuration file with no jobs:
or resources:
no longer causes a runtime error: invalid memory address or nil pointer dereference
.limit-active-tasks
/var/gdn/assets
)containerd
runtime will now default to uid:gid 0:0 if username is "root" but /etc/passwd
file does not existguardian
backend/dev/shm
(shared memory) mount.