diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 241026e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -addons: - apt: - packages: - - git - - make - - curl - -install: - - make init - -script: - - make terraform/install - - make terraform/get-plugins - - make terraform/get-modules - - make terraform/lint - - make terraform/validate diff --git a/README.md b/README.md index 578ea6c..3a4f980 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ # terraform-github-repository-webhooks - [![Build Status](https://travis-ci.org/cloudposse/terraform-github-repository-webhooks.svg?branch=master)](https://travis-ci.org/cloudposse/terraform-github-repository-webhooks) [![Latest Release](https://img.shields.io/github/release/cloudposse/terraform-github-repository-webhooks.svg)](https://github.com/cloudposse/terraform-github-repository-webhooks/releases/latest) [![Slack Community](https://slack.cloudposse.com/badge.svg)](https://slack.cloudposse.com) + [![Codefresh Build Status](https://g.codefresh.io/api/badges/pipeline/cloudposse/terraform-modules%2Fterraform-github-repository-webhooks?type=cf-1)](https://g.codefresh.io/public/accounts/cloudposse/pipelines/5d1bcc1a1bde727a7172235e) [![Latest Release](https://img.shields.io/github/release/cloudposse/terraform-github-repository-webhooks.svg)](https://github.com/cloudposse/terraform-github-repository-webhooks/releases/latest) [![Slack Community](https://slack.cloudposse.com/badge.svg)](https://slack.cloudposse.com) Terraform module to provision webhooks on a set of GitHub repositories. @@ -52,13 +52,15 @@ Instead pin to the release tag (e.g. `?ref=tags/x.y.z`) of one of our [latest re Create a GitHub Personal Access Token that has `admin:repo_hook` for full control of repository hooks; in otherwords, we need `write:repo_hook` to write repository hooks and `read:repo_hook` to read repository hooks. +For a complete example, see [examples/complete](examples/complete). + ```hcl module "github_webhooks" { source = "git::https://github.com/cloudposse/terraform-github-repository-webhooks.git?ref=master" github_organization = "cloudposse" github_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - github_repositories = "geodesic" - webhook_url = "https://atlantis.prod.company.com/" + github_repositories = ["geodesic"] + webhook_url = "https://atlantis.prod.company.com" webhook_content_type = "application/json" events = ["issues"] } @@ -83,17 +85,23 @@ Available targets: | Name | Description | Type | Default | Required | |------|-------------|:----:|:-----:|:-----:| -| active | Indicate of the webhook should receive events | string | `true` | no | -| enabled | Whether or not to enable this module | string | `true` | no | -| events | A list of events which should trigger the webhook. | list | `` | no | +| active | Indicate of the webhook should receive events | bool | `true` | no | +| enabled | Whether or not to enable this module | bool | `true` | no | +| events | A list of events which should trigger the webhook. | list(string) | `` | no | | github_organization | GitHub organization to use when creating webhooks | string | - | yes | -| github_repositories | List of repository names which should be associated with the webhook | list | `` | no | +| github_repositories | List of repository names which should be associated with the webhook | list(string) | `` | no | | github_token | GitHub token used for API access. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable | string | `` | no | -| webhook_content_type | Webhook Content Type (E.g. json) | string | `json` | no | -| webhook_insecure_ssl | Webhook Insecure SSL (E.g. trust self-signed certificates) | string | `false` | no | +| webhook_content_type | Webhook Content Type (e.g. `json`) | string | `json` | no | +| webhook_insecure_ssl | Webhook Insecure SSL (e.g. trust self-signed certificates) | bool | `false` | no | | webhook_secret | Webhook secret | string | `` | no | | webhook_url | Webhook URL | string | - | yes | +## Outputs + +| Name | Description | +|------|-------------| +| webhook_url | Webhook URL | + @@ -243,11 +251,11 @@ Check out [our other projects][github], [follow us on twitter][twitter], [apply |---|---|---| [osterman_homepage]: https://github.com/osterman - [osterman_avatar]: https://github.com/osterman.png?size=150 + [osterman_avatar]: https://img.cloudposse.com/150x150/https://github.com/osterman.png [goruha_homepage]: https://github.com/goruha - [goruha_avatar]: https://github.com/goruha.png?size=150 + [goruha_avatar]: https://img.cloudposse.com/150x150/https://github.com/goruha.png [aknysh_homepage]: https://github.com/aknysh - [aknysh_avatar]: https://github.com/aknysh.png?size=150 + [aknysh_avatar]: https://img.cloudposse.com/150x150/https://github.com/aknysh.png diff --git a/README.yaml b/README.yaml index e4869b9..de8a01e 100644 --- a/README.yaml +++ b/README.yaml @@ -20,9 +20,9 @@ description: |- # Badges to display badges: - - name: "Build Status" - image: "https://travis-ci.org/cloudposse/terraform-github-repository-webhooks.svg?branch=master" - url: "https://travis-ci.org/cloudposse/terraform-github-repository-webhooks" + - name: "Codefresh Build Status" + image: "https://g.codefresh.io/api/badges/pipeline/cloudposse/terraform-modules%2Fterraform-github-repository-webhooks?type=cf-1" + url: "https://g.codefresh.io/public/accounts/cloudposse/pipelines/5d1bcc1a1bde727a7172235e" - name: "Latest Release" image: "https://img.shields.io/github/release/cloudposse/terraform-github-repository-webhooks.svg" url: "https://github.com/cloudposse/terraform-github-repository-webhooks/releases/latest" @@ -34,13 +34,15 @@ badges: usage: |- Create a GitHub Personal Access Token that has `admin:repo_hook` for full control of repository hooks; in otherwords, we need `write:repo_hook` to write repository hooks and `read:repo_hook` to read repository hooks. + For a complete example, see [examples/complete](examples/complete). + ```hcl module "github_webhooks" { source = "git::https://github.com/cloudposse/terraform-github-repository-webhooks.git?ref=master" github_organization = "cloudposse" github_token = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" - github_repositories = "geodesic" - webhook_url = "https://atlantis.prod.company.com/" + github_repositories = ["geodesic"] + webhook_url = "https://atlantis.prod.company.com" webhook_content_type = "application/json" events = ["issues"] } diff --git a/codefresh/test.yml b/codefresh/test.yml new file mode 100644 index 0000000..10a4c06 --- /dev/null +++ b/codefresh/test.yml @@ -0,0 +1,74 @@ +version: '1.0' + +stages: + - Prepare + - Test + +steps: + wait: + title: Wait + stage: Prepare + image: codefresh/cli:latest + commands: + - codefresh get builds --pipeline=${{CF_REPO_NAME}} --status running --limit 1000 -o json | jq --arg id ${{CF_BUILD_ID}} -ser 'flatten|.[-1].id==$id' + retry: + maxAttempts: 10 + delay: 20 + exponentialFactor: 1.1 + + main_clone: + title: "Clone repository" + type: git-clone + stage: Prepare + description: "Initialize" + repo: ${{CF_REPO_OWNER}}/${{CF_REPO_NAME}} + git: CF-default + revision: ${{CF_REVISION}} + + clean_init: + title: Prepare build-harness and test-harness + image: ${{TEST_IMAGE}} + stage: Prepare + commands: + - cf_export PATH="/usr/local/terraform/0.12/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + - make init + - git -C build-harness checkout master + - make -C test/ clean init TEST_HARNESS_BRANCH=master + - make -C test/src clean init + - find . -type d -name '.terraform' | xargs rm -rf + - find . -type f -name 'terraform.tfstate*' -exec rm -f {} \; + + test: + type: "parallel" + title: "Run tests" + description: "Run all tests in parallel" + stage: Test + steps: + test_readme_lint: + title: "Test README.md updated" + stage: "Test" + image: ${{TEST_IMAGE}} + description: Test "readme/lint" + commands: + - make readme/lint + + test_module: + title: Test module with bats + image: ${{TEST_IMAGE}} + stage: Test + commands: + - make -C test/ module + + test_examples_complete: + title: Test "examples/complete" with bats + image: ${{TEST_IMAGE}} + stage: Test + commands: + - make -C test/ examples/complete + +# test_examples_complete_terratest: +# title: Test "examples/complete" with terratest +# image: ${{TEST_IMAGE}} +# stage: Test +# commands: +# - make -C test/src diff --git a/docs/terraform.md b/docs/terraform.md index 44de6ab..b63ac76 100644 --- a/docs/terraform.md +++ b/docs/terraform.md @@ -2,14 +2,20 @@ | Name | Description | Type | Default | Required | |------|-------------|:----:|:-----:|:-----:| -| active | Indicate of the webhook should receive events | string | `true` | no | -| enabled | Whether or not to enable this module | string | `true` | no | -| events | A list of events which should trigger the webhook. | list | `` | no | +| active | Indicate of the webhook should receive events | bool | `true` | no | +| enabled | Whether or not to enable this module | bool | `true` | no | +| events | A list of events which should trigger the webhook. | list(string) | `` | no | | github_organization | GitHub organization to use when creating webhooks | string | - | yes | -| github_repositories | List of repository names which should be associated with the webhook | list | `` | no | +| github_repositories | List of repository names which should be associated with the webhook | list(string) | `` | no | | github_token | GitHub token used for API access. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable | string | `` | no | -| webhook_content_type | Webhook Content Type (E.g. json) | string | `json` | no | -| webhook_insecure_ssl | Webhook Insecure SSL (E.g. trust self-signed certificates) | string | `false` | no | +| webhook_content_type | Webhook Content Type (e.g. `json`) | string | `json` | no | +| webhook_insecure_ssl | Webhook Insecure SSL (e.g. trust self-signed certificates) | bool | `false` | no | | webhook_secret | Webhook secret | string | `` | no | | webhook_url | Webhook URL | string | - | yes | +## Outputs + +| Name | Description | +|------|-------------| +| webhook_url | Webhook URL | + diff --git a/examples/complete/fixtures.us-east-2.tfvars b/examples/complete/fixtures.us-east-2.tfvars new file mode 100644 index 0000000..486c055 --- /dev/null +++ b/examples/complete/fixtures.us-east-2.tfvars @@ -0,0 +1,9 @@ +region = "us-west-1" + +github_organization = "cloudposse" + +github_repositories = ["terraform-github-repository-webhooks"] + +webhook_url = "https://archive.sweetops.com" + +events = ["issue_comment", "pull_request", "pull_request_review", "pull_request_review_comment"] diff --git a/examples/complete/main.tf b/examples/complete/main.tf new file mode 100644 index 0000000..b17cb93 --- /dev/null +++ b/examples/complete/main.tf @@ -0,0 +1,13 @@ +provider "aws" { + region = var.region +} + +module "webhooks" { + source = "../../" + active = false + github_token = var.github_token + github_organization = var.github_organization + github_repositories = var.github_repositories + webhook_url = var.webhook_url + events = var.events +} diff --git a/examples/complete/outputs.tf b/examples/complete/outputs.tf new file mode 100644 index 0000000..61eb294 --- /dev/null +++ b/examples/complete/outputs.tf @@ -0,0 +1,4 @@ +output "webhook_url" { + description = "Webhook URL" + value = module.webhooks.webhook_url +} diff --git a/examples/complete/variables.tf b/examples/complete/variables.tf new file mode 100644 index 0000000..ce45504 --- /dev/null +++ b/examples/complete/variables.tf @@ -0,0 +1,32 @@ +variable "region" { + type = string + description = "AWS region" +} + +variable "github_token" { + type = string + default = "" + description = "GitHub token used for API access. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable" +} + +variable "github_organization" { + type = string + description = "GitHub organization to use when creating webhooks" +} + +variable "github_repositories" { + type = list(string) + description = "List of repository names which should be associated with the webhook" + default = [] +} + +variable "webhook_url" { + type = string + description = "Webhook URL" +} + +variable "events" { + # Full list of events available here: https://developer.github.com/v3/activity/events/types/ + type = list(string) + description = "A list of events which should trigger the webhook." +} diff --git a/examples/simple/main.tf b/examples/simple/main.tf deleted file mode 100644 index 04e95a0..0000000 --- a/examples/simple/main.tf +++ /dev/null @@ -1,13 +0,0 @@ -variable "github_token" { - default = "" - description = "GitHub token used for API access. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable" -} - -module "webhooks" { - source = "../../" - active = false - github_token = "${var.github_token}" - github_organization = "cloudposse" - github_repositories = ["terraform-github-repository-webhooks"] - webhook_url = "https://docs.cloudposse.com" -} diff --git a/main.tf b/main.tf index 553282b..38fa994 100644 --- a/main.tf +++ b/main.tf @@ -1,25 +1,25 @@ provider "github" { - token = "${var.github_token}" - organization = "${var.github_organization}" + token = var.github_token != "" ? var.github_token : null + organization = var.github_organization } resource "github_repository_webhook" "default" { - count = "${var.enabled == "true" && length(var.github_repositories) > 0 ? length(var.github_repositories) : 0}" + count = var.enabled && length(var.github_repositories) > 0 ? length(var.github_repositories) : 0 - repository = "${var.github_repositories[count.index]}" - active = "${var.active}" + repository = var.github_repositories[count.index] + active = var.active configuration { - url = "${var.webhook_url}" - content_type = "${var.webhook_content_type}" - secret = "${var.webhook_secret}" - insecure_ssl = "${var.webhook_insecure_ssl}" + url = var.webhook_url + content_type = var.webhook_content_type + secret = var.webhook_secret + insecure_ssl = var.webhook_insecure_ssl } - events = "${var.events}" + events = var.events lifecycle { # This is required for idempotency - ignore_changes = ["configuration.secret"] + ignore_changes = ["configuration[0].secret"] } } diff --git a/outputs.tf b/outputs.tf index 8b13789..e3d517d 100644 --- a/outputs.tf +++ b/outputs.tf @@ -1 +1,4 @@ - +output "webhook_url" { + description = "Webhook URL" + value = join("", github_repository_webhook.default.*.url) +} diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..442804a --- /dev/null +++ b/test/.gitignore @@ -0,0 +1 @@ +.test-harness diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 0000000..17b2fe7 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,43 @@ +TEST_HARNESS ?= https://github.com/cloudposse/test-harness.git +TEST_HARNESS_BRANCH ?= master +TEST_HARNESS_PATH = $(realpath .test-harness) +BATS_ARGS ?= --tap +BATS_LOG ?= test.log + +# Define a macro to run the tests +define RUN_TESTS +@echo "Running tests in $(1)" +@cd $(1) && bats $(BATS_ARGS) $(addsuffix .bats,$(addprefix $(TEST_HARNESS_PATH)/test/terraform/,$(TESTS))) +endef + +default: all + +-include Makefile.* + +## Provision the test-harnesss +.test-harness: + [ -d $@ ] || git clone --depth=1 -b $(TEST_HARNESS_BRANCH) $(TEST_HARNESS) $@ + +## Initialize the tests +init: .test-harness + +## Install all dependencies (OS specific) +deps:: + @exit 0 + +## Clean up the test harness +clean: + [ "$(TEST_HARNESS_PATH)" == "/" ] || rm -rf $(TEST_HARNESS_PATH) + +## Run all tests +all: module examples/complete + +## Run basic sanity checks against the module itself +module: export TESTS ?= installed lint get-modules module-pinning get-plugins provider-pinning validate terraform-docs input-descriptions output-descriptions +module: deps + $(call RUN_TESTS, ../) + +## Run tests against example +examples/complete: export TESTS ?= installed lint get-modules get-plugins validate +examples/complete: deps + $(call RUN_TESTS, ../$@) diff --git a/test/Makefile.alpine b/test/Makefile.alpine new file mode 100644 index 0000000..7925b18 --- /dev/null +++ b/test/Makefile.alpine @@ -0,0 +1,5 @@ +ifneq (,$(wildcard /sbin/apk)) +## Install all dependencies for alpine +deps:: init + @apk add --update terraform-docs@cloudposse json2hcl@cloudposse +endif diff --git a/test/src/.gitignore b/test/src/.gitignore new file mode 100644 index 0000000..31b0219 --- /dev/null +++ b/test/src/.gitignore @@ -0,0 +1,2 @@ +.gopath +vendor/ diff --git a/test/src/Gopkg.lock b/test/src/Gopkg.lock new file mode 100644 index 0000000..87bb6bd --- /dev/null +++ b/test/src/Gopkg.lock @@ -0,0 +1,92 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + digest = "1:ffe9824d294da03b391f44e1ae8281281b4afc1bdaa9588c9097785e3af10cec" + name = "github.com/davecgh/go-spew" + packages = ["spew"] + pruneopts = "UT" + revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73" + version = "v1.1.1" + +[[projects]] + digest = "1:75d6042fc66aebc974cc49b0c6c7cc3b9adb5f8130fbfa0dbec0820d990afa25" + name = "github.com/gruntwork-io/terratest" + packages = [ + "modules/collections", + "modules/customerrors", + "modules/files", + "modules/logger", + "modules/retry", + "modules/shell", + "modules/ssh", + "modules/terraform", + ] + pruneopts = "UT" + revision = "892abb2c35878d0808101bbfe6559e931dc2d354" + version = "v0.16.0" + +[[projects]] + digest = "1:0028cb19b2e4c3112225cd871870f2d9cf49b9b4276531f03438a88e94be86fe" + name = "github.com/pmezard/go-difflib" + packages = ["difflib"] + pruneopts = "UT" + revision = "792786c7400a136282c1664665ae0a8db921c6c2" + version = "v1.0.0" + +[[projects]] + digest = "1:5da8ce674952566deae4dbc23d07c85caafc6cfa815b0b3e03e41979cedb8750" + name = "github.com/stretchr/testify" + packages = [ + "assert", + "require", + ] + pruneopts = "UT" + revision = "ffdc059bfe9ce6a4e144ba849dbedead332c6053" + version = "v1.3.0" + +[[projects]] + branch = "master" + digest = "1:831470c2758c8b733941144f2803a0ccad0632c5a767415b777ebd296b5f463e" + name = "golang.org/x/crypto" + packages = [ + "curve25519", + "ed25519", + "ed25519/internal/edwards25519", + "internal/chacha20", + "internal/subtle", + "poly1305", + "ssh", + "ssh/agent", + ] + pruneopts = "UT" + revision = "22d7a77e9e5f409e934ed268692e56707cd169e5" + +[[projects]] + branch = "master" + digest = "1:76ee51c3f468493aff39dbacc401e8831fbb765104cbf613b89bef01cf4bad70" + name = "golang.org/x/net" + packages = ["context"] + pruneopts = "UT" + revision = "f3200d17e092c607f615320ecaad13d87ad9a2b3" + +[[projects]] + branch = "master" + digest = "1:181f3fd33e620b958b5ab77da177cf775cdcccd7db82963607875fbd09ae995e" + name = "golang.org/x/sys" + packages = [ + "cpu", + "unix", + ] + pruneopts = "UT" + revision = "9cd6430ef91e39e1a0ec0470cf1321a33ef1b887" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + input-imports = [ + "github.com/gruntwork-io/terratest/modules/terraform", + "github.com/stretchr/testify/assert", + ] + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/test/src/Gopkg.toml b/test/src/Gopkg.toml new file mode 100644 index 0000000..995bac5 --- /dev/null +++ b/test/src/Gopkg.toml @@ -0,0 +1,7 @@ +[[constraint]] + name = "github.com/stretchr/testify" + version = "1.2.2" + +[prune] + go-tests = true + unused-packages = true diff --git a/test/src/Makefile b/test/src/Makefile new file mode 100644 index 0000000..3784ad7 --- /dev/null +++ b/test/src/Makefile @@ -0,0 +1,50 @@ +PACKAGE = terraform-github-repository-webhooks +GOEXE ?= /usr/bin/go +GOPATH = $(CURDIR)/.gopath +GOBIN = $(GOPATH)/bin +BASE = $(GOPATH)/src/$(PACKAGE) +PATH := $(PATH):$(GOBIN) + +export TF_DATA_DIR ?= $(CURDIR)/.terraform +export TF_CLI_ARGS_init ?= -get-plugins=true +export GOPATH + +.PHONY: all +## Default target +all: test + +ifneq (,$(wildcard /sbin/apk)) +## Install go, if not installed +$(GOEXE): + apk add --update go +endif + +ifeq ($(shell uname -s),Linux) +## Install all `dep`, if not installed +$(GOBIN)/dep: + @mkdir -p $(GOBIN) + @curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh +endif + +## Prepare the GOPATH +$(BASE): $(GOEXE) + @mkdir -p $(dir $@) + @ln -sf $(CURDIR) $@ + +## Download vendor dependencies to vendor/ +$(BASE)/vendor: $(BASE) $(GOBIN)/dep + cd $(BASE) && dep ensure + +.PHONY : init +## Initialize tests +init: $(BASE)/vendor + +.PHONY : test +## Run tests +test: init + cd $(BASE) && go test -v -timeout 30m -run TestExamplesComplete + +.PHONY : clean +## Clean up files +clean: + rm -rf .gopath/ vendor/ $(TF_DATA_DIR) diff --git a/test/src/examples_complete_test.go b/test/src/examples_complete_test.go new file mode 100644 index 0000000..40556c1 --- /dev/null +++ b/test/src/examples_complete_test.go @@ -0,0 +1,34 @@ +package test + +import ( + "testing" + + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/stretchr/testify/assert" +) + +// Test the Terraform module in examples/complete using Terratest. +func TestExamplesComplete(t *testing.T) { + t.Parallel() + + terraformOptions := &terraform.Options{ + // The path to where our Terraform code is located + TerraformDir: "../../examples/complete", + Upgrade: true, + // Variables to pass to our Terraform code using -var-file options + VarFiles: []string{"fixtures.us-east-2.tfvars"}, + } + + // At the end of the test, run `terraform destroy` to clean up any resources that were created + defer terraform.Destroy(t, terraformOptions) + + // This will run `terraform init` and `terraform apply` and fail the test if there are any errors + terraform.InitAndApply(t, terraformOptions) + + // Run `terraform output` to get the value of an output variable + webhookUrl := terraform.Output(t, terraformOptions, "webhook_url") + + expectedWebhookUrl := "https://archive.sweetops.com" + // Verify we're getting back the outputs we expect + assert.Equal(t, expectedWebhookUrl, webhookUrl) +} diff --git a/variables.tf b/variables.tf index 3547ea3..d02f660 100644 --- a/variables.tf +++ b/variables.tf @@ -1,50 +1,58 @@ variable "enabled" { + type = bool description = "Whether or not to enable this module" - default = "true" + default = true } variable "github_token" { + type = string default = "" description = "GitHub token used for API access. If not provided, can be sourced from the `GITHUB_TOKEN` environment variable" } variable "github_organization" { + type = string description = "GitHub organization to use when creating webhooks" } variable "github_repositories" { + type = list(string) description = "List of repository names which should be associated with the webhook" - type = "list" default = [] } variable "webhook_url" { + type = string description = "Webhook URL" } variable "webhook_content_type" { - description = "Webhook Content Type (E.g. json)" + type = string + description = "Webhook Content Type (e.g. `json`)" default = "json" } variable "webhook_secret" { + type = string description = "Webhook secret" default = "" } variable "webhook_insecure_ssl" { - description = "Webhook Insecure SSL (E.g. trust self-signed certificates)" + type = bool + description = "Webhook Insecure SSL (e.g. trust self-signed certificates)" default = false } variable "active" { + type = bool description = "Indicate of the webhook should receive events" default = true } variable "events" { # Full list of events available here: https://developer.github.com/v3/activity/events/types/ + type = list(string) description = "A list of events which should trigger the webhook." - type = "list" default = ["issue_comment", "pull_request", "pull_request_review", "pull_request_review_comment"] } diff --git a/versions.tf b/versions.tf new file mode 100644 index 0000000..bcd91d5 --- /dev/null +++ b/versions.tf @@ -0,0 +1,8 @@ +terraform { + required_version = "~> 0.12.0" + + required_providers { + github = "~> 2.2" + local = "~> 1.2" + } +}