fix(ci): use default chart-testing logic for different testcases #1086
Workflow file for this run
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 Charts | |
on: | |
pull_request: | |
paths: | |
jobs: | |
changes: | |
runs-on: ubuntu-latest-low | |
outputs: | |
src: ${{ steps.changes.outputs.src}} | |
steps: | |
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 | |
id: changes | |
continue-on-error: true | |
with: | |
filters: | | |
src: | |
- 'charts/nextcloud/Chart.yaml' | |
- 'charts/nextcloud/values.yaml' | |
- 'charts/nextcloud/templates/**' | |
lint: | |
runs-on: ubuntu-latest-low | |
needs: changes | |
if: needs.changes.outputs.src != 'false' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Helm | |
uses: azure/setup-helm@v4 | |
with: | |
version: v3.14.4 | |
- name: Add dependency chart repos | |
run: | | |
helm repo add bitnami https://charts.bitnami.com/bitnami | |
- name: Set up chart-testing | |
uses: helm/[email protected] | |
- 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 | |
- name: Run chart-testing (lint) | |
id: lint | |
if: steps.list-changed.outputs.changed == 'true' | |
run: ct lint --target-branch ${{ github.event.repository.default_branch }} | |
test: | |
runs-on: ubuntu-22.04 | |
needs: [changes, lint] | |
# only run this job if there are helm chart file changes | |
if: needs.changes.outputs.src != 'false' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Install Helm | |
uses: azure/setup-helm@v4 | |
with: | |
version: v3.14.4 | |
- name: Add dependency chart repos | |
run: | | |
helm repo add bitnami https://charts.bitnami.com/bitnami | |
- name: Set up chart-testing | |
uses: helm/[email protected] | |
- 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 | |
- name: Create kind cluster | |
uses: helm/[email protected] | |
if: steps.list-changed.outputs.changed == 'true' | |
- name: Install MinIO for testing S3 as Primary Storage | |
# only used during ct-s3-as-primary-values.yaml | |
# installs minio community helm chart here: | |
# https://github.com/minio/minio/tree/master/helm/minio | |
run: | | |
helm repo add minio https://charts.min.io/ && \ | |
helm install minio \ | |
--namespace nextcloud \ | |
--create-namespace \ | |
--wait \ | |
--wait-for-jobs \ | |
--timeout 2m0s \ | |
--values .github/tests/minio_test_values.yaml \ | |
minio/minio | |
- name: Run chart-testing (install all charts/nextcloud/ci/ct-*-values.yaml) | |
id: install | |
if: steps.list-changed.outputs.changed == 'true' | |
run: ct install --target-branch ${{ github.event.repository.default_branch }} | |
- name: Try adding a file to Nextcloud | |
# only used during ct-s3-as-primary-values.yaml | |
# applies a kubernetes job that uploads a file and then checks log of finished pod | |
run: | | |
kubectl config set-context --current --namespace=nextcloud && \ | |
kubectl apply -f ./.github/tests/test_upload_job.yaml --wait=true && \ | |
sleep 2 && \ | |
kubectl wait --for=condition=Complete --timeout=2m job/create-nextcloud-file && \ | |
echo "Here's the logs from the job:" && \ | |
kubectl logs --tail=-1 -f -l batch.kubernetes.io/job-name=create-nextcloud-file && \ | |
echo "Here's the logs from the nextcloud pod:" && \ | |
kubectl logs -l app.kubernetes.io/name=nextcloud | |
summary: | |
runs-on: ubuntu-latest-low | |
needs: [changes, test] | |
if: always() | |
steps: | |
- name: Summary | |
run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' }}; then exit 1; fi |