# Copyright 2024 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@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.10" cache: 'pip' cache-dependency-path: 'tools/requirements.txt' - name: Set up Terraform uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.7.4 - uses: terraform-linters/setup-tflint@v4 name: Setup TFLint with: tflint_version: v0.50.3 - name: Init TFLint run: | cp .tflint.hcl ~ tflint --init env: # https://github.com/terraform-linters/tflint/blob/master/docs/user-guide/plugins.md#avoiding-rate-limiting GITHUB_TOKEN: ${{ github.token }} - 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: TFLint Modules run: cd modules && tflint --recursive -f compact - name: TFLint FAST run: | python3 tools/tflint-fast.py - 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 -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}" ]]