chore(deps): update kubernetes related testing dependencies #262
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Lint and test PR | |
on: pull_request | |
jobs: | |
docker-build: | |
name: Build Docker image | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build | |
uses: docker/build-push-action@v4 | |
with: | |
tags: ci.local/${{ github.repository }}/powerdns:ci | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
chart-lint: | |
name: Lint Helm charts | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install helm/chart-testing | |
uses: helm/[email protected] | |
- name: Lint charts | |
run: ct --config .github/ct.yaml lint --all | |
chart-unittest: | |
name: Unit test Helm charts | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Install helm-unittest plugin | |
run: helm plugin install https://github.com/helm-unittest/helm-unittest | |
- name: Run unit tests | |
run: | | |
for chart in charts/*; do | |
if [ -d "$chart/tests/" ]; then | |
helm unittest $chart -3 | |
else | |
echo "::warning file=$chart,title=Skipping unit test for $chart::$chart does not have a tests/ folder" | |
fi | |
done | |
chart-install: | |
name: Installation test for Helm charts | |
runs-on: ubuntu-latest | |
needs: | |
# Reuse image cache: | |
- docker-build | |
# This test is expensive so only run it when cheap tests pass: | |
- chart-lint | |
- chart-unittest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build image | |
uses: docker/build-push-action@v4 | |
with: | |
load: true # Bring image to the host so we can minikube load it later. | |
tags: ci.local/${{ github.repository }}/powerdns:ci | |
cache-from: type=gha | |
# No need to push anything to cache here. | |
# Install Minikube to test chart installation | |
- name: Install Minikube | |
uses: manusa/[email protected] | |
with: | |
minikube version: v1.31.2 | |
kubernetes version: v1.28.1 | |
github token: ${{ secrets.GITHUB_TOKEN }} | |
driver: docker | |
start args: "--container-runtime=containerd" | |
# Test chart installation with a stable image. | |
- name: Load image into minikube | |
run: | | |
minikube image load ci.local/${{ github.repository }}/powerdns:ci | |
- name: Install helm/chart-testing | |
uses: helm/[email protected] | |
- name: Test charts' installation path | |
run: | | |
ct install --all \ | |
--config .github/ct.yaml \ | |
--helm-extra-args "--timeout 1m" | |
# Install charts with the e2e values (tested also in lint-charts job) | |
- name: Installing charts being tested | |
run: | | |
for CHART in charts/*; do | |
if [ -f "$CHART/ci/e2e-values.yaml" ]; then | |
helm upgrade --install \ | |
"$(basename $CHART)" "$CHART" \ | |
--create-namespace --namespace e2e-staless-dns \ | |
--values "$CHART/ci/e2e-values.yaml" \ | |
--wait --timeout 60s | |
fi | |
done | |
- name: Configure testing scenarios | |
run: | | |
helm upgrade --install \ | |
test-chart "testing/chart" \ | |
--create-namespace --namespace e2e-staless-dns \ | |
--wait --timeout 60s | |
# In this first iteration, readineess probes may not be reliable. | |
- name: Wait 5 seconds for everything to settle | |
run: sleep 5 | |
# Begin e2e test. | |
- name: Testing e2e | |
run: | | |
IP=$(minikube ip) | |
errors=0 | |
for TEST in testing/*.sh; do | |
echo "Running tests for $(basename $TEST)" | |
bash "$TEST" $IP || ((errors++)) | |
done | |
exit $errors |