diff --git a/.ci/scripts/check_chart_version.mjs b/.ci/scripts/check_chart_version.mjs new file mode 100755 index 00000000..3e755e2e --- /dev/null +++ b/.ci/scripts/check_chart_version.mjs @@ -0,0 +1,38 @@ +#!/usr/bin/env zx +import 'zx/globals' +const chart = argv["_"][0] + +argv.debug ? $.verbose = true : $.verbose = false + +if (chart == undefined) { + console.log(chalk.redBright(`ERROR: `) + `No chart provided to validate!`) + process.exit(1) +} + +const defaultBranch = argv.default_branch || await $`git remote show origin | awk '/HEAD branch/ {print $NF}'` +const chartYamlPath = `${chart}/Chart.yaml` + +if (!await fs.pathExists(chartYamlPath)) { + console.log(chalk.redBright(`ERROR: `) + `${chartYamlPath} does not exist!`) + process.exit(1) +} + +const getOriginalChartYamlProcessOutput = await $`git show origin/${defaultBranch}:./${chartYamlPath}` +const originalChartYamlContent = Buffer.from(getOriginalChartYamlProcessOutput.stdout, 'utf-8').toString(); +const originalChartYaml = await YAML.parse(originalChartYamlContent) +echo `Original version: ${originalChartYaml.version}` + +const updatedChartYamlContent = await fs.readFile(chartYamlPath, 'utf8') +const updatedChartYaml = await YAML.parse(updatedChartYamlContent) +if (!updatedChartYaml.version) { + console.log(chalk.redBright(`ERROR: `) + `${chartYamlPath} does not contain a version!`) + process.exit(1) +} +echo `New version: ${updatedChartYaml.version}` + +if (updatedChartYaml.version == originalChartYaml.version) { + console.log(chalk.redBright(`ERROR: `) + `Chart version has not been updated!`) + process.exit(1) +} else { + console.log(chalk.greenBright(`OK: `) + `Chart version has been updated!`) +} diff --git a/.github/workflows/charts-lint.yaml b/.github/workflows/charts-lint.yaml index 2cebf8b7..3fd60a31 100644 --- a/.github/workflows/charts-lint.yaml +++ b/.github/workflows/charts-lint.yaml @@ -42,11 +42,11 @@ jobs: echo "::set-output name=detected::true" fi - lint-charts: + lint-chart: needs: - generate-lint-matrix if: needs.generate-lint-matrix.outputs.detected == 'true' - name: Lint charts + name: Lint chart strategy: matrix: ${{ fromJson(needs.generate-lint-matrix.outputs.lint-matrix) }} fail-fast: false @@ -65,6 +65,11 @@ jobs: helmv3 helm: "${{ env.HELM_VERSION }}" + - name: Check chart version update + shell: bash + run: | + npx zx .ci/scripts/check_chart_version.mjs "charts/${{ matrix.chart }}" + - name: Set up chart-testing uses: helm/chart-testing-action@v2.2.1 @@ -75,12 +80,12 @@ jobs: lint_success: needs: - generate-lint-matrix - - lint-charts + - lint-chart if: | always() name: Lint successful runs-on: ubuntu-22.04 steps: - name: Check lint matrix status - if: ${{ (needs.generate-lint-matrix.outputs.detected == 'true') && (needs.lint-charts.result != 'success') }} + if: ${{ (needs.generate-lint-matrix.outputs.detected == 'true') && (needs.lint-chart.result != 'success') }} run: exit 1 diff --git a/.github/workflows/charts-test.yaml b/.github/workflows/charts-test.yaml index 4079acc5..23791e47 100644 --- a/.github/workflows/charts-test.yaml +++ b/.github/workflows/charts-test.yaml @@ -47,11 +47,11 @@ jobs: echo "::set-output name=detected::true" fi - install-charts: + install-chart: needs: - generate-test-matrix if: needs.generate-test-matrix.outputs.detected == 'true' - name: Install charts + name: Install chart strategy: matrix: ${{ fromJson(needs.generate-test-matrix.outputs.install-matrix) }} fail-fast: false @@ -95,18 +95,18 @@ jobs: install_success: needs: - generate-test-matrix - - install-charts + - install-chart if: | always() name: Install successful runs-on: ubuntu-22.04 steps: - name: Check install matrix status - if: ${{ (needs.generate-test-matrix.outputs.detected == 'true') && (needs.install-charts.result != 'success') }} + if: ${{ (needs.generate-test-matrix.outputs.detected == 'true') && (needs.install-chart.result != 'success') }} run: exit 1 - unittest: - name: Run unit tests + unittest-chart: + name: Unit-test chart runs-on: ubuntu-20.04 needs: - generate-test-matrix @@ -139,12 +139,12 @@ jobs: unittest_success: needs: - generate-test-matrix - - unittest + - unittest-chart if: | always() name: Unittest successful runs-on: ubuntu-22.04 steps: - name: Check unittest matrix status - if: ${{ (needs.generate-test-matrix.outputs.detected == 'true') && (needs.unittest.result != 'success') }} + if: ${{ (needs.generate-test-matrix.outputs.detected == 'true') && (needs.unittest-chart.result != 'success') }} run: exit 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..c2658d7d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/