diff --git a/CHANGELOG.md b/CHANGELOG.md index a3bebfcd9..d0c15b26b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +## 17.8.0 (2025-01-16) + +This release was tested against GitLab 17.8, 17.7, and 17.6 for both CE and EE + +### BREAKING CHANGES (1 change) + +> Note: While we normally attempt to avoid breaking changes until major releases, this change aligns the `gitlab_project_issues` resource to the upstream API. That means that +> if we held off on implementing it, our users could pass in multiple values to several attributes, and the API would ignore all but the first of them. Weighing the breaking change +> against the bad user experience and potential confusion in user `plan` operations, we determined it was better to accept the small breaking change now than hold off another 4 months for 18.0. + +- datasource/gitlab_project_issues: [Update several attributes to support a maximum of 1 item in their list to align to the GitLab API](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/7e4311674bac77d512098077cf8ed2e7958b26dc) by @gitlab-dependency-update-bot ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2255)) + +### FEATURE (1 change) + +- **New Resource** resource/gitlab_value_stream_analytics: [Adds support managing value stream stages](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/72033f78d1acff93a08a537e0812c68c326c3efe) by @calee1 ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2234)) + +### IMPROVEMENTS (3 changes) + +- resource/gitlab_group: [Add 'owner' support for project creation level](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/910c0ce8275c0f34ec5733c4f3608b1041be44bb) by @mness ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2253)) +- resource/gitlab_group_hook: [Add a validator to prevent spaces in the URL](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/527fbba6454ef4188a26cffa73e314be61dd219f) by @PatrickRice ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2252)) +- resource/gitlab_project_hook: [Add name and description to gitlab_project_hook resource](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/5d24124412b3f55a9bb707292fc9226a43fe8ea9) by @heidi.berry ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2258)) +- datasource/gitlab_project_membership: [Support user_ids attribute](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/45a477ee8f2e20fc2adb9a3fce9dd980021dfd4e) by @timofurrer ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2257)) + ## 17.7.1 (2025-01-10) This release was tested against GitLab 17.7, 17.6, and 17.5 for both CE and EE @@ -13,7 +36,7 @@ This release was tested against GitLab 17.7, 17.6, and 17.5 for both CE and EE ### FEATURES (1 change) -- resource/gitlab_instance_service_account: [Allows managing instance-level service accounts](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/0da40eceb4272d3fb856139198da777d08960711) by @ipsavitsky234 ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2220)) +- **New Resource** resource/gitlab_instance_service_account: [Allows managing instance-level service accounts](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/commit/0da40eceb4272d3fb856139198da777d08960711) by @ipsavitsky234 ([merge request](https://gitlab.com/gitlab-org/terraform-provider-gitlab/-/merge_requests/2220)) ### IMPROVEMENTS (2 changes) diff --git a/docs/data-sources/project_membership.md b/docs/data-sources/project_membership.md index d4ef7538f..f9749ffb3 100644 --- a/docs/data-sources/project_membership.md +++ b/docs/data-sources/project_membership.md @@ -46,6 +46,7 @@ data "gitlab_project_membership" "example" { - `inherited` (Boolean) Return all project members including members through ancestor groups - `project_id` (Number) The ID of the project. - `query` (String) A query string to search for members +- `user_ids` (Set of Number) List of user ids to filter members by ### Read-Only diff --git a/docs/resources/group.md b/docs/resources/group.md index a94673359..52824fd0d 100644 --- a/docs/resources/group.md +++ b/docs/resources/group.md @@ -110,7 +110,7 @@ resource "gitlab_group" "example-five" { - `parent_id` (Number) Id of the parent group (creates a nested group). - `permanently_remove_on_delete` (Boolean) Whether the group should be permanently removed during a `delete` operation. This only works with subgroups. Must be configured via an `apply` before the `destroy` is run. - `prevent_forking_outside_group` (Boolean) Defaults to false. When enabled, users can not fork projects from this group to external namespaces. -- `project_creation_level` (String) Determine if developers can create projects in the group. Valid values are: `noone`, `maintainer`, `developer` +- `project_creation_level` (String) Determine if developers can create projects in the group. Valid values are: `noone`, `owner`, `maintainer`, `developer` - `push_rules` (Block List, Max: 1) Push rules for the group. (see [below for nested schema](#nestedblock--push_rules)) - `request_access_enabled` (Boolean) Allow users to request member access. - `require_two_factor_authentication` (Boolean) Require all users in this group to setup Two-factor authentication. diff --git a/docs/resources/project_hook.md b/docs/resources/project_hook.md index 1720adf6b..f908c251c 100644 --- a/docs/resources/project_hook.md +++ b/docs/resources/project_hook.md @@ -19,6 +19,8 @@ The `gitlab_project_hook` resource allows to manage the lifecycle of a project h resource "gitlab_project_hook" "example" { project = "example/hooked" url = "https://example.com/hook/example" + name = "example" + description = "Example hook" merge_requests_events = true } @@ -57,10 +59,12 @@ resource "gitlab_project_hook" "custom_headers" { - `custom_headers` (Attributes List) Custom headers for the project webhook. (see [below for nested schema](#nestedatt--custom_headers)) - `custom_webhook_template` (String) Custom webhook template. - `deployment_events` (Boolean) Invoke the hook for deployment events. +- `description` (String) Description of the webhook. - `enable_ssl_verification` (Boolean) Enable SSL verification when invoking the hook. - `issues_events` (Boolean) Invoke the hook for issues events. - `job_events` (Boolean) Invoke the hook for job events. - `merge_requests_events` (Boolean) Invoke the hook for merge requests events. +- `name` (String) Name of the project webhook. - `note_events` (Boolean) Invoke the hook for note events. - `pipeline_events` (Boolean) Invoke the hook for pipeline events. - `push_events` (Boolean) Invoke the hook for push events. diff --git a/docs/resources/value_stream_analytics.md b/docs/resources/value_stream_analytics.md new file mode 100644 index 000000000..8544e6a7c --- /dev/null +++ b/docs/resources/value_stream_analytics.md @@ -0,0 +1,119 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "gitlab_value_stream_analytics Resource - terraform-provider-gitlab" +subcategory: "" +description: |- + The gitlab_value_stream_analytics resource allows to manage the lifecycle of value stream analytics. + -> This resource requires a GitLab Enterprise instance with a Premium license to create custom value stream analytics. + Upstream API: GitLab GraphQL API docs https://docs.gitlab.com/ee/api/graphql/reference/#mutationvaluestreamcreate +--- + +# gitlab_value_stream_analytics (Resource) + +The `gitlab_value_stream_analytics` resource allows to manage the lifecycle of value stream analytics. + +-> This resource requires a GitLab Enterprise instance with a Premium license to create custom value stream analytics. + +**Upstream API**: [GitLab GraphQL API docs](https://docs.gitlab.com/ee/api/graphql/reference/#mutationvaluestreamcreate) + +## Example Usage + +```terraform +resource "gitlab_value_stream_analytics" "project" { + name = "TEST" + project_full_path = "test/project" + stages = [ + { + name = "Issue" + custom = false + hidden = false + }, + { + name = "Issue Labels" + custom = true + hidden = false + start_event_identifier = "ISSUE_LABEL_ADDED" + start_event_label_id = "gid://gitlab/ProjectLabel/0" + end_event_identifier = "ISSUE_LABEL_REMOVED" + end_event_label_id = "gid://gitlab/ProjectLabel/1" + } + ] +} + +resource "gitlab_value_stream_analytics" "group" { + name = "TEST" + group_full_path = "test/group" + stages = [ + { + name = "Issue" + custom = false + hidden = false + }, + { + name = "Issue Labels" + custom = true + hidden = false + start_event_identifier = "ISSUE_LABEL_ADDED" + start_event_label_id = "gid://gitlab/GroupLabel/0" + end_event_identifier = "ISSUE_LABEL_REMOVED" + end_event_label_id = "gid://gitlab/GroupLabel/1" + } + ] +} +``` + + +## Schema + +### Required + +- `name` (String) The name of the value stream +- `stages` (Attributes Set) Stages of the value stream (see [below for nested schema](#nestedatt--stages)) + +### Optional + +- `group_full_path` (String) Full path of the group the value stream is created in. **One of `group_full_path` OR `project_full_path` is required.** +- `project_full_path` (String) Full path of the project the value stream is created in. **One of `group_full_path` OR `project_full_path` is required.** + +### Read-Only + +- `id` (String) The Terraform ID of the value stream in the format of `group::` or `project::`. + + +### Nested Schema for `stages` + +Required: + +- `name` (String) The name of the value stream stage. + +Optional: + +- `custom` (Boolean) Boolean whether the stage is customized. If false, it assigns a built-in default stage by name. +- `end_event_identifier` (String) End event identifier. Valid values are: `CODE_STAGE_START`, `ISSUE_CLOSED`, `ISSUE_CREATED`, `ISSUE_DEPLOYED_TO_PRODUCTION`, `ISSUE_FIRST_ADDED_TO_BOARD`, `ISSUE_FIRST_ADDED_TO_ITERATION`, `ISSUE_FIRST_ASSIGNED_AT`, `ISSUE_FIRST_ASSOCIATED_WITH_MILESTONE`, `ISSUE_FIRST_MENTIONED_IN_COMMIT`, `ISSUE_LABEL_ADDED`, `ISSUE_LABEL_REMOVED`, `ISSUE_LAST_EDITED`, `ISSUE_STAGE_END`, `MERGE_REQUEST_CLOSED`, `MERGE_REQUEST_CREATED`, `MERGE_REQUEST_FIRST_ASSIGNED_AT`, `MERGE_REQUEST_FIRST_COMMIT_AT`, `MERGE_REQUEST_FIRST_DEPLOYTED_TO_PRODUCTION`, `MERGE_REQUEST_LABEL_ADDED`, `MERGE_REQUEST_LABEL_REMOVED`, `MERGE_REQUEST_LAST_BUILD_FINISHED`, `MERGE_REQUEST_LAST_BUILD_STARTED`, `MERGE_REQUEST_LAST_EDITED`, `MERGE_REQUEST_MERGED`, `MERGE_REQUEST_REVIEWER_FIRST_ASSIGNED`, `MERGE_REQUEST_PLAN_STAGE_START` +- `end_event_label_id` (String) Label ID associated with the end event identifier. In the format of `gid://gitlab/GroupLabel/` or `gid://gitlab/ProjectLabel/` +- `hidden` (Boolean) Boolean whether the stage is hidden, GitLab provided default stages are hidden by default. +- `start_event_identifier` (String) Start event identifier. Valid values are: `CODE_STAGE_START`, `ISSUE_CLOSED`, `ISSUE_CREATED`, `ISSUE_DEPLOYED_TO_PRODUCTION`, `ISSUE_FIRST_ADDED_TO_BOARD`, `ISSUE_FIRST_ADDED_TO_ITERATION`, `ISSUE_FIRST_ASSIGNED_AT`, `ISSUE_FIRST_ASSOCIATED_WITH_MILESTONE`, `ISSUE_FIRST_MENTIONED_IN_COMMIT`, `ISSUE_LABEL_ADDED`, `ISSUE_LABEL_REMOVED`, `ISSUE_LAST_EDITED`, `ISSUE_STAGE_END`, `MERGE_REQUEST_CLOSED`, `MERGE_REQUEST_CREATED`, `MERGE_REQUEST_FIRST_ASSIGNED_AT`, `MERGE_REQUEST_FIRST_COMMIT_AT`, `MERGE_REQUEST_FIRST_DEPLOYTED_TO_PRODUCTION`, `MERGE_REQUEST_LABEL_ADDED`, `MERGE_REQUEST_LABEL_REMOVED`, `MERGE_REQUEST_LAST_BUILD_FINISHED`, `MERGE_REQUEST_LAST_BUILD_STARTED`, `MERGE_REQUEST_LAST_EDITED`, `MERGE_REQUEST_MERGED`, `MERGE_REQUEST_REVIEWER_FIRST_ASSIGNED`, `MERGE_REQUEST_PLAN_STAGE_START` +- `start_event_label_id` (String) Label ID associated with the start event identifier. In the format of `gid://gitlab/GroupLabel/` or `gid://gitlab/ProjectLabel/` + +Read-Only: + +- `id` (String) The ID of the value stream stage. + +## Import + +Starting in Terraform v1.5.0 you can use an [import block](https://developer.hashicorp.com/terraform/language/import) to import `gitlab_value_stream_analytics`. For example: +```terraform +import { + to = gitlab_value_stream_analytics.example + id = "see CLI command below for ID" +} +``` + +Import using the CLI is supported using the following syntax: + +```shell +# Gitlab value stream analytics can be imported with a key composed of `::`, e.g. +terraform import gitlab_value_stream_analytics.group "group:people/engineers:42" + +terraform import gitlab_value_stream_analytics.project "project:projects/sample:43" +```