diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 8961091..dae5f7d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -33,34 +33,67 @@ jobs: - uses: actions/checkout@v4 # Based on https://github.com/zendesk/setup-jsonnet/blob/master/install-jsonnet.sh - - name: Install jsonnet + - name: Install jsonnet (go-jsonnet) run: | go install "github.com/google/go-jsonnet/cmd/jsonnet@${{ matrix.jsonnet-version }}" - go install "github.com/google/go-jsonnet/cmd/jsonnetfmt@${{ matrix.jsonnet-version }}" - go install "github.com/google/go-jsonnet/cmd/jsonnet-deps@${{ matrix.jsonnet-version }}" - go install "github.com/google/go-jsonnet/cmd/jsonnet-lint@${{ matrix.jsonnet-version }}" - echo "$HOME/go/bin" >> "$GITHUB_PATH" - - name: jsonnet --version + - run: jsonnet --version + + - name: Render dashboards run: | - jsonnet --version + mkdir rendered-dashboards + dashboard_folders="dashboards global-dashboards" + for file in `find $dashboard_folders -name '*.jsonnet'` + do + jsonnet -J vendor --tla-code 'datasources=["prometheus-test"]' --output-file rendered-dashboards/`basename $file` $file + done - # - name: Upload rendered dashboards - # uses: actions/upload-artifact@v4 - # with: - # name: dist-${{ github.run_attempt }} - # path: ./dist + - name: Upload rendered dashboards + uses: actions/upload-artifact@v4 + with: + name: rendered-dashboards-${{ github.run_attempt }} + path: ./rendered-dashboards lint-dashboards: runs-on: ubuntu-22.04 + needs: [render-dashboards] steps: - # - name: Download built artifacts - # uses: actions/download-artifact@v4 - # with: - # name: dist-${{ github.run_attempt }} - # path: ./dist + - name: Download rendered dashboards + uses: actions/download-artifact@v4 + with: + name: rendered-dashboards-${{ github.run_attempt }} + path: ./rendered-dashboards + + - name: Install dashboard-linter + run: | + go install github.com/grafana/dashboard-linter@latest + echo "$HOME/go/bin" >> "$GITHUB_PATH" + + - run: dashboard-linter rules + + - name: Lint rendered dashboards + run: | + lint_failures="" + + dashboard_folders=rendered-dashboards + for file in `find $dashboard_folders -name '*.jsonnet'` + do + lint_fail="" + echo "::group::$file" + dashboard-linter lint --strict $file || lint_fail=1 + echo "::endgroup::" + if [ -n "$lint_fail" ]; then + lint_failures="$lint_failures $file"; + fi + done - - run: | - echo duh + if [ -n "$lint_failures" ]; then + echo "dashboard-linter errored for the following rendered dashboards:" + for file in $lint_failures + do + echo basename $file + done + exit 1 + fi