From 6cb0427a22f23fcc5a333e724abeb7bbcf388669 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 1 Nov 2024 03:44:46 -0400 Subject: [PATCH 01/14] Update audit log event data (#52894) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- src/audit-logs/lib/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 203765980b75..bed76cdae2a9 100644 --- a/src/audit-logs/lib/config.json +++ b/src/audit-logs/lib/config.json @@ -3,5 +3,5 @@ "apiOnlyEvents": "This event is not available in the web interface, only via the REST API, audit log streaming, or JSON/CSV exports.", "apiRequestEvent": "This event is only available via audit log streaming." }, - "sha": "50b493f0914184eb8479e18ead886625a6fc2ed6" + "sha": "6a20673ab35be527bc4d1773716a5ac1efe4308a" } \ No newline at end of file From afba09dda6e30529bdd24d3a174e30e3f6665998 Mon Sep 17 00:00:00 2001 From: Kevin Heis Date: Fri, 1 Nov 2024 00:44:46 -0700 Subject: [PATCH 02/14] Revert temporary change to add response header if origin receives https (#52882) --- src/frame/middleware/index.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/frame/middleware/index.ts b/src/frame/middleware/index.ts index 9e8794259476..fe11bf133f59 100644 --- a/src/frame/middleware/index.ts +++ b/src/frame/middleware/index.ts @@ -214,12 +214,6 @@ export default function (app: Express) { // *** Headers *** app.set('etag', false) // We will manage our own ETags if desired - // temporary - app.use(function (req, res, next) { - res.set('x-ptcl', req.secure ? 'o' : 'x') - next() - }) - // *** Config and context for redirects *** app.use(detectLanguage) // Must come before context, breadcrumbs, find-page, handle-errors, homepages app.use(asyncMiddleware(reloadTree)) // Must come before context From 36e64cdbe1e46970d2d56e74d8b02101039d13de Mon Sep 17 00:00:00 2001 From: Junko Suzuki Date: Fri, 1 Nov 2024 17:01:00 +0900 Subject: [PATCH 03/14] Update description for webhook in migratable table (#52898) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- .../about-migrations-between-github-products.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md index 1325d1f3adc0..efcd3a5d289f 100644 --- a/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md +++ b/content/migrations/using-github-enterprise-importer/migrating-between-github-products/about-migrations-between-github-products.md @@ -61,7 +61,7 @@ Milestones | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "c Wikis | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | {% data variables.product.prodname_actions %} workflows | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | Commit comments | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | -Active webhooks | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | +Webhooks (must be re-enabled after your migration, see "[Enabling webhooks](/migrations/using-github-enterprise-importer/migrating-between-github-products/overview-of-a-migration-between-github-products#enabling-webhooks)") | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | Branch protections | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | {% data variables.product.prodname_pages %} settings | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | User history for the above data | {% octicon "check" aria-label="Can be migrated" %} | {% octicon "check" aria-label="Can be migrated" %} | From 6384a8ca2433f1b7adf9885d2ad9dd49ae2b2436 Mon Sep 17 00:00:00 2001 From: Jacob Wallraff Date: Fri, 1 Nov 2024 01:12:50 -0700 Subject: [PATCH 04/14] Remove repo scope requirements (#52868) --- .../about-permissions-for-github-packages.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/content/packages/learn-github-packages/about-permissions-for-github-packages.md b/content/packages/learn-github-packages/about-permissions-for-github-packages.md index f2ddd9d99ab5..f290e66a34c6 100644 --- a/content/packages/learn-github-packages/about-permissions-for-github-packages.md +++ b/content/packages/learn-github-packages/about-permissions-for-github-packages.md @@ -65,14 +65,13 @@ To use or manage a package hosted by a package registry, you must use a {% data For example: * To download and install packages from a repository, your {% data variables.product.pat_v1 %} must have the `read:packages` scope, and your user account must have read permission. -* To delete a package on {% data variables.product.product_name %}, your {% data variables.product.pat_v1 %} must at least have the `delete:packages` and `read:packages` scope. The `repo` scope is also required for repo-scoped packages. For more information, see "[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)." +* To delete a package on {% data variables.product.product_name %}, your {% data variables.product.pat_v1 %} must at least have the `delete:packages` and `read:packages` scope. For more information, see "[AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package)." | Scope | Description | Required permission | | --- | --- | --- | -|`read:packages`| Download and install packages from {% data variables.product.prodname_registry %} | read | -|`write:packages`| Upload and publish packages to {% data variables.product.prodname_registry %} | write | +| `read:packages` | Download and install packages from {% data variables.product.prodname_registry %} | read | +| `write:packages` | Upload and publish packages to {% data variables.product.prodname_registry %} | write | | `delete:packages` | Delete packages from {% data variables.product.prodname_registry %} | admin | -| `repo` | Upload and delete packages (along with `write:packages`, or `delete:packages`) | write or admin | {% data reusables.package_registry.delete-with-github-token-using-api-beta %} From 0f681b1c94db0dd90f1126b21fcbe2f038c92744 Mon Sep 17 00:00:00 2001 From: gitulisca <107976350+gitulisca@users.noreply.github.com> Date: Fri, 1 Nov 2024 19:13:27 +1100 Subject: [PATCH 05/14] Add dependabot-actions.githubapp.com to networking requirements (#52902) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> --- .../reusables/actions/runner-essential-communications.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/data/reusables/actions/runner-essential-communications.md b/data/reusables/actions/runner-essential-communications.md index f1864f450bf1..0ef1aeecf0a1 100644 --- a/data/reusables/actions/runner-essential-communications.md +++ b/data/reusables/actions/runner-essential-communications.md @@ -49,3 +49,12 @@ ghcr.io github-cloud.githubusercontent.com github-cloud.s3.amazonaws.com ``` + +{% ifversion fpt or ghec %} +**Needed for jobs for {% data variables.product.prodname_dependabot_updates %}** + +```shell copy +dependabot-actions.githubapp.com +``` + +{% endif %} From 55034f7917164d45a3c31ac050492f1b7b254e41 Mon Sep 17 00:00:00 2001 From: Jon Janego Date: Fri, 1 Nov 2024 03:18:21 -0500 Subject: [PATCH 06/14] Update to latest NuGet support (#52855) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- data/reusables/dependabot/supported-package-managers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/dependabot/supported-package-managers.md b/data/reusables/dependabot/supported-package-managers.md index 96e44d5c8a24..347f682cb5d8 100644 --- a/data/reusables/dependabot/supported-package-managers.md +++ b/data/reusables/dependabot/supported-package-managers.md @@ -16,7 +16,7 @@ Go modules | `gomod` | v1 | {% octicon "check" aria-l [Gradle](#gradle) | `gradle` | Not applicable | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | [Maven](#maven) | `maven` | Not applicable | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | npm | `npm` | v6, v7, v8, v9 | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | -[NuGet](#nuget-cli) | `nuget` | {% ifversion dependabot-updates-v680-nuget-support %}<=6.8.0{% elsif ghes = 3.12 %}<= 6.7.0{% else %}<= 4.8{% endif %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | +[NuGet](#nuget-cli) | `nuget` | {% ifversion fpt or ghec or ghes > 3.14 %}<=6.12.0{% elsif ghes = 3.14 or ghes = 3.13 %}<= 6.8.0{% elsif ghes = 3.12 %}<= 6.7.0{% else %}<= 4.8{% endif %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | | {% ifversion dependabot-PEP621-support %}[pip](#pip-and-pip-compile){% else %}pip{% endif %} | `pip` | v21.1.2 | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | pipenv | `pip` | <= 2021-05-29 | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | | {% ifversion dependabot-PEP621-support %}[pip-compile](#pip-and-pip-compile){% else %}pip-compile{% endif %} | `pip` | 6.1.0 | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | From a089decf8f710189368d8d4432a3cf30539f9924 Mon Sep 17 00:00:00 2001 From: Arfon Smith Date: Fri, 1 Nov 2024 04:20:44 -0400 Subject: [PATCH 07/14] Indexing limitation clarifictions (#52929) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- .../indexing-repositories-for-copilot-chat.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md b/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md index 8189929e5d11..809f93163d31 100644 --- a/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md +++ b/content/copilot/customizing-copilot/indexing-repositories-for-copilot-chat.md @@ -40,11 +40,11 @@ If you have a seat on the {% data variables.product.prodname_copilot_enterprise_ {% endif %} {% ifversion ghec or fpt %} -If you have a seat on the {% data variables.product.prodname_copilot_business_short %} (CB) plan, you are subject to the indexing limit for your organization. You cannot index additional repositories once your organization reaches the repository limit, but you can still benefit from the indexes created by other users. +If you have a seat on the {% data variables.product.prodname_copilot_business_short %} (CB) plan, you are subject to the indexing limit for your organization. Additionally, you can only index repositories that belong to the GitHub organization that assigned your Copilot seat. You cannot index additional repositories once your organization reaches the repository limit, but you can still benefit from the indexes created by other users. {% endif %} {% ifversion fpt %} -If you have a {% data variables.product.prodname_copilot_individuals_short %} (CI) plan, you are subject to an indexing limit and can index any repository that you belong to. However, you can still benefit from the indexes created by other users without affecting your limit. +If you have a {% data variables.product.prodname_copilot_individuals_short %} (CI) plan, you are subject to an indexing limit and can index any repository that you have access to. However, you can still benefit from the indexes created by other users without affecting your limit. {% endif %} Both CE and CB plans can apply content exclusions to control the behavior of {% data variables.product.prodname_copilot %} for the {% data variables.product.prodname_copilot_short %} seats they manage. For more information, see "[AUTOTITLE](/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/excluding-content-from-github-copilot)." However, CI users can still index any repository they have access to, regardless of the content exclusion policies set by the organization. From a0a3638ccd328d5106ab3b1375e12bd4654367c3 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Fri, 1 Nov 2024 08:32:16 +0000 Subject: [PATCH 08/14] Public Code Referencing in GitHub.com [GA] (#52933) --- .../help/copilot/code-reference-dotcom.png | Bin 0 -> 55671 bytes ...ot-policies-as-an-individual-subscriber.md | 2 +- ...le-use-of-github-copilot-chat-in-github.md | 6 +- ...that-matches-github-copilot-suggestions.md | 67 ++++++++++++++++-- 4 files changed, 69 insertions(+), 6 deletions(-) create mode 100644 assets/images/help/copilot/code-reference-dotcom.png diff --git a/assets/images/help/copilot/code-reference-dotcom.png b/assets/images/help/copilot/code-reference-dotcom.png new file mode 100644 index 0000000000000000000000000000000000000000..184d5ff3592dd8b88c830920038de1c29f3dd24b GIT binary patch literal 55671 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 literal 0 HcmV?d00001 diff --git a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md index 4cb9f3fa62ed..51bb10e2c011 100644 --- a/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md +++ b/content/copilot/managing-copilot/managing-copilot-as-an-individual-subscriber/managing-copilot-policies-as-an-individual-subscriber.md @@ -24,7 +24,7 @@ In addition to the configuration for the {% data variables.product.prodname_copi Your personal settings for {% data variables.product.prodname_copilot %} include an option to either allow or block code suggestions that match publicly available code. If you choose to block suggestions matching public code, {% data variables.product.prodname_copilot %} checks code suggestions with their surrounding code of about 150 characters against public code on {% data variables.product.prodname_dotcom %}. If there is a match, or a near match, the suggestion is not shown to you. -If you choose to allow suggestions matching public code, and you accept a suggestion for which one or more matches were found, you can click through from an entry in the {% data variables.product.prodname_copilot %} log to view a list of references on {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)." +If you choose to allow suggestions matching public code, when {% data variables.product.prodname_copilot_short %} suggests matching code you can display details of the matches and click through to the relevant repositories on {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)." {% data reusables.user-settings.copilot-settings %} 1. To the right of **Suggestions matching public code**, select the dropdown menu, then click **Allow** to allow suggestions matching public code, or **Block** to block suggestions matching public code. diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md index 655fbb17afc2..0b11fb6be167 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github.md @@ -131,7 +131,11 @@ Depending on factors such as your codebase and input data, you may experience di ### Matches with public code -{% data variables.product.prodname_copilot_chat_short %} is capable of generating new code, which it does in a probabilistic way. While the probability that it may produce code that matches code in the training set is low, a {% data variables.product.prodname_copilot_chat_short %} suggestion may contain some code snippets that match code in the training set. {% data variables.product.prodname_copilot_chat_short %} utilizes filters that block matches with public code on {% data variables.product.prodname_dotcom %} repositories, but you should always take the same precautions as you would with any code you write that uses material you did not independently originate, including precautions to ensure its suitability. These include rigorous testing, IP scanning, and checking for security vulnerabilities. +{% data variables.product.prodname_copilot_chat_short %} is capable of generating new code, which it does in a probabilistic way. While the probability that it may produce code that matches code in the training set is low, a {% data variables.product.prodname_copilot_chat_short %} suggestion may contain some code snippets that match code in the training set. + +If you have disabled suggestions that match public code then {% data variables.product.prodname_copilot_chat_short %} utilizes filters that prevent it from showing code that matches code found in public repositories on {% data variables.product.prodname_dotcom %}. However, you should always take the same precautions as you would with any code you write that uses material you did not independently originate, including precautions to ensure its suitability. These include rigorous testing, IP scanning, and checking for security vulnerabilities. + +If you have enabled suggestions that match public code then {% data variables.product.prodname_copilot_chat_short %} displays a message if matching code is found. The message includes links to repositories on {% data variables.product.github %} that contain matching code, and any license details that were found. For more information, see "[AUTOTITLE](/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions)." ### Inaccurate code diff --git a/content/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions.md b/content/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions.md index 9c3a51f28dbd..8f389bb1cc32 100644 --- a/content/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions.md +++ b/content/copilot/using-github-copilot/finding-public-code-that-matches-github-copilot-suggestions.md @@ -1,7 +1,7 @@ --- title: Finding public code that matches GitHub Copilot suggestions shortTitle: Find matching code -intro: 'If you allow {% data variables.product.prodname_copilot %} to make suggestions that match publicly available code, you''ll see references to the matching code that was found on {% data variables.product.prodname_dotcom_the_website %}.' +intro: 'If you allow {% data variables.product.prodname_copilot %} to make suggestions that match publicly available code, {% data variables.product.prodname_copilot_short %} will display references to any matching code that is found.' redirect_from: - /early-access/copilot/code-referencing-in-github-copilot topics: @@ -10,9 +10,21 @@ versions: feature: copilot --- +{% webui %} + +This version of this article is for {% data variables.product.prodname_copilot_short %} on the {% data variables.product.github %} website. For the {% data variables.product.prodname_vscode %} version of this article, click the tab above. + +{% endwebui %} + +{% vscode %} + +This version of this article is for {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_vscode %}. For the {% data variables.product.github %} website version of this article, click the tab above. + +{% endvscode %} + ## Limitations -References to matching code are currently only available in {% data variables.product.prodname_vscode %}. +References to matching code are currently only available in {% data variables.product.prodname_vscode %} and on the {% data variables.product.github %} website. ## Prerequisites @@ -20,13 +32,32 @@ References to matching code are only generated if {% data variables.product.prod ## About code referencing in {% data variables.product.prodname_copilot %} +{% vscode %} + If you've allowed suggestions that match public code, {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vscode_shortname %} can provide you with details of the code that a suggestion matches. This happens: * When you accept a code completion suggestion in the editor. * When a response in {% data variables.product.prodname_copilot_chat_short %} includes matching code. +{% endvscode %} + +{% webui %} + +If you've allowed suggestions that match public code, then whenever a response from {% data variables.product.prodname_copilot_chat_short %} includes matching code, details of the matches will be included in the response. + +{% endwebui %} + This feature is called code referencing. +{% webui %} + +> [!NOTE] +> Typically, matches to public code occur infrequently, so you should not expect to see code references in many {% data variables.product.prodname_copilot_chat_short %} responses. + +{% endwebui %} + +{% vscode %} + ### Code referencing for {% data variables.product.prodname_copilot_short %} code completion When you accept a code completion suggestion that matches code in a public {% data variables.product.prodname_dotcom %} repository, an entry is added to a {% data variables.product.prodname_copilot %} log. The log entry includes a link to a page on {% data variables.product.prodname_dotcom_the_website %} where you can view references to similar code in public {% data variables.product.prodname_dotcom %} repositories. @@ -34,16 +65,20 @@ When you accept a code completion suggestion that matches code in a public {% da The linked web page includes details of any license identified for the repository where the matching code was found. Having reviewed the references, you can decide how to proceed. For example, you can decide what attribution to use, or whether you want to remove this code from your project. > [!NOTE] -> * Code referencing only occurs for matches of accepted {% data variables.product.prodname_copilot_short %} suggestions. Code you have written, and {% data variables.product.prodname_copilot_short %} suggestions you have altered, are not checked for matches to public code. +> * Code referencing for code completion only occurs for matches of accepted {% data variables.product.prodname_copilot_short %} suggestions. Code you have written, and {% data variables.product.prodname_copilot_short %} suggestions you have altered, are not checked for matches to public code. > * Typically, matches to public code occur in less than one percent of {% data variables.product.prodname_copilot_short %} suggestions, so you should not expect to see code references for many suggestions. ### Code referencing for {% data variables.product.prodname_copilot_chat_short %} When {% data variables.product.prodname_copilot_chat_short %} provides a response that includes code that matches code in a public {% data variables.product.prodname_dotcom %} repository, this is indicated at the end of the response with a link to display details of the matched code in the {% data variables.product.prodname_vscode_shortname %} editor. +{% endvscode %} + ### How code referencing finds matching code -{% data variables.product.prodname_copilot_short %} code referencing searches for matches by taking the code suggestion, plus some surrounding code, and comparing it against an index of all public repositories on {% data variables.product.prodname_dotcom_the_website %}. Code in private {% data variables.product.prodname_dotcom %} repositories, or code outside of {% data variables.product.prodname_dotcom %}, is not included in the search process. The search index is refreshed every few months. As a result, newly committed code, and code from public repositories deleted before the index was created, may not be included in the search. For the same reason, the search may return matches to code that has been deleted or moved since the index was created. +{% data variables.product.prodname_copilot_short %} code referencing searches for matches by taking the code suggestion, plus some of the code that will surround the suggestion if it is accepted, and comparing it against an index of all public repositories on {% data variables.product.prodname_dotcom_the_website %}. Code in private {% data variables.product.prodname_dotcom %} repositories, or code outside of {% data variables.product.prodname_dotcom %}, is not included in the search process. The search index is refreshed every few months. As a result, newly committed code, and code from public repositories deleted before the index was created, may not be included in the search. For the same reason, the search may return matches to code that has been deleted or moved since the index was created. + +{% vscode %} ## View code references for code completion @@ -101,8 +136,12 @@ You can verify that code referencing is working by prompting {% data variables.p If code referencing finds a match to public code, a log entry is added to the **{% data variables.product.prodname_copilot %} Log** view. +{% endvscode %} + ## View code references for {% data variables.product.prodname_copilot_chat_short %} +{% vscode %} + If a response in {% data variables.product.prodname_copilot_chat_short %} includes matching code, this is indicated at the end of the response by the following text: > Similar code found with _n_ license types - **View matches** @@ -116,3 +155,23 @@ If a response in {% data variables.product.prodname_copilot_chat_short %} includ * A code snippet showing the matching code. 1. In the editor, Ctrl+click (Windows/Linux) or Command+click (Mac) a URL to view the full file on {% data variables.product.prodname_dotcom_the_website %}. + +{% endvscode %} + +{% webui %} + +When {% data variables.product.prodname_copilot_chat_short %} provides a response that includes code that matches code in a public {% data variables.product.prodname_dotcom %} repository, this is indicated beneath the code suggestion: + +> < > Public code references from _n_ repositories + +To see details of the matching code: + +1. Click the "Public code references..." text, under the code suggestion. + + A list of {% data variables.product.github %} repositories containing matching code is displayed in a dropdown, together with licensing information, if found. + + ![Screenshot of a code completion suggestion in {% data variables.product.prodname_copilot_chat_short %} with a link to view code references.](/assets/images/help/copilot/code-reference-dotcom.png) + +1. Click the name of a repository to display that repository on {% data variables.product.prodname_dotcom_the_website %}. + +{% endwebui %} From e843a9d42b5d47aa998123aa0271b47f51439140 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 1 Nov 2024 04:32:38 -0400 Subject: [PATCH 09/14] Delete orphaned features (2024-10-28-16-29) (#52893) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- data/features/code-scanning-default-setup-go.yml | 5 ----- .../code-scanning-exclude-queries-from-analysis.yml | 6 ------ data/features/code-scanning-pr-conversations-tab.yml | 4 ---- data/features/code-scanning-without-workflow-310.yml | 6 ------ data/features/codeql-action-debug-logging.yml | 6 ------ 5 files changed, 27 deletions(-) delete mode 100644 data/features/code-scanning-default-setup-go.yml delete mode 100644 data/features/code-scanning-exclude-queries-from-analysis.yml delete mode 100644 data/features/code-scanning-pr-conversations-tab.yml delete mode 100644 data/features/code-scanning-without-workflow-310.yml delete mode 100644 data/features/codeql-action-debug-logging.yml diff --git a/data/features/code-scanning-default-setup-go.yml b/data/features/code-scanning-default-setup-go.yml deleted file mode 100644 index c6abf09c17d3..000000000000 --- a/data/features/code-scanning-default-setup-go.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Reference: #9961 -versions: - fpt: '*' - ghec: '*' - ghes: '>3.9' diff --git a/data/features/code-scanning-exclude-queries-from-analysis.yml b/data/features/code-scanning-exclude-queries-from-analysis.yml deleted file mode 100644 index 3d197dfd0694..000000000000 --- a/data/features/code-scanning-exclude-queries-from-analysis.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Issue 7617 -# Users can easily exclude CodeQL queries from code scanning analyses - [GA] -versions: - fpt: '*' - ghec: '*' - ghes: '>3.6' diff --git a/data/features/code-scanning-pr-conversations-tab.yml b/data/features/code-scanning-pr-conversations-tab.yml deleted file mode 100644 index 18c8223067b4..000000000000 --- a/data/features/code-scanning-pr-conversations-tab.yml +++ /dev/null @@ -1,4 +0,0 @@ -versions: - fpt: '*' - ghec: '*' - ghes: '>=3.7' diff --git a/data/features/code-scanning-without-workflow-310.yml b/data/features/code-scanning-without-workflow-310.yml deleted file mode 100644 index ee210c21f920..000000000000 --- a/data/features/code-scanning-without-workflow-310.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Reference: #9106 for language picker - -versions: - fpt: '*' - ghec: '*' - ghes: '> 3.9' diff --git a/data/features/codeql-action-debug-logging.yml b/data/features/codeql-action-debug-logging.yml deleted file mode 100644 index e8a59be6e881..000000000000 --- a/data/features/codeql-action-debug-logging.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Reference: Issue #2499 in the codeql-core repository, and issue #7626 in the docs-content repository -# We have added one-click re-running in debug mode for code scanning CodeQL. -versions: - fpt: '*' - ghec: '*' - ghes: '>3.6' From 219310b9fb509339ce3ed41dae12114f49f6b9d9 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 1 Nov 2024 04:37:51 -0400 Subject: [PATCH 10/14] Update OpenAPI Description (#52932) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- .../fine-grained-pat-permissions.json | 9 ++ .../data/fpt-2022-11-28/fine-grained-pat.json | 6 ++ .../server-to-server-permissions.json | 11 +++ .../fpt-2022-11-28/server-to-server-rest.json | 6 ++ .../fpt-2022-11-28/user-to-server-rest.json | 6 ++ .../fine-grained-pat-permissions.json | 9 ++ .../ghec-2022-11-28/fine-grained-pat.json | 6 ++ .../server-to-server-permissions.json | 11 +++ .../server-to-server-rest.json | 6 ++ .../ghec-2022-11-28/user-to-server-rest.json | 6 ++ src/github-apps/lib/config.json | 2 +- src/rest/data/fpt-2022-11-28/schema.json | 90 ++++++++++++++++++- src/rest/data/ghec-2022-11-28/schema.json | 90 ++++++++++++++++++- src/rest/lib/config.json | 2 +- src/webhooks/lib/config.json | 2 +- 15 files changed, 255 insertions(+), 7 deletions(-) diff --git a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json index ff43803e713e..1c39f18972a9 100644 --- a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat-permissions.json @@ -4191,6 +4191,15 @@ "additional-permissions": false, "access": "read" }, + { + "category": "code-scanning", + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "additional-permissions": false, + "access": "write" + }, { "category": "code-scanning", "slug": "create-a-codeql-variant-analysis", diff --git a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json index 5a7cbbf8c16d..ce0e241952f3 100644 --- a/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/fpt-2022-11-28/fine-grained-pat.json @@ -1424,6 +1424,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json index 35578322cf0c..d415cee34cc5 100644 --- a/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/fpt-2022-11-28/server-to-server-permissions.json @@ -5144,6 +5144,17 @@ "server-to-server": true, "additional-permissions": false }, + { + "category": "code-scanning", + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "code-scanning", "slug": "create-a-codeql-variant-analysis", diff --git a/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json b/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json index 564a4ad4524c..1a53bc20dd93 100644 --- a/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/fpt-2022-11-28/server-to-server-rest.json @@ -1320,6 +1320,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json b/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json index 5a7cbbf8c16d..ce0e241952f3 100644 --- a/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/fpt-2022-11-28/user-to-server-rest.json @@ -1424,6 +1424,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json index 420c95dbf35b..a633caf98e92 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat-permissions.json @@ -4785,6 +4785,15 @@ "additional-permissions": false, "access": "read" }, + { + "category": "code-scanning", + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "additional-permissions": false, + "access": "write" + }, { "category": "code-scanning", "slug": "create-a-codeql-variant-analysis", diff --git a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json index 14ecf7818639..44a64f3cc3b7 100644 --- a/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json +++ b/src/github-apps/data/ghec-2022-11-28/fine-grained-pat.json @@ -1462,6 +1462,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json index 26f813356882..45f83f3adeb2 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-permissions.json @@ -5904,6 +5904,17 @@ "server-to-server": true, "additional-permissions": false }, + { + "category": "code-scanning", + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "access": "write", + "user-to-server": true, + "server-to-server": true, + "additional-permissions": false + }, { "category": "code-scanning", "slug": "create-a-codeql-variant-analysis", diff --git a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json index 5c8290e7c105..bb12147bafd6 100644 --- a/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/server-to-server-rest.json @@ -1358,6 +1358,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json index 14ecf7818639..44a64f3cc3b7 100644 --- a/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json +++ b/src/github-apps/data/ghec-2022-11-28/user-to-server-rest.json @@ -1462,6 +1462,12 @@ "verb": "get", "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" }, + { + "slug": "delete-a-codeql-database", + "subcategory": "code-scanning", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}" + }, { "slug": "create-a-codeql-variant-analysis", "subcategory": "code-scanning", diff --git a/src/github-apps/lib/config.json b/src/github-apps/lib/config.json index 33aa339365cf..1795c338daa7 100644 --- a/src/github-apps/lib/config.json +++ b/src/github-apps/lib/config.json @@ -60,5 +60,5 @@ "2022-11-28" ] }, - "sha": "c8e5a99583a3fd250dada63a4a9f5c4fffc53409" + "sha": "e3b1d8b69b58d9e3b89732e2dc093a635bd86ff5" } \ No newline at end of file diff --git a/src/rest/data/fpt-2022-11-28/schema.json b/src/rest/data/fpt-2022-11-28/schema.json index 4aa0487a6663..84c400417b25 100644 --- a/src/rest/data/fpt-2022-11-28/schema.json +++ b/src/rest/data/fpt-2022-11-28/schema.json @@ -151423,7 +151423,7 @@ } ], "previews": [], - "descriptionHTML": "

Lists the CodeQL databases that are available in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "descriptionHTML": "

Lists the CodeQL databases that are available in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", "statusCodes": [ { "httpStatusCode": "200", @@ -151770,7 +151770,7 @@ } ], "previews": [], - "descriptionHTML": "

Gets a CodeQL database for a language in a repository.

\n

By default this endpoint returns JSON metadata about the CodeQL database. To\ndownload the CodeQL database binary content, set the Accept header of the request\nto application/zip, and make sure\nyour HTTP client is configured to follow redirects or use the Location header\nto make a second request to get the redirect URL.

\n

OAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "descriptionHTML": "

Gets a CodeQL database for a language in a repository.

\n

By default this endpoint returns JSON metadata about the CodeQL database. To\ndownload the CodeQL database binary content, set the Accept header of the request\nto application/zip, and make sure\nyour HTTP client is configured to follow redirects or use the Location header\nto make a second request to get the redirect URL.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", "statusCodes": [ { "httpStatusCode": "200", @@ -151794,6 +151794,92 @@ } ] }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "title": "Delete a CodeQL database", + "category": "code-scanning", + "subcategory": "code-scanning", + "parameters": [ + { + "name": "owner", + "description": "

The account owner of the repository. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "

The name of the repository without the .git extension. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "language", + "in": "path", + "description": "

The language of the CodeQL database.

", + "schema": { + "type": "string" + }, + "required": true + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Contents\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "language": "LANGUAGE" + } + }, + "response": { + "statusCode": "204", + "description": "

Response

" + } + } + ], + "previews": [], + "descriptionHTML": "

Deletes a CodeQL database for a language in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "statusCodes": [ + { + "httpStatusCode": "204", + "description": "

No Content

" + }, + { + "httpStatusCode": "403", + "description": "

Response if the repository is archived or if GitHub Advanced Security is not enabled for this repository

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "503", + "description": "

Service unavailable

" + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "post", diff --git a/src/rest/data/ghec-2022-11-28/schema.json b/src/rest/data/ghec-2022-11-28/schema.json index ecdb494b197d..f3dbf0633e2a 100644 --- a/src/rest/data/ghec-2022-11-28/schema.json +++ b/src/rest/data/ghec-2022-11-28/schema.json @@ -160107,7 +160107,7 @@ } ], "previews": [], - "descriptionHTML": "

Lists the CodeQL databases that are available in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "descriptionHTML": "

Lists the CodeQL databases that are available in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", "statusCodes": [ { "httpStatusCode": "200", @@ -160454,7 +160454,7 @@ } ], "previews": [], - "descriptionHTML": "

Gets a CodeQL database for a language in a repository.

\n

By default this endpoint returns JSON metadata about the CodeQL database. To\ndownload the CodeQL database binary content, set the Accept header of the request\nto application/zip, and make sure\nyour HTTP client is configured to follow redirects or use the Location header\nto make a second request to get the redirect URL.

\n

OAuth app tokens and personal access tokens (classic) need the security_events scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "descriptionHTML": "

Gets a CodeQL database for a language in a repository.

\n

By default this endpoint returns JSON metadata about the CodeQL database. To\ndownload the CodeQL database binary content, set the Accept header of the request\nto application/zip, and make sure\nyour HTTP client is configured to follow redirects or use the Location header\nto make a second request to get the redirect URL.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", "statusCodes": [ { "httpStatusCode": "200", @@ -160478,6 +160478,92 @@ } ] }, + { + "serverUrl": "https://api.github.com", + "verb": "delete", + "requestPath": "/repos/{owner}/{repo}/code-scanning/codeql/databases/{language}", + "title": "Delete a CodeQL database", + "category": "code-scanning", + "subcategory": "code-scanning", + "parameters": [ + { + "name": "owner", + "description": "

The account owner of the repository. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "repo", + "description": "

The name of the repository without the .git extension. The name is not case sensitive.

", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "language", + "in": "path", + "description": "

The language of the CodeQL database.

", + "schema": { + "type": "string" + }, + "required": true + } + ], + "bodyParameters": [], + "progAccess": { + "userToServerRest": true, + "serverToServer": true, + "fineGrainedPat": true, + "permissions": [ + { + "\"Contents\" repository permissions": "write" + } + ] + }, + "codeExamples": [ + { + "key": "default", + "request": { + "description": "Example", + "acceptHeader": "application/vnd.github.v3+json", + "parameters": { + "owner": "OWNER", + "repo": "REPO", + "language": "LANGUAGE" + } + }, + "response": { + "statusCode": "204", + "description": "

Response

" + } + } + ], + "previews": [], + "descriptionHTML": "

Deletes a CodeQL database for a language in a repository.

\n

OAuth app tokens and personal access tokens (classic) need the repo scope to use this endpoint with private or public repositories, or the public_repo scope to use this endpoint with only public repositories.

", + "statusCodes": [ + { + "httpStatusCode": "204", + "description": "

No Content

" + }, + { + "httpStatusCode": "403", + "description": "

Response if the repository is archived or if GitHub Advanced Security is not enabled for this repository

" + }, + { + "httpStatusCode": "404", + "description": "

Resource not found

" + }, + { + "httpStatusCode": "503", + "description": "

Service unavailable

" + } + ] + }, { "serverUrl": "https://api.github.com", "verb": "post", diff --git a/src/rest/lib/config.json b/src/rest/lib/config.json index 72cc8a818571..af904ae6e2a0 100644 --- a/src/rest/lib/config.json +++ b/src/rest/lib/config.json @@ -47,5 +47,5 @@ ] } }, - "sha": "c8e5a99583a3fd250dada63a4a9f5c4fffc53409" + "sha": "e3b1d8b69b58d9e3b89732e2dc093a635bd86ff5" } \ No newline at end of file diff --git a/src/webhooks/lib/config.json b/src/webhooks/lib/config.json index 4c3c2616a564..9da2074593a9 100644 --- a/src/webhooks/lib/config.json +++ b/src/webhooks/lib/config.json @@ -1,3 +1,3 @@ { - "sha": "c8e5a99583a3fd250dada63a4a9f5c4fffc53409" + "sha": "e3b1d8b69b58d9e3b89732e2dc093a635bd86ff5" } \ No newline at end of file From 4637171e4e95fd31b19027801bee52ebd8c29b89 Mon Sep 17 00:00:00 2001 From: hubwriter Date: Fri, 1 Nov 2024 08:41:08 +0000 Subject: [PATCH 11/14] Copilot: Update immersive mode instructions (#52913) --- .../asking-github-copilot-questions-in-github.md | 4 +--- data/reusables/copilot/copilot-immersive-mode.md | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 data/reusables/copilot/copilot-immersive-mode.md diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md index ce4d578fe456..f2f2a3e5b166 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github.md @@ -279,9 +279,7 @@ You can chat with {% data variables.product.prodname_copilot_short %} about a fi 1. You can continue the conversation by asking a follow-up question. For example, you could type "tell me more" to get {% data variables.product.prodname_copilot_short %} to expand on its last comment. 1. To clear, delete, or rename the current conversation thread, or to start a new thread, type `/` in the "Ask {% data variables.product.prodname_copilot_short %}" box, select from the options that are displayed, then press Enter. -1. To view a conversation in immersive mode, displaying just the conversation thread, click the dashed box icon at the top right of the conversation thread. - - ![Screenshot of the immersive mode button at the top right of the {% data variables.product.prodname_copilot_short %} panel. The button is highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-immersive-view-button.png) +1. To view a conversation in immersive mode, displaying just the conversation thread, click {% octicon "kebab-horizontal" aria-label="Open conversation options" %} at the top right of the conversation thread, then click {% octicon "screen-full" aria-hidden="true" %} **Take conversation to immersive**. ## Asking questions about {% data variables.product.prodname_GH_advanced_security %} alerts diff --git a/data/reusables/copilot/copilot-immersive-mode.md b/data/reusables/copilot/copilot-immersive-mode.md deleted file mode 100644 index 80ef24e61d06..000000000000 --- a/data/reusables/copilot/copilot-immersive-mode.md +++ /dev/null @@ -1,3 +0,0 @@ -1. In the {% data variables.product.prodname_copilot_short %} panel, click the immersive mode button (a dashed square) at the top right of the panel. - - ![Screenshot of the immersive mode button at the top right of the {% data variables.product.prodname_copilot_short %} panel. The button is highlighted with a dark orange outline.](/assets/images/help/copilot/copilot-immersive-view-button.png) From f1e9fefea9beda64ced0a1018ab9c103f6e8cbcf Mon Sep 17 00:00:00 2001 From: Patrick Humpal <654902+phumpal@users.noreply.github.com> Date: Fri, 1 Nov 2024 04:09:27 -0500 Subject: [PATCH 12/14] ghes: make minimum requirements apply to trial (#52595) Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- data/reusables/enterprise_installation/hardware-rec-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/enterprise_installation/hardware-rec-table.md b/data/reusables/enterprise_installation/hardware-rec-table.md index 9671219cbecc..51300fa06fc3 100644 --- a/data/reusables/enterprise_installation/hardware-rec-table.md +++ b/data/reusables/enterprise_installation/hardware-rec-table.md @@ -1,6 +1,6 @@ | User licenses | x86-64 vCPUs | Memory | Root storage | Attached (data) storage | IOPS | | :- | -: | -: | -: | -: | -: | -| Trial, demo, or 10 light users | 4 | 32 GB | 200 GB | 200 GB | 600 | +| Trial, demo, or 10 light users | 4 | 32 GB | 400 GB | 500 GB | 600 | | Up to 1,000 | 8 | 48 GB | 400 GB | 500 GB | 3000 | | 1,000 to 3,000 | 16 | 64 GB | 400 GB | 1000 GB | 6000| | 3,000 to 5,000 | 32 | 128 GB | 400 GB | 1500 GB | 9000 | From 8935c41908cfeb43505f04bf0d6c2ae6eb4012c3 Mon Sep 17 00:00:00 2001 From: Caro Galvin Date: Fri, 1 Nov 2024 05:09:57 -0400 Subject: [PATCH 13/14] Add note to Dependabot article to clarify that ARC & VNET are not supported (#52866) Co-authored-by: mc <42146119+mchammer01@users.noreply.github.com> Co-authored-by: Jules <19994093+jules-p@users.noreply.github.com> --- .../about-dependabot-on-github-actions-runners.md | 6 +++--- .../managing-dependabot-on-self-hosted-runners.md | 2 ++ data/reusables/dependabot/vnet-arc-note.md | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 data/reusables/dependabot/vnet-arc-note.md diff --git a/content/code-security/dependabot/working-with-dependabot/about-dependabot-on-github-actions-runners.md b/content/code-security/dependabot/working-with-dependabot/about-dependabot-on-github-actions-runners.md index 609ba68be3ba..31fd624756a5 100644 --- a/content/code-security/dependabot/working-with-dependabot/about-dependabot-on-github-actions-runners.md +++ b/content/code-security/dependabot/working-with-dependabot/about-dependabot-on-github-actions-runners.md @@ -23,14 +23,14 @@ topics: Using {% data variables.product.prodname_actions %} runners allows you to more easily identify {% data variables.product.prodname_dependabot %} job errors and manually detect and troubleshoot failed runs. You can also integrate {% data variables.product.prodname_dependabot %} into your CI/CD pipelines by using {% data variables.product.prodname_actions %} APIs and webhooks to detect {% data variables.product.prodname_dependabot %} job status such as failed runs, and perform downstream processing. For more information, see "[AUTOTITLE](/rest/actions)" and "[AUTOTITLE](/webhooks/webhook-events-and-payloads)." +>[!TIP] Running {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_dotcom %}-hosted and self-hosted runners **does not** count towards your included {% data variables.product.prodname_actions %} minutes. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)." + You can run {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_actions %} using: * {% data variables.product.prodname_dotcom %}-hosted runners * {% data variables.actions.hosted_runners_caps %}. These runners are {% data variables.product.prodname_dotcom %}-hosted, with advanced features, such as more RAM, CPU, and disk space. For more information, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-larger-runners)." * Self-hosted runners -Using private networking with either an Azure Virtual Network (VNET) or Actions Runner Controller (ARC) is not supported. - ->[!TIP] Running {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_dotcom %}-hosted and self-hosted runners **does not** count towards your included {% data variables.product.prodname_actions %} minutes. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions)." +{% data reusables.dependabot.vnet-arc-note %} Enabling {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_actions %} may increase the number of concurrent jobs run in your account. If required, customers on enterprise plans can request a higher limit for concurrent jobs. For more information, contact us through the {% data variables.contact.contact_support_portal %}, or contact your sales representative. diff --git a/content/code-security/dependabot/working-with-dependabot/managing-dependabot-on-self-hosted-runners.md b/content/code-security/dependabot/working-with-dependabot/managing-dependabot-on-self-hosted-runners.md index 81378376ca06..09f7970b0770 100644 --- a/content/code-security/dependabot/working-with-dependabot/managing-dependabot-on-self-hosted-runners.md +++ b/content/code-security/dependabot/working-with-dependabot/managing-dependabot-on-self-hosted-runners.md @@ -23,6 +23,8 @@ topics: You can help users of your organization and repositories to create and maintain secure code by setting up {% data variables.product.prodname_dependabot %} security and version updates. With {% data variables.product.prodname_dependabot_updates %}, developers can configure repositories so that their dependencies are updated and kept secure automatically. Running {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_actions %} allows for better performance, and increased visibility and control of {% data variables.product.prodname_dependabot %} jobs. +{% data reusables.dependabot.vnet-arc-note %} + To have greater control over {% data variables.product.prodname_dependabot %} access to your private registries and internal network resources, you can configure {% data variables.product.prodname_dependabot %} to run on {% data variables.product.prodname_actions %} self-hosted runners. For security reasons, when running {% data variables.product.prodname_dependabot %} on {% data variables.product.prodname_actions %} self-hosted runners, {% data variables.product.prodname_dependabot_updates %} will not be run on public repositories. diff --git a/data/reusables/dependabot/vnet-arc-note.md b/data/reusables/dependabot/vnet-arc-note.md new file mode 100644 index 000000000000..d95cf4e09b7a --- /dev/null +++ b/data/reusables/dependabot/vnet-arc-note.md @@ -0,0 +1 @@ +> [!NOTE] {% data variables.product.prodname_dependabot %} does not support using private networking with either an Azure Virtual Network (VNET) or the Actions Runner Controller (ARC). From e576141957594b7529c696221b5734dc28e46ffc Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Fri, 1 Nov 2024 09:12:36 +0000 Subject: [PATCH 14/14] Add networking requirement to Dependabot on self-hosted runners article (#52924) Co-authored-by: Art Leo --- .../dependabot/dependabot-runners-network-requirements.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data/reusables/dependabot/dependabot-runners-network-requirements.md b/data/reusables/dependabot/dependabot-runners-network-requirements.md index 52d430472281..72613c1627ba 100644 --- a/data/reusables/dependabot/dependabot-runners-network-requirements.md +++ b/data/reusables/dependabot/dependabot-runners-network-requirements.md @@ -1 +1,6 @@ {% data variables.product.prodname_dependabot %} runners require access to the public internet, {% data variables.product.prodname_dotcom_the_website %}, and any internal registries that will be used in {% data variables.product.prodname_dependabot_updates %}. To minimize the risk to your internal network, you should limit access from the Virtual Machine (VM) to your internal network. This reduces the potential for damage to internal systems if a runner were to download a hijacked dependency. + +{% ifversion fpt or ghec %} +You must also allow outbound traffic to `dependabot-actions.githubapp.com` to prevent the jobs for {% data variables.product.prodname_dependabot_security_updates %} from failing. For more information, see "[AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-between-self-hosted-runners-and-github)." + +{% endif %}