Skip to content

Merge pull request #357 from eclipse-tractusx/develop #3

Merge pull request #357 from eclipse-tractusx/develop

Merge pull request #357 from eclipse-tractusx/develop #3

# /********************************************************************************
# * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation
# *
# * See the NOTICE file(s) distributed with this work for additional
# * information regarding copyright ownership.
# *
# * This program and the accompanying materials are made available under the
# * terms of the Apache License, Version 2.0 which is available at
# * https://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.
# *
# * SPDX-License-Identifier: Apache-2.0
# ********************************************************************************/
name: Verify and Test Helm Chart
on:
workflow_dispatch:
inputs:
node_image:
description: 'kindest/node image for k8s kind cluster'
# k8s version from 3.1 release as default
default: 'kindest/node:v1.27.3'
required: false
type: string
upgrade_from:
description: 'chart version to upgrade from'
# chart version from 3.1 release as default
default: '0.2.0'
required: false
type: string
pull_request:
paths:
- 'charts/managed-identity-wallet/**'
push:
paths:
- 'charts/managed-identity-wallet/**'
jobs:
chart-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/[email protected]
with:
version: v3.12.3
- name: Add bitnami repo
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
- name: Update Helm dependencies
run: |
cd charts/managed-identity-wallet
helm dependency build
# Setup python as a prerequisite for chart linting
- uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Set up chart-testing
uses: helm/chart-testing-action@v2
- name: Run linting
run: ct lint --config charts/chart-testing-config.yaml --charts ./charts/managed-identity-wallet
verify-helm-docs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run helm docs command
uses: addnab/docker-run-action@v3
with:
image: jnorwood/helm-docs:v1.11.3
options: -v ${{ github.workspace }}/charts:/helm-docs -v ${{ github.workspace }}/.helmdocsignore:/helm-docs/.helmdocsignore
run: helm-docs
- name: Verify that no changes are required
run: |
if $(git diff --quiet --exit-code); then
echo "Helm chart docs up to date"
else
echo "Helm chart docs not up to date:"
git diff
exit 1
fi
chart-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Helm
uses: azure/[email protected]
with:
version: v3.12.3
- name: Set up Taskfile
uses: arduino/setup-task@v1
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Add bitnami and tractusx-dev repos
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev
helm repo update
- name: Update Helm dependencies
run: |
cd charts/managed-identity-wallet
helm dependency build
- name: Install Helm unittest plugin
run: |
helm plugin install https://github.com/helm-unittest/helm-unittest.git --version 0.3.5
- name: Run Helm unittests
run: task helm:unittest
- name: Build app
env:
SKIP_GRADLE_TASKS_PARAM: "-x jacocoTestCoverageVerification -x test"
run: task app:build
- name: Kubernetes KinD Cluster
uses: container-tools/kind-action@v2
with:
# default value for event_name != workflow_dispatch
node_image: ${{ github.event.inputs.node_image || 'kindest/node:v1.27.3' }}
version: v0.20.0
- name: Build image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: kind-registry:5000/miw:testing
file: ./miw/Dockerfile
- uses: actions/setup-python@v4
with:
python-version: '3.10'
check-latest: true
- name: Set up chart-testing
uses: helm/[email protected]
# ct list-changed will output all charts which have changed compared to the target-branch
# Example:
# Our branch has update the charts/managed-identity-wallet
# When we compare with main/develop
# We get the output
# > charts/managed-identity-wallet
# and subsequently set the variable `changed=true`
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }})
if [[ -n "$changed" ]]; then
echo "changed=true" >> $GITHUB_OUTPUT
fi
# TODO: update the ci/all-values.yaml file before enabling this step
- name: Run chart-testing (install)
run: ct install --charts charts/managed-identity-wallet
# if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true'
if: false
# command breakdown
# install: install the chart effectively creating a release
# install arg 1 (testing): the name of the release
# install arg 2 (tractusx-dev/managed-identity-wallet): the chart to install (in this case the official one from the dev repo)
# -n/--namespace: the namespace to use when installing
# --create-namespace: create the release namespace if it doesn't exist
# --wait: wait for all resources to start
# --version: The chart version to install
- name: Install the default chart on KinD cluster
run: |
helm install \
testing \
tractusx-dev/managed-identity-wallet \
-n apps \
--create-namespace \
--wait \
--version ${{ github.event.inputs.upgrade_from || '0.2.0' }}
# command breakdown
# helm dependency update: update chart dependencies based on the content of Chart.yaml
# update arg1 (charts/managed-identity-wallet): the location of Chart.yaml
# -n/--namespace apps: run in the `apps` namespace
# ---
# helm upgrade: upgrade a release
# upgrade arg1 (testing): the name of the release to upgrade
# upgrade arg2 (charts/managed-identity-wallet): the location of Chart.yaml
# -n/--namespace apps: run in the `apps` namespace
# --wait: wait for all pods, services etc. ro run
# --set image.tag=testing: overwrite the image.tag value to be `testing`
# --set image.repository=kind-registry:5000/miw: overwrite the image.repository value to be `kind-registry:5000/miw`
# ---
# NOTE: the overwritten values for the image are used to ensure we use the latest chart version, which was
# built during the workflow run.
- name: Run helm upgrade
run: |
helm dependency \
update \
charts/managed-identity-wallet \
-n apps
helm upgrade \
testing \
charts/managed-identity-wallet \
-n apps \
--wait \
--timeout 10m \
--set image.tag=testing \
--set image.repository=kind-registry:5000/miw
# only run if this is not a PR -OR- if there are new versions available
if: github.event_name != 'pull_request' || steps.list-changed.outputs.changed == 'true'