From a16d8a1bb303cab3f1f9ba61515bcdc55a24b39d Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:02:10 +0100 Subject: [PATCH 1/6] Write step summary in case of error --- .github/workflows/validate-workflows.yaml | 34 +++++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate-workflows.yaml b/.github/workflows/validate-workflows.yaml index 9af26f3..464774d 100644 --- a/.github/workflows/validate-workflows.yaml +++ b/.github/workflows/validate-workflows.yaml @@ -16,9 +16,37 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - name: Validate YAML - uses: docker://gsoci.azurecr.io/giantswarm/yamllint:1.37.1 - with: - args: --format=github . + run: | + set +e + + # Run yamllint and capture output + docker run --rm -v "$PWD:/data" -w /data \ + gsoci.azurecr.io/giantswarm/yamllint:1.37.1 \ + --format=parsable . > yamllint-output.txt 2>&1 + + exit_code=$? + + # Write summary only if there are failures + if [ $exit_code -ne 0 ]; then + echo "## YAML Validation Results" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Found issues in the following files:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + # Extract and format only the files with errors + if [ -s yamllint-output.txt ]; then + # Group errors by file + echo '```' >> $GITHUB_STEP_SUMMARY + cat yamllint-output.txt >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + fi + fi + + # Clean up + rm -f yamllint-output.txt + + # Exit with the original exit code + exit $exit_code - name: Validate GitHub Actions uses: jazzsequence/github-action-validator@8dce06e551e2b2a09f6e8c72e76fa4b60da5c8f1 # v1.0.1 From 7d642ab7ee061af853d21fef7921a0b156667a1b Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:02:24 +0100 Subject: [PATCH 2/6] Provoke error through bad indentation --- .github/workflows/chart-values.yaml | 62 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/chart-values.yaml b/.github/workflows/chart-values.yaml index a52672e..19c3fdc 100644 --- a/.github/workflows/chart-values.yaml +++ b/.github/workflows/chart-values.yaml @@ -9,34 +9,34 @@ jobs: validate: runs-on: ubuntu-24.04 steps: - - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - fetch-depth: 0 - - - name: Install validator - run: | - wget -q -O ${HOME}/yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64 - chmod +x ${HOME}/yajsv - - - name: Check if values.yaml is a valid instance of values.schema.json - run: | - for chart_yaml in helm/*/Chart.yaml; do - helm_dir="${chart_yaml%/Chart.yaml}" - - if [ ! -f ${helm_dir}/values.schema.json ]; then - echo "Skipping validation for '${helm_dir}' folder, because 'values.schema.json' does not exist..." - continue - fi - - values=${helm_dir}/values.yaml - if [ -f ${helm_dir}/ci/ci-values.yaml ]; then - # merge ci-values.yaml into values.yaml (providing required values) - echo -e "\nMerged values:\n==============" - yq '. *= load("'${helm_dir}'/ci/ci-values.yaml")' ${helm_dir}/values.yaml | tee ${helm_dir}/combined-values.yaml - echo -e "\n==============\n" - values=${helm_dir}/combined-values.yaml - fi - - ${HOME}/yajsv -s ${helm_dir}/values.schema.json ${values} - done + - name: Checkout + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + fetch-depth: 0 + + - name: Install validator + run: | + wget -q -O ${HOME}/yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64 + chmod +x ${HOME}/yajsv + + - name: Check if values.yaml is a valid instance of values.schema.json + run: | + for chart_yaml in helm/*/Chart.yaml; do + helm_dir="${chart_yaml%/Chart.yaml}" + + if [ ! -f ${helm_dir}/values.schema.json ]; then + echo "Skipping validation for '${helm_dir}' folder, because 'values.schema.json' does not exist..." + continue + fi + + values=${helm_dir}/values.yaml + if [ -f ${helm_dir}/ci/ci-values.yaml ]; then + # merge ci-values.yaml into values.yaml (providing required values) + echo -e "\nMerged values:\n==============" + yq '. *= load("'${helm_dir}'/ci/ci-values.yaml")' ${helm_dir}/values.yaml | tee ${helm_dir}/combined-values.yaml + echo -e "\n==============\n" + values=${helm_dir}/combined-values.yaml + fi + + ${HOME}/yajsv -s ${helm_dir}/values.schema.json ${values} + done From 7d3c6dd30126d9fd952cbf51c8fb4daca2fd7a8b Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:06:36 +0100 Subject: [PATCH 3/6] Improve summary --- .github/workflows/validate-workflows.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/validate-workflows.yaml b/.github/workflows/validate-workflows.yaml index 464774d..6ab4f97 100644 --- a/.github/workflows/validate-workflows.yaml +++ b/.github/workflows/validate-workflows.yaml @@ -33,11 +33,10 @@ jobs: echo "Found issues in the following files:" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - # Extract and format only the files with errors + # Extract and format only lines with errors if [ -s yamllint-output.txt ]; then - # Group errors by file echo '```' >> $GITHUB_STEP_SUMMARY - cat yamllint-output.txt >> $GITHUB_STEP_SUMMARY + grep '\[error\]' yamllint-output.txt >> $GITHUB_STEP_SUMMARY || echo "No errors found in output" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY fi fi From ac457d86247f6edefeaa5dfa05e7b01708015c5a Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:09:13 +0100 Subject: [PATCH 4/6] Improve message --- .github/workflows/validate-workflows.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/validate-workflows.yaml b/.github/workflows/validate-workflows.yaml index 6ab4f97..d819f94 100644 --- a/.github/workflows/validate-workflows.yaml +++ b/.github/workflows/validate-workflows.yaml @@ -30,7 +30,7 @@ jobs: if [ $exit_code -ne 0 ]; then echo "## YAML Validation Results" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - echo "Found issues in the following files:" >> $GITHUB_STEP_SUMMARY + echo "❌ Found issues in the following files:" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY # Extract and format only lines with errors From 511f8dd855f123a84558f2b0e9c6962bd8aa51e9 Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:11:07 +0100 Subject: [PATCH 5/6] Remove trailing newlines --- .github/workflows/validate-workflows.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/validate-workflows.yaml b/.github/workflows/validate-workflows.yaml index d819f94..780c843 100644 --- a/.github/workflows/validate-workflows.yaml +++ b/.github/workflows/validate-workflows.yaml @@ -18,21 +18,21 @@ jobs: - name: Validate YAML run: | set +e - + # Run yamllint and capture output docker run --rm -v "$PWD:/data" -w /data \ gsoci.azurecr.io/giantswarm/yamllint:1.37.1 \ --format=parsable . > yamllint-output.txt 2>&1 - + exit_code=$? - + # Write summary only if there are failures if [ $exit_code -ne 0 ]; then echo "## YAML Validation Results" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "❌ Found issues in the following files:" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY - + # Extract and format only lines with errors if [ -s yamllint-output.txt ]; then echo '```' >> $GITHUB_STEP_SUMMARY @@ -40,10 +40,10 @@ jobs: echo '```' >> $GITHUB_STEP_SUMMARY fi fi - + # Clean up rm -f yamllint-output.txt - + # Exit with the original exit code exit $exit_code From 3650956c744a6e7133c53c7caa89f2065390cf36 Mon Sep 17 00:00:00 2001 From: Marian Steinbach Date: Fri, 31 Oct 2025 15:12:10 +0100 Subject: [PATCH 6/6] Revert indentation change --- .github/workflows/chart-values.yaml | 62 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/.github/workflows/chart-values.yaml b/.github/workflows/chart-values.yaml index 19c3fdc..a52672e 100644 --- a/.github/workflows/chart-values.yaml +++ b/.github/workflows/chart-values.yaml @@ -9,34 +9,34 @@ jobs: validate: runs-on: ubuntu-24.04 steps: - - name: Checkout - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 - with: - fetch-depth: 0 - - - name: Install validator - run: | - wget -q -O ${HOME}/yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64 - chmod +x ${HOME}/yajsv - - - name: Check if values.yaml is a valid instance of values.schema.json - run: | - for chart_yaml in helm/*/Chart.yaml; do - helm_dir="${chart_yaml%/Chart.yaml}" - - if [ ! -f ${helm_dir}/values.schema.json ]; then - echo "Skipping validation for '${helm_dir}' folder, because 'values.schema.json' does not exist..." - continue - fi - - values=${helm_dir}/values.yaml - if [ -f ${helm_dir}/ci/ci-values.yaml ]; then - # merge ci-values.yaml into values.yaml (providing required values) - echo -e "\nMerged values:\n==============" - yq '. *= load("'${helm_dir}'/ci/ci-values.yaml")' ${helm_dir}/values.yaml | tee ${helm_dir}/combined-values.yaml - echo -e "\n==============\n" - values=${helm_dir}/combined-values.yaml - fi - - ${HOME}/yajsv -s ${helm_dir}/values.schema.json ${values} - done + - name: Checkout + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + fetch-depth: 0 + + - name: Install validator + run: | + wget -q -O ${HOME}/yajsv https://github.com/neilpa/yajsv/releases/download/v1.4.1/yajsv.linux.amd64 + chmod +x ${HOME}/yajsv + + - name: Check if values.yaml is a valid instance of values.schema.json + run: | + for chart_yaml in helm/*/Chart.yaml; do + helm_dir="${chart_yaml%/Chart.yaml}" + + if [ ! -f ${helm_dir}/values.schema.json ]; then + echo "Skipping validation for '${helm_dir}' folder, because 'values.schema.json' does not exist..." + continue + fi + + values=${helm_dir}/values.yaml + if [ -f ${helm_dir}/ci/ci-values.yaml ]; then + # merge ci-values.yaml into values.yaml (providing required values) + echo -e "\nMerged values:\n==============" + yq '. *= load("'${helm_dir}'/ci/ci-values.yaml")' ${helm_dir}/values.yaml | tee ${helm_dir}/combined-values.yaml + echo -e "\n==============\n" + values=${helm_dir}/combined-values.yaml + fi + + ${HOME}/yajsv -s ${helm_dir}/values.schema.json ${values} + done