From 103a86dd382718f8154020d94ac2ce0d0d0128d8 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 10:25:36 +0200 Subject: [PATCH 01/12] Support ClickUp as an issue tracker Add a new integration for ClickUp project management as a new external issue tracker. Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- app/models/integration.rb | 2 +- app/models/integrations/clickup.rb | 36 +++++++++++++ app/models/project.rb | 1 + doc/api/graphql/reference/index.md | 1 + doc/api/integrations.md | 35 +++++++++++++ doc/integration/external-issue-tracker.md | 1 + doc/user/project/integrations/clickup.md | 51 +++++++++++++++++++ doc/user/project/integrations/index.md | 1 + lib/api/helpers/integrations_helpers.rb | 15 ++++++ spec/factories/integrations.rb | 6 +++ .../user_activates_issue_tracker_spec.rb | 1 + .../types/projects/service_type_enum_spec.rb | 1 + .../external_issue_reference_filter_spec.rb | 38 ++++++++++++++ spec/models/integrations/clickup_spec.rb | 50 ++++++++++++++++++ spec/models/project_spec.rb | 1 + 15 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 app/models/integrations/clickup.rb create mode 100644 doc/user/project/integrations/clickup.md create mode 100644 spec/models/integrations/clickup_spec.rb diff --git a/app/models/integration.rb b/app/models/integration.rb index 860739fe5aa4ff..0f7168620329f0 100644 --- a/app/models/integration.rb +++ b/app/models/integration.rb @@ -18,7 +18,7 @@ class Integration < ApplicationRecord self.inheritance_column = :type_new INTEGRATION_NAMES = %w[ - asana assembla bamboo bugzilla buildkite campfire confluence custom_issue_tracker datadog discord + asana assembla bamboo bugzilla buildkite campfire clickup confluence custom_issue_tracker datadog discord drone_ci emails_on_push ewm external_wiki hangouts_chat harbor irker jira mattermost mattermost_slash_commands microsoft_teams packagist pipelines_email pivotaltracker prometheus pumble pushover redmine slack slack_slash_commands squash_tm teamcity diff --git a/app/models/integrations/clickup.rb b/app/models/integrations/clickup.rb new file mode 100644 index 00000000000000..c72ba7b50e45fb --- /dev/null +++ b/app/models/integrations/clickup.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module Integrations + class Clickup < BaseIssueTracker + include HasIssueTrackerFields + + validates :project_url, :issues_url, presence: true, public_url: true, if: :activated? + + def reference_pattern(only_long: false) + return @reference_pattern if defined?(@reference_pattern) + + @reference_pattern = /((#|CU-)(?[a-z0-9]+)|(?[A-Z0-9_]{2,10}-\d+))\b/ + end + + def title + 'ClickUp' + end + + def description + s_("IssueTracker|Use Clickup as this project's issue tracker.") + end + + def help + docs_link = ActionController::Base.helpers.link_to _('Learn more.'), Rails.application.routes.url_helpers.help_page_url('user/project/integrations/clickup'), target: '_blank', rel: 'noopener noreferrer' + s_("IssueTracker|Use ClickUp as this project's issue tracker. %{docs_link}").html_safe % { docs_link: docs_link.html_safe } + end + + def self.to_param + 'clickup' + end + + def fields + super.select { _1.name.in?(%w[project_url issues_url]) } + end + end +end diff --git a/app/models/project.rb b/app/models/project.rb index d8818d9c174e3d..b36e33b16bbe4c 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -185,6 +185,7 @@ def self.integration_association_name(name) has_one :bugzilla_integration, class_name: 'Integrations::Bugzilla' has_one :buildkite_integration, class_name: 'Integrations::Buildkite' has_one :campfire_integration, class_name: 'Integrations::Campfire' + has_one :clickup_integration, class_name: 'Integrations::Clickup' has_one :confluence_integration, class_name: 'Integrations::Confluence' has_one :custom_issue_tracker_integration, class_name: 'Integrations::CustomIssueTracker' has_one :datadog_integration, class_name: 'Integrations::Datadog' diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index c068397c50b2ca..56bce1dfde2e41 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -25276,6 +25276,7 @@ State of a Sentry error. | `BUGZILLA_SERVICE` | BugzillaService type. | | `BUILDKITE_SERVICE` | BuildkiteService type. | | `CAMPFIRE_SERVICE` | CampfireService type. | +| `CLICKUP_SERVICE` | ClickupService type. | | `CONFLUENCE_SERVICE` | ConfluenceService type. | | `CUSTOM_ISSUE_TRACKER_SERVICE` | CustomIssueTrackerService type. | | `DATADOG_SERVICE` | DatadogService type. | diff --git a/doc/api/integrations.md b/doc/api/integrations.md index 16ca7d74510ad1..af42a5916a847d 100644 --- a/doc/api/integrations.md +++ b/doc/api/integrations.md @@ -334,6 +334,41 @@ Get Campfire integration settings for a project. GET /projects/:id/integrations/campfire ``` +## ClickUp + +ClickUp issue tracker + +### Create/Edit ClickUp integration + +Set ClickUp integration for a project. + +```plaintext +PUT /projects/:id/integrations/clickup +``` + +Parameters: + +| Parameter | Type | Required | Description | +| --------- | ---- | -------- | ----------- | +| `issues_url` | string | true | Issue URL | +| `project_url` | string | true | Project URL | + +### Disable ClickUp integration + +Disable the ClickUp integration for a project. Integration settings are reset. + +```plaintext +DELETE /projects/:id/integrations/clickup +``` + +### Get ClickUp integration settings + +Get ClickUp integration settings for a project. + +```plaintext +GET /projects/:id/integrations/clickup +``` + ## Datadog Datadog system monitoring. diff --git a/doc/integration/external-issue-tracker.md b/doc/integration/external-issue-tracker.md index c63c2e3fd24c89..04073ad611f003 100644 --- a/doc/integration/external-issue-tracker.md +++ b/doc/integration/external-issue-tracker.md @@ -28,6 +28,7 @@ To enable an external issue tracker, you must configure the appropriate [integra The following external issue tracker integrations are available: - [Bugzilla](../user/project/integrations/bugzilla.md) +- [ClickUp](../user/project/integrations/clickup.md) - [Custom Issue Tracker](../user/project/integrations/custom_issue_tracker.md) - [Engineering Workflow Management](../user/project/integrations/ewm.md) - [Jira](../integration/jira/index.md) diff --git a/doc/user/project/integrations/clickup.md b/doc/user/project/integrations/clickup.md new file mode 100644 index 00000000000000..ac034da8e0c2a8 --- /dev/null +++ b/doc/user/project/integrations/clickup.md @@ -0,0 +1,51 @@ +--- +stage: Manage +group: Import and Integrate +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments +--- + +# ClickUp **(FREE)** + +You can use [ClickUp](https://clickup.com/) as an external issue tracker. +To enable the ClickUp integration in a project: + +1. On the top bar, select **Main menu > Projects** and find your project. +1. On the left sidebar, select **Settings > Integrations**. +1. Select **ClickUp**. +1. Select the checkbox under **Enable integration**. +1. Fill in the required fields: + + - **Project URL**: The URL to the ClickUp project to link to this GitLab project. + - **Issue URL**: The URL to the ClickUp project issue to link to this GitLab project. + The URL must contain `:id`. GitLab replaces this ID with the issue number. + +1. Select **Save changes** or optionally select **Test settings**. + +After you have configured and enabled ClickUp, you see the ClickUp link on the GitLab project pages, +which takes you to your ClickUp project. + +For example, this is a configuration for a project named `gitlab-ci`: + +- Project URL: `https://app.clickup.com/1234567` +- Issue URL: `https://app.clickup.com/t/:id` + +You can also disable [GitLab internal issue tracking](../issues/index.md) in this project. +For more information about the steps and consequences of disabling GitLab issues, see +[Configure project visibility, features, and permissions](../settings/index.md#configure-project-visibility-features-and-permissions). + +## Reference ClickUp issues in GitLab + +You can reference your Redmine issues using: + +- `#`, where `` is a alphanumerical string (example `#8wrtcd932`). +- `CU-`, where `` is a alphanumerical string (example `CU-8wrtcd932`). +- `-`, for example `API_32-143`, where: + - `` is a ClickUp list custom prefix ID. + - `` is a number. + +In links, the `CU-` part is ignored, and it will link to the global URL of the issue. When a custom +prefix is used in a ClickUp list, the prefix part is part of the link. + +We suggest using the `CU-` format (`CU-`) if you have both internal and external issue +trackers enabled. If you use the shorter format, and an issue with the same ID exists in the +internal issue tracker, the internal issue is linked. diff --git a/doc/user/project/integrations/index.md b/doc/user/project/integrations/index.md index f7019b2eeb2ee4..f815f138c3a0ed 100644 --- a/doc/user/project/integrations/index.md +++ b/doc/user/project/integrations/index.md @@ -50,6 +50,7 @@ You can configure the following integrations. | [Bugzilla](bugzilla.md) | Use Bugzilla as the issue tracker. | **{dotted-circle}** No | | Buildkite | Run CI/CD pipelines with Buildkite. | **{check-circle}** Yes | | Campfire | Connect to chat. | **{dotted-circle}** No | +| [ClickUp](clickup.md) | Use ClickUp as the issue tracker. | **{dotted-circle}** No | | [Confluence Workspace](../../../api/integrations.md#confluence-integration) | Use Confluence Cloud Workspace as an internal wiki. | **{dotted-circle}** No | | [Custom issue tracker](custom_issue_tracker.md) | Use a custom issue tracker. | **{dotted-circle}** No | | [Datadog](../../../integration/datadog.md) | Trace your GitLab pipelines with Datadog. | **{check-circle}** Yes | diff --git a/lib/api/helpers/integrations_helpers.rb b/lib/api/helpers/integrations_helpers.rb index 701418931f359d..6345c72ca32a1e 100644 --- a/lib/api/helpers/integrations_helpers.rb +++ b/lib/api/helpers/integrations_helpers.rb @@ -839,6 +839,20 @@ def self.integrations desc: 'The issues URL' } ], + 'clickup' => [ + { + required: true, + name: :project_url, + type: String, + desc: 'The project URL' + }, + { + required: true, + name: :issues_url, + type: String, + desc: 'The issues URL' + } + ], 'slack' => [ chat_notification_settings, chat_notification_flags, @@ -968,6 +982,7 @@ def self.integration_classes ::Integrations::Bugzilla, ::Integrations::Buildkite, ::Integrations::Campfire, + ::Integrations::Clickup, ::Integrations::Confluence, ::Integrations::CustomIssueTracker, ::Integrations::Datadog, diff --git a/spec/factories/integrations.rb b/spec/factories/integrations.rb index 10568d7f1cd32d..74545c6eec16b8 100644 --- a/spec/factories/integrations.rb +++ b/spec/factories/integrations.rb @@ -197,6 +197,12 @@ issue_tracker end + factory :clickup_integration, class: 'Integrations::Clickup' do + project + active { true } + issue_tracker + end + trait :issue_tracker do transient do create_data { true } diff --git a/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb b/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb index d2c48cb2af0bd1..9fc91e03c948b0 100644 --- a/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb +++ b/spec/features/projects/integrations/user_activates_issue_tracker_spec.rb @@ -89,4 +89,5 @@ def fill_form(disable: false, skip_new_issue_url: false) it_behaves_like 'external issue tracker activation', tracker: 'Bugzilla' it_behaves_like 'external issue tracker activation', tracker: 'Custom issue tracker' it_behaves_like 'external issue tracker activation', tracker: 'EWM', skip_test: true + it_behaves_like 'external issue tracker activation', tracker: 'ClickUp', skip_new_issue_url: true end diff --git a/spec/graphql/types/projects/service_type_enum_spec.rb b/spec/graphql/types/projects/service_type_enum_spec.rb index 8b444a08c3b0e7..a5b1ba24a44a90 100644 --- a/spec/graphql/types/projects/service_type_enum_spec.rb +++ b/spec/graphql/types/projects/service_type_enum_spec.rb @@ -15,6 +15,7 @@ def core_service_enums BUGZILLA_SERVICE BUILDKITE_SERVICE CAMPFIRE_SERVICE + CLICKUP_SERVICE CONFLUENCE_SERVICE CUSTOM_ISSUE_TRACKER_SERVICE DATADOG_SERVICE diff --git a/spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb b/spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb index d40041d890e86c..79500f433946a4 100644 --- a/spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb +++ b/spec/lib/banzai/filter/references/external_issue_reference_filter_spec.rb @@ -184,6 +184,44 @@ end end + context "clickup project" do + before_all do + create(:clickup_integration, project: project) + end + + before do + project.update!(issues_enabled: false) + end + + context "with right markdown" do + let(:issue) { ExternalIssue.new("PRJ-123", project) } + let(:reference) { issue.to_reference } + + it_behaves_like "external issue tracker" + end + + context "with underscores in the prefix" do + let(:issue) { ExternalIssue.new("PRJ_1-123", project) } + let(:reference) { issue.to_reference } + + it_behaves_like "external issue tracker" + end + + context "with a hash prefix and alphanumeric" do + let(:issue) { ExternalIssue.new("#abcd123", project) } + let(:reference) { issue.to_reference } + + it_behaves_like "external issue tracker" + end + + context "with prefix and alphanumeric" do + let(:issue) { ExternalIssue.new("CU-abcd123", project) } + let(:reference) { issue.to_reference } + + it_behaves_like "external issue tracker" + end + end + context "jira project" do let_it_be(:service) { create(:jira_integration, project: project) } diff --git a/spec/models/integrations/clickup_spec.rb b/spec/models/integrations/clickup_spec.rb new file mode 100644 index 00000000000000..6c5661ee63b48e --- /dev/null +++ b/spec/models/integrations/clickup_spec.rb @@ -0,0 +1,50 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Integrations::Clickup do + describe 'Validations' do + context 'when integration is active' do + before do + subject.active = true + end + + it { is_expected.to validate_presence_of(:project_url) } + it { is_expected.to validate_presence_of(:issues_url) } + + it_behaves_like 'issue tracker integration URL attribute', :project_url + it_behaves_like 'issue tracker integration URL attribute', :issues_url + end + + context 'when integration is inactive' do + before do + subject.active = false + end + + it { is_expected.not_to validate_presence_of(:project_url) } + it { is_expected.not_to validate_presence_of(:issues_url) } + end + end + + describe '#reference_pattern' do + it_behaves_like 'allows project key on reference pattern' + + it 'does allow project prefix on the reference' do + expect(subject.reference_pattern.match('PRJ-123')[:issue]).to eq('PRJ-123') + end + + it 'allows a hash with an alphanumeric key on the reference' do + expect(subject.reference_pattern.match('#abcd123')[:issue]).to eq('abcd123') + end + + it 'allows a global prefix with an alphanumeric key on the reference' do + expect(subject.reference_pattern.match('CU-abcd123')[:issue]).to eq('abcd123') + end + end + + describe '#fields' do + it 'only returns the project_url and issues_url fields' do + expect(subject.fields.pluck(:name)).to eq(%w[project_url issues_url]) + end + end +end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 855c5f66554ccd..09d8546484192a 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -76,6 +76,7 @@ it { is_expected.to have_one(:harbor_integration) } it { is_expected.to have_one(:redmine_integration) } it { is_expected.to have_one(:youtrack_integration) } + it { is_expected.to have_one(:clickup_integration) } it { is_expected.to have_one(:custom_issue_tracker_integration) } it { is_expected.to have_one(:bugzilla_integration) } it { is_expected.to have_one(:ewm_integration) } -- GitLab From 83a22056ab87b9bc0c7a4068bc9741197fd8f507 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 12:59:32 +0200 Subject: [PATCH 02/12] Add rubocop exceptions for ClickUp integration Adding exceptions for offences returned by rubocop for the ClickUp integration. Most of the work for the ClickUp integration is copied from other integrations (Redmine/Bugzilla/YouTrack), and the code (formatting) is 100% identical. This keeps the way each integration is written the same. Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- .rubocop_todo/layout/line_length.yml | 1 + .rubocop_todo/lint/mixed_regexp_capture_types.yml | 1 + .rubocop_todo/lint/unused_method_argument.yml | 1 + .rubocop_todo/rspec/missing_feature_category.yml | 1 + .rubocop_todo/style/format_string.yml | 1 + .rubocop_todo/style/numbered_parameters.yml | 1 + 6 files changed, 6 insertions(+) diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 339edfce783c87..dee0799c68fda4 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -364,6 +364,7 @@ Layout/LineLength: - 'app/models/integrations/base_issue_tracker.rb' - 'app/models/integrations/bugzilla.rb' - 'app/models/integrations/campfire.rb' + - 'app/models/integrations/clickup.rb' - 'app/models/integrations/chat_message/deployment_message.rb' - 'app/models/integrations/chat_message/merge_message.rb' - 'app/models/integrations/chat_message/note_message.rb' diff --git a/.rubocop_todo/lint/mixed_regexp_capture_types.yml b/.rubocop_todo/lint/mixed_regexp_capture_types.yml index 70f3773eb3172a..b2af57158dee34 100644 --- a/.rubocop_todo/lint/mixed_regexp_capture_types.yml +++ b/.rubocop_todo/lint/mixed_regexp_capture_types.yml @@ -2,6 +2,7 @@ Lint/MixedRegexpCaptureTypes: Exclude: - 'app/models/alert_management/alert.rb' + - 'app/models/integrations/clickup.rb' - 'app/models/integrations/ewm.rb' - 'app/uploaders/file_uploader.rb' - 'ee/lib/gitlab/code_owners/reference_extractor.rb' diff --git a/.rubocop_todo/lint/unused_method_argument.yml b/.rubocop_todo/lint/unused_method_argument.yml index 45f18e605b78ab..3952e0cac32854 100644 --- a/.rubocop_todo/lint/unused_method_argument.yml +++ b/.rubocop_todo/lint/unused_method_argument.yml @@ -121,6 +121,7 @@ Lint/UnusedMethodArgument: - 'app/models/group.rb' - 'app/models/integrations/bamboo.rb' - 'app/models/integrations/buildkite.rb' + - 'app/models/integrations/clickup.rb' - 'app/models/integrations/discord.rb' - 'app/models/integrations/ewm.rb' - 'app/models/integrations/hangouts_chat.rb' diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml index 0382b0ff43ea2f..0814b32713218a 100644 --- a/.rubocop_todo/rspec/missing_feature_category.yml +++ b/.rubocop_todo/rspec/missing_feature_category.yml @@ -4855,6 +4855,7 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/chat_message/pipeline_message_spec.rb' - 'spec/models/integrations/chat_message/push_message_spec.rb' - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb' + - 'spec/models/integrations/clickup_spec.rb' - 'spec/models/integrations/confluence_spec.rb' - 'spec/models/integrations/custom_issue_tracker_spec.rb' - 'spec/models/integrations/discord_spec.rb' diff --git a/.rubocop_todo/style/format_string.yml b/.rubocop_todo/style/format_string.yml index 9d202dcd7fbb49..df3c6326502952 100644 --- a/.rubocop_todo/style/format_string.yml +++ b/.rubocop_todo/style/format_string.yml @@ -81,6 +81,7 @@ Style/FormatString: - 'app/models/integrations/bamboo.rb' - 'app/models/integrations/bugzilla.rb' - 'app/models/integrations/campfire.rb' + - 'app/models/integrations/clickup.rb' - 'app/models/integrations/chat_message/pipeline_message.rb' - 'app/models/integrations/confluence.rb' - 'app/models/integrations/custom_issue_tracker.rb' diff --git a/.rubocop_todo/style/numbered_parameters.yml b/.rubocop_todo/style/numbered_parameters.yml index fc08515bc2f7b2..d73fab2a86aba9 100644 --- a/.rubocop_todo/style/numbered_parameters.yml +++ b/.rubocop_todo/style/numbered_parameters.yml @@ -15,6 +15,7 @@ Style/NumberedParameters: - 'app/models/concerns/integrations/reset_secret_fields.rb' - 'app/models/hooks/web_hook.rb' - 'app/models/integration.rb' + - 'app/models/integrations/clickup.rb' - 'app/models/integrations/datadog.rb' - 'app/models/integrations/youtrack.rb' - 'app/models/project.rb' -- GitLab From 8bddeacba834a30e370f268b497dfff7928768dd Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 13:51:37 +0200 Subject: [PATCH 03/12] Add new strings from ClickUp integration New strings from the ClickUp integration are added to gitlab.pot Auto-generated by `tooling/bin/gettext_extractor locale/gitlab.pot` Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- locale/gitlab.pot | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 84729dba6ef8c8..97dac5edbd3331 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -24788,6 +24788,12 @@ msgstr "" msgid "IssueTracker|Use Bugzilla as this project's issue tracker. %{docs_link}" msgstr "" +msgid "IssueTracker|Use ClickUp as this project's issue tracker. %{docs_link}" +msgstr "" + +msgid "IssueTracker|Use Clickup as this project's issue tracker." +msgstr "" + msgid "IssueTracker|Use IBM Engineering Workflow Management as this project's issue tracker." msgstr "" -- GitLab From 98df0de889ebcf8e590fcf3db519e2d9b19e4b68 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 13:55:49 +0200 Subject: [PATCH 04/12] Add feature category integrations to ClickUp RSpec Changelog: added --- .rubocop_todo/rspec/missing_feature_category.yml | 1 - spec/models/integrations/clickup_spec.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml index 0814b32713218a..0382b0ff43ea2f 100644 --- a/.rubocop_todo/rspec/missing_feature_category.yml +++ b/.rubocop_todo/rspec/missing_feature_category.yml @@ -4855,7 +4855,6 @@ RSpec/MissingFeatureCategory: - 'spec/models/integrations/chat_message/pipeline_message_spec.rb' - 'spec/models/integrations/chat_message/push_message_spec.rb' - 'spec/models/integrations/chat_message/wiki_page_message_spec.rb' - - 'spec/models/integrations/clickup_spec.rb' - 'spec/models/integrations/confluence_spec.rb' - 'spec/models/integrations/custom_issue_tracker_spec.rb' - 'spec/models/integrations/discord_spec.rb' diff --git a/spec/models/integrations/clickup_spec.rb b/spec/models/integrations/clickup_spec.rb index 6c5661ee63b48e..1919d8e05308ce 100644 --- a/spec/models/integrations/clickup_spec.rb +++ b/spec/models/integrations/clickup_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe Integrations::Clickup do +RSpec.describe Integrations::Clickup, feature_category: :integrations do describe 'Validations' do context 'when integration is active' do before do -- GitLab From 7a7d6eb77ebed4b5d8cb8de7eac92fbf7a592622 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 15:01:26 +0200 Subject: [PATCH 05/12] Remove some rubocop exceptions for ClickUp integration Remove the exceptions for line_length, unused_method_arguments, and format_string for the ClickUp integration Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- .rubocop_todo/layout/line_length.yml | 1 - .rubocop_todo/lint/unused_method_argument.yml | 1 - .rubocop_todo/style/format_string.yml | 1 - app/models/integrations/clickup.rb | 11 ++++++++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index dee0799c68fda4..339edfce783c87 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -364,7 +364,6 @@ Layout/LineLength: - 'app/models/integrations/base_issue_tracker.rb' - 'app/models/integrations/bugzilla.rb' - 'app/models/integrations/campfire.rb' - - 'app/models/integrations/clickup.rb' - 'app/models/integrations/chat_message/deployment_message.rb' - 'app/models/integrations/chat_message/merge_message.rb' - 'app/models/integrations/chat_message/note_message.rb' diff --git a/.rubocop_todo/lint/unused_method_argument.yml b/.rubocop_todo/lint/unused_method_argument.yml index 3952e0cac32854..45f18e605b78ab 100644 --- a/.rubocop_todo/lint/unused_method_argument.yml +++ b/.rubocop_todo/lint/unused_method_argument.yml @@ -121,7 +121,6 @@ Lint/UnusedMethodArgument: - 'app/models/group.rb' - 'app/models/integrations/bamboo.rb' - 'app/models/integrations/buildkite.rb' - - 'app/models/integrations/clickup.rb' - 'app/models/integrations/discord.rb' - 'app/models/integrations/ewm.rb' - 'app/models/integrations/hangouts_chat.rb' diff --git a/.rubocop_todo/style/format_string.yml b/.rubocop_todo/style/format_string.yml index df3c6326502952..9d202dcd7fbb49 100644 --- a/.rubocop_todo/style/format_string.yml +++ b/.rubocop_todo/style/format_string.yml @@ -81,7 +81,6 @@ Style/FormatString: - 'app/models/integrations/bamboo.rb' - 'app/models/integrations/bugzilla.rb' - 'app/models/integrations/campfire.rb' - - 'app/models/integrations/clickup.rb' - 'app/models/integrations/chat_message/pipeline_message.rb' - 'app/models/integrations/confluence.rb' - 'app/models/integrations/custom_issue_tracker.rb' diff --git a/app/models/integrations/clickup.rb b/app/models/integrations/clickup.rb index c72ba7b50e45fb..c1a267a2a57407 100644 --- a/app/models/integrations/clickup.rb +++ b/app/models/integrations/clickup.rb @@ -6,7 +6,7 @@ class Clickup < BaseIssueTracker validates :project_url, :issues_url, presence: true, public_url: true, if: :activated? - def reference_pattern(only_long: false) + def reference_pattern(*) return @reference_pattern if defined?(@reference_pattern) @reference_pattern = /((#|CU-)(?[a-z0-9]+)|(?[A-Z0-9_]{2,10}-\d+))\b/ @@ -21,8 +21,13 @@ def description end def help - docs_link = ActionController::Base.helpers.link_to _('Learn more.'), Rails.application.routes.url_helpers.help_page_url('user/project/integrations/clickup'), target: '_blank', rel: 'noopener noreferrer' - s_("IssueTracker|Use ClickUp as this project's issue tracker. %{docs_link}").html_safe % { docs_link: docs_link.html_safe } + docs_link = ActionController::Base.helpers.link_to _('Learn more.'), + Rails.application.routes.url_helpers.help_page_url('user/project/integrations/clickup'), + target: '_blank', + rel: 'noopener noreferrer' + format(s_( + "IssueTracker|Use ClickUp as this project's issue tracker. %{docs_link}" + ).html_safe, docs_link: docs_link.html_safe) end def self.to_param -- GitLab From c1ad0c50965b9e33c5e9708aceae81957b249f36 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 16:22:21 +0200 Subject: [PATCH 06/12] Do not include shared RSpecs for issue tracker service Shared test for 3EXT_EXT-1234 fails, because in ClickUp this is now a valid issue ID. Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- spec/models/integrations/clickup_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/models/integrations/clickup_spec.rb b/spec/models/integrations/clickup_spec.rb index 1919d8e05308ce..f83fb3ddabc286 100644 --- a/spec/models/integrations/clickup_spec.rb +++ b/spec/models/integrations/clickup_spec.rb @@ -27,8 +27,6 @@ end describe '#reference_pattern' do - it_behaves_like 'allows project key on reference pattern' - it 'does allow project prefix on the reference' do expect(subject.reference_pattern.match('PRJ-123')[:issue]).to eq('PRJ-123') end -- GitLab From 6e0dacfe443022994047eb21b36bd7f5935341b7 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 17:47:04 +0200 Subject: [PATCH 07/12] Add metrics for ClickUp integration Auto-generated metrics from `bundle gitlab:usage_metric_definition` Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- .../20230515153810_groups_clickup_active.yml | 23 +++++++++++++++++++ ...53826_groups_inheriting_clickup_active.yml | 23 +++++++++++++++++++ ...0230515153827_instances_clickup_active.yml | 23 +++++++++++++++++++ ...20230515153829_projects_clickup_active.yml | 23 +++++++++++++++++++ ...834_projects_inheriting_clickup_active.yml | 23 +++++++++++++++++++ 5 files changed, 115 insertions(+) create mode 100644 config/metrics/counts_all/20230515153810_groups_clickup_active.yml create mode 100644 config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml create mode 100644 config/metrics/counts_all/20230515153827_instances_clickup_active.yml create mode 100644 config/metrics/counts_all/20230515153829_projects_clickup_active.yml create mode 100644 config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml diff --git a/config/metrics/counts_all/20230515153810_groups_clickup_active.yml b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml new file mode 100644 index 00000000000000..ef526b37c55341 --- /dev/null +++ b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.groups_clickup_active +name: "count__integrations" +description: +product_section: +product_stage: +product_group: +value_type: number +status: active +milestone: "16.0" +introduced_by_url: +time_frame: all +data_source: +data_category: optional +instrumentation_class: +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml new file mode 100644 index 00000000000000..379e925356603e --- /dev/null +++ b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.groups_inheriting_clickup_active +name: "count__integrations" +description: +product_section: +product_stage: +product_group: +value_type: number +status: active +milestone: "16.0" +introduced_by_url: +time_frame: all +data_source: +data_category: optional +instrumentation_class: +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20230515153827_instances_clickup_active.yml b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml new file mode 100644 index 00000000000000..ddf2d0da24fa67 --- /dev/null +++ b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.instances_clickup_active +name: "count__integrations" +description: +product_section: +product_stage: +product_group: +value_type: number +status: active +milestone: "16.0" +introduced_by_url: +time_frame: all +data_source: +data_category: optional +instrumentation_class: +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20230515153829_projects_clickup_active.yml b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml new file mode 100644 index 00000000000000..cc60a15d25d5e4 --- /dev/null +++ b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.projects_clickup_active +name: "count__integrations" +description: +product_section: +product_stage: +product_group: +value_type: number +status: active +milestone: "16.0" +introduced_by_url: +time_frame: all +data_source: +data_category: optional +instrumentation_class: +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate diff --git a/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml new file mode 100644 index 00000000000000..472340bf762a36 --- /dev/null +++ b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml @@ -0,0 +1,23 @@ +--- +key_path: counts.projects_inheriting_clickup_active +name: "count__integrations" +description: +product_section: +product_stage: +product_group: +value_type: number +status: active +milestone: "16.0" +introduced_by_url: +time_frame: all +data_source: +data_category: optional +instrumentation_class: +performance_indicator_type: [] +distribution: +- ce +- ee +tier: +- free +- premium +- ultimate -- GitLab From 33793598bffc5020961cfca0f5e023555a4d35b5 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Mon, 15 May 2023 21:52:22 +0200 Subject: [PATCH 08/12] Rework metrics for ClickUp integration Replace generated metrics by same pattern as other integrations, like YouTrack Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- .../20230515153810_groups_clickup_active.yml | 14 ++++++-------- ...0515153826_groups_inheriting_clickup_active.yml | 14 ++++++-------- .../20230515153827_instances_clickup_active.yml | 14 ++++++-------- .../20230515153829_projects_clickup_active.yml | 14 ++++++-------- ...15153834_projects_inheriting_clickup_active.yml | 14 ++++++-------- 5 files changed, 30 insertions(+), 40 deletions(-) diff --git a/config/metrics/counts_all/20230515153810_groups_clickup_active.yml b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml index ef526b37c55341..b91e97f613b326 100644 --- a/config/metrics/counts_all/20230515153810_groups_clickup_active.yml +++ b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml @@ -1,18 +1,16 @@ --- key_path: counts.groups_clickup_active -name: "count__integrations" -description: -product_section: -product_stage: -product_group: +description: Count of groups with active integrations for ClickUp +product_section: dev +product_stage: manage +product_group: integrations value_type: number status: active milestone: "16.0" -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all -data_source: +data_source: database data_category: optional -instrumentation_class: performance_indicator_type: [] distribution: - ce diff --git a/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml index 379e925356603e..a37243ba133b49 100644 --- a/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml +++ b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml @@ -1,18 +1,16 @@ --- key_path: counts.groups_inheriting_clickup_active -name: "count__integrations" -description: -product_section: -product_stage: -product_group: +description: Count of active groups inheriting integrations for ClickUp +product_section: dev +product_stage: manage +product_group: integrations value_type: number status: active milestone: "16.0" -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all -data_source: +data_source: database data_category: optional -instrumentation_class: performance_indicator_type: [] distribution: - ce diff --git a/config/metrics/counts_all/20230515153827_instances_clickup_active.yml b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml index ddf2d0da24fa67..995ff105ead040 100644 --- a/config/metrics/counts_all/20230515153827_instances_clickup_active.yml +++ b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml @@ -1,18 +1,16 @@ --- key_path: counts.instances_clickup_active -name: "count__integrations" -description: -product_section: -product_stage: -product_group: +description: Count of active instance-level integrations for ClickUp +product_section: dev +product_stage: manage +product_group: integrations value_type: number status: active milestone: "16.0" -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all -data_source: +data_source: database data_category: optional -instrumentation_class: performance_indicator_type: [] distribution: - ce diff --git a/config/metrics/counts_all/20230515153829_projects_clickup_active.yml b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml index cc60a15d25d5e4..9be5f2c9f9a46b 100644 --- a/config/metrics/counts_all/20230515153829_projects_clickup_active.yml +++ b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml @@ -1,18 +1,16 @@ --- key_path: counts.projects_clickup_active -name: "count__integrations" -description: -product_section: -product_stage: -product_group: +description: Count of projects with active integrations for ClickUp +product_section: dev +product_stage: manage +product_group: integrations value_type: number status: active milestone: "16.0" -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all -data_source: +data_source: database data_category: optional -instrumentation_class: performance_indicator_type: [] distribution: - ce diff --git a/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml index 472340bf762a36..78ba409c7a7075 100644 --- a/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml +++ b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml @@ -1,18 +1,16 @@ --- key_path: counts.projects_inheriting_clickup_active -name: "count__integrations" -description: -product_section: -product_stage: -product_group: +description: Count of active projects inheriting integrations for ClickUp +product_section: dev +product_stage: manage +product_group: integrations value_type: number status: active milestone: "16.0" -introduced_by_url: +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all -data_source: +data_source: database data_category: optional -instrumentation_class: performance_indicator_type: [] distribution: - ce -- GitLab From a3a4341121a31a1429b29359f3f229a1ba8e225f Mon Sep 17 00:00:00 2001 From: Evan Read Date: Tue, 16 May 2023 06:45:05 +0000 Subject: [PATCH 09/12] Update documentation for ClickUp Apply review changes from @eread Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- doc/api/integrations.md | 8 +++++--- doc/user/project/integrations/clickup.md | 6 ++++-- doc/user/project/integrations/index.md | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/api/integrations.md b/doc/api/integrations.md index af42a5916a847d..7e2e7232338a56 100644 --- a/doc/api/integrations.md +++ b/doc/api/integrations.md @@ -336,11 +336,13 @@ GET /projects/:id/integrations/campfire ## ClickUp -ClickUp issue tracker +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732) in GitLab 16.1. -### Create/Edit ClickUp integration +ClickUp issue tracker. -Set ClickUp integration for a project. +### Create or edit ClickUp integration + +Set up ClickUp integration for a project. ```plaintext PUT /projects/:id/integrations/clickup diff --git a/doc/user/project/integrations/clickup.md b/doc/user/project/integrations/clickup.md index ac034da8e0c2a8..255f0c3f56b57a 100644 --- a/doc/user/project/integrations/clickup.md +++ b/doc/user/project/integrations/clickup.md @@ -6,6 +6,8 @@ info: To determine the technical writer assigned to the Stage/Group associated w # ClickUp **(FREE)** +> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732) in GitLab 16.1. + You can use [ClickUp](https://clickup.com/) as an external issue tracker. To enable the ClickUp integration in a project: @@ -35,7 +37,7 @@ For more information about the steps and consequences of disabling GitLab issues ## Reference ClickUp issues in GitLab -You can reference your Redmine issues using: +You can reference your ClickUp issues using: - `#`, where `` is a alphanumerical string (example `#8wrtcd932`). - `CU-`, where `` is a alphanumerical string (example `CU-8wrtcd932`). @@ -43,7 +45,7 @@ You can reference your Redmine issues using: - `` is a ClickUp list custom prefix ID. - `` is a number. -In links, the `CU-` part is ignored, and it will link to the global URL of the issue. When a custom +In links, the `CU-` part is ignored and it links to the global URL of the issue. When a custom prefix is used in a ClickUp list, the prefix part is part of the link. We suggest using the `CU-` format (`CU-`) if you have both internal and external issue diff --git a/doc/user/project/integrations/index.md b/doc/user/project/integrations/index.md index f815f138c3a0ed..3bdb6ada00e968 100644 --- a/doc/user/project/integrations/index.md +++ b/doc/user/project/integrations/index.md @@ -50,7 +50,7 @@ You can configure the following integrations. | [Bugzilla](bugzilla.md) | Use Bugzilla as the issue tracker. | **{dotted-circle}** No | | Buildkite | Run CI/CD pipelines with Buildkite. | **{check-circle}** Yes | | Campfire | Connect to chat. | **{dotted-circle}** No | -| [ClickUp](clickup.md) | Use ClickUp as the issue tracker. | **{dotted-circle}** No | +| [ClickUp](clickup.md) | Use ClickUp as the issue tracker. | **{dotted-circle}** No | | [Confluence Workspace](../../../api/integrations.md#confluence-integration) | Use Confluence Cloud Workspace as an internal wiki. | **{dotted-circle}** No | | [Custom issue tracker](custom_issue_tracker.md) | Use a custom issue tracker. | **{dotted-circle}** No | | [Datadog](../../../integration/datadog.md) | Trace your GitLab pipelines with Datadog. | **{check-circle}** Yes | -- GitLab From 57d6159b7d95852533398f6ba3a743488f328f2d Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Tue, 16 May 2023 13:45:36 +0200 Subject: [PATCH 10/12] Update milestone in ClickUp metric files to 16.1 Update the milestone in all ClickUp metric files from 16.0 (auto- generated) to 16.1, as suggested in the merge request review by @bmarjanovic Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- .../metrics/counts_all/20230515153810_groups_clickup_active.yml | 2 +- .../20230515153826_groups_inheriting_clickup_active.yml | 2 +- .../counts_all/20230515153827_instances_clickup_active.yml | 2 +- .../counts_all/20230515153829_projects_clickup_active.yml | 2 +- .../20230515153834_projects_inheriting_clickup_active.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/config/metrics/counts_all/20230515153810_groups_clickup_active.yml b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml index b91e97f613b326..b5d999e76fd385 100644 --- a/config/metrics/counts_all/20230515153810_groups_clickup_active.yml +++ b/config/metrics/counts_all/20230515153810_groups_clickup_active.yml @@ -6,7 +6,7 @@ product_stage: manage product_group: integrations value_type: number status: active -milestone: "16.0" +milestone: "16.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all data_source: database diff --git a/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml index a37243ba133b49..66a1efdc47be02 100644 --- a/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml +++ b/config/metrics/counts_all/20230515153826_groups_inheriting_clickup_active.yml @@ -6,7 +6,7 @@ product_stage: manage product_group: integrations value_type: number status: active -milestone: "16.0" +milestone: "16.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all data_source: database diff --git a/config/metrics/counts_all/20230515153827_instances_clickup_active.yml b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml index 995ff105ead040..de631475e5d5fa 100644 --- a/config/metrics/counts_all/20230515153827_instances_clickup_active.yml +++ b/config/metrics/counts_all/20230515153827_instances_clickup_active.yml @@ -6,7 +6,7 @@ product_stage: manage product_group: integrations value_type: number status: active -milestone: "16.0" +milestone: "16.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all data_source: database diff --git a/config/metrics/counts_all/20230515153829_projects_clickup_active.yml b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml index 9be5f2c9f9a46b..4f7c8775614a1b 100644 --- a/config/metrics/counts_all/20230515153829_projects_clickup_active.yml +++ b/config/metrics/counts_all/20230515153829_projects_clickup_active.yml @@ -6,7 +6,7 @@ product_stage: manage product_group: integrations value_type: number status: active -milestone: "16.0" +milestone: "16.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all data_source: database diff --git a/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml index 78ba409c7a7075..1e45317f2a5a4f 100644 --- a/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml +++ b/config/metrics/counts_all/20230515153834_projects_inheriting_clickup_active.yml @@ -6,7 +6,7 @@ product_stage: manage product_group: integrations value_type: number status: active -milestone: "16.0" +milestone: "16.1" introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/120732 time_frame: all data_source: database -- GitLab From fdc427a776aa3e5f1b7e5eca6d8df19ceb63d28d Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Tue, 16 May 2023 13:47:35 +0200 Subject: [PATCH 11/12] Memoize regex pattern for ClickUp issues Changing the way this is written, as suggested in the merge request review by @bmarjanovic Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- app/models/integrations/clickup.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/models/integrations/clickup.rb b/app/models/integrations/clickup.rb index c1a267a2a57407..7cc05d41e14e96 100644 --- a/app/models/integrations/clickup.rb +++ b/app/models/integrations/clickup.rb @@ -7,9 +7,7 @@ class Clickup < BaseIssueTracker validates :project_url, :issues_url, presence: true, public_url: true, if: :activated? def reference_pattern(*) - return @reference_pattern if defined?(@reference_pattern) - - @reference_pattern = /((#|CU-)(?[a-z0-9]+)|(?[A-Z0-9_]{2,10}-\d+))\b/ + @reference_pattern ||= /((#|CU-)(?[a-z0-9]+)|(?[A-Z0-9_]{2,10}-\d+))\b/ end def title -- GitLab From 0931acf7a788f0bb6936a8bfa317b8f1c78b5228 Mon Sep 17 00:00:00 2001 From: Daniel Vijge <4204039-daniel.vijge@users.noreply.gitlab.com> Date: Wed, 17 May 2023 13:05:03 +0200 Subject: [PATCH 12/12] Add ClickUp integration to import/export all_models spec Add new integration to all_models spec to correct failing job that only showed up in a merged result pipeline Related issue https://gitlab.com/gitlab-org/gitlab/-/issues/411254 Changelog: added --- spec/lib/gitlab/import_export/all_models.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/lib/gitlab/import_export/all_models.yml b/spec/lib/gitlab/import_export/all_models.yml index 8a2602ea9f6296..344a26f7a3e5ae 100644 --- a/spec/lib/gitlab/import_export/all_models.yml +++ b/spec/lib/gitlab/import_export/all_models.yml @@ -581,6 +581,7 @@ project: - custom_issue_tracker_integration - bugzilla_integration - ewm_integration +- clickup_integration - external_wiki_integration - mock_ci_integration - mock_monitoring_integration -- GitLab