diff --git a/.github/workflows/helm-chart.yaml b/.github/workflows/helm-chart.yaml new file mode 100644 index 0000000000..da529c5303 --- /dev/null +++ b/.github/workflows/helm-chart.yaml @@ -0,0 +1,54 @@ +################################################################################ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +################################################################################ + +name: "Helm Chart" + +permissions: + contents: read + +on: + pull_request: + paths: + - 'helm/**' + - '.github/workflows/helm-chart.yaml' + push: + branches: [main, release-*, ci-*] + paths: + - 'helm/**' + - '.github/workflows/helm-chart.yaml' + +concurrency: + group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.number || github.run_id }} + cancel-in-progress: true + +jobs: + test-helm-chart: + name: "Helm Lint and Unittest" + runs-on: ubuntu-latest + steps: + - name: "Checkout code" + uses: actions/checkout@v6 + + - name: "Lint Helm chart" + run: helm lint ./helm + + - name: "Run helm-unittest" + uses: d3adb5/helm-unittest-action@v2 + with: + helm-version: latest + charts: helm diff --git a/helm/tests/imagepullsecrets_test.yaml b/helm/tests/imagepullsecrets_test.yaml new file mode 100644 index 0000000000..3881426745 --- /dev/null +++ b/helm/tests/imagepullsecrets_test.yaml @@ -0,0 +1,67 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +suite: imagePullSecrets +templates: + - templates/sts-coordinator.yaml + - templates/sts-tablet.yaml + +tests: + - it: should not set imagePullSecrets by default + asserts: + - isNull: + path: spec.template.spec.imagePullSecrets + template: templates/sts-coordinator.yaml + - isNull: + path: spec.template.spec.imagePullSecrets + template: templates/sts-tablet.yaml + + - it: should set imagePullSecrets when a single secret is provided + set: + image.pullSecrets: + - my-registry-secret + asserts: + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: my-registry-secret + template: templates/sts-coordinator.yaml + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: my-registry-secret + template: templates/sts-tablet.yaml + + - it: should set imagePullSecrets when multiple secrets are provided + set: + image.pullSecrets: + - secret-one + - secret-two + asserts: + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: secret-one + - name: secret-two + template: templates/sts-coordinator.yaml + - equal: + path: spec.template.spec.imagePullSecrets + value: + - name: secret-one + - name: secret-two + template: templates/sts-tablet.yaml