# Copyright 2023 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: "Linting" on: pull_request: branches: - master jobs: linting: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.10" cache: 'pip' cache-dependency-path: 'tools/requirements.txt' - name: Set up Terraform uses: hashicorp/setup-terraform@v2 with: terraform_version: 1.7.4 - name: Install dependencies run: | pip install -r tools/requirements.txt - name: Boilerplate id: boilerplate run: | python3 tools/check_boilerplate.py $GITHUB_WORKSPACE - name: Terraform Linting Check id: fmt run: | terraform fmt -recursive -check -diff $GITHUB_WORKSPACE - name: Check documentation id: documentation-fabric run: | python3 tools/check_documentation.py --show-diffs --no-show-summary modules fast blueprints - name: Check documentation links id: documentation-links-fabric run: | python3 tools/check_links.py --no-show-summary . - name: Check name length (fast) id: name-length-fast run: | python3 tools/check_names.py --prefix-length=10 --failed-only fast/stages - name: Check python formatting id: yapf run: | yapf --style="{based_on_style: google, indent_width: 2, SPLIT_BEFORE_NAMED_ASSIGNS: false}" -p -d -r \ tools/*.py \ blueprints - name: Check blueprint metadata id: metadata run: | python tools/validate_metadata.py -v --failed-only blueprints - name: Check modules versions id: versions run: | OUTPUT=$(find . -type f -name 'versions.tf' -exec diff -ub default-versions.tf {} \;) echo "${OUTPUT}" [[ -z "${OUTPUT}" ]]