diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index c415db06b25..eb09d31fab9 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -1fc116768ec27739965f6394d2fd2eddea22f621 +c6e8f5d546e404086299802237030b8d69335574 diff --git a/app/models/prometheus_alert.rb b/app/models/prometheus_alert.rb index 80eef1705e7..f0441d4a3cb 100644 --- a/app/models/prometheus_alert.rb +++ b/app/models/prometheus_alert.rb @@ -22,7 +22,7 @@ class PrometheusAlert < ApplicationRecord after_save :clear_prometheus_adapter_cache! after_destroy :clear_prometheus_adapter_cache! - validates :environment, :project, :prometheus_metric, presence: true + validates :environment, :project, :prometheus_metric, :threshold, :operator, presence: true validates :runbook_url, length: { maximum: 255 }, allow_blank: true, addressable_url: { enforce_sanitization: true, ascii_only: true } validate :require_valid_environment_project! diff --git a/changelogs/unreleased/allow-robots-api.yml b/changelogs/unreleased/allow-robots-api.yml new file mode 100644 index 00000000000..4cd83b774b9 --- /dev/null +++ b/changelogs/unreleased/allow-robots-api.yml @@ -0,0 +1,5 @@ +--- +title: Allow crawler access to api +merge_request: 39520 +author: +type: fixed diff --git a/doc/ci/yaml/README.md b/doc/ci/yaml/README.md index 75f95988cee..e6e84fbc3cb 100644 --- a/doc/ci/yaml/README.md +++ b/doc/ci/yaml/README.md @@ -314,7 +314,6 @@ the [common `if` clauses for `rules`](#common-if-clauses-for-rules) for more exa | `if: '$CI_PIPELINE_SOURCE == "push"'` | Control when both branch pipelines and tag pipelines run. | | `if: $CI_COMMIT_TAG` | Control when tag pipelines run. | | `if: $CI_COMMIT_BRANCH` | Control when branch pipelines run. | -| `if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BEFORE_SHA != "0000000000000000000000000000000000000000"'` | Control when pipelines run for new branches that are created or pushed with no commits. See the [skip job if branch is empty](#skip-job-if-branch-is-empty) example for more details. | For example, with the following configuration, pipelines run for all `push` events (changes to branches and new tags) as long as they *don't* have `-wip` in the commit message. Scheduled @@ -1369,19 +1368,6 @@ Other commonly used variables for `if` clauses: - `if: '$CUSTOM_VARIABLE == "value1"'`: If the custom variable `CUSTOM_VARIABLE` is exactly `value1`. -##### Skip job if branch is empty - -A branch has no commits if the value of`$CI_COMMIT_BEFORE_SHA` is -`0000000000000000000000000000000000000000`. You can use this value to -avoid running a job on branches with no commits. - -To run a job only on branches with commits: - -```yaml -rules: - - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BEFORE_SHA != "0000000000000000000000000000000000000000"' -``` - #### `rules:changes` To determine if jobs should be added to a pipeline, `rules: changes` clauses check diff --git a/doc/integration/jira_development_panel.md b/doc/integration/jira_development_panel.md index 6b14e9e30fb..808c7426365 100644 --- a/doc/integration/jira_development_panel.md +++ b/doc/integration/jira_development_panel.md @@ -1,105 +1,120 @@ -# GitLab Jira development panel integration **(PREMIUM)** +--- +stage: Create +group: Ecosystem +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +--- + +# GitLab Jira Development Panel integration **(PREMIUM)** > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/2381) in [GitLab Premium](https://about.gitlab.com/pricing/) 10.0. -Complementary to our [existing Jira](../user/project/integrations/jira.md) project integration, you're now able to integrate -GitLab projects with [Jira Development Panel](https://confluence.atlassian.com/adminjiraserver070/). Both can be used -simultaneously. This works with self-managed GitLab or GitLab.com integrated with: +The Jira Development Panel integration allows you to reference Jira issues within GitLab, displaying activity in the [Development panel](https://support.atlassian.com/jira-software-cloud/docs/view-development-information-for-an-issue/) in the issue. It complements the [GitLab Jira integration](../user/project/integrations/jira.md). You may choose to configure both integrations to take advantage of both sets of features. (See a [feature comparison](../user/project/integrations/jira_integrations.md#feature-comparison)). -- Jira hosted by you. -- Cloud Jira. +Depending on your environment, you can enable this integration by configuring the Jira DVCS connector or by using the GitLab for Jira app in the Atlassian Marketplace. See the [Configuration](#configuration) section for details. -By doing this you can easily access related GitLab merge requests, branches, and commits directly from a Jira issue. +## Features + +| Your mention of Jira issue ID in GitLab context | Automated effect in Jira issue | +|---------------------------------------------------|--------------------------------------------------------------------------------------------------------| +| In a merge request | Link to the MR is displayed in Development panel. | +| In a branch name | Link to the branch is displayed in Development panel. | +| In a commit message | Link to the commit is displayed in Development panel. | +| In a commit message with Jira Smart Commit format | Displays your custom comment or logged time spent and/or performs specified issue transition on merge. | + +With this integration, you can access related GitLab merge requests, branches, and commits directly from a Jira issue, reflecting your work in GitLab. From the Development panel, you can open a detailed view and take actions including creating a new merge request from a branch. For more information, see [Usage](#usage). This integration connects all GitLab projects within a top-level group or a personal namespace to projects in the Jira instance. A top-level GitLab group is one that does not have any parent group itself. All the projects of that top-level group, as well as projects of the top-level group's subgroups nesting down, are connected. Alternatively, you can specify a GitLab personal namespace in the Jira configuration, which will then connect the projects in that personal namespace to Jira. -NOTE: **Note:** -Note this is different from the [existing Jira](../user/project/integrations/jira.md) project integration, where the mapping -is one GitLab project to the entire Jira instance. +This differs from the [Jira integration](../user/project/integrations/jira.md), where the mapping is between one GitLab project and the entire Jira instance. + +## Configuration + +- If you're using GitLab.com and Jira Cloud, the recommended method to enable this integration is to install the [GitLab for Jira app](#gitlab-for-jira-app) from the Atlassian Marketplace, which offers a real-time sync between GitLab and Jira. +- If you're using self-managed GitLab, self-managed Jira, or both, configure the integration using [Jira's DVCS Connector](#jira-dvcs-configuration), which syncs data hourly. We recommend that a GitLab group admin or instance admin (in the case of self-managed GitLab) set up the integration, in order to simplify administration. -TIP: **Tip:** -Create and use a single-purpose `jira` user in GitLab, so that removing -regular users won't impact your integration. +### Jira DVCS configuration -## Requirements +NOTE: **Note:** +If you're using GitLab.com and Jira Cloud, we recommend you use the [GitLab for Jira app](#gitlab-for-jira-app), unless you have a specific need for the DVCS Connector. -### Self-managed GitLab - -If you are using self-managed GitLab, make sure your GitLab instance is accessible by Jira. - -- If you are connecting to Jira Cloud, make sure your instance is accessible via the internet. +- If you are using self-managed GitLab, make sure your GitLab instance is accessible by Jira. +- If you're connecting to Jira Cloud, ensure your instance is accessible through the internet. - If you are using Jira Server, make sure your instance is accessible however your network is set up. -### GitLab.com +#### GitLab account configuration for DVCS -There are no special requirements if you are using GitLab.com. +TIP: **Tip:** +To ensure that regular user account maintenance doesn't impact your integration, +create and use a single-purpose `jira` user in GitLab. -## GitLab Configuration +1. In GitLab, create a new application to allow Jira to connect with your GitLab account. -1. In GitLab, create a new application in order to allow Jira to connect with your GitLab account + While signed in to the GitLab account that you want Jira to use to connect to GitLab, + click your profile avatar at the top right, and then click **Settings > Applications**. + Use the form to create a new application. - While logged-in, go to `Settings -> Applications`. (Click your profile avatar at - the top right, choose `Settings`, and then navigate to `Applications` from the left - navigation menu.) Use the form to create a new application. + In the **Name** field, enter a descriptive name for the integration, such as `Jira`. - Enter a useful name for the `Name` field. - - For the `Redirect URI` field, enter `https:///login/oauth/callback`, - replacing `` appropriately. So for example, if you are using GitLab.com, + For the **Redirect URI** field, enter `https:///login/oauth/callback`, + replacing `` with your GitLab instance domain. For example, if you are using GitLab.com, this would be `https://gitlab.com/login/oauth/callback`. NOTE: **Note:** If using a GitLab version earlier than 11.3, the `Redirect URI` must be - `https:///-/jira/login/oauth/callback`. If you want Jira - to have access to all projects, GitLab recommends an administrator creates the - Application. + `https:///-/jira/login/oauth/callback`. If you want Jira + to have access to all projects, GitLab recommends that an administrator create the + application. - ![GitLab Application setup](img/jira_dev_panel_gl_setup_1.png) + ![GitLab application setup](img/jira_dev_panel_gl_setup_1.png) - - Check `api` in the Scopes section. + - Check **API** in the Scopes section and uncheck any other checkboxes. -1. Click `Save application`. You will see the generated 'Application ID' and 'Secret' values. - Copy these values that you will use on the Jira configuration side. +1. Click **Save application**. GitLab displays the generated **Application ID** + and **Secret** values. Copy these values, which you will use in Jira. -## Jira Configuration +#### Jira DVCS Connector setup -### GitLab self-managed +NOTE: **Note:** +If you're using GitLab.com and Jira Cloud, we recommend you use the [GitLab for Jira app](#gitlab-for-jira-app), unless you have a specific need for the DVCS Connector. -1. In Jira, go to **Jira Settings > Applications > DVCS accounts**, then click **Link GitHub Enterprise account** to start creating a new integration. - (We are pretending to be GitHub in this integration until there is further platform support from Jira.) +1. Ensure you have completed the [GitLab configuration](#gitlab-account-configuration-for-dvcs). +1. If you're using Jira Server, go to **Settings (gear) > Applications > DVCS accounts**. + If you're using Jira Cloud, go to **Settings (gear) > Products > DVCS accounts**. +1. Click **Link GitHub Enterprise account** to start creating a new integration. + (We're pretending to be GitHub in this integration, until there's additional platform support in Jira.) ![Jira Settings](img/jira_dev_panel_jira_setup_1-1.png) -1. Complete the form +1. Complete the form: - Select GitHub Enterprise for the `Host` field. + Select **GitHub Enterprise** for the **Host** field. - For the `Team or User Account` field, enter the relative path of a top-level GitLab group that you have access to, + In the **Team or User Account** field, enter the relative path of a top-level GitLab group that you have access to, or the relative path of your personal namespace. ![Creation of Jira DVCS integration](img/jira_dev_panel_jira_setup_2.png) - For the `Host URL` field, enter `https:///`, - replacing `` appropriately. So for example, if you are using GitLab.com, + In the **Host URL** field, enter `https:///`, + replacing `` with your GitLab instance domain. For example, if you are using GitLab.com, this would be `https://gitlab.com/`. NOTE: **Note:** - If using a GitLab version earlier than 11.3 the `Host URL` value should be `https:///-/jira` + If using a GitLab version earlier than 11.3 the **Host URL** value should be `https:///-/jira` - For the `Client ID` field, use the `Application ID` value from the previous section. + For the **Client ID** field, use the **Application ID** value from the previous section. - For the `Client Secret` field, use the `Secret` value from the previous section. + For the **Client Secret** field, use the **Secret** value from the previous section. Ensure that the rest of the checkboxes are checked. -1. Click `Add` to complete and create the integration. +1. Click **Add** to complete and create the integration. Jira takes up to a few minutes to know about (import behind the scenes) all the commits and branches for all the projects in the GitLab group you specified in the previous step. These are refreshed @@ -111,21 +126,20 @@ There are no special requirements if you are using GitLab.com. ![Refresh GitLab information in Jira](img/jira_dev_panel_manual_refresh.png) -To connect additional GitLab projects from other GitLab top-level groups (or personal namespaces), repeat the above +To connect additional GitLab projects from other GitLab top-level groups (or personal namespaces), repeat the previous steps with additional Jira DVCS accounts. -### GitLab.com +Now that the integration is configured, read more about how to test and use it in [Usage](#usage). -You can integrate GitLab.com and Jira Cloud using the **GitLab for Jira** App in the [Atlassian Marketplace](https://marketplace.atlassian.com/apps/1221011/gitlab-for-jira). +### GitLab for Jira app -GitLab and Jira can also be integrated using the DVCS connector as described in the [GitLab self-managed section](#gitlab-self-managed). The [GitLab for Jira App](https://marketplace.atlassian.com/apps/1221011/gitlab-for-jira) is recommended when using GitLab.com and Jira Cloud because data is synchronized in real time, while the DVCS connector updates data only once per hour. +You can integrate GitLab.com and Jira Cloud using the [GitLab for Jira](https://marketplace.atlassian.com/apps/1221011/gitlab-for-jira) app in the Atlassian Marketplace. + +This method is recommended when using GitLab.com and Jira Cloud because data is synchronized in realtime, while the DVCS connector updates data only once per hour. If you are not using both of these environments, use the [Jira DVCS Connector](#jira-dvcs-configuration) method. For a walkthrough of the integration with GitLab for Jira, watch [Configure GitLab Jira Integration using Marketplace App](https://youtu.be/SwR-g1s1zTo) on YouTube. -NOTE: **Note:** -The **GitLab for Jira** App is only compatible with GitLab.com **and** Jira Cloud. - 1. Go to **Jira Settings > Apps > Find new apps**, then search for GitLab. 1. Click **GitLab for Jira**, then click **Get it now**. Or go the [App in the marketplace directly](https://marketplace.atlassian.com/apps/1221011/gitlab-for-jira) @@ -142,6 +156,8 @@ The GitLab user only needs access when adding a new namespace. For syncing with After a namespace is added, all future commits, branches and merge requests of all projects under that namespace will be synced to Jira. Past data cannot be synced at the moment. +For more information, see [Usage](#usage). + #### Troubleshooting GitLab for Jira The GitLab for Jira App uses an iframe to add namespaces on the settings page. Some browsers block cross-site cookies which can lead to a message saying that the user needs to log in on GitLab.com even though the user is already logged in. @@ -164,6 +180,8 @@ Click the links to see your GitLab repository data. ![GitLab merge requests details on a Jira issue](img/jira_dev_panel_jira_setup_5.png) +For more information on using Jira Smart Commits to track time against an issue, specify an issue transition, or add a custom comment, see the Atlassian page [Using Smart Commits](https://confluence.atlassian.com/fisheye/using-smart-commits-960155400.html). + ## Limitations - This integration is currently not supported on GitLab instances under a [relative URL](https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-a-relative-url-for-gitlab) (for example, `http://example.com/gitlab`). diff --git a/doc/user/packages/container_registry/index.md b/doc/user/packages/container_registry/index.md index 10e5b36bf24..e1706ee9c90 100644 --- a/doc/user/packages/container_registry/index.md +++ b/doc/user/packages/container_registry/index.md @@ -133,8 +133,10 @@ enabled in your account, you need to pass a [personal access token](../../profile/personal_access_tokens.md) instead of your password in order to login to GitLab's Container Registry. -If a project is private, credentials are needed for authorization. -There are two ways to do this: +Credentials must be provided for authorization to any non-public registry. Only project members can access private, +GitLab-hosted registries. + +There are two ways to authenticate: - By using a [personal access token](../../profile/personal_access_tokens.md). - By using a [deploy token](../../project/deploy_tokens/index.md). diff --git a/doc/user/project/integrations/jira.md b/doc/user/project/integrations/jira.md index 79c497489db..3d23b230322 100644 --- a/doc/user/project/integrations/jira.md +++ b/doc/user/project/integrations/jira.md @@ -6,20 +6,11 @@ info: To determine the technical writer assigned to the Stage/Group associated w # GitLab Jira integration -GitLab Issues are a powerful tool for discussing ideas and planning and tracking work. -However, many organizations have been using Jira for these purposes and have -extensive data and business processes built into it. +If you need to use Jira to track work that's implemented in GitLab, GitLab's Jira integrations make the process of working across systems more efficent. -While you can always [migrate](../../../user/project/import/jira.md) issues and processes from Jira to GitLab Issues, -you can also opt to continue using Jira and use it together with GitLab through -our integration. +This page is about the GitLab Jira integration, which is available in every GitLab project by default, allowing you to connect it to any Jira instance, whether Cloud or self-managed. To compare features with the complementary Jira Development Panel integration, see [Jira integrations](jira_integrations.md). -For a video demonstration of integration with Jira, watch [GitLab workflow with Jira issues and Jenkins pipelines](https://youtu.be/Jn-_fyra7xQ). - -Once you integrate your GitLab project with your Jira instance, you can automatically -detect and cross-reference activity between the GitLab project and any of your projects -in Jira. This includes the ability to close or transition Jira issues when the work -is completed in GitLab. +After you set up this integration, you can cross-reference activity in the GitLab project with any of your projects in Jira. This includes the ability to close or transition Jira issues when work is completed in GitLab. Features include: @@ -29,13 +20,15 @@ Features include: - **Mention that a commit or MR resolves or closes a specific Jira issue** and when it's merged to the default branch: - GitLab's MR displays a note that it closed the Jira issue. Prior to the merge, MRs indicate which issue they will close. - The Jira issue shows the activity and is closed or otherwise transitioned as specified in your GitLab settings. -- **View Jira issues directly in GitLab** **(PREMIUM)** +- **View a list of Jira issues directly in GitLab** **(PREMIUM)** For additional features, you can install the [Jira Development Panel integration](../../../integration/jira_development_panel.md). This enables you to: - In a Jira issue, display relevant GitLab information in the [development panel](https://support.atlassian.com/jira-software-cloud/docs/view-development-information-for-an-issue/), including related branches, commits, and merge requests. - Use Jira [Smart Commits](https://confluence.atlassian.com/fisheye/using-smart-commits-960155400.html) in GitLab to add Jira comments, log time spent on the issue, or apply any issue transition. +See the [feature comparison](jira_integrations.md#feature-comparison) for more details. + ## Configuration Each GitLab project can be configured to connect to an entire Jira instance. That diff --git a/doc/user/project/integrations/jira_integrations.md b/doc/user/project/integrations/jira_integrations.md new file mode 100644 index 00000000000..90cd9bf3acb --- /dev/null +++ b/doc/user/project/integrations/jira_integrations.md @@ -0,0 +1,35 @@ +--- +stage: Create +group: Ecosystem +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#designated-technical-writers +--- + +# Jira integrations + +## Introduction + +GitLab Issues are a tool for discussing ideas and planning and tracking work. However, your organization may already use Jira for these purposes, with +extensive, established data and business processes they rely on. + +Although you can [migrate](../../../user/project/import/jira.md) your Jira issues and work exclusively in GitLab, you also have the option of continuing to use Jira by using GitLab's Jira integrations. + +## Integrations + +The following Jira integrations allow different types of cross-referencing between GitLab activity and Jira issues, with additional features: + +- [**Jira integration**](jira.md) - This is built in to GitLab. In a given GitLab project, it can be configured to connect to any Jira instance, self-managed or Cloud. +- [**Jira development panel integration**](../../../integration/jira_development_panel.md) **(PREMIUM)** - This connects all GitLab projects under a specified group or personal namespace. + - If you're using Jira Cloud and GitLab.com, install the [GitLab for Jira](https://marketplace.atlassian.com/apps/1221011/gitlab-for-jira) app in the Atlassian Marketplace and see its [documentation](../../../integration/jira_development_panel.md#gitlab-for-jira-app). + - For all other environments, use the [Jira DVCS Connector configuration instructions](../../../integration/jira_development_panel.md#configuration). + +### Feature comparison + +| Capability | Jira integration | Jira Development Panel integration | +|-----------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------| +| Mention of Jira issue ID in GitLab is automatically linked to that issue | Yes | No | +| Mention of Jira issue ID in GitLab issue/MR is reflected in the Jira issue | Yes, as a Jira comment with the GitLab issue/MR title and a link back to it. Its first mention also adds the GitLab page to the Jira issue under “Web links”. | Yes, in the issue’s Development panel | +| Mention of Jira issue ID in GitLab commit message is reflected in the issue | Yes. The entire commit message is added to the Jira issue as a comment and under “Web links”, each with a link back to the commit in GitLab. | Yes, in the issue’s Development panel and optionally with a custom comment on the Jira issue using Jira Smart Commits. | +| Mention of Jira issue ID in GitLab branch names is reflected in Jira issue | No | Yes, in the issue’s Development panel | +| Record Jira time tracking info against an issue | No | Yes. Time can be specified via Jira Smart Commits. | +| Transition or close a Jira issue with a Git commit or merge request | Yes. Only a single transition type, typically configured to close the issue by setting it to Done. | Yes. Transition to any state using Jira Smart Commits. | +| Display a list of Jira issues | Yes **(PREMIUM)** | No | diff --git a/public/robots.txt b/public/robots.txt index 12ceba88395..f3fe51a25b0 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -15,7 +15,6 @@ User-Agent: * Disallow: /autocomplete/users Disallow: /search -Disallow: /api Disallow: /admin Disallow: /profile Disallow: /dashboard diff --git a/spec/models/prometheus_alert_spec.rb b/spec/models/prometheus_alert_spec.rb index ed9d981e2dd..8e517e1764e 100644 --- a/spec/models/prometheus_alert_spec.rb +++ b/spec/models/prometheus_alert_spec.rb @@ -50,6 +50,8 @@ RSpec.describe PrometheusAlert do it { is_expected.to validate_presence_of(:environment) } it { is_expected.to validate_presence_of(:project) } it { is_expected.to validate_presence_of(:prometheus_metric) } + it { is_expected.to validate_presence_of(:operator) } + it { is_expected.to validate_presence_of(:threshold) } context 'when environment and metric belongs same project' do it { is_expected.to be_valid }