# terraform-validate Validate Terraform configuration files using the official Terraform CLI. ## Inputs | Input | Required | Default | Description | |-------|----------|---------|-------------| | `terraform-dir` | No | `terraform` | Directory containing `.tf` files | | `terraform-version` | No | `~1.15` | Terraform version to use | | `workspace` | No | `""` | Terraform workspace to use | | `jfrog-token` | No | `""` | JFrog Artifactory token for the Terraform provider registry (`TF_TOKEN_schmalz_jfrog_io`) | | `mock-files` | No | `""` | Newline-separated list of file paths (relative to repo root) to create as empty files before validation. Useful when Terraform uses `file()` references that do not exist in CI. | ## Usage ```yaml - uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/terraform-validate@terraform-validate-v1 with: workspace: stage jfrog-token: ${{ secrets.JFROG_TOKEN }} ``` With mock files for `file()` dependencies: ```yaml - uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/terraform-validate@terraform-validate-v1 with: workspace: stage jfrog-token: ${{ secrets.JFROG_TOKEN }} mock-files: | config/app.json secrets/tls.crt secrets/tls.key ``` ## Notes - Runs `terraform init -backend=false`, `terraform fmt -check -recursive`, and `terraform validate`. - Sets `TF_WORKSPACE` during validate if `workspace` is provided. - Sets `TF_TOKEN_schmalz_jfrog_io` on both `init` and `validate` steps if `jfrog-token` is provided. - When `mock-files` is set, empty files are created at the given paths (including any missing parent directories) before `terraform init` runs. This allows validation of configurations that reference external files via `file()`.