From d189f5c4fcca729b2835db541873de4f2c959536 Mon Sep 17 00:00:00 2001 From: afwillia Date: Thu, 16 Nov 2023 15:16:07 -0800 Subject: [PATCH] add config validation workflows --- .github/workflows/validate-dcc-config.yml | 40 +++++++++++++++++++ .../workflows/validate-template-config.yml | 39 ++++++++++++++++++ .github/workflows/validate-tenants-config.yml | 28 +++++++++++++ 3 files changed, 107 insertions(+) create mode 100644 .github/workflows/validate-dcc-config.yml create mode 100644 .github/workflows/validate-template-config.yml create mode 100644 .github/workflows/validate-tenants-config.yml diff --git a/.github/workflows/validate-dcc-config.yml b/.github/workflows/validate-dcc-config.yml new file mode 100644 index 0000000..4679e6e --- /dev/null +++ b/.github/workflows/validate-dcc-config.yml @@ -0,0 +1,40 @@ +# ------------------------------------------------------------------------------ +# Validate a dcc config file against the dca_config schema +# ------------------------------------------------------------------------------ +name: validate dcc config +on: + push: + paths: + - 'dcc/*dca_config.json' + - 'test/*dca_config.json' + - 'schemas/dca_config.schema.json' + pull_request: + branches: + - 'main' + - 'staging' + - 'dev' + paths: + - 'dcc/*dca_config.json' + - 'test/*dca_config.json' + - 'schemas/dca_config.schema.json' + +jobs: + validate-dcc-config: + runs-on: ubuntu-latest + steps: + - id: files + uses: masesgroup/retrieve-changed-files@v3 + with: + format: 'csv' + - id: filter_files + name: Filter files to dca_config.json files + run: | + echo "configs=$(echo ${{ steps.files.outputs.added_modified }} | tr ',' '\n' | grep dca_config\\.json | tr '\n' ',' | sed 's/\(.*\),/\1 /')" >> "$GITHUB_OUTPUT" + - uses: actions/checkout@v4 + - name: Validate JSON + if: ${{ steps.filter_files.outputs.configs != '' }} + uses: docker://orrosenblatt/validate-json-action:latest + env: + INPUT_SCHEMA: schemas/dca_config.schema.json + INPUT_JSONS: ${{ steps.filter_files.outputs.configs }} + diff --git a/.github/workflows/validate-template-config.yml b/.github/workflows/validate-template-config.yml new file mode 100644 index 0000000..b30caaf --- /dev/null +++ b/.github/workflows/validate-template-config.yml @@ -0,0 +1,39 @@ +# ------------------------------------------------------------------------------ +# Validate a dca template config file against the dca template config schema +# ------------------------------------------------------------------------------ +name: Validate Template Config +on: + push: + paths: + - 'dcc/*dca-template-config.json' + - 'test/*dca-template-config.json' + - 'schemas/dca_template_config.schema.json' + pull_request: + branches: + - 'main' + - 'staging' + - 'dev' + paths: + - 'dcc/*dca-template-config.json' + - 'test/*dca-template-config.json' + - 'schemas/dca_template_config.schema.json' + +jobs: + validate-template-config: + runs-on: ubuntu-latest + steps: + - id: files + uses: masesgroup/retrieve-changed-files@v3 + with: + format: 'csv' + - id: filter_files + name: Filter files to dca-template-config.json files + run: | + echo "configs=$(echo ${{ steps.files.outputs.added_modified }} | tr ',' '\n' | grep dca-template-config\\.json | tr '\n' ',' | sed 's/\(.*\),/\1 /')" >> "$GITHUB_OUTPUT" + - uses: actions/checkout@v4 + - name: Validate JSON + if: ${{ steps.filter_files.outputs.configs != '' }} + uses: docker://orrosenblatt/validate-json-action:latest + env: + INPUT_SCHEMA: schemas/dca_template_config.schema.json + INPUT_JSONS: ${{ steps.filter_files.outputs.configs }} diff --git a/.github/workflows/validate-tenants-config.yml b/.github/workflows/validate-tenants-config.yml new file mode 100644 index 0000000..aa1643a --- /dev/null +++ b/.github/workflows/validate-tenants-config.yml @@ -0,0 +1,28 @@ +# ------------------------------------------------------------------------------ +# Validate the tenants.json file against the tenants.schema.json schema +# ------------------------------------------------------------------------------ +name: validate tenants config +on: + push: + paths: + - 'tenants.json' + - 'schemas/tenants.schema.json' + pull_request: + branches: + - 'main' + - 'staging' + - 'dev' + paths: + - 'tenants.json' + - 'schemas/tenants.schema.json' + +jobs: + validate-tenants-config: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Validate JSON + uses: docker://orrosenblatt/validate-json-action:latest + env: + INPUT_SCHEMA: schemas/tenants.schema.json + INPUT_JSONS: tenants.json