These tasks are maintained by the Foundation Infrastructure Working Group but are intended to be used
by all areas of Cloud Foundry.
Objectives:
Task interfaces are stable and we will try to avoid introducing breaking changes to the tasks.
Task inputs and properties are documented in the task yml file.
Task yml files include the image_resource needed to run the task. However, it is probably a good idea
to copy this into a resource in your pipeline and fetch it separately so you can provide docker credentials and
avoid rate limiting.
Task Groups
Release
create-final-release Creates a new final release for release_repo and commits the final release artifacts. release_repo
will be modified and output again for you to push.
The full private.yml file must be passed as the PRIVATE_YAML parameter. This can be done
with a multi line yaml string in your pipeline that interpolates the blobstore secrets from
your secret store.
create-dev-release Creates a new dev release release tarball for release_repo. The tarball is output as release_tarball/tarball.tgz
If your final blobstore is private, you’ll need to provide PRIVATE_YAML. Int his case, the full private.yml file
must be passed as the PRIVATE_YAML parameter. This can be done with a multi line yaml string in your pipeline that
interpolates the blobstore secrets from your secret store.
check-for-patched-cves This task is intended to be used as a release trigger. The task will scan the input_repo for CVEs and then compare
that list of CVEs with the CVEs found by checking out the release tag provided by the version input. If the list is
different, a CVE has been fixed and the task succeeds.
As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a CVE has
been patched, but also avoid having the check-for-patched-cves job be red all the time. Below is an example that
can be used to accomplish this in a clean-ish way. The check-for-patched-cves is wrapped in a try step, and then
an on_success step hook is used to modify a resource. The Concourse job that actually does the releasing can then
trigger off new versions of that resource. It’s also possible to just put the release steps directly within the
on_success step hook, but that can get messy if there is a large number of steps.
Since the check-for-patched-cves task is in a try step, it’s possible that the task is actually failing, rather
than exiting 1 because there are no patched CVEs. To guard against that, look at the ensure-task-succeeded task.
The task includes the output file release-notes/needs-release. If you have a series of steps in your release pipeline
each of them doing different checks, this file can be checked after they have all run to see if a release is needed.
check-for-updated-blobs This task is intended to be used as a release trigger. The task will check the release blob versions found in the
input_repo and then compare that with the blob versions found by checking out the release tag provided by the
version input. If a blob version difference is found, the task succeeds.
For task to work and generate meaningful release notes, the blobs in blobs.yml must include an identifiable name
as well as the current version of the blob.
So postgres/postgresql-10.23.tar.gz is a fine blob entry, but postgres.tar.gz is not.
As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a blob has
been updated, but also avoid having the check-for-updated-blobs job be red all the time. Below is an example that
can be used to accomplish this in a clean-ish way. The check-for-updated-blobs is wrapped in a try step, and then
an on_success step hook is used to modify a resource. The Concourse job that actually does the releasing can then
trigger off new versions of that resource. It’s also possible to just put the release steps directly within the
on_success step hook, but that can get messy if there is a large number of steps.
Since the check-for-updated-blobs task is in a try step, it’s possible that the task is actually failing, rather
than exiting 1 because there are no blob updates. To guard against that, look at the ensure-task-succeeded task.
The task includes the output file release-notes/needs-release. If you have a series of steps in your release pipeline
each of them doing different checks, this file can be checked after they have all run to see if a release is needed.
check-for-updated-vendored-packages This task is intended to be used as a release trigger. The task will check the versions of vendored packages found in the
input_repo and then compare that with the versions found by checking out the release tag provided by the
version input. If a package version difference is found, the task succeeds.
For task to work correctly, the commit messages that update the vendored packages need to note the version such that the
regular expression [0-9]+\.[0-9]+\.[0-9]+ will be able to find it.
As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a package has
been updated, but also avoid having the check-for-updated-vendored-packages job be red all the time. Below is an example that
can be used to accomplish this in a clean-ish way. The check-for-updated-vendored-packages is wrapped in a try step, and then
an on_success step hook is used to modify a resource. The Concourse job that actually does the releasing can then
trigger off new versions of that resource. It’s also possible to just put the release steps directly within the
on_success step hook, but that can get messy if there is a large number of steps.
Since the check-for-updated-vendored-packages task is in a try step, it’s possible that the task is actually failing, rather
than exiting 1 because there are no package updates. To guard against that, look at the ensure-task-succeeded task.
The task includes the output file release-notes/needs-release. If you have a series of steps in your release pipeline
each of them doing different checks, this file can be checked after they have all run to see if a release is needed.
ensure-task-succeeded This task can be used to ensure the check-for-patched-cves, check-for-updated-blobs and check-for-updated-vendored-packages
tasks were able to successfully run. Since these tasks are often used in a try step, it is a good idea to make sure
it didn’t fail for other reasons.
The task will exit 1 if the task being checked did not complete successfully. Make sure this task is NOT run in a try step.
Bosh Shared CI Tasks
These tasks are maintained by the Foundation Infrastructure Working Group but are intended to be used by all areas of Cloud Foundry.
Objectives:
ymlfile.ymlfiles include theimage_resourceneeded to run the task. However, it is probably a good idea to copy this into a resource in your pipeline and fetch it separately so you can provide docker credentials and avoid rate limiting.Task Groups
Release
create-final-release
Creates a new final release for
release_repoand commits the final release artifacts.release_repowill be modified and output again for you to push.The full
private.ymlfile must be passed as thePRIVATE_YAMLparameter. This can be done with a multi line yaml string in your pipeline that interpolates the blobstore secrets from your secret store.create-dev-release
Creates a new dev release release tarball for
release_repo. The tarball is output asrelease_tarball/tarball.tgzIf your final blobstore is private, you’ll need to provide
PRIVATE_YAML. Int his case, the fullprivate.ymlfile must be passed as thePRIVATE_YAMLparameter. This can be done with a multi line yaml string in your pipeline that interpolates the blobstore secrets from your secret store.check-for-patched-cves
This task is intended to be used as a release trigger. The task will scan the
input_repofor CVEs and then compare that list of CVEs with the CVEs found by checking out the release tag provided by theversioninput. If the list is different, a CVE has been fixed and the task succeeds.As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a CVE has been patched, but also avoid having the
check-for-patched-cvesjob be red all the time. Below is an example that can be used to accomplish this in a clean-ish way. Thecheck-for-patched-cvesis wrapped in atrystep, and then anon_successstep hook is used to modify a resource. The Concourse job that actually does the releasing can then trigger off new versions of that resource. It’s also possible to just put the release steps directly within theon_successstep hook, but that can get messy if there is a large number of steps.Since the
check-for-patched-cvestask is in atrystep, it’s possible that the task is actually failing, rather than exiting 1 because there are no patched CVEs. To guard against that, look at theensure-task-succeededtask.The task includes the output file
release-notes/needs-release. If you have a series of steps in your release pipeline each of them doing different checks, this file can be checked after they have all run to see if a release is needed.check-for-updated-blobs
This task is intended to be used as a release trigger. The task will check the release blob versions found in the
input_repoand then compare that with the blob versions found by checking out the release tag provided by theversioninput. If a blob version difference is found, the task succeeds.For task to work and generate meaningful release notes, the blobs in blobs.yml must include an identifiable name as well as the current version of the blob.
So
postgres/postgresql-10.23.tar.gzis a fine blob entry, butpostgres.tar.gzis not.As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a blob has been updated, but also avoid having the
check-for-updated-blobsjob be red all the time. Below is an example that can be used to accomplish this in a clean-ish way. Thecheck-for-updated-blobsis wrapped in atrystep, and then anon_successstep hook is used to modify a resource. The Concourse job that actually does the releasing can then trigger off new versions of that resource. It’s also possible to just put the release steps directly within theon_successstep hook, but that can get messy if there is a large number of steps.Since the
check-for-updated-blobstask is in atrystep, it’s possible that the task is actually failing, rather than exiting 1 because there are no blob updates. To guard against that, look at theensure-task-succeededtask.The task includes the output file
release-notes/needs-release. If you have a series of steps in your release pipeline each of them doing different checks, this file can be checked after they have all run to see if a release is needed.check-for-updated-vendored-packages
This task is intended to be used as a release trigger. The task will check the versions of vendored packages found in the
input_repoand then compare that with the versions found by checking out the release tag provided by theversioninput. If a package version difference is found, the task succeeds.For task to work correctly, the commit messages that update the vendored packages need to note the version such that the regular expression
[0-9]+\.[0-9]+\.[0-9]+will be able to find it.As Concourse provides no conditional branching logic, it gets a bit tricky to trigger a new release when a package has been updated, but also avoid having the
check-for-updated-vendored-packagesjob be red all the time. Below is an example that can be used to accomplish this in a clean-ish way. Thecheck-for-updated-vendored-packagesis wrapped in atrystep, and then anon_successstep hook is used to modify a resource. The Concourse job that actually does the releasing can then trigger off new versions of that resource. It’s also possible to just put the release steps directly within theon_successstep hook, but that can get messy if there is a large number of steps.Since the
check-for-updated-vendored-packagestask is in atrystep, it’s possible that the task is actually failing, rather than exiting 1 because there are no package updates. To guard against that, look at theensure-task-succeededtask.The task includes the output file
release-notes/needs-release. If you have a series of steps in your release pipeline each of them doing different checks, this file can be checked after they have all run to see if a release is needed.ensure-task-succeeded
This task can be used to ensure the
check-for-patched-cves,check-for-updated-blobsandcheck-for-updated-vendored-packagestasks were able to successfully run. Since these tasks are often used in atrystep, it is a good idea to make sure it didn’t fail for other reasons.The task will exit 1 if the task being checked did not complete successfully. Make sure this task is NOT run in a
trystep.