From 3d7ceb448009b759fc32024d53cb991fec414939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Silviu=20Tanas=C4=83?= Date: Tue, 3 Sep 2024 15:13:02 +0300 Subject: [PATCH] feat(vcs-aggregated-checks): exposes VCS checks settings in the available VCS integrations (#566) * chore: updates the SPACELIFT_API_KEY_ENDPOINT to use the new, non-secret, variable * feat(vcs-aggregated-checks): exposes VCS checks settings in GitLab integration * feat(vcs-aggregated-checks): exposes VCS checks setting in Bitbucket Cloud integration * feat(vcs-aggregated-checks): exposes VCS checks settings in Bitbucket Data Center integration * feat(vcs-aggregated-checks): exposes VCS checks settings in Azure DevOps integration * feat(vcs-aggregated-checks): exposes VCS checks settings in GitHub Enterprise integration --- .github/workflows/test-prod.yml | 12 +++++- .github/workflows/test.yml | 12 +++++- docs/data-sources/azure_devops_integration.md | 1 + .../bitbucket_cloud_integration.md | 1 + .../bitbucket_datacenter_integration.md | 1 + .../github_enterprise_integration.md | 1 + docs/data-sources/gitlab_integration.md | 1 + .../bitbucket_datacenter_integration.md | 1 + docs/resources/gitlab_integration.md | 1 + spacelift/config_test.go | 10 +++++ spacelift/data_azure_devops_integration.go | 8 ++++ .../data_azure_devops_integration_test.go | 2 + spacelift/data_bitbucket_cloud_integration.go | 8 ++++ .../data_bitbucket_cloud_integration_test.go | 2 + .../data_bitbucket_datacenter_integration.go | 8 ++++ ...a_bitbucket_datacenter_integration_test.go | 2 + .../data_github_enterprise_integration.go | 10 ++++- ...data_github_enterprise_integration_test.go | 2 + spacelift/data_gitlab_integration.go | 7 ++++ spacelift/data_gitlab_integration_test.go | 2 + spacelift/gitlab_integration.go | 1 + .../bitbucket_datacenter_integration.go | 1 + .../internal/structs/gitlab_integration.go | 1 + spacelift/internal/structs/vcs/checks.go | 12 ++++++ spacelift/internal/structs/vcs/input.go | 1 + spacelift/internal/structs/vcs/update.go | 1 + ...source_bitbucket_datacenter_integration.go | 9 +++++ ...e_bitbucket_datacenter_integration_test.go | 39 +++++++++++++++---- spacelift/resource_gitlab_integration.go | 9 +++++ spacelift/resource_gitlab_integration_test.go | 39 +++++++++++++++---- 30 files changed, 188 insertions(+), 17 deletions(-) create mode 100644 spacelift/internal/structs/vcs/checks.go diff --git a/.github/workflows/test-prod.yml b/.github/workflows/test-prod.yml index da045a33..923c34c1 100644 --- a/.github/workflows/test-prod.yml +++ b/.github/workflows/test-prod.yml @@ -25,7 +25,7 @@ jobs: - name: Test with coverage (prod - just checking it will works, no env missing etc) run: go test -parallel 20 -timeout 30m -coverprofile=coverage.txt -coverpkg=./... ./... env: - SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_ENDPOINT }} + SPACELIFT_API_KEY_ENDPOINT: ${{ vars.SPACELIFT_API_KEY_ENDPOINT }} SPACELIFT_API_KEY_ID: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_ID }} SPACELIFT_API_KEY_SECRET: ${{ secrets.V20240227_PROD_SPACELIFT_API_KEY_SECRET }} SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.V20240227_PROD_SPACELIFT_PROVIDER_TEST_IPS }} @@ -35,6 +35,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_NAME: "Azure DevOps Space level" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ID: "azure-devops-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" @@ -42,15 +43,18 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_NAME: "Bitbucket Cloud Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_ID: "bitbucket-cloud-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_NAME: "Bitbucket Cloud Space level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_ID: "bitbucket-cloud-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_NAME: "Bitbucket Data Center" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_ID: "bitbucket-data-center" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} @@ -58,6 +62,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_NAME: "Bitbucket Datancenter Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ID: "bitbucket-datancenter-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" @@ -67,12 +72,14 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ACCESSTOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_ACCESSTOKEN }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_NAME: "GitHub Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_ID: "github-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_NAME: "GitHub Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_ID: "github-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" @@ -80,12 +87,14 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_NAME: "GitLab Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_ID: "gitlab-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_APIHOST: "https://gitlab.com" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_TOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_TOKEN }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_NAME: "GitLab Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_ID: "gitlab-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_SPACE: "tests-01HPE6H08F8HR8PJR78DPYR3TC" @@ -93,6 +102,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_TOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_TOKEN }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL: ${{ secrets.PROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_NAME: "spacelift-ci" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_NAMESPACE: "spacelift-ci" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_BRANCH: "main" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aaf05b7b..82b9c5e2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: - name: Test with coverage run: go test -parallel 20 -timeout 30m -coverprofile=coverage.txt -coverpkg=./... ./... env: - SPACELIFT_API_KEY_ENDPOINT: ${{ secrets.PREPROD_SPACELIFT_API_KEY_ENDPOINT }} + SPACELIFT_API_KEY_ENDPOINT: ${{ vars.preprod_SPACELIFT_API_KEY_ENDPOINT }} SPACELIFT_API_KEY_ID: ${{ secrets.PREPROD_SPACELIFT_API_KEY_ID }} SPACELIFT_API_KEY_SECRET: ${{ secrets.PREPROD_SPACELIFT_API_KEY_SECRET }} SPACELIFT_PROVIDER_TEST_IPS: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_IPS }} @@ -37,6 +37,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_NAME: "Azure DevOps Space level" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ID: "azure-devops-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" @@ -44,15 +45,18 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_ORGANIZATIONURL: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_ORGANIZATIONURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_NAME: "Bitbucket Cloud Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_ID: "bitbucket-cloud-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_NAME: "Bitbucket Cloud Space level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_ID: "bitbucket-cloud-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_USERNAME }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETCLOUD_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_NAME: "Bitbucket Datacenter Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_ID: "bitbucket-datacenter-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_USERNAME: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_USERNAME }} @@ -60,6 +64,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_APIHOST }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_NAME: "Bitbucket Datancenter Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ID: "bitbucket-datancenter-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" @@ -69,12 +74,14 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_WEBHOOKURL }} SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_ACCESSTOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_ACCESSTOKEN }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_BITBUCKETDATACENTER_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_NAME: "GitHub Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_ID: "github-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APIHOST: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_APIHOST }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_APPID }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_NAME: "GitHub Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_ID: "github-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" @@ -82,12 +89,14 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_APPID }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITHUBENTERPRISE_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_NAME: "GitLab Default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_ID: "gitlab-default" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_APIHOST: "https://gitlab.com" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_TOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_TOKEN }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_DEFAULT_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_NAME: "GitLab Space Level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_ID: "gitlab-space-level" SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_SPACE: "tests-01HPE6ENR1AZZ638QSRQRVW4DH" @@ -95,6 +104,7 @@ jobs: SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_TOKEN: ${{ secrets.COMMON_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_TOKEN }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKSECRET }} SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL: ${{ secrets.PREPROD_SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_WEBHOOKURL }} + SPACELIFT_PROVIDER_TEST_SOURCECODE_GITLAB_SPACELEVEL_VCSCHECKS: "INDIVIDUAL" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_NAME: "spacelift-ci" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_NAMESPACE: "spacelift-ci" SPACELIFT_PROVIDER_TEST_SOURCECODE_AZUREDEVOPS_REPOSITORY_BRANCH: "main" diff --git a/docs/data-sources/azure_devops_integration.md b/docs/data-sources/azure_devops_integration.md index 2bd28fd1..726c80a6 100644 --- a/docs/data-sources/azure_devops_integration.md +++ b/docs/data-sources/azure_devops_integration.md @@ -31,5 +31,6 @@ data "spacelift_azure_devops_integration" "azure_devops_integration" {} - `name` (String) Azure DevOps integration name - `organization_url` (String) Azure DevOps integration organization url - `space_id` (String) Azure DevOps integration space id +- `vcs_checks` (String) VCS checks configured for Azure DevOps repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. - `webhook_password` (String) Azure DevOps integration webhook password - `webhook_url` (String) Azure DevOps integration webhook url diff --git a/docs/data-sources/bitbucket_cloud_integration.md b/docs/data-sources/bitbucket_cloud_integration.md index e49b32e1..5c736ea3 100644 --- a/docs/data-sources/bitbucket_cloud_integration.md +++ b/docs/data-sources/bitbucket_cloud_integration.md @@ -31,4 +31,5 @@ data "spacelift_bitbucket_cloud_integration" "bitbucket_cloud_integration" {} - `name` (String) Bitbucket Cloud integration name - `space_id` (String) Bitbucket Cloud integration space id - `username` (String) Bitbucket Cloud username +- `vcs_checks` (String) VCS checks configured for Bitbucket Cloud repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. - `webhook_url` (String) Bitbucket Cloud integration webhook URL diff --git a/docs/data-sources/bitbucket_datacenter_integration.md b/docs/data-sources/bitbucket_datacenter_integration.md index 2b32cb92..40b428b4 100644 --- a/docs/data-sources/bitbucket_datacenter_integration.md +++ b/docs/data-sources/bitbucket_datacenter_integration.md @@ -33,5 +33,6 @@ data "spacelift_bitbucket_datacenter_integration" "bitbucket_datacenter_integrat - `space_id` (String) Bitbucket Datacenter integration space id - `user_facing_host` (String) Bitbucket Datacenter integration user facing host - `username` (String) Username which will be used to authenticate requests for cloning repositories +- `vcs_checks` (String) VCS checks configured for Bitbucket Datacenter repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. - `webhook_secret` (String) Bitbucket Datacenter integration webhook secret - `webhook_url` (String) Bitbucket Datacenter integration webhook URL diff --git a/docs/data-sources/github_enterprise_integration.md b/docs/data-sources/github_enterprise_integration.md index a77f8f66..6d51a228 100644 --- a/docs/data-sources/github_enterprise_integration.md +++ b/docs/data-sources/github_enterprise_integration.md @@ -32,5 +32,6 @@ data "spacelift_github_enterprise_integration" "github_enterprise_integration" { - `labels` (List of String) Github integration labels - `name` (String) Github integration name - `space_id` (String) Github integration space id +- `vcs_checks` (String) VCS checks configured for Github repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. - `webhook_secret` (String) Github integration webhook secret - `webhook_url` (String) Github integration webhook url diff --git a/docs/data-sources/gitlab_integration.md b/docs/data-sources/gitlab_integration.md index f172458e..740aec5b 100644 --- a/docs/data-sources/gitlab_integration.md +++ b/docs/data-sources/gitlab_integration.md @@ -31,5 +31,6 @@ data "spacelift_gitlab_integration" "gitlab_integration" {} - `labels` (List of String) Gitlab integration labels - `name` (String) Gitlab integration name - `space_id` (String) Gitlab integration space id +- `vcs_checks` (String) VCS checks configured for GitLab repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. - `webhook_secret` (String) Gitlab integration webhook secret - `webhook_url` (String) Gitlab integration webhook url diff --git a/docs/resources/bitbucket_datacenter_integration.md b/docs/resources/bitbucket_datacenter_integration.md index c4574ad8..9a09e694 100644 --- a/docs/resources/bitbucket_datacenter_integration.md +++ b/docs/resources/bitbucket_datacenter_integration.md @@ -54,6 +54,7 @@ resource "spacelift_bitbucket_datacenter_integration" "private-example" { - `description` (String) Bitbucket Datacenter integration description - `labels` (Set of String) Bitbucket Datacenter integration labels - `space_id` (String) Bitbucket Datacenter integration space id. Defaults to `root`. +- `vcs_checks` (String) VCS checks configured for Bitbucket Datacenter repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. ### Read-Only diff --git a/docs/resources/gitlab_integration.md b/docs/resources/gitlab_integration.md index d6bd6063..2eca420d 100644 --- a/docs/resources/gitlab_integration.md +++ b/docs/resources/gitlab_integration.md @@ -46,6 +46,7 @@ resource "spacelift_gitlab_integration" "private-example" { - `is_default` (Boolean) Is the GitLab integration the default for all spaces? If set to `true` the space must be set to `root` in `space_id` or left empty which uses the default - `labels` (Set of String) Labels to set on the integration - `space_id` (String) ID (slug) of the space the integration is in; Default: `root` +- `vcs_checks` (String) VCS checks configured for GitLab repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL. ### Read-Only diff --git a/spacelift/config_test.go b/spacelift/config_test.go index a1f49e3d..f6957705 100644 --- a/spacelift/config_test.go +++ b/spacelift/config_test.go @@ -17,6 +17,7 @@ var testConfig struct { OrganizationURL string WebhookSecret string WebhookURL string + VCSChecks string } SpaceLevel struct { Name string @@ -26,6 +27,7 @@ var testConfig struct { OrganizationURL string WebhookSecret string WebhookURL string + VCSChecks string } Repository struct { Name string @@ -39,6 +41,7 @@ var testConfig struct { ID string Username string WebhookURL string + VCSChecks string } SpaceLevel struct { Name string @@ -46,6 +49,7 @@ var testConfig struct { Space string Username string WebhookURL string + VCSChecks string } Repository struct { Name string @@ -62,6 +66,7 @@ var testConfig struct { APIHost string WebhookSecret string WebhookURL string + VCSChecks string } SpaceLevel struct { Name string @@ -73,6 +78,7 @@ var testConfig struct { WebhookSecret string WebhookURL string AccessToken string + VCSChecks string } Repository struct { Name string @@ -88,6 +94,7 @@ var testConfig struct { AppID string WebhookSecret string WebhookURL string + VCSChecks string } SpaceLevel struct { Name string @@ -97,6 +104,7 @@ var testConfig struct { AppID string WebhookSecret string WebhookURL string + VCSChecks string } Repository struct { Name string @@ -112,6 +120,7 @@ var testConfig struct { APIHost string WebhookSecret string WebhookURL string + VCSChecks string } SpaceLevel struct { Name string @@ -121,6 +130,7 @@ var testConfig struct { Token string WebhookSecret string WebhookURL string + VCSChecks string } Repository struct { Name string diff --git a/spacelift/data_azure_devops_integration.go b/spacelift/data_azure_devops_integration.go index 243f0c2d..458ed340 100644 --- a/spacelift/data_azure_devops_integration.go +++ b/spacelift/data_azure_devops_integration.go @@ -19,6 +19,7 @@ const ( azureDevopsOrganizationURL = "organization_url" azureDevopsWebhookPassword = "webhook_password" azureDevopsWebhookURL = "webhook_url" + azureDevopsVCSChecks = "vcs_checks" ) func dataAzureDevopsIntegration() *schema.Resource { @@ -76,6 +77,11 @@ func dataAzureDevopsIntegration() *schema.Resource { Description: "Azure DevOps integration webhook url", Computed: true, }, + azureDevopsVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for Azure DevOps repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Computed: true, + }, }, } } @@ -94,6 +100,7 @@ func dataAzureDevopsIntegrationRead(ctx context.Context, d *schema.ResourceData, OrganizationURL string `graphql:"organizationURL"` WebhookPassword string `graphql:"webhookPassword"` WebhookURL string `graphql:"webhookUrl"` + VCSChecks string `graphql:"vcsChecks"` } `graphql:"azureDevOpsRepoIntegration(id: $id)"` } @@ -128,6 +135,7 @@ func dataAzureDevopsIntegrationRead(ctx context.Context, d *schema.ResourceData, } d.Set(azureDevopsLabels, labels) + d.Set(azureDevopsVCSChecks, azureDevopsIntegration.VCSChecks) return nil } diff --git a/spacelift/data_azure_devops_integration_test.go b/spacelift/data_azure_devops_integration_test.go index f8b4e79d..32dd8d6c 100644 --- a/spacelift/data_azure_devops_integration_test.go +++ b/spacelift/data_azure_devops_integration_test.go @@ -24,6 +24,7 @@ func TestAzureDevOpsIntegrationData(t *testing.T) { Attribute("organization_url", Equals(cfg.OrganizationURL)), Attribute("webhook_password", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute(azureDevopsVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) @@ -45,6 +46,7 @@ func TestAzureDevOpsIntegrationData(t *testing.T) { Attribute("organization_url", Equals(cfg.OrganizationURL)), Attribute("webhook_password", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute(azureDevopsVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) diff --git a/spacelift/data_bitbucket_cloud_integration.go b/spacelift/data_bitbucket_cloud_integration.go index e9ee787e..b15205bf 100644 --- a/spacelift/data_bitbucket_cloud_integration.go +++ b/spacelift/data_bitbucket_cloud_integration.go @@ -18,6 +18,7 @@ const ( bitbucketCloudSpaceID = "space_id" bitbucketCloudUsername = "username" bitbucketCloudWebhookURL = "webhook_url" + bitbucketCloudVCSChecks = "vcs_checks" ) func dataBitbucketCloudIntegration() *schema.Resource { @@ -70,6 +71,11 @@ func dataBitbucketCloudIntegration() *schema.Resource { Description: "Bitbucket Cloud integration webhook URL", Computed: true, }, + bitbucketCloudVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for Bitbucket Cloud repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Computed: true, + }, }, } } @@ -87,6 +93,7 @@ func dataBitbucketCloudIntegrationRead(ctx context.Context, d *schema.ResourceDa Labels []string `graphql:"labels"` Username string `graphql:"username"` WebhookURL string `graphql:"webhookUrl"` + VCSChecks string `graphql:"vcsChecks"` } `graphql:"bitbucketCloudIntegration(id: $id)"` } @@ -120,6 +127,7 @@ func dataBitbucketCloudIntegrationRead(ctx context.Context, d *schema.ResourceDa } d.Set(bitbucketCloudLabels, labels) + d.Set(bitbucketCloudVCSChecks, bitbucketCloudIntegration.VCSChecks) return nil } diff --git a/spacelift/data_bitbucket_cloud_integration_test.go b/spacelift/data_bitbucket_cloud_integration_test.go index a4e9bc2a..440cc9fe 100644 --- a/spacelift/data_bitbucket_cloud_integration_test.go +++ b/spacelift/data_bitbucket_cloud_integration_test.go @@ -24,6 +24,7 @@ func TestBitbucketCloudIntegrationData(t *testing.T) { Attribute("space_id", Equals("root")), Attribute("username", Equals(cfg.Username)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("vcs_checks", Equals(cfg.VCSChecks)), ), }, }) @@ -46,6 +47,7 @@ func TestBitbucketCloudIntegrationData(t *testing.T) { Attribute("space_id", Equals(cfg.Space)), Attribute("username", Equals(cfg.Username)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("vcs_checks", Equals(cfg.VCSChecks)), ), }, }) diff --git a/spacelift/data_bitbucket_datacenter_integration.go b/spacelift/data_bitbucket_datacenter_integration.go index c08333ff..3eeeb75b 100644 --- a/spacelift/data_bitbucket_datacenter_integration.go +++ b/spacelift/data_bitbucket_datacenter_integration.go @@ -21,6 +21,7 @@ const ( bitbucketDatacenterUsername = "username" bitbucketDatacenterWebhookURL = "webhook_url" bitbucketDatacenterWebhookSecret = "webhook_secret" + bitbucketDatacenterVCSChecks = "vcs_checks" ) func dataBitbucketDatacenterIntegration() *schema.Resource { @@ -88,6 +89,11 @@ func dataBitbucketDatacenterIntegration() *schema.Resource { Description: "Bitbucket Datacenter integration user facing host", Computed: true, }, + bitbucketDatacenterVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for Bitbucket Datacenter repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Computed: true, + }, }, } } @@ -108,6 +114,7 @@ func dataBitbucketDatacenterIntegrationRead(ctx context.Context, d *schema.Resou UserFacingHost string `graphql:"userFacingHost"` WebhookURL string `graphql:"webhookURL"` Username string `graphql:"username"` + VCSChecks string `graphql:"vcsChecks"` } `graphql:"bitbucketDatacenterIntegration(id: $id)"` } @@ -143,6 +150,7 @@ func dataBitbucketDatacenterIntegrationRead(ctx context.Context, d *schema.Resou } d.Set(bitbucketDatacenterLabels, labels) + d.Set(bitbucketDatacenterVCSChecks, bitbucketDatacenterIntegration.VCSChecks) return nil } diff --git a/spacelift/data_bitbucket_datacenter_integration_test.go b/spacelift/data_bitbucket_datacenter_integration_test.go index 0a062396..fd7a960c 100644 --- a/spacelift/data_bitbucket_datacenter_integration_test.go +++ b/spacelift/data_bitbucket_datacenter_integration_test.go @@ -25,6 +25,7 @@ func TestBitbucketDataCenterIntegrationData(t *testing.T) { Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), Attribute("user_facing_host", Equals(cfg.UserFacingHost)), + Attribute(bitbucketDatacenterVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) @@ -47,6 +48,7 @@ func TestBitbucketDataCenterIntegrationData(t *testing.T) { Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), Attribute("user_facing_host", Equals(cfg.UserFacingHost)), + Attribute(bitbucketDatacenterVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) diff --git a/spacelift/data_github_enterprise_integration.go b/spacelift/data_github_enterprise_integration.go index 1c0d0eaa..f9a2e671 100644 --- a/spacelift/data_github_enterprise_integration.go +++ b/spacelift/data_github_enterprise_integration.go @@ -20,6 +20,7 @@ const ( ghEnterpriseAPIHost = "api_host" ghEnterpriseWebhookSecret = "webhook_secret" ghEnterpriseWebhookURL = "webhook_url" + ghEnterpriseVCSChecks = "vcs_checks" ) func dataGithubEnterpriseIntegration() *schema.Resource { @@ -82,6 +83,11 @@ func dataGithubEnterpriseIntegration() *schema.Resource { Description: "Github integration app id", Computed: true, }, + ghEnterpriseVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for Github repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Computed: true, + }, }, } } @@ -100,7 +106,8 @@ func dataGithubEnterpriseIntegrationRead(ctx context.Context, d *schema.Resource Space struct { ID string `graphql:"id"` } `graphql:"space"` - Labels []string `graphql:"labels"` + Labels []string `graphql:"labels"` + VCSChecks string `graphql:"vcsChecks"` } `graphql:"githubEnterpriseIntegration(id: $id)"` } @@ -136,6 +143,7 @@ func dataGithubEnterpriseIntegrationRead(ctx context.Context, d *schema.Resource } d.Set(ghEnterpriseLabels, labels) + d.Set(ghEnterpriseVCSChecks, githubEnterpriseIntegration.VCSChecks) return nil } diff --git a/spacelift/data_github_enterprise_integration_test.go b/spacelift/data_github_enterprise_integration_test.go index 5417e41d..d0f60045 100644 --- a/spacelift/data_github_enterprise_integration_test.go +++ b/spacelift/data_github_enterprise_integration_test.go @@ -25,6 +25,7 @@ func TestGithubEnterpriseIntegrationData(t *testing.T) { Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), Attribute("app_id", Equals(cfg.AppID)), + Attribute(ghEnterpriseVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) @@ -47,6 +48,7 @@ func TestGithubEnterpriseIntegrationData(t *testing.T) { Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), Attribute("app_id", Equals(cfg.AppID)), + Attribute(ghEnterpriseVCSChecks, Equals(cfg.VCSChecks)), ), }}) }) diff --git a/spacelift/data_gitlab_integration.go b/spacelift/data_gitlab_integration.go index 0a99dcec..8e585656 100644 --- a/spacelift/data_gitlab_integration.go +++ b/spacelift/data_gitlab_integration.go @@ -64,6 +64,11 @@ func dataGitlabIntegration() *schema.Resource { Description: "Gitlab integration webhook url", Computed: true, }, + gitLabVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for GitLab repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Computed: true, + }, }, } } @@ -83,6 +88,7 @@ func dataGitlabIntegrationRead(ctx context.Context, d *schema.ResourceData, meta APIHost string `graphql:"apiHost"` WebhookSecret string `graphql:"webhookSecret"` WebhookURL string `graphql:"webhookUrl"` + VCSChecks string `graphql:"vcsChecks"` } `graphql:"gitlabIntegration(id: $id)"` } @@ -117,6 +123,7 @@ func dataGitlabIntegrationRead(ctx context.Context, d *schema.ResourceData, meta } d.Set(gitLabLabels, labels) + d.Set(gitLabVCSChecks, gitLabIntegration.VCSChecks) return nil } diff --git a/spacelift/data_gitlab_integration_test.go b/spacelift/data_gitlab_integration_test.go index 6fe2e979..2d40a983 100644 --- a/spacelift/data_gitlab_integration_test.go +++ b/spacelift/data_gitlab_integration_test.go @@ -24,6 +24,7 @@ func TestGitlabIntegrationData(t *testing.T) { Attribute("api_host", Equals(cfg.APIHost)), Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("vcs_checks", Equals(cfg.VCSChecks)), ), }}) }) @@ -45,6 +46,7 @@ func TestGitlabIntegrationData(t *testing.T) { Attribute("api_host", Equals(cfg.APIHost)), Attribute("webhook_secret", Equals(cfg.WebhookSecret)), Attribute("webhook_url", Equals(cfg.WebhookURL)), + Attribute("vcs_checks", Equals(cfg.VCSChecks)), ), }}) }) diff --git a/spacelift/gitlab_integration.go b/spacelift/gitlab_integration.go index cfcd5637..935afd08 100644 --- a/spacelift/gitlab_integration.go +++ b/spacelift/gitlab_integration.go @@ -13,4 +13,5 @@ const ( gitLabToken = "private_token" gitLabWebhookURL = "webhook_url" gitLabWebhookSecret = "webhook_secret" + gitLabVCSChecks = "vcs_checks" ) diff --git a/spacelift/internal/structs/bitbucket_datacenter_integration.go b/spacelift/internal/structs/bitbucket_datacenter_integration.go index deea1601..958cd7f8 100644 --- a/spacelift/internal/structs/bitbucket_datacenter_integration.go +++ b/spacelift/internal/structs/bitbucket_datacenter_integration.go @@ -15,4 +15,5 @@ type BitbucketDatacenterIntegration struct { UserFacingHost string `graphql:"userFacingHost"` WebhookSecret string `graphql:"webhookSecret"` WebhookURL string `graphql:"webhookURL"` + VCSChecks string `graphql:"vcsChecks"` } diff --git a/spacelift/internal/structs/gitlab_integration.go b/spacelift/internal/structs/gitlab_integration.go index f74f72e1..fb124b9e 100644 --- a/spacelift/internal/structs/gitlab_integration.go +++ b/spacelift/internal/structs/gitlab_integration.go @@ -15,4 +15,5 @@ type GitLabIntegration struct { UserFacingHost string `graphql:"userFacingHost"` WebhookSecret string `graphql:"webhookSecret"` WebhookURL string `graphql:"webhookUrl"` + VCSChecks string `graphql:"vcsChecks"` } diff --git a/spacelift/internal/structs/vcs/checks.go b/spacelift/internal/structs/vcs/checks.go new file mode 100644 index 00000000..053dc748 --- /dev/null +++ b/spacelift/internal/structs/vcs/checks.go @@ -0,0 +1,12 @@ +package vcs + +const ( + // CheckTypeIndividual represents the individual VCS check type. + CheckTypeIndividual = "INDIVIDUAL" + // CheckTypeAggregated represents the aggregated VCS check type. + CheckTypeAggregated = "AGGREGATED" + // CheckTypeAll represents the summary of individual and aggregated VCS checks. + CheckTypeAll = "ALL" + // CheckTypeDefault is the default VCS check type. + CheckTypeDefault = CheckTypeIndividual +) diff --git a/spacelift/internal/structs/vcs/input.go b/spacelift/internal/structs/vcs/input.go index 55dc52dc..b5b64989 100644 --- a/spacelift/internal/structs/vcs/input.go +++ b/spacelift/internal/structs/vcs/input.go @@ -9,4 +9,5 @@ type CustomVCSInput struct { Labels *[]graphql.String `json:"labels"` Description *graphql.String `json:"description"` IsDefault *graphql.Boolean `json:"isDefault"` + VCSChecks *graphql.String `json:"vcsChecks"` } diff --git a/spacelift/internal/structs/vcs/update.go b/spacelift/internal/structs/vcs/update.go index fb7ecf03..608d7897 100644 --- a/spacelift/internal/structs/vcs/update.go +++ b/spacelift/internal/structs/vcs/update.go @@ -8,4 +8,5 @@ type CustomVCSUpdateInput struct { SpaceID graphql.ID `json:"space"` Labels *[]graphql.String `json:"labels"` Description *graphql.String `json:"description"` + VCSChecks *graphql.String `json:"vcsChecks"` } diff --git a/spacelift/resource_bitbucket_datacenter_integration.go b/spacelift/resource_bitbucket_datacenter_integration.go index ca862f9b..851b4b2c 100644 --- a/spacelift/resource_bitbucket_datacenter_integration.go +++ b/spacelift/resource_bitbucket_datacenter_integration.go @@ -98,6 +98,12 @@ func resourceBitbucketDatacenterIntegration() *schema.Resource { Description: "URL for webhooks originating from Bitbucket repositories", Computed: true, }, + bitbucketDatacenterVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for Bitbucket Datacenter repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Optional: true, + Default: vcs.CheckTypeDefault, + }, }, } } @@ -114,6 +120,7 @@ func resourceBitbucketDatacenterIntegrationCreate(ctx context.Context, d *schema SpaceID: toString(d.Get(bitbucketDatacenterSpaceID)), Labels: toOptionalStringList(d.Get(bitbucketDatacenterLabels)), Description: toOptionalString(d.Get(bitbucketDatacenterDescription)), + VCSChecks: toOptionalString(d.Get(bitbucketDatacenterVCSChecks)), }, "apiHost": toString(d.Get(bitbucketDatacenterAPIHost)), "userFacingHost": toString(d.Get(bitbucketDatacenterUserFacingHost)), @@ -164,6 +171,7 @@ func resourceBitbucketDatacenterIntegrationUpdate(ctx context.Context, d *schema SpaceID: toString(d.Get(bitbucketDatacenterSpaceID)), Description: toOptionalString(d.Get(bitbucketDatacenterDescription)), Labels: toOptionalStringList(d.Get(bitbucketDatacenterLabels)), + VCSChecks: toOptionalString(d.Get(bitbucketDatacenterVCSChecks)), }, } @@ -214,4 +222,5 @@ func fillBitbucketDatacenterIntegrationResults(d *schema.ResourceData, bitbucket labels.Add(label) } d.Set(bitbucketDatacenterLabels, labels) + d.Set(bitbucketDatacenterVCSChecks, bitbucketDatacenterIntegration.VCSChecks) } diff --git a/spacelift/resource_bitbucket_datacenter_integration_test.go b/spacelift/resource_bitbucket_datacenter_integration_test.go index 963aa23c..638247c6 100644 --- a/spacelift/resource_bitbucket_datacenter_integration_test.go +++ b/spacelift/resource_bitbucket_datacenter_integration_test.go @@ -5,7 +5,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - + "github.com/spacelift-io/terraform-provider-spacelift/spacelift/internal/structs/vcs" . "github.com/spacelift-io/terraform-provider-spacelift/spacelift/internal/testhelpers" ) @@ -23,7 +23,7 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { labels = `["label1", "label2"]` ) - configBitbucket := func(user, host, token, descr, labels string) string { + configBitbucket := func(user, host, token, descr, labels, vcsChecks string) string { return ` resource "spacelift_bitbucket_datacenter_integration" "test" { name = "` + name + `" @@ -35,6 +35,7 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { access_token = "` + token + `" description = "` + descr + `" labels = ` + labels + ` + vcs_checks = ` + vcsChecks + ` } ` } @@ -74,7 +75,7 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { testSteps(t, []resource.TestStep{ { - Config: configBitbucket("username", host, token, descr, "null"), + Config: configBitbucket("username", host, token, descr, "null", "null"), Check: Resource( resourceName, Attribute("id", Equals(name)), @@ -87,6 +88,7 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { Attribute("is_default", Equals("false")), Attribute("description", Equals(descr)), Attribute("labels.#", Equals("0")), + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeDefault)), ), }, { @@ -96,7 +98,7 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { ImportStateVerifyIgnore: []string{"access_token"}, // specified only in the config }, { - Config: configBitbucket("newUserName", host, token, "new descr", `["new label1"]`), + Config: configBitbucket("newUserName", host, token, "new descr", `["new label1"]`, "null"), Check: Resource( resourceName, Attribute("api_host", Equals(host)), @@ -106,10 +108,11 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { Attribute("description", Equals("new descr")), Attribute("labels.#", Equals("1")), Attribute("labels.0", Equals("new label1")), + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeDefault)), ), }, { - Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels), + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, "null"), Check: Resource( resourceName, Attribute("api_host", Equals(spaceLevel.APIHost)), @@ -120,17 +123,39 @@ func TestBitbucketDatacenterIntegrationResource(t *testing.T) { Attribute("labels.#", Equals("2")), Attribute("labels.0", Equals("label1")), Attribute("labels.1", Equals("label2")), + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeDefault)), + ), + }, + { + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, `"`+vcs.CheckTypeAggregated+`"`), + Check: Resource( + resourceName, + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeAggregated)), + ), + }, + { + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, `"`+vcs.CheckTypeAll+`"`), + Check: Resource( + resourceName, + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeAll)), + ), + }, + { + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, `"`+vcs.CheckTypeIndividual+`"`), + Check: Resource( + resourceName, + Attribute(bitbucketDatacenterVCSChecks, Equals(vcs.CheckTypeIndividual)), ), }, { - Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels) + configStack(), + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, "null") + configStack(), Check: Resource( "spacelift_stack.test", Attribute("bitbucket_datacenter.0.id", Equals(name)), ), }, { - Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels) + configStack() + configRun(), + Config: configBitbucket(spaceLevel.Username, spaceLevel.APIHost, spaceLevel.AccessToken, descr, labels, "null") + configStack() + configRun(), Check: Resource( "spacelift_run.test", Attribute("id", IsNotEmpty()), diff --git a/spacelift/resource_gitlab_integration.go b/spacelift/resource_gitlab_integration.go index 6339b46a..399ff4e1 100644 --- a/spacelift/resource_gitlab_integration.go +++ b/spacelift/resource_gitlab_integration.go @@ -108,6 +108,12 @@ func resourceGitLabIntegration() *schema.Resource { Description: "URL for webhooks originating from GitLab repositories", Computed: true, }, + gitLabVCSChecks: { + Type: schema.TypeString, + Description: "VCS checks configured for GitLab repositories. Possible values: INDIVIDUAL, AGGREGATED, ALL. Defaults to INDIVIDUAL.", + Optional: true, + Default: vcs.CheckTypeDefault, + }, }, } } @@ -124,6 +130,7 @@ func resourceGitLabIntegrationCreate(ctx context.Context, d *schema.ResourceData SpaceID: toString(d.Get(gitLabSpaceID)), Labels: toOptionalStringList(d.Get(gitLabLabels)), Description: toOptionalString(d.Get(gitLabDescription)), + VCSChecks: toOptionalString(d.Get(gitLabVCSChecks)), }, "apiHost": toString(d.Get(gitLabAPIHost)), "userFacingHost": toString(d.Get(gitLabUserFacingHost)), @@ -172,6 +179,7 @@ func resourceGitLabIntegrationUpdate(ctx context.Context, d *schema.ResourceData SpaceID: toString(d.Get(gitLabSpaceID)), Description: toOptionalString(d.Get(gitLabDescription)), Labels: toOptionalStringList(d.Get(gitLabLabels)), + VCSChecks: toOptionalString(d.Get(gitLabVCSChecks)), }, } @@ -214,6 +222,7 @@ func fillGitLabIntegrationResults(d *schema.ResourceData, gitLabIntegration *str d.Set(gitLabUserFacingHost, gitLabIntegration.UserFacingHost) d.Set(gitLabWebhookURL, gitLabIntegration.WebhookURL) d.Set(gitLabWebhookSecret, gitLabIntegration.WebhookSecret) + d.Set(gitLabVCSChecks, gitLabIntegration.VCSChecks) labels := schema.NewSet(schema.HashString, []interface{}{}) for _, label := range gitLabIntegration.Labels { diff --git a/spacelift/resource_gitlab_integration_test.go b/spacelift/resource_gitlab_integration_test.go index eb09a37f..ed601fb7 100644 --- a/spacelift/resource_gitlab_integration_test.go +++ b/spacelift/resource_gitlab_integration_test.go @@ -5,7 +5,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" - + "github.com/spacelift-io/terraform-provider-spacelift/spacelift/internal/structs/vcs" . "github.com/spacelift-io/terraform-provider-spacelift/spacelift/internal/testhelpers" ) @@ -23,7 +23,7 @@ func TestGitLabIntegrationResource(t *testing.T) { labels = `["label1", "label2"]` ) - configGitLab := func(host, token, descr, labels string) string { + configGitLab := func(host, token, descr, labels, vcsChecks string) string { return ` resource "spacelift_gitlab_integration" "test" { name = "` + name + `" @@ -32,6 +32,7 @@ func TestGitLabIntegrationResource(t *testing.T) { private_token = "` + token + `" description = "` + descr + `" labels = ` + labels + ` + vcs_checks = ` + vcsChecks + ` } ` } @@ -71,7 +72,7 @@ func TestGitLabIntegrationResource(t *testing.T) { testSteps(t, []resource.TestStep{ { - Config: configGitLab(host, token, descr, "null"), + Config: configGitLab(host, token, descr, "null", "null"), Check: Resource( resourceName, Attribute(gitLabName, Equals(name)), @@ -83,6 +84,7 @@ func TestGitLabIntegrationResource(t *testing.T) { Attribute(gitLabIsDefault, Equals("false")), Attribute(gitLabDescription, Equals(descr)), AttributeNotPresent(gitLabLabels), + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeDefault)), ), }, { @@ -92,7 +94,7 @@ func TestGitLabIntegrationResource(t *testing.T) { ImportStateVerifyIgnore: []string{gitLabToken}, // specified only in the config }, { - Config: configGitLab(host, token, "new descr", `["new label1"]`), + Config: configGitLab(host, token, "new descr", `["new label1"]`, "null"), Check: Resource( resourceName, Attribute(gitLabAPIHost, Equals(host)), @@ -101,10 +103,11 @@ func TestGitLabIntegrationResource(t *testing.T) { Attribute(gitLabDescription, Equals("new descr")), Attribute(gitLabLabels+".#", Equals("1")), Attribute(gitLabLabels+".0", Equals("new label1")), + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeDefault)), ), }, { - Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels), + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, "null"), Check: Resource( resourceName, Attribute(gitLabAPIHost, Equals(spaceLevel.APIHost)), @@ -115,23 +118,45 @@ func TestGitLabIntegrationResource(t *testing.T) { Attribute(gitLabLabels+".#", Equals("2")), Attribute(gitLabLabels+".0", Equals("label1")), Attribute(gitLabLabels+".1", Equals("label2")), + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeDefault)), ), }, { - Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels) + configStack(), + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, "null") + configStack(), Check: Resource( "spacelift_stack.test", Attribute("gitlab.0.id", Equals(name)), ), }, { - Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels) + configStack() + configRun(), + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, "null") + configStack() + configRun(), Check: Resource( "spacelift_run.test", Attribute(gitLabID, IsNotEmpty()), Attribute("stack_id", Equals("stack-for-"+name)), ), }, + { + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, `"`+vcs.CheckTypeAggregated+`"`), + Check: Resource( + resourceName, + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeAggregated)), + ), + }, + { + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, `"`+vcs.CheckTypeAll+`"`), + Check: Resource( + resourceName, + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeAll)), + ), + }, + { + Config: configGitLab(spaceLevel.APIHost, spaceLevel.Token, descr, labels, `"`+vcs.CheckTypeIndividual+`"`), + Check: Resource( + resourceName, + Attribute(gitLabVCSChecks, Equals(vcs.CheckTypeIndividual)), + ), + }, }) }) }