From 99fe304ba03638a9bccfc1a762ddcf6e33ba68c7 Mon Sep 17 00:00:00 2001 From: James Troup Date: Sat, 4 Apr 2026 19:52:44 +0100 Subject: [PATCH] chore: add CI, pre-commit, dependabot, and bump provider versions --- .github/dependabot.yaml | 14 ++++++ .github/workflows/ci.yml | 40 ++++++++++++++++ .pre-commit-config.yaml | 22 +++++++++ .tool-versions | 4 ++ justfile | 10 ++++ terraform/.terraform.lock.hcl | 90 ++++++++++++++++++----------------- terraform/provider.tf | 19 ++++++++ 7 files changed, 155 insertions(+), 44 deletions(-) create mode 100644 .github/dependabot.yaml create mode 100644 .github/workflows/ci.yml create mode 100644 .pre-commit-config.yaml create mode 100644 .tool-versions create mode 100644 justfile diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..65b0f23 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,14 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + cooldown: + default-days: 7 + groups: + github-actions: + patterns: + - "*" + commit-message: + prefix: chore diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..0479561 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,40 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +permissions: {} + +jobs: + Lint: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + persist-credentials: false + + - name: Set tool versions + uses: wistia/parse-tool-versions@32f568a4ffd4bfa7720ebf93f171597d1ebc979a # v2.1.1 + with: + postfix: _TOOL_VERSION + + - name: Setup Terraform + uses: hashicorp/setup-terraform@5e8dbf3c6d9deaf4193ca7a8fb23f2ac83bb6c85 # v4.0.0 + with: + terraform_version: ${{ env.TERRAFORM_TOOL_VERSION }} + + - name: Setup TFLint + uses: terraform-linters/setup-tflint@b480b8fcdaa6f2c577f8e4fa799e89e756bb7c93 # v6.2.2 + with: + tflint_version: ${{ env.TFLINT_TOOL_VERSION }} + + - name: Run pre-commit checks + uses: j178/prek-action@53276d8b0d10f8b6672aa85b4588c6921d0370cc # v2.0.1 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..ea0cb07 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,22 @@ +repos: + - repo: https://github.com/antonbabenko/pre-commit-terraform + rev: d0e12caebb2ab0ee8bf98181c8bfe9702bca103d # frozen: v1.105.0 + hooks: + - id: terraform_fmt + - id: terraform_validate + - id: terraform_tflint + + - repo: https://github.com/rhysd/actionlint + rev: 393031adb9afb225ee52ae2ccd7a5af5525e03e8 # frozen: v1.7.11 + hooks: + - id: actionlint + + - repo: https://github.com/zizmorcore/zizmor-pre-commit + rev: ea2eb407b4cbce87cf0d502f36578950494f5ac9 # frozen: v1.23.1 + hooks: + - id: zizmor + + - repo: https://github.com/codespell-project/codespell + rev: 2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a # frozen: v2.4.2 + hooks: + - id: codespell diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..19b155f --- /dev/null +++ b/.tool-versions @@ -0,0 +1,4 @@ +just 1.40.0 +terraform 1.13.5 +tflint v0.61.0 +uv 0.8.14 diff --git a/justfile b/justfile new file mode 100644 index 0000000..f774cff --- /dev/null +++ b/justfile @@ -0,0 +1,10 @@ +_: + @just --list --unsorted + +# format terraform files +format: + terraform fmt -recursive + +# lint files +lint: + uvx prek run --all-files diff --git a/terraform/.terraform.lock.hcl b/terraform/.terraform.lock.hcl index c2d3b3f..d5ea9ef 100644 --- a/terraform/.terraform.lock.hcl +++ b/terraform/.terraform.lock.hcl @@ -2,62 +2,64 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/hashicorp/aws" { - version = "4.44.0" + version = "6.39.0" + constraints = "~> 6.0" hashes = [ - "h1:fwOG8IE3AiHdUBo841jC2p4rIF45pWYettgBshcMyJI=", - "h1:wAeFHsssJC1PU3LH4ky8cofsJq4MxadW64mAZGub0d4=", - "zh:08da139140530900ebb07baedd9044b5002f0296f5f160d96783e72080158326", - "zh:2d677b9e4f195481098cec843d0138f3a198f1f93be42c1d1654b71438e2f5ab", - "zh:3cdf4e06b9b8f30f6652a4519d586febc4ab92168a39df2610f06e04a8e6dda7", - "zh:677933957d1de40c8b5ae252c5cd369617af4cb7a26e8f750ad6f175fef4f767", - "zh:6a266ae5488d6daa53bbe6c2cb8368833381eacd9de7f05f059f5100535a0cb2", - "zh:6cdccaab0a444314b10246c8d58b0ffb84d32ddac70e36a12b45eb518e0ae065", - "zh:6ed49c7680298761416d408bc91cd137ae7cff38181fc143b1dfab1a32b44516", - "zh:8403a0fbf439009b3b0c77969c560cf426aeb3d99a78fdd27afbf4694ca0f3e7", - "zh:8ddfd85c6789bca7c66346da1f3488488c20bc4d773cd26669059c437cfbabd6", - "zh:941455d0fa54b0451387cfd611d63766f4b18cb24038f25ee0794097755e654d", + "h1:jweey4Iefm/DuuBg84saQ8vz5IO3vC6hDFTU/eGdmBI=", + "zh:00c3e3c38063ff629d6fdbce04e9ac2e241566e0f5ad5399c335f0abdefd7bff", + "zh:148f95b62791080537d926b9d2f5d8457cca45921d9b1019d03ceb3ab93bf9db", + "zh:203da629ed5191dd5d7aa3427a5d1d1a83eed5c1b0114166897206973f0d0fd0", + "zh:21923eedbc60b4f68c8d717b951d16b0b1bbf31d66330c7be228869bec18f7ce", + "zh:26226f02e3661b3d071c01601b654a308b29d21758b75692bec66f70c6f6b945", + "zh:271c7c6fadcd8ac7ed37c11e61c0f374773eaaa5293703499f8a0f75830060e0", + "zh:46e319a8888dc50ed8d26a1cbee9637f529112a88f5d44decc8f1d10ef968ffe", "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", - "zh:bc01398c714d621ad9f4e81863446cd8e1135a63a5ff7c36d3fb01ab27e96439", - "zh:ce3b39a43b9c5b34a62047fe2a395b72a62cc0b5dc7e8a5be0f778159ac486d2", - "zh:d5891b82511af25570287578318aaee4fa86e05599cc8c81d44ea9e094f4a728", - "zh:df5329c186545d273f9abaeeb39251d6cfcc446bccc44e27d1d7d02ebf145e2f", + "zh:a3c3ca09cdbf3b9a3f892a23c000ff04772bdf19f626959ea83d0803c8fd2350", + "zh:a5fa6515ffc3c815e0d2204d67e838f5bad8635009dab85211d166c7ae729d2c", + "zh:c0807566b4ddde8390f50c5475464103f066bc7f511a6c0be762d75cb6d1a078", + "zh:da754a529fd0e06ac372f62d88566f85a8c4bcec7ee9a231b65e0a0148165e63", + "zh:dcb768e48363a9f4dffaf2dc7d01f1877285528925ec50de6335286298e37e1d", + "zh:eac9de9d123c679ea3035199fb9c588a08cda281cbabf948dc696e2a1a1b9063", + "zh:fef276b6331c663ca0e60dc7f637b2b8244825b8c9bc721481957e58f74ffb4f", ] } provider "registry.terraform.io/hashicorp/azurerm" { - version = "3.64.0" + version = "4.67.0" + constraints = "~> 4.0" hashes = [ - "h1:cmleWBjFp4eK0iQICvCKxTxECx8nvl0MAfth9mLzT70=", - "zh:08463ceca4208419715b5816d120fe05f2abda9bea083cfe1818e25517483581", - "zh:130760c5ab791bd114b3edbb79b95138a60cd97f1b72e4096b33a207b367d126", - "zh:26403fc9be70b60fddf09b1510067763b2da57cf3b116d375b5bee048acad8d2", - "zh:352c79bb75c1a0d88a686c4e22fded1114de0249aba081e34265d4b11c878fc7", - "zh:52ee37390b70e89add8b70b43c05bc90037a723a726c63440943f9bf2f064817", - "zh:79ad0c72e2b15b9412f1fdb5461dfcec6ca192ab4512e70fcbcea4585c02d71e", - "zh:7a60226f41064a95db14e64dc0250063a621df254ee41e4b3b25ccc5ce47936d", - "zh:9191136871cf2ffa4f1963a6b79d6868f911f827330234421af869df616bacd0", - "zh:a32cb5eb225ccea6d3d5e70f948dfc4b4ed442cd20ceb80ce014a3df05ab93e8", - "zh:de16cb2726016e0eb9a04599fdb81b503a96263b1805243b75b202c559051a5e", - "zh:ee636ddb5281772071f9952f75b2c7ad7f443f25c84c96e6e78d628a151ec4ac", - "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "h1:uBd8sVmk+t3yvxDP3tscD8VloIma0F79CRzNXQowOLY=", + "zh:49a1531297510b684103c06d32e9ef1d810380ed55895f6b799913e9679141dc", + "zh:4b0a8e5158296c1c02ab64e2374adf9df557fe1eb8191dffd158ed04a648bb3e", + "zh:55ac4268c17bdb6f9bb9b6d761269e0e34fb88be14c7759dbcbaa9de9c94b23c", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:907f4ece1509bdc54c75e2eacf57c613f1f28ee2431a01f0a3ba5edb757d260d", + "zh:b468e985cabd33b0392c0679816b2673e8b6740a1dd7aacb78a1a919e994a8e3", + "zh:b8c7b4fce1b04ceb06393e9db03f2ccbfa5f35f9a48993c961ef4cb548c7dcb6", + "zh:b94e676de6aa99b856c50b14b21a5708ded3eeb6e3fea920ccbe4295f1e85e0f", + "zh:d59b7fc240a1e976f75810a005dc88491e03367ab3e8c469a99b1b880b727fa7", + "zh:ef296258fbc6faa4be0c173afb04e76cfded56c8c5a5021463f4674391b35b20", + "zh:f7a9c69df8707ea5e96cda1c7597e9ca4d2e671c14d50a5a61187ee253db9c0e", + "zh:ffa2655141881f7a8c25dec4cc4f37cfe23ad3448a6a33295c526938b4f8b4f2", ] } provider "registry.terraform.io/hashicorp/random" { - version = "3.5.1" + version = "3.8.1" + constraints = "~> 3.0" hashes = [ - "h1:sZ7MTSD4FLekNN2wSNFGpM+5slfvpm5A/NLVZiB7CO0=", - "zh:04e3fbd610cb52c1017d282531364b9c53ef72b6bc533acb2a90671957324a64", - "zh:119197103301ebaf7efb91df8f0b6e0dd31e6ff943d231af35ee1831c599188d", - "zh:4d2b219d09abf3b1bb4df93d399ed156cadd61f44ad3baf5cf2954df2fba0831", - "zh:6130bdde527587bbe2dcaa7150363e96dbc5250ea20154176d82bc69df5d4ce3", - "zh:6cc326cd4000f724d3086ee05587e7710f032f94fc9af35e96a386a1c6f2214f", + "h1:Eexl06+6J+s75uD46+WnZtpJZYRVUMB0AiuPBifK6Jc=", + "zh:08dd03b918c7b55713026037c5400c48af5b9f468f483463321bd18e17b907b4", + "zh:0eee654a5542dc1d41920bbf2419032d6f0d5625b03bd81339e5b33394a3e0ae", + "zh:229665ddf060aa0ed315597908483eee5b818a17d09b6417a0f52fd9405c4f57", + "zh:2469d2e48f28076254a2a3fc327f184914566d9e40c5780b8d96ebf7205f8bc0", + "zh:37d7eb334d9561f335e748280f5535a384a88675af9a9eac439d4cfd663bcb66", + "zh:741101426a2f2c52dee37122f0f4a2f2d6af6d852cb1db634480a86398fa3511", "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", - "zh:b6d88e1d28cf2dfa24e9fdcc3efc77adcdc1c3c3b5c7ce503a423efbdd6de57b", - "zh:ba74c592622ecbcef9dc2a4d81ed321c4e44cddf7da799faa324da9bf52a22b2", - "zh:c7c5cde98fe4ef1143bd1b3ec5dc04baf0d4cc3ca2c5c7d40d17c0e9b2076865", - "zh:dac4bad52c940cd0dfc27893507c1e92393846b024c5a9db159a93c534a3da03", - "zh:de8febe2a2acd9ac454b844a4106ed295ae9520ef54dc8ed2faf29f12716b602", - "zh:eab0d0495e7e711cca367f7d4df6e322e6c562fc52151ec931176115b83ed014", + "zh:a902473f08ef8df62cfe6116bd6c157070a93f66622384300de235a533e9d4a9", + "zh:b85c511a23e57a2147355932b3b6dce2a11e856b941165793a0c3d7578d94d05", + "zh:c5172226d18eaac95b1daac80172287b69d4ce32750c82ad77fa0768be4ea4b8", + "zh:dab4434dba34aad569b0bc243c2d3f3ff86dd7740def373f2a49816bd2ff819b", + "zh:f49fd62aa8c5525a5c17abd51e27ca5e213881d58882fd42fec4a545b53c9699", ] } diff --git a/terraform/provider.tf b/terraform/provider.tf index 469c01f..46ce002 100644 --- a/terraform/provider.tf +++ b/terraform/provider.tf @@ -1,3 +1,22 @@ +terraform { + required_version = ">= 1.13.5" + + required_providers { + aws = { + source = "hashicorp/aws" + version = "~> 6.0" + } + azurerm = { + source = "hashicorp/azurerm" + version = "~> 4.0" + } + random = { + source = "hashicorp/random" + version = "~> 3.0" + } + } +} + provider "aws" { region = "us-east-1" }