From 2c485557559252fa4ab9701a22aebc481dca65cb Mon Sep 17 00:00:00 2001 From: michaelbirnstiehl Date: Sun, 25 Oct 2020 19:47:18 -0500 Subject: [PATCH] SONAR-14015 Create GitHub ALM Integration page --- .../src/images/add-github-project.png | Bin 0 -> 9681 bytes .../src/images/github-branch-decoration.png | Bin 0 -> 51501 bytes .../pages/analysis/azuredevops-integration.md | 18 ++++++++-- .../pages/analysis/bitbucket-integration.md | 26 ++++++++------ .../src/pages/analysis/github-integration.md | 34 +++++++++++++++--- .../src/pages/analysis/gitlab-integration.md | 30 +++++++--------- .../src/pages/analysis/pull-request.md | 2 +- .../includes/advanced-pr-decor-section.md | 11 ------ .../src/pages/includes/advanced-pr.md | 11 ------ .../pages/includes/authentication-steps.md | 7 ---- server/sonar-docs/src/pages/index.md | 2 +- .../src/pages/setup/upgrade-notes.md | 2 +- 12 files changed, 75 insertions(+), 68 deletions(-) create mode 100644 server/sonar-docs/src/images/add-github-project.png create mode 100644 server/sonar-docs/src/images/github-branch-decoration.png delete mode 100644 server/sonar-docs/src/pages/includes/advanced-pr-decor-section.md delete mode 100644 server/sonar-docs/src/pages/includes/advanced-pr.md delete mode 100644 server/sonar-docs/src/pages/includes/authentication-steps.md diff --git a/server/sonar-docs/src/images/add-github-project.png b/server/sonar-docs/src/images/add-github-project.png new file mode 100644 index 0000000000000000000000000000000000000000..b85f41688f4776ffdd158e8db957304b553afd4a GIT binary patch literal 9681 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 literal 0 HcmV?d00001 diff --git a/server/sonar-docs/src/images/github-branch-decoration.png b/server/sonar-docs/src/images/github-branch-decoration.png new file mode 100644 index 0000000000000000000000000000000000000000..25837cdf7c4cfe68f0d4a644ebad05dbf494dd76 GIT binary patch literal 51501 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 literal 0 HcmV?d00001 diff --git a/server/sonar-docs/src/pages/analysis/azuredevops-integration.md b/server/sonar-docs/src/pages/analysis/azuredevops-integration.md index 497f8322217..a3dd32f6ddb 100644 --- a/server/sonar-docs/src/pages/analysis/azuredevops-integration.md +++ b/server/sonar-docs/src/pages/analysis/azuredevops-integration.md @@ -6,14 +6,16 @@ SonarQube's integration with Azure DevOps Server allows you to maintain code qua Once you've set up your integration, you'll be able to: -- **Import your Azure DevOps repositories** - (starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html)) Import your Azure DevOps Projects into SonarQube to easily set up SonarQube projects. +- **Import your Azure DevOps repositories** - (starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html)) Import your Azure DevOps repositories into SonarQube to easily set up SonarQube projects. - **Add pull request decoration** - (starting in Developer Edition) See your Quality Gate and code metric results right in Azure DevOps so you know if it's safe to merge your changes. ## Prerequisites - See the **Compatibility** section of the [SonarScanner for Azure DevOps](/analysis/scan/sonarscanner-for-azure-devops/) page for version requirements. ## Importing your Azure DevOps repositories into SonarQube -To import your Azure DevOps projects into SonarQube, you need to first set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **Azure DevOps** tab, and specify the following settings: +Setting up repository import with Azure DevOps Server allows you to easily create SonarQube projects from your Azure DevOps Server repositories. This is also the first step in adding pull request decoration. + +To import your Azure DevOps repositories into SonarQube, you need to first set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **Azure DevOps** tab, and specify the following settings: - **Configuration Name** (Enterprise and Data Center Edition only) – The name used to identify your Azure DevOps configuration at the project level. Use something succinct and easily recognizable. - **Personal Access Token** – An Azure DevOps Server user account is used to decorate Pull Requests. We recommend using a dedicated Azure DevOps Server account with Administrator permissions. You need a [personal access token](https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=tfs-2017&tabs=preview-page) from this account with the scope authorized for **Code > Read & Write** for the repositories that will be analyzed. @@ -38,4 +40,14 @@ From here, set your: ### Advanced pull request decoration configuration -@include pages/includes/advanced-pr \ No newline at end of file +[[collapse]] +| ## **Configuring multiple ALM instances** +|You can decorate pull requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. +| +|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. +| +|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. + +[[collapse]] +| ## **Linking issues** +| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. diff --git a/server/sonar-docs/src/pages/analysis/bitbucket-integration.md b/server/sonar-docs/src/pages/analysis/bitbucket-integration.md index 46c2d87c025..b0a2b1ff91a 100644 --- a/server/sonar-docs/src/pages/analysis/bitbucket-integration.md +++ b/server/sonar-docs/src/pages/analysis/bitbucket-integration.md @@ -6,18 +6,16 @@ SonarQube's integration with Bitbucket Server allows you to maintain code qualit Once you've set up your integration, you'll be able to: -- **Import your BitBucket repositories** - (starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html)) Import your Bitbucket Projects into SonarQube to easily set up SonarQube projects. +- **Import your BitBucket repositories** - (starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html)) Import your Bitbucket repositories into SonarQube to easily set up SonarQube projects. - **Add pull request decoration** - (starting in Developer Edition) See your Quality Gate and code metric results right in Bitbucket so you know if it's safe to merge your changes. ## Prerequisites - Integration with Bitbucket Server requires at least Bitbucket Server version 5.15. -## Importing your Bitbucket repositories into SonarQube -<<<<<<< HEAD +## Importing your Bitbucket Server repositories into SonarQube +Setting up repository import with Bitbucket Server allows you to easily create SonarQube projects from your Bitbucket Server repositories. This is also the first step in adding pull request decoration. + To import your Bitbucket Server projects into SonarQube, you need to first set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **Bitbucket** tab, and specify the following settings: -======= -To import your Bitbucket Server projects into SonarQube, first you need to set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **Bitbucket** tab, and specify the following settings: ->>>>>>> cefea0d718f... SONAR-14018 Create Bitbucket ALM integration page - **Configuration Name** (Enterprise and Data Center Edition only) – The name used to identify your Bitbucket Server configuration at the project level. Use something succinct and easily recognizable. - **Bitbucket Server URL** – your instances URL. For example, `https://bitbucket-server.your-company.com`. @@ -47,8 +45,14 @@ From here, set your: ### Advanced pull request decoration configuration -<<<<<<< HEAD -@include pages/includes/advanced-pr -======= -@include pages/includes/advanced-pr-decor-section ->>>>>>> cefea0d718f... SONAR-14018 Create Bitbucket ALM integration page +[[collapse]] +| ## **Configuring multiple ALM instances** +|You can decorate pull requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. +| +|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. +| +|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. + +[[collapse]] +| ## **Linking issues** +| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. diff --git a/server/sonar-docs/src/pages/analysis/github-integration.md b/server/sonar-docs/src/pages/analysis/github-integration.md index fc5b128f728..5905fab12c6 100644 --- a/server/sonar-docs/src/pages/analysis/github-integration.md +++ b/server/sonar-docs/src/pages/analysis/github-integration.md @@ -91,15 +91,33 @@ From here, set your: | ## **Showing the analysis summary under the GitHub Conversation tab** | By default, **Enable analysis summary under the GitHub Conversation tab** is on and your pull request analysis will be shown under both the **Conversation** and **Checks** tabs in GitHub. When off, your pull request analysis summary is only shown under the **Checks** tab. -@include pages/includes/advanced-pr +[[collapse]] +| ## **Configuring multiple ALM instances** +|You can decorate pull requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. +| +|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. +| +|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. + +[[collapse]] +| ## **Linking issues** +| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. ## Setting up GitHub authentication -To allow for login with GitHub credentials, use the GitHub App that you created above (see the **Importing your GitHub repositories using a GitHub App** section for more information) and update your global SonarQube settings. +To allow users to log in with GitHub credentials, use the GitHub App that you created above (see the **Importing your GitHub repositories using a GitHub App** section for more information) and update your global SonarQube settings. [[info]] | If you're using Community Edition or you want to use a dedicated app for GitHub authentication, see the **Creating a dedicated app for authentication** section below. -@include pages/includes/authentication-steps +To update your global SonarQube settings: + +Navigate to **Administration > Configuration > General Settings > ALM Integrations > GitHub > GitHub Authentication** and update the following: + +1. **Enabled** – set the switch to `true`. +1. **Client ID** – the Client ID is found below the GitHub App ID on your GitHub App's page. +1. **Client Secret** – the Client secret is found below the Client ID on your GitHub App's page. + +Now, from the login page, your users can connect their GitHub accounts with the new "Log in with GitHub" button. ### Creating a dedicated app for authentication If you're using Community Edition or you want to use a dedicated app for GitHub authentication, you can create a GitHub OAuth app. You'll find general instructions for creating a GitHub OAuth App [here](https://docs.github.com/en/free-pro-team@latest/developers/apps/creating-an-oauth-app). Specify the following settings in your OAuth App: @@ -107,6 +125,12 @@ If you're using Community Edition or you want to use a dedicated app for GitHub - **Homepage URL** – the public URL of your SonarQube server. For example, `https://sonarqube.mycompany.com`. For security reasons, HTTP is not supported, and you must use HTTPS. The public URL is configured in SonarQube at **[Administration > General > Server base URL](/#sonarqube-admin#/admin/settings)**. - **Authorization callback URL** – your instance's base URL. For example, `https://yourinstance.sonarqube.com`. -After creating your app, update your SonarQube global settings. +After creating your app, update your global SonarQube settings: + +Navigate to **Administration > Configuration > General Settings > ALM Integrations > GitHub > GitHub Authentication** and update the following: -@include pages/includes/authentication-steps \ No newline at end of file +1. **Enabled** – set the switch to `true`. +1. **Client ID** – the Client ID is found below the GitHub App ID on your GitHub App's page. +1. **Client Secret** – the Client secret is found below the Client ID on your GitHub App's page. + +Now, from the login page, your users can connect their GitHub accounts with the new "Log in with GitHub" button. \ No newline at end of file diff --git a/server/sonar-docs/src/pages/analysis/gitlab-integration.md b/server/sonar-docs/src/pages/analysis/gitlab-integration.md index 5b742b3ec6c..2728f039a7f 100644 --- a/server/sonar-docs/src/pages/analysis/gitlab-integration.md +++ b/server/sonar-docs/src/pages/analysis/gitlab-integration.md @@ -7,11 +7,7 @@ SonarQube's integration with GitLab Self-Managed and GitLab.com allows you to ma Once you've set up your integration, you'll be able to: -<<<<<<< HEAD - **Authenticate with GitLab** - (starting in Community Edition) Sign in to SonarQube with your GitLab credentials. -======= -- **Authenticate with GitLab** - (starting in Community Edition) Sign into SonarQube with your GitLab credentials. ->>>>>>> 486f9f9de58... SONAR-14016 Create GitLab ALM integration page - **Import your GitLab projects** - (starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html)) Import your GitLab Projects into SonarQube to easily set up SonarQube projects. - **Add merge request decoration** - (starting in Developer Edition) See your Quality Gate and code metric results right in GitLab so you know if it's safe to merge your changes. - **Analyze projects with GitLab CI/CD** - SonarScanners running in GitLab CI/CD jobs can automatically detect branches or merge requests being built so you don't need to specifically pass them as parameters to the scanner. @@ -42,11 +38,7 @@ On the login form, the new "Log in with GitLab" button allows users to connect w ### GitLab group synchronization Enable **Synchronize user groups** at **Administration > Configuration > General Settings > ALM Integrations > GitLab** to associate GitLab groups with existing SonarQube groups of the same name. GitLab users inherit membership to subgroups from parent groups. -<<<<<<< HEAD To synchronize a GitLab group or subgroup with a SonarQube group, name the SonarQube group with the full path of the GitLab group or subgroup URL. -======= -To synchronize a GitLab group or subgroup with a SonarQube group, name the SonarQube group with the full path of the of the GitLab group or subgroup URL. ->>>>>>> 486f9f9de58... SONAR-14016 Create GitLab ALM integration page For example, with the following GitLab group setup: @@ -57,11 +49,9 @@ For example, with the following GitLab group setup: You should name your SonarQube group `my-group` to synchronize it with your GitLab group and `my-group/my-subgroup` to synchronize it with your GitLab subgroup. ## Importing your GitLab projects into SonarQube -<<<<<<< HEAD +Setting up project import with GitLab allows you to easily create SonarQube projects from your GitLab projects. This is also the first step in adding merge request decoration. + To import your GitLab projects into SonarQube, you need to first set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **GitLab** tab, and specify the following settings: -======= -To import your GitLab projects into SonarQube, first you need to set your global SonarQube settings. Navigate to **Administration > Configuration > General Settings > ALM Integrations**, select the **GitLab** tab, and specify the following settings: ->>>>>>> 486f9f9de58... SONAR-14016 Create GitLab ALM integration page - **Configuration Name** (Enterprise and Data Center Edition only) – The name used to identify your GitLab configuration at the project level. Use something succinct and easily recognizable. - **GitLab URL** – The GitLab API URL. @@ -91,11 +81,17 @@ From here, set your: ### Advanced merge request decoration configuration -<<<<<<< HEAD -@include pages/includes/advanced-pr -======= -@include pages/includes/advanced-pr-decor-section ->>>>>>> 486f9f9de58... SONAR-14016 Create GitLab ALM integration page +[[collapse]] +| ## **Configuring multiple ALM instances** +|You can decorate merge requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. +| +|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. +| +|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. + +[[collapse]] +| ## **Linking issues** +| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. ## Analyzing projects with GitLab CI/CD SonarScanners running in GitLab CI/CD jobs can automatically detect branches or merge requests being built so you don't need to specifically pass them as parameters to the scanner. diff --git a/server/sonar-docs/src/pages/analysis/pull-request.md b/server/sonar-docs/src/pages/analysis/pull-request.md index c6f8dcb3b54..ad7aef7a496 100644 --- a/server/sonar-docs/src/pages/analysis/pull-request.md +++ b/server/sonar-docs/src/pages/analysis/pull-request.md @@ -20,7 +20,7 @@ You can also add pull request decoration that shows the Pull Request analysis an - [GitHub Enterprise and GitHub.com](/analysis/github-integration/) - [GitLab Self-Managed and GitLab.com](/analysis/gitlab-integration/) - [Bitbucket Server](/analysis/bitbucket-integration/) -- [Azure DevOps Server](/analysis/azuredevops-integration) +- [Azure DevOps Server](/analysis/azuredevops-integration/) ## Pull request Quality Gate diff --git a/server/sonar-docs/src/pages/includes/advanced-pr-decor-section.md b/server/sonar-docs/src/pages/includes/advanced-pr-decor-section.md deleted file mode 100644 index ec28619bc66..00000000000 --- a/server/sonar-docs/src/pages/includes/advanced-pr-decor-section.md +++ /dev/null @@ -1,11 +0,0 @@ -[[collapse]] -| ## **Configuring Multiple ALM instances** -|You can decorate pull requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. -| -|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. -| -|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. - -[[collapse]] -| ## **Linking issues** -| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. \ No newline at end of file diff --git a/server/sonar-docs/src/pages/includes/advanced-pr.md b/server/sonar-docs/src/pages/includes/advanced-pr.md deleted file mode 100644 index ec28619bc66..00000000000 --- a/server/sonar-docs/src/pages/includes/advanced-pr.md +++ /dev/null @@ -1,11 +0,0 @@ -[[collapse]] -| ## **Configuring Multiple ALM instances** -|You can decorate pull requests from multiple ALM instances by creating a configuration for each ALM instance and then assigning that instance configuration to the appropriate projects. -| -|- As part of [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can create one configuration for each ALM. -| -|- Starting in [Enterprise Edition](https://redirect.sonarsource.com/editions/enterprise.html), you can create multiple configurations for each ALM. If you have multiple configurations of the same ALM connected to SonarQube, you have to create projects manually. - -[[collapse]] -| ## **Linking issues** -| During pull request decoration, individual issues will be linked to their SonarQube counterparts automatically. For this to work correctly, you need to set the instance's **Server base URL** (**[Administration > Configuration > General Settings > General > General](/#sonarqube-admin#/admin/settings/)**) correctly. Otherwise, the links will default to `localhost`. \ No newline at end of file diff --git a/server/sonar-docs/src/pages/includes/authentication-steps.md b/server/sonar-docs/src/pages/includes/authentication-steps.md deleted file mode 100644 index 0c2a4ad6188..00000000000 --- a/server/sonar-docs/src/pages/includes/authentication-steps.md +++ /dev/null @@ -1,7 +0,0 @@ -Navigate to **Administration > Configuration > General Settings > ALM Integrations > GitHub > GitHub Authentication** and update the following: - -1. **Enabled** – set the switch to `true`. -1. **Client ID** – the Client ID is found below the GitHub App ID on your GitHub App's page. -1. **Client Secret** – the Client secret is found below the Client ID on your GitHub App's page. - -Now, from the login page, your users can connect their GitHub accounts with the new "Log in with GitHub" button. \ No newline at end of file diff --git a/server/sonar-docs/src/pages/index.md b/server/sonar-docs/src/pages/index.md index 1b4e9d3abe4..306614ea9ba 100644 --- a/server/sonar-docs/src/pages/index.md +++ b/server/sonar-docs/src/pages/index.md @@ -41,7 +41,7 @@ Starting in [Developer Edition](https://redirect.sonarsource.com/editions/develo ### Analyzing pull requests -Starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can integrate SonarQube to be part of your pull or merge request process. Issuing a pull request can trigger a branch analysis and add pull request decoration to see your branch analysis directly in your ALM's interface in addition to the SonarQube interface. For more information, see the [Pull Request Analysis Overview](/analysis/pull-request/) and [Decorating Pull Requests](/analysis/pr-decoration/). +Starting in [Developer Edition](https://redirect.sonarsource.com/editions/developer.html), you can integrate SonarQube to be part of your pull or merge request process. Issuing a pull request can trigger a branch analysis and add pull request decoration to see your branch analysis directly in your ALM's interface in addition to the SonarQube interface. For more information, see the [Pull Request Analysis Overview](/analysis/pull-request/). ## Writing Clean and Safe Code diff --git a/server/sonar-docs/src/pages/setup/upgrade-notes.md b/server/sonar-docs/src/pages/setup/upgrade-notes.md index ebd4a36a9f5..a0fa147519a 100644 --- a/server/sonar-docs/src/pages/setup/upgrade-notes.md +++ b/server/sonar-docs/src/pages/setup/upgrade-notes.md @@ -59,7 +59,7 @@ The code coverage for .NET projects now takes into account the branch/condition **Analysis summary for GitHub Pull Requests** * Pull Request analysis can be shown under the Conversation tab in GitHub. You can enable or disable it at **Project Settings > General Settings > Pull Request Decoration**. -* If you already have Pull Request analysis under the GitHub Checks tab, you'll need to update your GitHub App to give Pull Requests read & write access. For more information see [Decorating Pull Requests](/analysis/pr-decoration/). ([MMF-1892](https://jira.sonarsource.com/browse/MMF-1892)). +* If you already have Pull Request analysis under the GitHub Checks tab, you'll need to update your GitHub App to give Pull Requests read & write access. For more information see [Pull Requests](/analysis/pull-request/). ([MMF-1892](https://jira.sonarsource.com/browse/MMF-1892)). **Applications on the Projects page** [Applications](/user-guide/applications/) are now found on the Projects page. You can filter, favorite, and tag applications like you can with projects. ([MMF-1382](https://jira.sonarsource.com/browse/MMF-1382)). -- 2.39.5