Skip to content

Align release files with our current approach #1326

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
Open

Align release files with our current approach #1326

wants to merge 18 commits into from

Conversation

njuettner
Copy link
Member

@njuettner njuettner commented May 28, 2025

$ devctl release create --base v30.1.3 --name v31.0.0 --provider aws --bumpall  --overwrite  --component [email protected]

Example how the format looks like:

apiVersion: release.giantswarm.io/v1alpha1
kind: Release
metadata:
  name: aws-31.0.0
spec:
  apps:
  - name: aws-ebs-csi-driver
    version: 3.0.5
    dependsOn:
    - cloud-provider-aws
  - name: aws-ebs-csi-driver-servicemonitors
    version: 0.1.0
    dependsOn:
    - prometheus-operator-crd
  - name: aws-nth-bundle
    version: 1.2.1
  - name: aws-pod-identity-webhook
    version: 1.19.1
    dependsOn:
    - cert-manager
  - name: capi-node-labeler
    version: 1.0.2
  - name: cert-exporter
    version: 2.9.5
    dependsOn:
    - kyverno-crds
  - name: cert-manager
    version: 3.9.1
    dependsOn:
    - prometheus-operator-crd
  - name: chart-operator-extensions
    version: 1.1.2
    dependsOn:
    - prometheus-operator-crd
  - name: cilium
    version: 0.31.5
  - name: cilium-crossplane-resources
    catalog: cluster
    version: 0.2.1
  - name: cilium-servicemonitors
    version: 0.1.3
    dependsOn:
    - prometheus-operator-crd
  - name: cloud-provider-aws
    version: 1.30.8-gs1
    dependsOn:
    - vertical-pod-autoscaler-crd
  - name: cluster-autoscaler
    version: 1.30.4-gs2
    dependsOn:
    - kyverno-crds
  - name: coredns
    version: 1.25.0
    dependsOn:
    - cilium
  - name: coredns-extensions
    version: 0.1.2
    dependsOn:
    - vertical-pod-autoscaler-crd
  - name: etcd-defrag
    version: 1.0.4
    dependsOn:
    - kyverno-crds
  - name: etcd-k8s-res-count-exporter
    version: 1.10.3
    dependsOn:
    - kyverno-crds
  - name: external-dns
    version: 3.2.0
    dependsOn:
    - prometheus-operator-crd
  - name: irsa-servicemonitors
    version: 0.1.0
    dependsOn:
    - prometheus-operator-crd
  - name: k8s-audit-metrics
    version: 0.10.2
    dependsOn:
    - kyverno-crds
  - name: k8s-dns-node-cache
    version: 2.8.1
    dependsOn:
    - kyverno-crds
  - name: metrics-server
    version: 2.6.0
    dependsOn:
    - kyverno-crds
  - name: net-exporter
    version: 1.22.0
    dependsOn:
    - prometheus-operator-crd
  - name: network-policies
    catalog: cluster
    version: 0.1.1
    dependsOn:
    - cilium
  - name: node-exporter
    version: 1.20.2
    dependsOn:
    - kyverno-crds
  - name: observability-bundle
    version: 1.14.1
    dependsOn:
    - coredns
  - name: observability-policies
    version: 0.0.2
    dependsOn:
    - kyverno-crds
  - name: prometheus-blackbox-exporter
    version: 0.5.0
    dependsOn:
    - prometheus-operator-crd
  - name: security-bundle
    catalog: giantswarm
    version: 1.10.1
    dependsOn:
    - prometheus-operator-crd
  - name: teleport-kube-agent
    version: 0.10.5
  - name: vertical-pod-autoscaler
    version: 5.5.0
    dependsOn:
    - prometheus-operator-crd
  - name: vertical-pod-autoscaler-crd
    version: 3.3.0
  components:
  - name: cluster-aws
    catalog: cluster
    version: 3.2.2
  - name: flatcar
    version: 4152.2.3
  - name: kubernetes
    version: v1.31.9
  - name: os-tooling
    version: 1.26.1
  date: "2025-05-28T18:40:18Z"
  state: active
apiVersion: release.giantswarm.io/v1alpha1                         apiVersion: release.giantswarm.io/v1alpha1
kind: Release                                                      kind: Release
metadata:                                                          metadata:
  name: aws-30.1.3                                              |    name: aws-31.0.0
spec:                                                              spec:
  apps:                                                              apps:
  - name: aws-ebs-csi-driver                                         - name: aws-ebs-csi-driver
    version: 3.0.5                                                     version: 3.0.5
    dependsOn:                                                         dependsOn:
    - cloud-provider-aws                                               - cloud-provider-aws
  - name: aws-ebs-csi-driver-servicemonitors                         - name: aws-ebs-csi-driver-servicemonitors
    version: 0.1.0                                                     version: 0.1.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: aws-nth-bundle                                             - name: aws-nth-bundle
    version: 1.2.1                                                     version: 1.2.1
  - name: aws-pod-identity-webhook                                   - name: aws-pod-identity-webhook
    version: 1.19.1                                                    version: 1.19.1
    dependsOn:                                                         dependsOn:
    - cert-manager                                                     - cert-manager
  - name: capi-node-labeler                                          - name: capi-node-labeler
    version: 1.0.2                                                     version: 1.0.2
  - name: cert-exporter                                              - name: cert-exporter
    version: 2.9.5                                                     version: 2.9.5
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: cert-manager                                               - name: cert-manager
    version: 3.9.0                                              |      version: 3.9.1
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: chart-operator-extensions                                  - name: chart-operator-extensions
    version: 1.1.2                                                     version: 1.1.2
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: cilium                                                     - name: cilium
    version: 0.31.5                                                    version: 0.31.5
  - name: cilium-crossplane-resources                                - name: cilium-crossplane-resources
    catalog: cluster                                                   catalog: cluster
    version: 0.2.0                                              |      version: 0.2.1
  - name: cilium-servicemonitors                                     - name: cilium-servicemonitors
    version: 0.1.3                                                     version: 0.1.3
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: cloud-provider-aws                                         - name: cloud-provider-aws
    version: 1.30.8-gs1                                                version: 1.30.8-gs1
    dependsOn:                                                         dependsOn:
    - vertical-pod-autoscaler-crd                                      - vertical-pod-autoscaler-crd
  - name: cluster-autoscaler                                         - name: cluster-autoscaler
    version: 1.30.4-gs1                                         |      version: 1.30.4-gs2
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: coredns                                                    - name: coredns
    version: 1.24.0                                             |      version: 1.25.0
    dependsOn:                                                         dependsOn:
    - cilium                                                           - cilium
  - name: coredns-extensions                                         - name: coredns-extensions
    version: 0.1.2                                                     version: 0.1.2
    dependsOn:                                                         dependsOn:
    - vertical-pod-autoscaler-crd                                      - vertical-pod-autoscaler-crd
  - name: etcd-defrag                                                - name: etcd-defrag
    version: 1.0.2                                              |      version: 1.0.4
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: etcd-k8s-res-count-exporter                                - name: etcd-k8s-res-count-exporter
    version: 1.10.3                                                    version: 1.10.3
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: external-dns                                               - name: external-dns
    version: 3.2.0                                                     version: 3.2.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: irsa-servicemonitors                                       - name: irsa-servicemonitors
    version: 0.1.0                                                     version: 0.1.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: k8s-audit-metrics                                          - name: k8s-audit-metrics
    version: 0.10.2                                                    version: 0.10.2
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: k8s-dns-node-cache                                         - name: k8s-dns-node-cache
    version: 2.8.1                                                     version: 2.8.1
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: metrics-server                                             - name: metrics-server
    version: 2.6.0                                                     version: 2.6.0
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: net-exporter                                               - name: net-exporter
    version: 1.22.0                                                    version: 1.22.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: network-policies                                           - name: network-policies
    catalog: cluster                                                   catalog: cluster
    version: 0.1.1                                                     version: 0.1.1
    dependsOn:                                                         dependsOn:
    - cilium                                                           - cilium
  - name: node-exporter                                              - name: node-exporter
    version: 1.20.2                                                    version: 1.20.2
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: observability-bundle                                       - name: observability-bundle
    version: 1.11.0                                             |      version: 1.14.1
    dependsOn:                                                         dependsOn:
    - coredns                                                          - coredns
  - name: observability-policies                                     - name: observability-policies
    version: 0.0.1                                              |      version: 0.0.2
    dependsOn:                                                         dependsOn:
    - kyverno-crds                                                     - kyverno-crds
  - name: prometheus-blackbox-exporter                               - name: prometheus-blackbox-exporter
    version: 0.5.0                                                     version: 0.5.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: security-bundle                                            - name: security-bundle
    catalog: giantswarm                                                catalog: giantswarm
    version: 1.10.1                                                    version: 1.10.1
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: teleport-kube-agent                                        - name: teleport-kube-agent
    version: 0.10.4                                             |      version: 0.10.5
  - name: vertical-pod-autoscaler                                    - name: vertical-pod-autoscaler
    version: 5.4.0                                              |      version: 5.5.0
    dependsOn:                                                         dependsOn:
    - prometheus-operator-crd                                          - prometheus-operator-crd
  - name: vertical-pod-autoscaler-crd                                - name: vertical-pod-autoscaler-crd
    version: 3.2.0                                              |      version: 3.3.0
  components:                                                        components:
  - name: cluster-aws                                                - name: cluster-aws
    catalog: cluster                                                   catalog: cluster
    version: 3.2.2                                                     version: 3.2.2
  - name: flatcar                                                    - name: flatcar
    version: 4152.2.1                                           |      version: 4152.2.3
  - name: kubernetes                                                 - name: kubernetes
    version: 1.30.11                                            |      version: v1.31.9
  - name: os-tooling                                                 - name: os-tooling
    version: 1.24.0                                             |      version: 1.26.1
  date: "2025-05-27T09:00:00Z"                                  |    date: "2025-05-28T18:40:18Z"
  state: active                                                      state: active
# :zap: Giant Swarm Release v31.0.0 for CAPA :zap:

<< Add description here >>

## Changes compared to v30.1.3

### Components

- Flatcar from 4152.2.1 to [4152.2.3](https://www.flatcar-linux.org/releases/#release-4152.2.3)
- Kubernetes from v1.30.11 to [v1.31.9](https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.31.md#v1.31.9)

### Apps

- vertical-pod-autoscaler-crd from 3.2.0 to 3.3.0
- cluster-autoscaler from 1.30.4-gs1 to 1.30.4-gs2
- coredns from 1.24.0 to 1.25.0
- etcd-defrag from 1.0.2 to 1.0.4
- teleport-kube-agent from 0.10.4 to 0.10.5
- vertical-pod-autoscaler from 5.4.0 to 5.5.0
- cert-manager from 3.9.0 to 3.9.1
- cilium-crossplane-resources from 0.2.0 to 0.2.1
- observability-bundle from 1.11.0 to 1.14.1
- observability-policies from 0.0.1 to 0.0.2


### vertical-pod-autoscaler-crd [3.3.0](https://github.com/giantswarm/vertical-pod-autoscaler-crd/compare/v3.2.0...v3.3.0)

#### Changed

- Chart: Sync to upstream. ([#140](https://github.com/giantswarm/vertical-pod-autoscaler-crd/pull/140))
- Chart: Sync to upstream. ([#136](https://github.com/giantswarm/vertical-pod-autoscaler-crd/pull/136))

### cluster-autoscaler [1.30.4-gs2](https://github.com/giantswarm/cluster-autoscaler-app/compare/v1.30.4-gs1...v1.30.4-gs2)

#### Added

- Support adding additional labels to the `PodMonitor` resource via the `podMonitor.additionalLabels` value.

### coredns [1.25.0](https://github.com/giantswarm/coredns-app/compare/v1.24.0...v1.25.0)

#### Changed

- Update `coredns` image to [1.12.1](https://github.com/coredns/coredns/releases/tag/v1.12.1).

### etcd-defrag [1.0.4](https://github.com/giantswarm/etcd-defrag-app/compare/v1.0.2...v1.0.4)

#### Changed

- Chart: Update dependency ahrtr/etcd-defrag to v0.27.0. ([#29](https://github.com/giantswarm/etcd-defrag-app/pull/29))
- Chart: Update dependency ahrtr/etcd-defrag to v0.26.0. ([#22](https://github.com/giantswarm/etcd-defrag-app/pull/22))

### teleport-kube-agent [0.10.5](https://github.com/giantswarm/teleport-kube-agent-app/compare/v0.10.4...v0.10.5)

### vertical-pod-autoscaler [5.5.0](https://github.com/giantswarm/vertical-pod-autoscaler-app/compare/v5.4.0...v5.5.0)

#### Changed

- Chart: Update Helm release vertical-pod-autoscaler to v10.1.0. ([#350](https://github.com/giantswarm/vertical-pod-autoscaler-app/pull/350))
- Chart: Update Helm release vertical-pod-autoscaler to v10.2.0. ([#351](https://github.com/giantswarm/vertical-pod-autoscaler-app/pull/351))
- Chart: Update Helm release vertical-pod-autoscaler to v10.0.1. ([#346](https://github.com/giantswarm/vertical-pod-autoscaler-app/pull/346))

### cert-manager [3.9.1](https://github.com/giantswarm/cert-manager-app/compare/v3.9.0...v3.9.1)

#### Added

- Added Vertical Pod Autoscaler support for `controller` pods.
- Added renovate configutarion

### cilium-crossplane-resources [0.2.1](https://github.com/giantswarm/cilium-crossplane-resources/compare/v0.2.0...v0.2.1)

#### Added

- Included the `giantswarm.io/cluster` label

### observability-bundle [1.14.1](https://github.com/giantswarm/observability-bundle/compare/v1.11.0...v1.14.1)

#### Added

- Add support for enabling pre-configured custom resources in KSM
- Add metrics containing labels for Crossplane resources

#### Changed

- Reconfigure Flux-related part of the KSM to use wildcards instead of hardcoded versions.
- Rename Flux-related metrics produced by the KSM.
- Upgrade `kube-prometheus-stack` to 72.3.0
- Bumps prometheus-operator to 0.82.0
- Upgrade `kube-prometheus-stack` from 69.5.1 to 70.1.1
- Bumps prometheus-operator to 0.81.0
- Bumps prometheus to 3.2.1

### observability-policies [0.0.2](https://github.com/giantswarm/observability-policies-app/compare/v0.0.1...v0.0.2)

#### Changed

- Add Cluster Role to allow latest Kyverno versions to work (https://github.com/giantswarm/giantswarm/issues/33416)
- Switch `.Values.disabled` to `.Values.enabled` to follow best practices.

Checklist

  • Update changelog in CHANGELOG.md.


// marshalReleaseYAML creates a custom YAML representation of the release
// with proper field ordering and without unwanted fields like status and creationTimestamp
func marshalReleaseYAML(release v1alpha1.Release) ([]byte, error) {
Copy link
Member Author

Choose a reason for hiding this comment

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

That is the simplest way of creating a release yaml without any extra fields like status fields or creationTimestamp.

Also it is super hard to change the order for yaml when using any libraries because the ordering would look like:

- dependsOn:
  - cloud-provider-aws
  name: aws-ebs-csi-driver
  version: 3.0.5

instead of what we have:

- name: aws-ebs-csi-driver
  version: 3.0.5
  dependsOn:
  - cloud-provider-aws

I know looks hacky but it is the simplest way of not getting any headaches.

Using the default YAML marshaler with custom struct tags wouldn't give us the precise field ordering control needed.

}

// cleanReleaseNotes removes excess blank lines from the generated release notes
func cleanReleaseNotes(notes string) string {
Copy link
Member Author

Choose a reason for hiding this comment

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

I need that for making nice formatting. I highlighted an example in the PR body

@@ -51,6 +51,12 @@ var knownComponentParseParams = map[string]parseParams{
start: commonStartPattern,
end: commonEndPattern,
},
"aws-pod-identity-webhook": {
Copy link
Member Author

Choose a reason for hiding this comment

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

Added new components, those were missing

@njuettner njuettner requested a review from a team May 28, 2025 17:10
@njuettner njuettner marked this pull request as ready for review May 28, 2025 17:10
@njuettner njuettner requested a review from a team as a code owner May 28, 2025 17:10
Copy link
Member

@Gacko Gacko left a comment

Choose a reason for hiding this comment

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

LGTM!

Can we maybe have some kind of golden file? Like, a Release CR how it should look like if you put in some specific values, so we can code towards that?

@njuettner
Copy link
Member Author

Added a golden file for release CR 👍🏻

Comment on lines +418 to +426
if componentName == "os-tooling" {
// Skip parsing os-tooling
// protected repo
return &Version{
Name: currentVersion,
Link: changelogURLBuilder.String(),
Content: "",
}, nil
}
Copy link
Member

Choose a reason for hiding this comment

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

Good to know, I was already wondering why there is no changelog for capi-image-builder.

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.

2 participants