Skip to content

Add kind-deployment validation to CI pipeline#1359

Open
Milena-Encheva wants to merge 6 commits into
developfrom
kind-deployment
Open

Add kind-deployment validation to CI pipeline#1359
Milena-Encheva wants to merge 6 commits into
developfrom
kind-deployment

Conversation

@Milena-Encheva

@Milena-Encheva Milena-Encheva commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Please take a moment to review the questions before submitting the PR

🚫 We only accept PRs to develop branch. If this is an exception, please specify why 🚫

This PR targets develop. ✅

WHAT is this change about?

Adds Cloud Foundry on Kubernetes (kind) validation to the cf-deployment Concourse pipeline. Two new jobs — kind-smoke-tests and kind-cats — dispatch the existing kind-smoke.yaml and kind-cats.yaml GitHub Actions workflows in cloudfoundry/kind-deployment with the fresh-validation: true input. That input (added in kind-deployment#424, already merged) makes the workflow sync its Helm chart versions from cf-deployment's develop branch before deploying, so the Kubernetes deployment is tested with the same release versions currently being validated on BOSH.

The reusable trigger-github-workflow task has been moved to runtime-ci#687 so it can be shared across pipelines. The gh CLI required by the task is provided by the cloudfoundry/cf-deployment-concourse-tasks image — see cf-deployment-concourse-tasks#249 which adds it to the image.

What customer problem is being addressed? Use customer persona to define the problem e.g. Alana is unable to...

Alana, a CF release engineer, is unable to know whether the component versions on develop — already validated on BOSH — also deploy and pass acceptance tests on Kubernetes. Today kind-deployment only syncs from tagged cf-deployment releases, which lag develop by days or weeks, so there is no early signal that a version bump breaks the Kubernetes path. This change gives that signal at the same time BOSH validation runs.

Please provide any contextual information.

  • The kind jobs trigger on the same gate as every BOSH environment (unit-test-ops-files, lint-cf-deployment-manifest, unit-test-golang-tests, unit-test-update-releases-coverage), so they run in parallel with fresh/upgrade/experimental/windows/lite/FIPS.

  • They are grouped under a new kind-neville pipeline group (Harry Potter naming convention).

  • The version sync now happens inside the kind workflows via fresh-validation; no separate sync job or PR branch is needed.

  • The trigger-github-workflow task lives in runtime-ci#687 and is referenced via the existing runtime-ci resource. It uses the cloudfoundry/cf-deployment-concourse-tasks image (which gains the gh CLI via cf-deployment-concourse-tasks#249 .

  • The jobs are non-blocking — bless-manifest does not depend on them, so a kind failure will not gate releases while the Kubernetes path matures.

Has a cf-deployment including this change passed cf-acceptance-tests?

  • YES
  • NO - this is a CI pipeline change only; it does not modify the manifest or any BOSH release. It does not alter what CATS runs against. (The kind path itself runs CATS on Kubernetes.)

Does this PR introduce a breaking change? Please take a moment to read through the examples before answering the question.

  • YES - please choose the category from below. Feel free to provide additional details.
  • NO - CI configuration only.

Types of breaking changes:

  1. causes app or operator downtime
  2. increases VM footprint of cf-deployment - e.g. new jobs, new add ons, increases # of instances etc.
  3. modifies, deletes or moves the name of a job or instance group in the main manifest
  4. modifies the name or deletes a property of a job or instance group in the main manifest
  5. changes the name of credentials in the main manifest
  6. requires out-of-band manual intervention on the part of the operator
  7. modifies the ops-file path, changes the type, changes the values or removes ops-files from the following folders
    • ./operations/ or ./operations/experimental
    • ./addons
    • ./backup-and-restore/

If you're promoting an experimental Ops-file (or removing one), Please follow the Ops-file workflows.

Ops files changes in the following folders are considered as NON BREAKING CHANGES
./community, ./example-vars-files, ./test

How should this change be described in cf-deployment release notes?

Not release-noteworthy — internal CI change with no operator-facing impact. (Suggested, if included: "CI now validates develop versions on Kubernetes via kind-deployment, in parallel with BOSH.")

Does this PR introduce a new BOSH release into the base cf-deployment.yml manifest or any ops-files?

  • YES - please specify
  • NO

Does this PR make a change to an experimental or GA'd feature/component?

  • experimental feature/component
  • GA'd feature/component
  • Neither — no manifest/ops-file feature change. This is CI tooling only.

Please provide Acceptance Criteria for this change?

  • kind-smoke-tests and kind-cats appear in the pipeline under the kind-neville group.
  • Both trigger automatically after the four unit/lint jobs pass on develop.
  • Each dispatches the correct kind-deployment workflow on main with fresh-validation: true and watches it to completion, reflecting pass/fail in Concourse.
  • bless-manifest continues to pass/fail independently of the kind jobs.
  • Pipeline YAML validates and fly set-pipeline applies cleanly.
  • Depends on cf-deployment-concourse-tasks#249 and runtime-ci#687 being merged first.

What is the level of urgency for publishing this change?

  • Urgent - unblocks current or future work
  • Slightly Less than Urgent

Tag your pair, your PM, and/or team!

@oliver-heinrich @jochenehret

##

# ── install gh CLI and jq ───────────────────────────────────────────
apk add --no-cache --quiet \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@@ -0,0 +1,17 @@
---

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Special Concourse tasks can be stored in the runtime-ci repository:
https://github.com/cloudfoundry/runtime-ci

---
platform: linux
image_resource:
type: docker-image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can re-use the cf-deployment-concourse-tasks image here.

@Milena-Encheva Milena-Encheva marked this pull request as ready for review July 10, 2026 09:33
Comment thread ci/pipelines/kind-neville.md Outdated
Comment on lines +62 to +66
The existing daily sync in kind-deployment is **batch and delayed**: it only
picks up versions after they appear in a cf-deployment *release* (tagged),
which can be days or weeks after they land on `develop`. There is no
automated path that validates whether the versions currently being tested in
BOSH environments also work on Kubernetes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably I haven't understood it, but was is the gap? The main in kind-deployment uses the versions validated by cf-depoyment. So every user get working version.

For validation, we introduced the parameter fresh validation which then uses the versions from the develop branch in cf-deployment instead.

The helm charts and docker files are automatically created when a new bosh release (capi, diego, ...) is created. Independently if cf-deployment is already using the version or not yet.

If you still see a gap, please let me know that we can work on closing it :)

@Milena-Encheva Milena-Encheva Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right — "gap" was misleading. kind-deployment's main already uses validated versions. Updated the doc to remove the "gap" framing.

Comment thread ci/pipelines/cf-deployment.yml Outdated
- task: trigger-kind-smoke-workflow
file: runtime-ci/tasks/trigger-github-workflow/task.yml
params:
GITHUB_TOKEN: ((ard_wg_gitbot_token))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created a dedicated token with the exact permissions you need. Please check the secret manager of the wg.

Comment thread ci/pipelines/kind-neville.md Outdated
### 1. Missing container images

When cf-deployment `develop` has a new release version, the corresponding
container image may not yet be built and pushed to `ghcr.io`. The sync

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not really a sync script checking for images and helm charts. What happens is this:

  • A new github release is created for a bos release repo (e.g. capi-release)
  • renovate will bump the version in cf-k8s-releases (once a day)
  • The PR from renovate will be verified and automarged if successful
  • In main, helm chart and docker images will be created and published

There can be 2 cases in which some artifact is missing:

  • cf-deployment is too fast. renovate runs once a day and verification/release might take 1-2 hours.
  • The artifact could not be created automatically (e.g. verification failed)

Comment thread ci/pipelines/kind-neville.md Outdated

### 2. Concourse-to-GitHub API reliability

The trigger-github-workflow task depends on the GitHub API being available

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

At least rate-limit shouldn't be a problem since you use a token.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, removed that concern from the doc since we use an authenticated token.

Comment thread ci/pipelines/kind-neville.md Outdated
both durations. If the pipeline triggers frequently, kind validation may
fall behind BOSH.

**Mitigation:** Because smoke and CATS create independent kind clusters,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An other mitigation would be to only use cats. I think it cannot happen that smoke tests find an error that cats doesn't find, right? It finds it much faster of course.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well that depends on the CATs and smoke-tests configuration. smoke-tests could find issues if tests are enabled that are disabled in CATs.

Comment thread ci/pipelines/kind-neville.md Outdated
the in-workflow sync, so the test could validate a slightly newer or older
set of versions than the exact commit that triggered the job.

**Mitigation:** Acceptable — the kind check is informational and

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another mitigation would be that we add a parameter to receive the exact commit sha that should be used. If that ever turn out to be a problem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants