From 93e761fd99fb6eaad188173de6a6a3a57811ed25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=E1=B4=87=CA=80=C9=B4=E1=B4=85=20S=E1=B4=84=CA=9C?= =?UTF-8?q?=E1=B4=8F=CA=80=C9=A2=E1=B4=87=CA=80s?= Date: Sun, 19 Feb 2023 11:40:27 +0100 Subject: [PATCH] feat(common): Release version 1.3.2 (#120) * fix(common): Increase CronJob pod annotations indent from 10 to 12 (#118) * feat(common): Add tests for CronJob jobTemplate metadata * feat(common): Update netshoot image * feat(common): Update code-server image * feat(ci): add workflow to create oci artifact (#38) * ci: Update release workflows --------- Signed-off-by: Tyler Witlin Co-authored-by: Gabe Cook Co-authored-by: Tyler Witlin <45468117+coolguy1771@users.noreply.github.com> --- .github/workflows/charts-release-ghpages.yaml | 2 +- .github/workflows/charts-release-oci.yaml | 70 +++++++++++++++++++ .github/workflows/charts-release.yaml | 12 +++- charts/library/common/Chart.yaml | 8 ++- charts/library/common/README.md | 2 +- .../common/templates/classes/_cronjob.tpl | 2 +- charts/library/common/values.yaml | 4 +- charts/other/app-template/Chart.yaml | 6 +- .../tests/configmap/metadata_test.yaml | 6 +- .../controller/metadata_cronjob_test.yaml | 30 +++++++- .../controller/metadata_daemonset_test.yaml | 6 +- .../controller/metadata_deployment_test.yaml | 6 +- .../controller/metadata_statefulset_test.yaml | 6 +- .../tests/ingress/metadata_test.yaml | 6 +- .../app-template/tests/pvc/metadata_test.yaml | 8 +-- .../tests/route/metadata_test.yaml | 6 +- .../tests/secret/metadata_test.yaml | 6 +- .../tests/service/metadata_test.yaml | 6 +- .../serviceMonitor/servicemonitor_test.yaml | 2 +- 19 files changed, 151 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/charts-release-oci.yaml diff --git a/.github/workflows/charts-release-ghpages.yaml b/.github/workflows/charts-release-ghpages.yaml index 859b597c..33d4707f 100644 --- a/.github/workflows/charts-release-ghpages.yaml +++ b/.github/workflows/charts-release-ghpages.yaml @@ -17,7 +17,7 @@ on: required: true env: - HELM_VERSION: 3.9.2 + HELM_VERSION: 3.11.1 jobs: release-charts: diff --git a/.github/workflows/charts-release-oci.yaml b/.github/workflows/charts-release-oci.yaml new file mode 100644 index 00000000..42a07fbe --- /dev/null +++ b/.github/workflows/charts-release-oci.yaml @@ -0,0 +1,70 @@ +name: "Charts: Release to GHCR OCI" + +on: + workflow_call: + inputs: + charts: + description: > + Json encoded list of Helm charts to release. + Defaults to releasing everything. + default: "[]" + required: false + type: string + secrets: + BJWS_APP_ID: + required: true + BJWS_APP_PRIVATE_KEY: + required: true + +env: + HELM_VERSION: 3.11.1 + +jobs: + release-charts: + name: Release charts + runs-on: ubuntu-22.04 + steps: + - name: Get GitHub API token + id: get-app-token + uses: getsentry/action-github-app-token@v1 + with: + app_id: ${{ secrets.BJWS_APP_ID }} + private_key: ${{ secrets.BJWS_APP_PRIVATE_KEY }} + + - name: Login to GitHub Container Registry + id: login-to-ghcr + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.BJWS_APP_PRIVATE_KEY }} + + - name: Checkout charts branch + uses: actions/checkout@v3 + with: + token: ${{ steps.get-app-token.outputs.token }} + path: "src" + fetch-depth: 0 + + - name: Install Kubernetes tools + uses: yokawasa/action-setup-kube-tools@v0.8.2 + with: + setup-tools: | + helmv3 + helm: "${{ env.HELM_VERSION }}" + + - name: Package & Push Helm Charts + shell: bash + env: + SRC_DIR: "src/charts" + run: | + CHARTS=( $(yq --null-input e '${{ inputs.charts }}[]' ) ) + + for CHART in "${CHARTS[@]}" ; do + mapfile -t CHART_PATH_PARTS < <(echo "$CHART" | tr '/' '\n') + CHART_TYPE=${CHART_PATH_PARTS[0]} + + helm dep up "${SRC_DIR}/${CHART}" + helm package "${SRC_DIR}/${CHART}" -u + helm push ${CHART} oci://ghcr.io/${{ github.actor }} + done diff --git a/.github/workflows/charts-release.yaml b/.github/workflows/charts-release.yaml index 19dcccb5..df7a9af1 100644 --- a/.github/workflows/charts-release.yaml +++ b/.github/workflows/charts-release.yaml @@ -19,7 +19,7 @@ on: - "charts/**" env: - HELM_VERSION: 3.9.2 + HELM_VERSION: 3.11.1 jobs: prepare: @@ -59,3 +59,13 @@ jobs: with: charts: "${{ needs.prepare.outputs.applicationChartsToRelease }}" secrets: inherit + + release-github-oci: + name: Release Application charts to GitHub pages + uses: ./.github/workflows/charts-release-oci.yaml + needs: + - prepare + - release-library-charts + with: + charts: "${{ needs.prepare.outputs.applicationChartsToRelease }}" + secrets: inherit diff --git a/charts/library/common/Chart.yaml b/charts/library/common/Chart.yaml index 2a3e8384..e5192676 100644 --- a/charts/library/common/Chart.yaml +++ b/charts/library/common/Chart.yaml @@ -3,7 +3,7 @@ apiVersion: v2 name: common description: Function library for Helm charts type: library -version: 1.3.1 +version: 1.3.2 kubeVersion: ">=1.22.0-0" keywords: - common @@ -14,5 +14,9 @@ maintainers: email: me@bjw-s.dev annotations: artifacthub.io/changes: |- + - kind: changed + description: Updated code-server image tag to v4.10.0 + - kind: changed + description: Updated netshoot image tag to v0.9 - kind: fixed - description: Probes were rendered incorrectly when primary service port was a string. + description: Pod annotations were not indented enough when controller type was cronjob diff --git a/charts/library/common/README.md b/charts/library/common/README.md index 2b4b5e15..951e9051 100644 --- a/charts/library/common/README.md +++ b/charts/library/common/README.md @@ -1,6 +1,6 @@ # common -![Version: 1.3.1](https://img.shields.io/badge/Version-1.3.1-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) +![Version: 1.3.2](https://img.shields.io/badge/Version-1.3.2-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) Function library for Helm charts diff --git a/charts/library/common/templates/classes/_cronjob.tpl b/charts/library/common/templates/classes/_cronjob.tpl index 704a048e..46333e97 100644 --- a/charts/library/common/templates/classes/_cronjob.tpl +++ b/charts/library/common/templates/classes/_cronjob.tpl @@ -34,7 +34,7 @@ spec: metadata: {{- with include ("bjw-s.common.lib.metadata.podAnnotations") . }} annotations: - {{- . | nindent 10 }} + {{- . | nindent 12 }} {{- end }} labels: {{- include "bjw-s.common.lib.metadata.selectorLabels" . | nindent 12 }} diff --git a/charts/library/common/values.yaml b/charts/library/common/values.yaml index fe30a1f4..cf720605 100644 --- a/charts/library/common/values.yaml +++ b/charts/library/common/values.yaml @@ -711,7 +711,7 @@ addons: # -- Specify the code-server image repository: ghcr.io/coder/code-server # -- Specify the code-server image tag - tag: 4.9.1 + tag: 4.10.0 # -- Specify the code-server image pull policy pullPolicy: IfNotPresent @@ -802,7 +802,7 @@ addons: # -- Specify the netshoot image repository: ghcr.io/nicolaka/netshoot # -- Specify the netshoot image tag - tag: v0.8 + tag: v0.9 # -- Specify the netshoot image pull policy pullPolicy: IfNotPresent diff --git a/charts/other/app-template/Chart.yaml b/charts/other/app-template/Chart.yaml index df726ee1..2f619b24 100644 --- a/charts/other/app-template/Chart.yaml +++ b/charts/other/app-template/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 description: A common powered chart template. This can be useful for small projects that don't have their own chart. name: app-template -version: 1.3.1 +version: 1.3.2 kubeVersion: ">=1.22.0-0" maintainers: - name: bjw-s @@ -10,12 +10,12 @@ maintainers: dependencies: - name: common repository: https://bjw-s.github.io/helm-charts - version: 1.3.1 + version: 1.3.2 annotations: artifacthub.io/changes: |- - kind: changed description: | - Updated library version to 1.3.1. + Updated library version to 1.3.2. links: - name: Common library chart definition url: https://github.com/bjw-s/helm-charts/blob/main/charts/library/common/Chart.yaml diff --git a/charts/other/app-template/tests/configmap/metadata_test.yaml b/charts/other/app-template/tests/configmap/metadata_test.yaml index b9fcf0a8..5d4545b9 100644 --- a/charts/other/app-template/tests/configmap/metadata_test.yaml +++ b/charts/other/app-template/tests/configmap/metadata_test.yaml @@ -23,7 +23,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -52,7 +52,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -89,5 +89,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/controller/metadata_cronjob_test.yaml b/charts/other/app-template/tests/controller/metadata_cronjob_test.yaml index 142ee6c0..38b579ac 100644 --- a/charts/other/app-template/tests/controller/metadata_cronjob_test.yaml +++ b/charts/other/app-template/tests/controller/metadata_cronjob_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -79,5 +79,29 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 + test_label: test + + - it: jobTemplate metadata should pass + set: + controller.type: cronjob + podAnnotations: + test_annotation: test + podLabels: + test_label: test + asserts: + - documentIndex: &ControllerDoc 0 + isKind: + of: CronJob + - documentIndex: *ControllerDoc + equal: + path: spec.jobTemplate.spec.template.metadata.annotations + value: + test_annotation: test + - documentIndex: *ControllerDoc + equal: + path: spec.jobTemplate.spec.template.metadata.labels + value: + app.kubernetes.io/instance: RELEASE-NAME + app.kubernetes.io/name: RELEASE-NAME test_label: test diff --git a/charts/other/app-template/tests/controller/metadata_daemonset_test.yaml b/charts/other/app-template/tests/controller/metadata_daemonset_test.yaml index 5d1ba4d7..ca5992d4 100644 --- a/charts/other/app-template/tests/controller/metadata_daemonset_test.yaml +++ b/charts/other/app-template/tests/controller/metadata_daemonset_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -79,5 +79,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/controller/metadata_deployment_test.yaml b/charts/other/app-template/tests/controller/metadata_deployment_test.yaml index 661b881c..456904d6 100644 --- a/charts/other/app-template/tests/controller/metadata_deployment_test.yaml +++ b/charts/other/app-template/tests/controller/metadata_deployment_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -79,5 +79,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/controller/metadata_statefulset_test.yaml b/charts/other/app-template/tests/controller/metadata_statefulset_test.yaml index f0662c04..6fdc8649 100644 --- a/charts/other/app-template/tests/controller/metadata_statefulset_test.yaml +++ b/charts/other/app-template/tests/controller/metadata_statefulset_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -79,5 +79,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/ingress/metadata_test.yaml b/charts/other/app-template/tests/ingress/metadata_test.yaml index 09adabe3..eaab09de 100644 --- a/charts/other/app-template/tests/ingress/metadata_test.yaml +++ b/charts/other/app-template/tests/ingress/metadata_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -79,5 +79,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/pvc/metadata_test.yaml b/charts/other/app-template/tests/pvc/metadata_test.yaml index 7c5439e0..47ba83a0 100644 --- a/charts/other/app-template/tests/pvc/metadata_test.yaml +++ b/charts/other/app-template/tests/pvc/metadata_test.yaml @@ -19,7 +19,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: retain enabled should pass set: @@ -42,7 +42,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -68,7 +68,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -102,5 +102,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/route/metadata_test.yaml b/charts/other/app-template/tests/route/metadata_test.yaml index f6166032..e34dd48a 100644 --- a/charts/other/app-template/tests/route/metadata_test.yaml +++ b/charts/other/app-template/tests/route/metadata_test.yaml @@ -23,7 +23,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -52,7 +52,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -89,5 +89,5 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/secret/metadata_test.yaml b/charts/other/app-template/tests/secret/metadata_test.yaml index 589bd3a8..da65056e 100644 --- a/charts/other/app-template/tests/secret/metadata_test.yaml +++ b/charts/other/app-template/tests/secret/metadata_test.yaml @@ -23,7 +23,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -52,7 +52,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -89,7 +89,7 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom secret type should pass diff --git a/charts/other/app-template/tests/service/metadata_test.yaml b/charts/other/app-template/tests/service/metadata_test.yaml index b0bdd6dd..6e567380 100644 --- a/charts/other/app-template/tests/service/metadata_test.yaml +++ b/charts/other/app-template/tests/service/metadata_test.yaml @@ -18,7 +18,7 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 - it: custom metadata should pass set: @@ -45,7 +45,7 @@ tests: app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test - it: custom metadata with global metadata should pass @@ -80,5 +80,5 @@ tests: app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME global_label: test - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test_label: test diff --git a/charts/other/app-template/tests/serviceMonitor/servicemonitor_test.yaml b/charts/other/app-template/tests/serviceMonitor/servicemonitor_test.yaml index 4dc84edd..44710260 100644 --- a/charts/other/app-template/tests/serviceMonitor/servicemonitor_test.yaml +++ b/charts/other/app-template/tests/serviceMonitor/servicemonitor_test.yaml @@ -74,7 +74,7 @@ tests: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME - helm.sh/chart: app-template-1.3.1 + helm.sh/chart: app-template-1.3.2 test.label: testvalue - it: a serviceMonitor is created with nameOverride