@@ -142,45 +142,40 @@ jobs:
142142
143143 - run : tflint --config .ci/.tflint.hcl --init
144144
145+ - run : sudo apt-get update && sudo apt-get install -y parallel
146+
145147 - run : |
146- exit_code=0
147-
148- # Configure the rules for tflint.
149- # The *_invalid_* rules disabled here prevent evaluation of expressions.
150- # Do not disable *_invalid_name rules, since these are good checks for e.g. "%s" formatting verbs
151- # being carried over from test cases.
152- shared_rules=(
153- "--disable-rule=aws_cloudwatch_event_target_invalid_arn"
154- "--disable-rule=aws_db_instance_default_parameter_group"
155- "--disable-rule=aws_elasticache_cluster_default_parameter_group"
156- "--disable-rule=aws_elasticache_replication_group_default_parameter_group"
157- "--disable-rule=aws_iam_policy_sid_invalid_characters"
158- "--disable-rule=aws_iam_saml_provider_invalid_saml_metadata_document"
159- "--disable-rule=aws_iam_server_certificate_invalid_certificate_body"
160- "--disable-rule=aws_iam_server_certificate_invalid_private_key"
161- "--disable-rule=aws_iot_certificate_invalid_csr"
162- "--disable-rule=aws_lb_invalid_load_balancer_type"
163- "--disable-rule=aws_lb_target_group_invalid_protocol"
164- "--disable-rule=aws_networkfirewall_rule_group_invalid_rules"
165- "--disable-rule=aws_s3_object_copy_invalid_source"
166- "--disable-rule=aws_servicecatalog_portfolio_share_invalid_type"
167- "--disable-rule=aws_transfer_ssh_key_invalid_body"
168- "--disable-rule=terraform_unused_declarations"
169- "--disable-rule=terraform_typed_variables"
170- )
171- while read -r filename; do
148+ validate_file() {
149+ filename=$1
150+
151+ # Configure the rules for tflint.
152+ shared_rules=(
153+ "--disable-rule=aws_cloudwatch_event_target_invalid_arn"
154+ "--disable-rule=aws_db_instance_default_parameter_group"
155+ "--disable-rule=aws_elasticache_cluster_default_parameter_group"
156+ "--disable-rule=aws_elasticache_replication_group_default_parameter_group"
157+ "--disable-rule=aws_iam_policy_sid_invalid_characters"
158+ "--disable-rule=aws_iam_saml_provider_invalid_saml_metadata_document"
159+ "--disable-rule=aws_iam_server_certificate_invalid_certificate_body"
160+ "--disable-rule=aws_iam_server_certificate_invalid_private_key"
161+ "--disable-rule=aws_iot_certificate_invalid_csr"
162+ "--disable-rule=aws_lb_invalid_load_balancer_type"
163+ "--disable-rule=aws_lb_target_group_invalid_protocol"
164+ "--disable-rule=aws_networkfirewall_rule_group_invalid_rules"
165+ "--disable-rule=aws_s3_object_copy_invalid_source"
166+ "--disable-rule=aws_servicecatalog_portfolio_share_invalid_type"
167+ "--disable-rule=aws_transfer_ssh_key_invalid_body"
168+ "--disable-rule=terraform_unused_declarations"
169+ "--disable-rule=terraform_typed_variables"
170+ )
171+
172172 rules=("${shared_rules[@]}")
173173 if [[ "$filename" == "./website/docs/guides/version-2-upgrade.html.markdown" ]]; then
174- # ./website/docs/guides/version-2-upgrade.html.markdown should still include pre-0.12 syntax,
175- # since v1.0 does not support Terraform 0.12.
176174 rules+=(
177175 "--disable-rule=terraform_deprecated_index"
178176 "--disable-rule=terraform_deprecated_interpolation"
179177 )
180178 elif [[ "$filename" == "./website/docs/guides/version-3-upgrade.html.markdown" ]]; then
181- # ./website/docs/guides/version-3-upgrade.html.markdown has one example showing migration from
182- # pre-0.12 syntax to 0.12 syntax. We can't customize rules per block, and adding a
183- # tflint-ignore directive to documentation is not ideal.
184179 rules+=(
185180 "--enable-rule=terraform_deprecated_index"
186181 "--disable-rule=terraform_deprecated_interpolation"
@@ -192,10 +187,10 @@ jobs:
192187 )
193188 fi
194189
195- # We need to capture the output and error code here. We don't want to exit on the first error
196- set +e
197- ./.ci/scripts/validate-terraform-file.sh "$filename" "${rules[@]}" || exit_code=1
198- set -e
199- done < <(find ./website/docs -not \( -path ./website/docs/cdktf -prune \) -type f -name '*.markdown' | sort -u)
190+ ./.ci/scripts/validate-terraform-file.sh "$filename" "${rules[@]}"
191+ }
192+ export -f validate_file
200193
201- exit $exit_code
194+ find ./website/docs -not \( -path ./website/docs/cdktf -prune \) -type f -name '*.markdown' | \
195+ sort -u | \
196+ parallel -j 16 --halt soon,fail=1 validate_file {}
0 commit comments