From 9efa8f0adbe694604b9b6ad1c45fecd9e2eb7983 Mon Sep 17 00:00:00 2001 From: Bernd Schorgers Date: Tue, 4 Mar 2025 16:55:24 +0100 Subject: [PATCH] feat(common): Release v3.7.2 (#388) Signed-off-by: solidDoWant Co-authored-by: solidDoWant --- .github/workflows/charts-lint.yaml | 94 +++++++++++++++++-- .github/workflows/charts-test.yaml | 33 +++---- charts/library/common/Chart.yaml | 7 +- charts/library/common/LICENSE | 1 + charts/library/common/README.md | 4 +- .../lib/service/_primaryForController.tpl | 4 +- .../templates/lib/service/_primary_port.tpl | 4 +- charts/library/common/values.schema.json | 2 +- charts/other/app-template/Chart.yaml | 17 +--- charts/other/app-template/LICENSE | 1 + 10 files changed, 119 insertions(+), 48 deletions(-) create mode 120000 charts/library/common/LICENSE create mode 120000 charts/other/app-template/LICENSE diff --git a/.github/workflows/charts-lint.yaml b/.github/workflows/charts-lint.yaml index 1c85dc01..8aae4cca 100644 --- a/.github/workflows/charts-lint.yaml +++ b/.github/workflows/charts-lint.yaml @@ -18,6 +18,76 @@ on: type: string jobs: + validate-required-changes: + name: Validate required changes + strategy: + matrix: + chart: ${{ fromJSON(inputs.charts) }} + fail-fast: false + if: | + ${{ + (inputs.charts != '[]' && inputs.charts != '') && + github.event_name == 'pull_request' + }} + runs-on: ubuntu-22.04 + steps: + - name: Checkout pull request branch + uses: actions/checkout@v4 + with: + path: pull + + - name: Checkout default branch + uses: actions/checkout@v4 + with: + ref: "${{ github.event.repository.default_branch }}" + path: default + + - name: Get chart details for PR + id: chart-details-pr + uses: bjw-s/helm-charts-actions/get-chart-details@main + with: + path: pull/charts/${{ matrix.chart }} + validateChartYaml: true + requireChangelog: true + + - name: Get chart details for default branch + id: chart-details-default + uses: bjw-s/helm-charts-actions/get-chart-details@main + with: + path: default/charts/${{ matrix.chart }} + allowChartToNotExist: true + validateChartYaml: false + requireChangelog: false + + # - name: Check version update + # if: ${{ steps.chart-details-pr.outputs.version == steps.chart-details-default.outputs.version }} + # uses: actions/github-script@v7 + # with: + # script: | + # core.setFailed("Chart version has not been updated for ${{ matrix.chart }}"); + + # - name: Check changelog update + # if: ${{ steps.chart-details-pr.outputs.changes == steps.chart-details-default.outputs.changes }} + # uses: actions/github-script@v7 + # with: + # script: | + # core.setFailed("Changelog has not been updated for ${{ matrix.chart }}"); + + validate_success: + needs: + - validate-required-changes + if: ${{ !cancelled() }} + name: Validation successful + runs-on: ubuntu-latest + steps: + - name: Check matrix status + if: >- + ${{ + (inputs.chartsToLint != '' && inputs.chartsToLint != '[]') && + contains(needs.*.result, 'failure') + }} + run: exit 1 + lint-chart: if: ${{ inputs.charts != '[]' && inputs.charts != '' }} name: Lint chart @@ -25,6 +95,8 @@ jobs: matrix: chart: ${{ fromJSON(inputs.charts) }} fail-fast: false + needs: + - validate_success runs-on: ubuntu-22.04 steps: - name: Checkout @@ -47,25 +119,31 @@ jobs: outputFile: "charts/${{ matrix.chart }}/values.schema.json" allowFileNotFound: true + - name: Always assume in-repo common library + env: + COMMON_LIBRARY_LOCATION: ${{ github.workspace }}/charts/library/common + working-directory: charts/${{ matrix.chart }} + run: | + yq -i '. |= .dependencies |= map(select(.name == "common" and .repository == "https://bjw-s.github.io/helm-charts").version = ">0.0.0-0")' Chart.yaml + yq -i '. |= .dependencies |= map(select(.name == "common" and .repository == "https://bjw-s.github.io/helm-charts").repository = "file://${{ env.COMMON_LIBRARY_LOCATION }}")' Chart.yaml + echo "::group::Modified Chart.yaml" + cat Chart.yaml + echo "::endgroup::" + - name: Run chart-testing (lint) run: ct lint --config .ci/ct/ct.yaml --charts "charts/${{ matrix.chart }}" lint_success: needs: - lint-chart - if: | - always() + if: ${{ !cancelled() }} name: Lint successful runs-on: ubuntu-latest steps: - name: Check matrix status if: >- ${{ - ( - inputs.chartsToLint != '' && inputs.chartsToLint != '[]' - ) && - ( - contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') - ) + (inputs.chartsToLint != '' && inputs.chartsToLint != '[]') && + contains(needs.*.result, 'failure') }} run: exit 1 diff --git a/.github/workflows/charts-test.yaml b/.github/workflows/charts-test.yaml index 57d56d6f..9f04ceea 100644 --- a/.github/workflows/charts-test.yaml +++ b/.github/workflows/charts-test.yaml @@ -78,6 +78,17 @@ jobs: outputFile: "charts/${{ matrix.chart }}/values.schema.json" allowFileNotFound: true + - name: Always assume in-repo common library + env: + COMMON_LIBRARY_LOCATION: ${{ github.workspace }}/charts/library/common + working-directory: charts/${{ matrix.chart }} + run: | + yq -i '. |= .dependencies |= map(select(.name == "common" and .repository == "https://bjw-s.github.io/helm-charts").version = ">0.0.0-0")' Chart.yaml + yq -i '. |= .dependencies |= map(select(.name == "common" and .repository == "https://bjw-s.github.io/helm-charts").repository = "file://${{ env.COMMON_LIBRARY_LOCATION }}")' Chart.yaml + echo "::group::Modified Chart.yaml" + cat Chart.yaml + echo "::endgroup::" + - name: Run chart-testing (install) working-directory: "charts/${{ matrix.chart }}" run: | @@ -90,20 +101,15 @@ jobs: install_success: needs: - install-chart - if: | - always() + if: ${{ !cancelled() }} name: Install successful runs-on: ubuntu-latest steps: - name: Check matrix status if: >- ${{ - ( - inputs.chartsToTest != '' && inputs.chartsToTest != '[]' - ) && - ( - contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') - ) + (inputs.chartsToTest != '' && inputs.chartsToTest != '[]') && + contains(needs.*.result, 'failure') }} run: exit 1 @@ -161,19 +167,14 @@ jobs: unittest_success: needs: - unittest-chart - if: | - always() + if: ${{ !cancelled() }} name: Unittest successful runs-on: ubuntu-latest steps: - name: Check matrix status if: >- ${{ - ( - inputs.chartsToTest != '' && inputs.chartsToTest != '[]' - ) && - ( - contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') - ) + (inputs.chartsToTest != '' && inputs.chartsToTest != '[]') && + contains(needs.*.result, 'failure') }} run: exit 1 diff --git a/charts/library/common/Chart.yaml b/charts/library/common/Chart.yaml index 105d1ea2..82f450fe 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: 3.7.1 +version: 3.7.2 kubeVersion: ">=1.22.0-0" keywords: - common @@ -17,8 +17,7 @@ annotations: artifacthub.io/changes: |- - kind: fixed description: |- - Values schema is now dereferenced before packaging so it no longer relies on - internet connectivity to validate the schema. + The Apache 2.0 LICENSE file has been added to the chart. - kind: fixed description: |- - Add explicit namespace declaration to templates using Release.Namespace + Fixed non-deterministic selection of primary service and port. diff --git a/charts/library/common/LICENSE b/charts/library/common/LICENSE new file mode 120000 index 00000000..5853aaea --- /dev/null +++ b/charts/library/common/LICENSE @@ -0,0 +1 @@ +../../../LICENSE \ No newline at end of file diff --git a/charts/library/common/README.md b/charts/library/common/README.md index 0b24dc3b..1686cf7a 100644 --- a/charts/library/common/README.md +++ b/charts/library/common/README.md @@ -1,6 +1,6 @@ # common -![Version: 3.7.1](https://img.shields.io/badge/Version-3.7.1-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) +![Version: 3.7.2](https://img.shields.io/badge/Version-3.7.2-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) Function library for Helm charts @@ -27,7 +27,7 @@ Include this chart as a dependency in your `Chart.yaml` e.g. # Chart.yaml dependencies: - name: common - version: 3.7.1 + version: 3.7.2 repository: https://bjw-s.github.io/helm-charts/ ``` diff --git a/charts/library/common/templates/lib/service/_primaryForController.tpl b/charts/library/common/templates/lib/service/_primaryForController.tpl index a72891b7..48a4586a 100644 --- a/charts/library/common/templates/lib/service/_primaryForController.tpl +++ b/charts/library/common/templates/lib/service/_primaryForController.tpl @@ -26,9 +26,9 @@ Return the primary service object for a controller {{- $result = $service -}} {{- end -}} - {{- /* Return the first Service if none has been explicitly marked as primary */ -}} + {{- /* Return the first Service (alphabetically) if none has been explicitly marked as primary */ -}} {{- if not $result -}} - {{- $firstServiceKey := keys $enabledServicesForController | first -}} + {{- $firstServiceKey := keys $enabledServicesForController | sortAlpha | first -}} {{- $result = get $enabledServicesForController $firstServiceKey -}} {{- $identifier = $result.identifier -}} {{- end -}} diff --git a/charts/library/common/templates/lib/service/_primary_port.tpl b/charts/library/common/templates/lib/service/_primary_port.tpl index 9716847b..404df65a 100644 --- a/charts/library/common/templates/lib/service/_primary_port.tpl +++ b/charts/library/common/templates/lib/service/_primary_port.tpl @@ -15,9 +15,9 @@ Return the primary port for a given Service object. {{- end -}} {{- end -}} - {{- /* Return the first port if none has been explicitly marked as primary */ -}} + {{- /* Return the first port (alphabetically) if none has been explicitly marked as primary */ -}} {{- if not $result -}} - {{- $firstPortKey := keys $enabledPorts | first -}} + {{- $firstPortKey := keys $enabledPorts | sortAlpha | first -}} {{- if $firstPortKey -}} {{- $result = get $enabledPorts $firstPortKey -}} {{- end -}} diff --git a/charts/library/common/values.schema.json b/charts/library/common/values.schema.json index 3dcb5813..d83b2d3e 100644 --- a/charts/library/common/values.schema.json +++ b/charts/library/common/values.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://raw.githubusercontent.com/bjw-s/helm-charts/common-3.7.1/charts/library/common/values.schema.json", + "$id": "https://raw.githubusercontent.com/bjw-s/helm-charts/common-3.7.2/charts/library/common/values.schema.json", "type": "object", "properties": { "global": { diff --git a/charts/other/app-template/Chart.yaml b/charts/other/app-template/Chart.yaml index 67f59172..277e7646 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: 3.7.1 +version: 3.7.2 kubeVersion: ">=1.22.0-0" maintainers: - name: bjw-s @@ -10,19 +10,10 @@ maintainers: dependencies: - name: common repository: https://bjw-s.github.io/helm-charts - version: 3.7.1 + version: 3.7.2 annotations: org.opencontainers.image.source: "https://github.com/bjw-s/helm-charts" artifacthub.io/changes: |- - - kind: fixed + - kind: added description: |- - Values schema is now dereferenced before packaging so it no longer relies on - internet connectivity to validate the schema. - - kind: changed - description: | - Updated library version to 3.7.1. - links: - - name: Upgrade instructions from v2.x - url: https://bjw-s.github.io/helm-charts/docs/app-template/#from-2xx-to-30x - - name: Common library chart definition - url: https://github.com/bjw-s/helm-charts/blob/main/charts/library/common/Chart.yaml + The Apache 2.0 LICENSE file has been added to the chart. diff --git a/charts/other/app-template/LICENSE b/charts/other/app-template/LICENSE new file mode 120000 index 00000000..5853aaea --- /dev/null +++ b/charts/other/app-template/LICENSE @@ -0,0 +1 @@ +../../../LICENSE \ No newline at end of file