Skip to content

Commit

Permalink
cicd: perform helm test now on current code base instead of remote im…
Browse files Browse the repository at this point in the history
…ages

- split helm test and helm lint as they have different purposes
- introduce reusable workflows for building and caching docker images from current code base
- add documentation for that change
  • Loading branch information
nicoprow committed May 29, 2024
1 parent 12ef180 commit 215bfc7
Show file tree
Hide file tree
Showing 7 changed files with 371 additions and 112 deletions.
183 changes: 183 additions & 0 deletions .github/workflows/app-test-charts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
################################################################################
# Copyright (c) 2021,2024 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: Perform Chart Tests
on:
workflow_call:
inputs:
node_image:
description: 'kindest/node image for k8s kind cluster'
default: 'kindest/node:v1.27.3'
required: false
type: string
upgrade_from:
description: 'chart version to upgrade from'
required: false
type: string
helm_version:
description: 'helm version to test (default = latest)'
default: 'latest'
required: false
type: string
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'
required: false
type: string
helm_version:
description: 'helm version to test (default = latest)'
default: 'latest'
required: false
type: string
pull_request:
branches:
- main
- release/**
jobs:
build-apps:
uses: ./.github/workflows/docker-build-and-cache-all.yaml

execute-tests:
needs: build-apps
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Kubernetes KinD Cluster
uses: container-tools/kind-action@v2
with:
version: v0.20.0
node_image: ${{ github.event.inputs.node_image || 'kindest/node:v1.27.3' }}

- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: ${{ github.event.inputs.helm_version || 'latest' }}

- uses: actions/setup-python@v5
with:
python-version: '3.9'
check-latest: true

- name: Set up chart-testing
uses: helm/[email protected]

- name: Download Pool Image
uses: actions/download-artifact@v4
with:
name: bpdm-pool-docker
path: /tmp

- name: Download Gate Image
uses: actions/download-artifact@v4
with:
name: bpdm-gate-docker
path: /tmp

- name: Download Orchestrator Image
uses: actions/download-artifact@v4
with:
name: bpdm-orchestrator-docker
path: /tmp

- name: Download Cleaning Service Dummy Image
uses: actions/download-artifact@v4
with:
name: bpdm-cleaning-service-dummy-docker
path: /tmp

- name: Push Pool Image to Kind
run: |
docker load --input /tmp/bpdm-pool.tar
docker image tag bpdm-pool:test kind-registry:5000/bpdm-pool:test
docker push kind-registry:5000/bpdm-pool:test
- name: Push Gate Image to Kind
run: |
docker load --input /tmp/bpdm-gate.tar
docker image tag bpdm-gate:test kind-registry:5000/bpdm-gate:test
docker push kind-registry:5000/bpdm-gate:test
- name: Push Orchestrator Image to Kind
run: |
docker load --input /tmp/bpdm-orchestrator.tar
docker image tag bpdm-orchestrator:test kind-registry:5000/bpdm-orchestrator:test
docker push kind-registry:5000/bpdm-orchestrator:test
- name: Push Cleaning Service Dummy Image to Kind
run: |
docker load --input /tmp/bpdm-cleaning-service-dummy.tar
docker image tag bpdm-cleaning-service-dummy:test kind-registry:5000/bpdm-cleaning-service-dummy:test
docker push kind-registry:5000/bpdm-cleaning-service-dummy:test
- name: Create Test Values
run: |
mkdir charts/bpdm/ci
cat <<EOF > charts/bpdm/ci/test-values.yaml
bpdm-pool:
image:
registry: kind-registry:5000
repository: bpdm-pool
tag: test
bpdm-gate:
image:
registry: kind-registry:5000
repository: bpdm-gate
tag: test
bpdm-orchestrator:
image:
registry: kind-registry:5000
repository: bpdm-orchestrator
tag: test
bpdm-cleaning-service-dummy:
image:
registry: kind-registry:5000
repository: bpdm-cleaning-service-dummy
tag: test
EOF
echo "cat charts/bpdm/ci/test-values.yaml"
cat charts/bpdm/ci/test-values.yaml
- name: Create Chart-Testing Config
run: |
cat <<EOF > .chart-testing-config.yaml
chart-repos:
- bitnami=https://charts.bitnami.com/bitnami
helm-extra-args: --timeout 600s
EOF
echo "cat .chart-testing-config.yaml"
cat .chart-testing-config.yaml
- name: Run chart-testing (install)
run: ct install --charts charts/bpdm --config .chart-testing-config.yaml

- name: Run helm upgrade
run: |
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev
helm install bpdm-test tractusx-dev/bpdm ${{ github.event.inputs.upgrade_from && '--version github.event.inputs.upgrade_from' || '' }}
helm dependency update charts/bpdm
helm upgrade bpdm-test charts/bpdm
4 changes: 0 additions & 4 deletions .github/workflows/build-docker-all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ on:
branches:
- main
- rc/**
pull_request:
branches:
- main
- rc/**
jobs:
build-docker-pool:
uses: ./.github/workflows/build-docker.yaml
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/chart-test-lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
################################################################################
# Copyright (c) 2021,2024 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: Lint Charts

on:
pull_request:
workflow_call:
inputs:
helm_version:
description: 'helm version to test (default = latest)'
default: 'latest'
required: false
type: string
workflow_dispatch:
inputs:
helm_version:
description: 'helm version to test (default = latest)'
default: 'latest'
required: false
type: string

jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Helm
uses: azure/setup-helm@v4
with:
version: ${{ github.event.inputs.helm_version || 'latest' }}

- name: Set up chart-testing
uses: helm/[email protected]

- name: Create Chart-Testing Config
run: |
cat <<EOF > .chart-testing-config.yaml
validate-maintainers: false
chart-repos:
- bitnami=https://charts.bitnami.com/bitnami
EOF
echo "cat .chart-testing-config.yaml"
cat .chart-testing-config.yaml
- name: Run chart-testing (lint)
run: ct lint --target-branch ${{ github.event.repository.default_branch }} --config .chart-testing-config.yaml
43 changes: 43 additions & 0 deletions .github/workflows/docker-build-and-cache-all.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
################################################################################
# Copyright (c) 2021,2024 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: 'Build and Cache All Docker Images'
on:
workflow_dispatch:
workflow_call:
jobs:
build-pool:
uses: ./.github/workflows/docker-build-and-cache.yaml
with:
app: pool

build-gate:
uses: ./.github/workflows/docker-build-and-cache.yaml
with:
app: gate

build-orchestrator:
uses: ./.github/workflows/docker-build-and-cache.yaml
with:
app: orchestrator

build-cleaning-service-dummy:
uses: ./.github/workflows/docker-build-and-cache.yaml
with:
app: cleaning-service-dummy
63 changes: 63 additions & 0 deletions .github/workflows/docker-build-and-cache.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
################################################################################
# Copyright (c) 2021,2024 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: 'Build and Cache Docker Image'
on:
workflow_dispatch:
inputs:
app:
description: 'The name of the BPDM app to build'
type: choice
required: true
options:
- pool
- gate
- orchestrator
- cleaning-service-dummy
workflow_call:
inputs:
app:
description: 'The name of the BPDM app to build'
type: string
required: true

jobs:
build-image-and-upload:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build Pool Image
uses: docker/build-push-action@v5
with:
context: .
file: docker/${{ inputs.app }}/Dockerfile
tags: bpdm-${{ inputs.app }}:test
outputs: type=docker,dest=/tmp/bpdm-${{ inputs.app }}.tar

- name: Upload Pool Image
uses: actions/upload-artifact@v4
with:
name: bpdm-${{ inputs.app }}-docker
path: /tmp/bpdm-${{ inputs.app }}.tar

Loading

0 comments on commit 215bfc7

Please sign in to comment.