Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
pre-commit.yaml 3.65 KiB
name: Pre-Commit

on:
  pull_request:
  push:
    branches:
      - main

jobs:
  # Min Terraform version(s)
  getDirectories:
    name: Get root directories
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Install Python
        uses: actions/setup-python@v2
      - name: Build matrix
        id: matrix
        run: |
          DIRS=$(python -c "import json; import glob; print(json.dumps([x.replace('/versions.tf', '') for x in glob.glob('./**/versions.tf', recursive=True)]))")
          echo "::set-output name=directories::$DIRS"
    outputs:
      directories: ${{ steps.matrix.outputs.directories }}

  preCommitMinVersions:
    name: Min TF validate
    needs: getDirectories
    runs-on: ubuntu-latest
    strategy:
      matrix:
        directory: ${{ fromJson(needs.getDirectories.outputs.directories) }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Install Python
        uses: actions/setup-python@v2
      - name: Terraform min/max versions
        id: minMax
        uses: clowdhaus/terraform-min-max@v1.0.2
        with:
          directory: ${{ matrix.directory }}
      - name: Install Terraform v${{ steps.minMax.outputs.minVersion }}
        uses: hashicorp/setup-terraform@v1
        with:
          terraform_version: ${{ steps.minMax.outputs.minVersion }}
      - name: Install pre-commit dependencies
        run: pip install pre-commit
      - name: Execute pre-commit
        # Run only validate pre-commit check on min version supported
        if: ${{ matrix.directory !=  '.' }}
        run: pre-commit run terraform_validate --color=always --show-diff-on-failure --files ${{ matrix.directory }}/*
      - name: Execute pre-commit
        # Run only validate pre-commit check on min version supported
        if: ${{ matrix.directory ==  '.' }}
        run: pre-commit run terraform_validate --color=always --show-diff-on-failure --files $(ls *.tf)

  # Max Terraform version
  getBaseVersion:
    name: Module max TF version
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Terraform min/max versions
        id: minMax
        uses: clowdhaus/terraform-min-max@v1.0.2
    outputs:
      minVersion: ${{ steps.minMax.outputs.minVersion }}