From 57210d614c187afdc9a872c6d22d5c774ba1eaf7 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:09:10 +0200 Subject: [PATCH 01/73] fix error --- ...h-supported-ecosystems-and-repositories.md | 27 ++++++++++ .../index.md | 1 + .../about-the-dependency-graph.md | 50 +------------------ .../dependabot/supported-package-managers.md | 2 +- .../dependency-graph/supported-ecosystems.md | 47 +++++++++++++++++ 5 files changed, 77 insertions(+), 50 deletions(-) create mode 100644 content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md create mode 100644 data/reusables/dependency-graph/supported-ecosystems.md diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md new file mode 100644 index 000000000000..2ad232f95a9d --- /dev/null +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md @@ -0,0 +1,27 @@ +--- +title: Dependency graph supported ecosystems and repositories +shortTitle: Dependabot ecosystem support # Max 31 characters +intro: 'Dependency graph supports a variety of ecosystems and repositories' +allowTitleToDifferFromFilename: true +type: reference +topics: + - Dependency graph + - Dependencies + - Alerts + - Vulnerabilities + - Repositories +versions: + fpt: '*' + ghec: '*' + ghes: '*' +--- + +## About the dependency graph + +TODO: + +In this article, you can see what the supported ecosystems and repositories are. + +## Supported ecosystems and repositories + +{% data reusables.dependency-graph.supported-ecosystems %} diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md index fa4bb2803ee2..3e9c78aa117e 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md @@ -15,4 +15,5 @@ topics: shortTitle: Dependabot ecosystems children: - /supported-ecosystems-and-repositories + - /dependency-graph-supported-ecosystems-and-repositories --- diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index 962ae5dc9d1c..5d89c57aa223 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -69,55 +69,7 @@ You can use the dependency graph to: * View and update vulnerable dependencies for your repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." * See information about vulnerable dependencies in pull requests. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." -## Supported package ecosystems - -The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} - -| Package manager | Languages | Recommended formats | All supported formats | -| --- | --- | --- | ---| -| {% ifversion dependency-graph-rust-support %} | -| Cargo | Rust | `Cargo.lock` | `Cargo.toml`, `Cargo.lock` | -| {% endif %} | -| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | -| NuGet | .NET languages (C#, F#, VB), C++ | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | -| {% ifversion github-actions-in-dependency-graph %} | -| {% data variables.product.prodname_actions %} workflows | YAML | `.yml`, `.yaml` | `.yml`, `.yaml` | -| {% endif %} | -| Go modules | Go | `go.mod`| `go.mod` | -| Maven | Java, Scala | `pom.xml` | `pom.xml` | -| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| -| pip | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py` | -| {% ifversion dependabot-dependency-graph-pnpm %} | -| pnpm | JavaScript | `pnpm-lock.yaml` | `package.json`, `pnpm-lock.yaml` | -| {% endif %} | -| {% ifversion dependency-graph-dart-support %} | -| pub | Dart | `pubspec.lock` | `pubspec.yaml`, `pubspec.lock` | -| {% endif %} | -| Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` | -| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | -| {% ifversion supply-chain-features-swift-support %} | -| Swift Package Manager | Swift | `Package.resolved` | `Package.resolved` | -| {% endif %} | -| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | - -{% note %} - -**Notes:** - -* If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. - -{% ifversion github-actions-in-dependency-graph %} -* {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions)." - -{% endif %} - -* {% data reusables.dependabot.dependabot-alert-actions-semver %} For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" and "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)." - -{% endnote %} - -You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} - -You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." +For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories)." ## Further reading diff --git a/data/reusables/dependabot/supported-package-managers.md b/data/reusables/dependabot/supported-package-managers.md index 179ce078210f..f26fc13dc97f 100644 --- a/data/reusables/dependabot/supported-package-managers.md +++ b/data/reusables/dependabot/supported-package-managers.md @@ -39,7 +39,7 @@ poetry | `pip` | v1 | {% octicon "check" aria-l {% endtip %} -For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems)." +For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories)." #### Cargo diff --git a/data/reusables/dependency-graph/supported-ecosystems.md b/data/reusables/dependency-graph/supported-ecosystems.md new file mode 100644 index 000000000000..063fb71b8723 --- /dev/null +++ b/data/reusables/dependency-graph/supported-ecosystems.md @@ -0,0 +1,47 @@ +The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} + +| Package manager | Languages | Recommended formats | All supported formats | +| --- | --- | --- | ---| +| {% ifversion dependency-graph-rust-support %} | +| Cargo | Rust | `Cargo.lock` | `Cargo.toml`, `Cargo.lock` | +| {% endif %} | +| Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | +| NuGet | .NET languages (C#, F#, VB), C++ | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | +| {% ifversion github-actions-in-dependency-graph %} | +| {% data variables.product.prodname_actions %} workflows | YAML | `.yml`, `.yaml` | `.yml`, `.yaml` | +| {% endif %} | +| Go modules | Go | `go.mod`| `go.mod` | +| Maven | Java, Scala | `pom.xml` | `pom.xml` | +| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| +| pip | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py` | +| {% ifversion dependabot-dependency-graph-pnpm %} | +| pnpm | JavaScript | `pnpm-lock.yaml` | `package.json`, `pnpm-lock.yaml` | +| {% endif %} | +| {% ifversion dependency-graph-dart-support %} | +| pub | Dart | `pubspec.lock` | `pubspec.yaml`, `pubspec.lock` | +| {% endif %} | +| Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` | +| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | +| {% ifversion supply-chain-features-swift-support %} | +| Swift Package Manager | Swift | `Package.resolved` | `Package.resolved` | +| {% endif %} | +| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | + +{% note %} + +**Notes:** + +* If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. + +{% ifversion github-actions-in-dependency-graph %} +* {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions)." + +{% endif %} + +* {% data reusables.dependabot.dependabot-alert-actions-semver %} For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" and "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)." + +{% endnote %} + +You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} + +You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." From af36359940b82b8c0f3bf69db74226f94efc0a42 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:22:40 +0200 Subject: [PATCH 02/73] a lot more changes --- .../dependabot/dependabot-alerts/about-dependabot-alerts.md | 2 +- .../configuring-dependabot-security-updates.md | 2 +- ....md => dependency-graph-supported-package-ecosystems.md} | 6 +++--- .../dependabot/ecosystems-supported-by-dependabot/index.md | 2 +- ...ubleshooting-the-detection-of-vulnerable-dependencies.md | 2 +- .../about-dependency-review.md | 2 +- .../about-the-dependency-graph.md | 2 +- .../exploring-the-dependencies-of-a-repository.md | 2 +- data/reusables/dependabot/supported-package-managers.md | 2 +- ...ported-ecosystems.md => supported-package-ecosystems.md} | 0 data/reusables/supported-languages/products-table-header.md | 4 ++-- 11 files changed, 13 insertions(+), 13 deletions(-) rename content/code-security/dependabot/ecosystems-supported-by-dependabot/{dependency-graph-supported-ecosystems-and-repositories.md => dependency-graph-supported-package-ecosystems.md} (73%) rename data/reusables/dependency-graph/{supported-ecosystems.md => supported-package-ecosystems.md} (100%) diff --git a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md index f3bfb31f0b29..4912bb03d88c 100644 --- a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md @@ -55,7 +55,7 @@ If your code depends on a package with a security vulnerability, this can cause {% data reusables.repositories.dependency-review %} -As {% data variables.product.prodname_dependabot_alerts %} rely on the dependency graph, the ecosystems that are supported by {% data variables.product.prodname_dependabot_alerts %} are the same as those supported by the dependency graph. For a list of these ecosystems, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems)." +As {% data variables.product.prodname_dependabot_alerts %} rely on the dependency graph, the ecosystems that are supported by {% data variables.product.prodname_dependabot_alerts %} are the same as those supported by the dependency graph. For a list of these ecosystems, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." {% note %} diff --git a/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md b/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md index 1d6c28fce54d..c5eaae947d7b 100644 --- a/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md +++ b/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md @@ -165,4 +165,4 @@ updates: * "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" * "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts)" -* "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems)" +* "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)" diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md similarity index 73% rename from content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md rename to content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 2ad232f95a9d..7663b8e8618b 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -1,5 +1,5 @@ --- -title: Dependency graph supported ecosystems and repositories +title: Dependency graph supported package ecosystems shortTitle: Dependabot ecosystem support # Max 31 characters intro: 'Dependency graph supports a variety of ecosystems and repositories' allowTitleToDifferFromFilename: true @@ -22,6 +22,6 @@ TODO: In this article, you can see what the supported ecosystems and repositories are. -## Supported ecosystems and repositories +## Supported package ecosystems -{% data reusables.dependency-graph.supported-ecosystems %} +{% data reusables.dependency-graph.supported-package-ecosystems %} diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md index 3e9c78aa117e..ccbf205af949 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md @@ -15,5 +15,5 @@ topics: shortTitle: Dependabot ecosystems children: - /supported-ecosystems-and-repositories - - /dependency-graph-supported-ecosystems-and-repositories + - /dependency-graph-supported-package-ecosystems --- diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md index 63b7b2cf8250..fe4f75f35233 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -46,7 +46,7 @@ topics: ## Why don't I get {% data variables.product.prodname_dependabot_alerts %} for some ecosystems? -{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. We'll continue to add support for more ecosystems over time. For an overview of the package ecosystems that we support, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems)." +{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. We'll continue to add support for more ecosystems over time. For an overview of the package ecosystems that we support, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." It's worth noting that security advisories may exist for other ecosystems. The information in an unreviewed security advisory is provided by the maintainers of a particular repository. This data is not curated by {% data variables.product.prodname_dotcom %}. {% data reusables.security-advisory.link-browsing-advisory-db %} diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md index 24305bef9717..b7a480d2ca05 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md @@ -32,7 +32,7 @@ For more information about configuring dependency review, see "[AUTOTITLE](/code {% data variables.product.prodname_dependabot_alerts %} will find vulnerabilities that are already in your dependencies, but it's much better to avoid introducing potential problems than to fix problems at a later date. For more information about {% data variables.product.prodname_dependabot_alerts %}, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#dependabot-alerts-for-vulnerable-dependencies)." -Dependency review supports the same languages and package management ecosystems as the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems)." +Dependency review supports the same languages and package management ecosystems as the dependency graph. For more information, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." For more information on supply chain features available on {% data variables.product.product_name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security)." diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index 5d89c57aa223..b4c04d362c66 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -69,7 +69,7 @@ You can use the dependency graph to: * View and update vulnerable dependencies for your repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." * See information about vulnerable dependencies in pull requests. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." -For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories)." +For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." ## Further reading diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md index 60f9b555974d..653f5d279a02 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md @@ -23,7 +23,7 @@ shortTitle: Explore dependencies ## Viewing the dependency graph -The dependency graph shows the dependencies{% ifversion fpt or ghec %} and dependents{% endif %} of your repository. {% ifversion dependency-graph-repository-view-update %} {% data reusables.dependency-graph.repository-view-update %}{% endif %} For information about the detection of dependencies and which ecosystems are supported, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)." +The dependency graph shows the dependencies{% ifversion fpt or ghec %} and dependents{% endif %} of your repository. {% ifversion dependency-graph-repository-view-update %} {% data reusables.dependency-graph.repository-view-update %}{% endif %} For information about the detection of dependencies and which ecosystems are supported, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.accessing-repository-graphs %} diff --git a/data/reusables/dependabot/supported-package-managers.md b/data/reusables/dependabot/supported-package-managers.md index f26fc13dc97f..52006df334a6 100644 --- a/data/reusables/dependabot/supported-package-managers.md +++ b/data/reusables/dependabot/supported-package-managers.md @@ -39,7 +39,7 @@ poetry | `pip` | v1 | {% octicon "check" aria-l {% endtip %} -For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-ecosystems-and-repositories)." +For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." #### Cargo diff --git a/data/reusables/dependency-graph/supported-ecosystems.md b/data/reusables/dependency-graph/supported-package-ecosystems.md similarity index 100% rename from data/reusables/dependency-graph/supported-ecosystems.md rename to data/reusables/dependency-graph/supported-package-ecosystems.md diff --git a/data/reusables/supported-languages/products-table-header.md b/data/reusables/supported-languages/products-table-header.md index e71c2c2c1253..a84240937276 100644 --- a/data/reusables/supported-languages/products-table-header.md +++ b/data/reusables/supported-languages/products-table-header.md @@ -1,11 +1,11 @@ {% ifversion fpt or ghec -%} -| Language | [GitHub Copilot](/copilot/about-github-copilot/what-is-github-copilot) | [Code navigation](/repositories/working-with-files/using-files/navigating-code-on-github) | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | +| Language | [GitHub Copilot](/copilot/about-github-copilot/what-is-github-copilot) | [Code navigation](/repositories/working-with-files/using-files/navigating-code-on-github) | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | | :-- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | {%- else -%} -| Language | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | +| Language | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | | :-- | :-: | :-: | :-: | :-: | :-: | {%- endif %} From 2c1386c0640b164d42cd71109697ba287d5a1bb3 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:24:58 +0200 Subject: [PATCH 03/73] a few more changes --- .../dependency-graph-supported-package-ecosystems.md | 4 +++- .../dependency-graph/supported-package-ecosystems.md | 2 -- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 7663b8e8618b..947db8197170 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -20,8 +20,10 @@ versions: TODO: -In this article, you can see what the supported ecosystems and repositories are. +In this article, you can see what the supported ecosystems are. ## Supported package ecosystems +The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} + {% data reusables.dependency-graph.supported-package-ecosystems %} diff --git a/data/reusables/dependency-graph/supported-package-ecosystems.md b/data/reusables/dependency-graph/supported-package-ecosystems.md index 063fb71b8723..11fa45e2fc0e 100644 --- a/data/reusables/dependency-graph/supported-package-ecosystems.md +++ b/data/reusables/dependency-graph/supported-package-ecosystems.md @@ -1,5 +1,3 @@ -The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} - | Package manager | Languages | Recommended formats | All supported formats | | --- | --- | --- | ---| | {% ifversion dependency-graph-rust-support %} | From 6b7a597945bfee4b8d146c72385ef76e96a2b2fb Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 12:56:45 +0200 Subject: [PATCH 04/73] fix more liiiiiinks --- .../about-the-dependency-graph.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index b4c04d362c66..2a6d9a1508a5 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -21,7 +21,7 @@ shortTitle: Dependency graph {% data reusables.dependabot.about-the-dependency-graph %} -When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see "[Supported package ecosystems](#supported-package-ecosystems)" below. +When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." {% data reusables.dependency-submission.dependency-submission-link %} From 8555a7109eb7410a44c40dec1f9d0b408124ff4d Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 13:47:39 +0200 Subject: [PATCH 05/73] argh --- ...ency-graph-supported-package-ecosystems.md | 22 ++++++- .../using-the-dependency-submission-api.md | 60 +------------------ .../supported-package-ecosystems.md | 4 -- .../api-premade-actions.md | 1 + .../premade-action-table.md | 57 ++++++++++++++++++ 5 files changed, 80 insertions(+), 64 deletions(-) create mode 100644 data/reusables/dependency-submission/api-premade-actions.md create mode 100644 data/reusables/dependency-submission/premade-action-table.md diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 947db8197170..00b2900dc416 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -1,7 +1,7 @@ --- title: Dependency graph supported package ecosystems -shortTitle: Dependabot ecosystem support # Max 31 characters -intro: 'Dependency graph supports a variety of ecosystems and repositories' +shortTitle: Dependency graph ecosystem support # Max 31 characters +intro: 'Dependency graph supports a variety of ecosystem.' allowTitleToDifferFromFilename: true type: reference topics: @@ -27,3 +27,21 @@ In this article, you can see what the supported ecosystems are. The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} {% data reusables.dependency-graph.supported-package-ecosystems %} + +## Supported package ecosystems via the dependency submission action + +You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." + +Any ecosystem added via the {% data variables.dependency-submission-api.name %} will also be supported for the dependency graph. Dependency information from these discovered and submitted dependencies will, in turns, flows into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. + +>[NOTE!] You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. + +You typically use the dependency submission API in a GitHub Actions workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. + +{% data reusables.dependency-submission.premade-action-table %} + +TODO: + +You can also create your own action. + +Move more content from "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api) to here? diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index 1622db9a63b7..e29a4adabc75 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -25,65 +25,9 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data ### Using pre-made actions -The simplest way to use the {% data variables.dependency-submission-api.name %} is by adding a pre-made action to your repository that will gather and convert the list of dependencies to the required snapshot format and submit the list to the API. Actions that complete these steps for various ecosystems are available on {% data variables.product.prodname_marketplace %}. Some of these actions are provided by third parties. You can find links to the currently available actions in the table below. +{% data reusables.dependency-submission.api-premade-actions %} -Ecosystem | Action | Maintained by {% data variables.product.prodname_dotcom %} ---- | --- | --- | -Go | [Go Dependency Submission](https://github.com/marketplace/actions/go-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -Gradle | [Gradle Dependency Submission](https://github.com/marketplace/actions/build-with-gradle#the-dependency-submission-action) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -Maven | [Maven Dependency Tree Dependency Submission](https://github.com/marketplace/actions/maven-dependency-tree-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -Mill | [Mill Dependency Submission](https://github.com/marketplace/actions/mill-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -Scala | [Sbt Dependency Submission](https://github.com/marketplace/actions/sbt-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -NuGet and others | [Component Detection dependency submission action](https://github.com/marketplace/actions/component-detection-dependency-submission-action) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | - -{% note %} - -**Note:** For the Component Detection dependency submission action, other supported ecosystems include Vcpkg, Conan, Conda, Crates, as well as NuGet. - -{% endnote %} - -For example, the following [Go Dependency Submission](https://github.com/actions/go-dependency-submission) workflow calculates the dependencies for a Go build-target (a Go file with a `main` function) and submits the list to the {% data variables.dependency-submission-api.name %}. - -```yaml -name: Go Dependency Submission -on: - push: - branches: - - main - -# The API requires write permission on the repository to submit dependencies -permissions: - contents: write - -# Environment variables to configure Go and Go modules. Customize as necessary -env: - GOPROXY: '' # A Go Proxy server to be used - GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY -jobs: - go-action-detection: - runs-on: ubuntu-latest - steps: - - name: 'Checkout Repository' - uses: {% data reusables.actions.action-checkout %} - - - uses: {% data reusables.actions.action-setup-go %} - with: - go-version: ">=1.18.0" - - - name: Run snapshot action - uses: actions/go-dependency-submission@v1 - with: - # Required: Define the repo path to the go.mod file used by the - # build target - go-mod-path: go-example/go.mod - # - # Optional. Define the repo path of a build target, - # a file with a `main()` function. - # If undefined, this action will collect all dependencies - # used by all build targets for the module. This may - # include Go dependencies used by tests and tooling. - go-build-target: go-example/cmd/octocat.go -``` +TODO: Review whether we need to keep all the content in the reusable above, and add For more information, see add link to the table in the new article ### Creating your own action diff --git a/data/reusables/dependency-graph/supported-package-ecosystems.md b/data/reusables/dependency-graph/supported-package-ecosystems.md index 11fa45e2fc0e..eade0f2615f3 100644 --- a/data/reusables/dependency-graph/supported-package-ecosystems.md +++ b/data/reusables/dependency-graph/supported-package-ecosystems.md @@ -39,7 +39,3 @@ * {% data reusables.dependabot.dependabot-alert-actions-semver %} For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" and "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)." {% endnote %} - -You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} - -You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." diff --git a/data/reusables/dependency-submission/api-premade-actions.md b/data/reusables/dependency-submission/api-premade-actions.md new file mode 100644 index 000000000000..8a83c3079971 --- /dev/null +++ b/data/reusables/dependency-submission/api-premade-actions.md @@ -0,0 +1 @@ +The simplest way to use the {% data variables.dependency-submission-api.name %} is by adding a pre-made action to your repository that will gather and convert the list of dependencies to the required snapshot format and submit the list to the API. Actions that complete these steps for various ecosystems are available on {% data variables.product.prodname_marketplace %}. Some of these actions are provided by third parties. diff --git a/data/reusables/dependency-submission/premade-action-table.md b/data/reusables/dependency-submission/premade-action-table.md new file mode 100644 index 000000000000..79369c1b5429 --- /dev/null +++ b/data/reusables/dependency-submission/premade-action-table.md @@ -0,0 +1,57 @@ +Ecosystem | Action | Maintained by {% data variables.product.prodname_dotcom %} +--- | --- | --- | +Go | [Go Dependency Submission](https://github.com/marketplace/actions/go-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | +Gradle | [Gradle Dependency Submission](https://github.com/marketplace/actions/build-with-gradle#the-dependency-submission-action) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | +Maven | [Maven Dependency Tree Dependency Submission](https://github.com/marketplace/actions/maven-dependency-tree-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | +Mill | [Mill Dependency Submission](https://github.com/marketplace/actions/mill-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | +Scala | [Sbt Dependency Submission](https://github.com/marketplace/actions/sbt-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | +NuGet and others | [Component Detection dependency submission action](https://github.com/marketplace/actions/component-detection-dependency-submission-action) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | + +{% note %} + +**Note:** For the Component Detection dependency submission action, other supported ecosystems include Vcpkg, Conan, Conda, Crates, as well as NuGet. + +{% endnote %} + +For example, the following [Go Dependency Submission](https://github.com/actions/go-dependency-submission) workflow calculates the dependencies for a Go build-target (a Go file with a `main` function) and submits the list to the {% data variables.dependency-submission-api.name %}. + +```yaml +name: Go Dependency Submission +on: + push: + branches: + - main + +# The API requires write permission on the repository to submit dependencies +permissions: + contents: write + +# Environment variables to configure Go and Go modules. Customize as necessary +env: + GOPROXY: '' # A Go Proxy server to be used + GOPRIVATE: '' # A list of modules are considered private and not requested from GOPROXY +jobs: + go-action-detection: + runs-on: ubuntu-latest + steps: + - name: 'Checkout Repository' + uses: {% data reusables.actions.action-checkout %} + + - uses: {% data reusables.actions.action-setup-go %} + with: + go-version: ">=1.18.0" + + - name: Run snapshot action + uses: actions/go-dependency-submission@v1 + with: + # Required: Define the repo path to the go.mod file used by the + # build target + go-mod-path: go-example/go.mod + # + # Optional. Define the repo path of a build target, + # a file with a `main()` function. + # If undefined, this action will collect all dependencies + # used by all build targets for the module. This may + # include Go dependencies used by tests and tooling. + go-build-target: go-example/cmd/octocat.go +``` From 6251dec2602f55af0bfacecaa834b406137a838a Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:23:17 +0200 Subject: [PATCH 06/73] tidy up a bit --- ...ependency-graph-supported-package-ecosystems.md | 14 ++++++-------- .../using-the-dependency-submission-api.md | 4 +++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 00b2900dc416..a7b5603b266f 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -28,20 +28,18 @@ The recommended formats explicitly define which versions are used for all direct {% data reusables.dependency-graph.supported-package-ecosystems %} -## Supported package ecosystems via the dependency submission action +## Supported package ecosystems via dependency submission actions You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." -Any ecosystem added via the {% data variables.dependency-submission-api.name %} will also be supported for the dependency graph. Dependency information from these discovered and submitted dependencies will, in turns, flows into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. +Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. ->[NOTE!] You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. +>[!NOTE] You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. -You typically use the dependency submission API in a GitHub Actions workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. +You typically use the {% data variables.dependency-submission-api.name %} in a {% data variables.product.prodname_actions %} workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. {% data reusables.dependency-submission.premade-action-table %} -TODO: - -You can also create your own action. +TODO: - Move more content from "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api) to here? -Move more content from "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api) to here? +You can also create your own action. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api#creating-your-own-action)." diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index e29a4adabc75..d68552f7a272 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -27,7 +27,9 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data {% data reusables.dependency-submission.api-premade-actions %} -TODO: Review whether we need to keep all the content in the reusable above, and add For more information, see add link to the table in the new article +TODO: Review whether we need to keep all the content in the reusable above. + +For more information about these actions, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." ### Creating your own action From a16ad3907b21e7c522783a66fcdd240199cc827b Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 6 Sep 2024 15:50:39 +0200 Subject: [PATCH 07/73] add reusable for dependency graph overview --- .../dependency-graph-supported-package-ecosystems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index a7b5603b266f..6b8ab970433f 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -18,7 +18,7 @@ versions: ## About the dependency graph -TODO: +{% data reusables.dependabot.about-the-dependency-graph %} For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)." In this article, you can see what the supported ecosystems are. From a302a8feb08c25911b0b6627ea4eefcfdb846655 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Mon, 23 Sep 2024 09:08:40 +0100 Subject: [PATCH 08/73] Complete the merge conflict resolution --- .../dependency-graph/supported-package-ecosystems.md | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/data/reusables/dependency-graph/supported-package-ecosystems.md b/data/reusables/dependency-graph/supported-package-ecosystems.md index eade0f2615f3..f083d4375f99 100644 --- a/data/reusables/dependency-graph/supported-package-ecosystems.md +++ b/data/reusables/dependency-graph/supported-package-ecosystems.md @@ -1,13 +1,9 @@ | Package manager | Languages | Recommended formats | All supported formats | | --- | --- | --- | ---| -| {% ifversion dependency-graph-rust-support %} | | Cargo | Rust | `Cargo.lock` | `Cargo.toml`, `Cargo.lock` | -| {% endif %} | | Composer | PHP | `composer.lock` | `composer.json`, `composer.lock` | | NuGet | .NET languages (C#, F#, VB), C++ | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj` | `.csproj`, `.vbproj`, `.nuspec`, `.vcxproj`, `.fsproj`, `packages.config` | -| {% ifversion github-actions-in-dependency-graph %} | | {% data variables.product.prodname_actions %} workflows | YAML | `.yml`, `.yaml` | `.yml`, `.yaml` | -| {% endif %} | | Go modules | Go | `go.mod`| `go.mod` | | Maven | Java, Scala | `pom.xml` | `pom.xml` | | npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| @@ -15,14 +11,10 @@ | {% ifversion dependabot-dependency-graph-pnpm %} | | pnpm | JavaScript | `pnpm-lock.yaml` | `package.json`, `pnpm-lock.yaml` | | {% endif %} | -| {% ifversion dependency-graph-dart-support %} | | pub | Dart | `pubspec.lock` | `pubspec.yaml`, `pubspec.lock` | -| {% endif %} | | Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` | | RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | -| {% ifversion supply-chain-features-swift-support %} | | Swift Package Manager | Swift | `Package.resolved` | `Package.resolved` | -| {% endif %} | | Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` | {% note %} @@ -31,11 +23,8 @@ * If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project. -{% ifversion github-actions-in-dependency-graph %} * {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions)." -{% endif %} - * {% data reusables.dependabot.dependabot-alert-actions-semver %} For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" and "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates)." {% endnote %} From e8b9cebfdf0668f9c7cd4952f0847b0faaeeb2c2 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Mon, 23 Sep 2024 16:18:33 +0000 Subject: [PATCH 09/73] first edits --- .../evaluating-alerts.md | 2 +- .../resolving-alerts.md | 28 +++++++++++++++---- ...cret-scanning-report-secret-github-pat.yml | 5 ++++ .../report-secret-pat-beta-note.md | 1 + 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 data/features/secret-scanning-report-secret-github-pat.yml create mode 100644 data/reusables/secret-scanning/report-secret-pat-beta-note.md diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md index ebd81acfb836..fa20c40fd34e 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md @@ -22,7 +22,7 @@ allowTitleToDifferFromFilename: true There are some additional features that can help you to evaluate alerts in order to better prioritize and manage them. You can: * Check the validity of a secret, to see if the secret is still active. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**.{% endif %} For more information, see "[Checking a secret's validity](#checking-a-secrets-validity)."{% ifversion secret-scanning-validity-check-partner-patterns %} -* Perform an "on-demand" validity check, to get the most up to date validation status. For more information, see "[Performing an on-demand-validity-check](#performing-an-on-demand-validity-check)."{% endif %} +* Perform an "on-demand" validity check, to get the most up to date validation status. For more information, see "[Performing an on-demand validity check](#performing-an-on-demand-validity-check)."{% endif %} * Review a token's metadata. **Applies to {% data variables.product.company_short %} tokens only**. For example, to see when the token was last used. For more information, see "[Reviewing {% data variables.product.company_short %} token metadata](#reviewing-github-token-metadata)."{% ifversion secret-scanning-multi-repo-public-leak %} * Review the labels assigned to the alert. For more information, see "[Reviewing alert labels](#reviewing-alert-labels)."{% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index 695c708331b7..051ea20d55ff 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -19,18 +19,36 @@ allowTitleToDifferFromFilename: true ## Fixing alerts -Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.prodname_dotcom %} recommends the following actions for compromised secrets: +Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: -* For a compromised {% data variables.product.prodname_dotcom %} {% data variables.product.pat_generic %}, delete the compromised token, create a new token, and update any services that use the old token. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." +* For a compromised {% data variables.product.github %} {% data variables.product.pat_generic %}: +{% ifversion secret-scanning-report-secret-github-pat %} + * Report the leaked token to {% data variables.product.github %}. {% data variables.product.github %} will then automatically revoke the token. For more information, see "[Reporting a leaked secret](#reporting-a-leaked-secret)." + * Update any services that use the old token.{% else %} + * Delete the compromised token, create a new token, and update any services that use the old token. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)."{% endif %} {%- ifversion token-audit-log %} * {% ifversion ghec %}If your organization is owned by an enterprise account, identify{% else %}Identify{% endif %} any actions taken by the compromised token on your enterprise's resources. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/identifying-audit-log-events-performed-by-an-access-token)." {%- endif %} -* For all other secrets, first verify that the secret committed to {% data variables.product.product_name %} is valid. If so, create a new secret, update any services that use the old secret, and then delete the old secret. -{% ifversion fpt or ghec %} +* For all other secrets: + * First verify that the secret committed to {% data variables.product.product_name %} is valid. {% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check).{% endif %} + * If the secret is valid, create a new secret, update any services that use the old secret, and then delete the old secret. + + {% ifversion fpt or ghec %} + + > [!NOTE] + > If a secret is detected in a public repository on {% data variables.product.github %} and the secret also matches a partner pattern, an alert is generated and the potential secret is reported to the service provider. For details of partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." + + {% endif %} + +{% ifversion secret-scanning-report-secret-github-pat %} + +### Reporting a leaked secret > [!NOTE] -> If a secret is detected in a public repository on {% data variables.product.prodname_dotcom %} and the secret also matches a partner pattern, an alert is generated and the potential secret is reported to the service provider. For details of partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." +> {% data reusables.secret-scanning.report-secret-pat-beta-note %} The feature is currently only available for {% data variables.product.github %} {% data variables.product.pat_generic %}s (v1 and v2). + +TODO {% endif %} diff --git a/data/features/secret-scanning-report-secret-github-pat.yml b/data/features/secret-scanning-report-secret-github-pat.yml new file mode 100644 index 000000000000..9bcefd75362e --- /dev/null +++ b/data/features/secret-scanning-report-secret-github-pat.yml @@ -0,0 +1,5 @@ +# Reference: #15374 +# Secret scanning one-click report and revocation (for GitHub PATs only) +versions: + ghec: '*' + ghes: '> 3.15' diff --git a/data/reusables/secret-scanning/report-secret-pat-beta-note.md b/data/reusables/secret-scanning/report-secret-pat-beta-note.md new file mode 100644 index 000000000000..43366177239c --- /dev/null +++ b/data/reusables/secret-scanning/report-secret-pat-beta-note.md @@ -0,0 +1 @@ +Reporting a leaked secret to {% data variables.product.github %} is in beta and subject to change. From cc42ba2903a4d853072c6ddabffe13a6a54bc42f Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Mon, 23 Sep 2024 22:14:58 +0100 Subject: [PATCH 10/73] Update data/reusables/dependency-submission/api-premade-actions.md --- data/reusables/dependency-submission/api-premade-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/dependency-submission/api-premade-actions.md b/data/reusables/dependency-submission/api-premade-actions.md index 8a83c3079971..3d927f6a9255 100644 --- a/data/reusables/dependency-submission/api-premade-actions.md +++ b/data/reusables/dependency-submission/api-premade-actions.md @@ -1 +1 @@ -The simplest way to use the {% data variables.dependency-submission-api.name %} is by adding a pre-made action to your repository that will gather and convert the list of dependencies to the required snapshot format and submit the list to the API. Actions that complete these steps for various ecosystems are available on {% data variables.product.prodname_marketplace %}. Some of these actions are provided by third parties. +The simplest way to use the {% data variables.dependency-submission-api.name %} is by adding a pre-made action to your repository that will gather and convert the list of dependencies to the required snapshot format and submit the list to the API. From 4aa633487e85af895a3f3a156656016e1909a7d8 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Mon, 23 Sep 2024 22:16:34 +0100 Subject: [PATCH 11/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md --- .../using-the-dependency-submission-api.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index d68552f7a272..2bacdffe1e3b 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -27,7 +27,6 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data {% data reusables.dependency-submission.api-premade-actions %} -TODO: Review whether we need to keep all the content in the reusable above. For more information about these actions, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." From 9bb8835411238ea4450ad41f8701382a7df95a92 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:36:48 +0000 Subject: [PATCH 12/73] more edits --- .../resolving-alerts.md | 47 ++++++++++++------- ...cret-scanning-report-secret-github-pat.yml | 2 +- .../report-secret-pat-beta-note.md | 2 +- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index 051ea20d55ff..ae08c224f9b1 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -21,34 +21,45 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: -* For a compromised {% data variables.product.github %} {% data variables.product.pat_generic %}: +* First verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. For more information, see "[Checking a secret's validity](#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} +* Report the leaked token to {% data variables.product.github %}. For more information, see "[Reporting a leaked secret](#reporting-a-leaked-secret)."{% endif %} +* Review and update any services that use the old token. If required, delete the compromised token and create a new token. +* Check your security logs for any unauthorized activity. [TODO - LINK?] + {% ifversion secret-scanning-report-secret-github-pat %} - * Report the leaked token to {% data variables.product.github %}. {% data variables.product.github %} will then automatically revoke the token. For more information, see "[Reporting a leaked secret](#reporting-a-leaked-secret)." - * Update any services that use the old token.{% else %} - * Delete the compromised token, create a new token, and update any services that use the old token. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)."{% endif %} -{%- ifversion token-audit-log %} - * {% ifversion ghec %}If your organization is owned by an enterprise account, identify{% else %}Identify{% endif %} any actions taken by the compromised token on your enterprise's resources. For more information, see "[AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/identifying-audit-log-events-performed-by-an-access-token)." -{%- endif %} -* For all other secrets: - * First verify that the secret committed to {% data variables.product.product_name %} is valid. {% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check).{% endif %} - * If the secret is valid, create a new secret, update any services that use the old secret, and then delete the old secret. +### Reporting a leaked secret + +> [!NOTE] +> {% data reusables.secret-scanning.report-secret-pat-beta-note %} The feature is currently only available for {% data variables.product.github %} {% data variables.product.pat_generic %}s (v1 and v2). + +{% endif %} - {% ifversion fpt or ghec %} +{% ifversion fpt or ghec %} - > [!NOTE] - > If a secret is detected in a public repository on {% data variables.product.github %} and the secret also matches a partner pattern, an alert is generated and the potential secret is reported to the service provider. For details of partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." +If a secret is detected in a **public** repository on {% data variables.product.github %} and the secret also matches a partner pattern, an alert is generated and the potential secret is **automatically reported** to the service provider. For details of partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." - {% endif %} +{% endif %} {% ifversion secret-scanning-report-secret-github-pat %} -### Reporting a leaked secret +For secrets detected in **private** repositories, anyone who can view {% data variables.secret-scanning.alerts %} for a repository can choose to report the privately exposed secret directly to {% data variables.product.github %}. -> [!NOTE] -> {% data reusables.secret-scanning.report-secret-pat-beta-note %} The feature is currently only available for {% data variables.product.github %} {% data variables.product.pat_generic %}s (v1 and v2). +By reporting the secret, the token provider will treat the privately exposed secret as if it had been publicly leaked. This means the token provider may revoke the secret, so you should first consider reviewing and updating any services that use the secret. If possible, you should also consider notifying the token owner before reporting the token, so that the token owner is aware that the secret may get revoked. + +You will only see the option to report the privately exposed secret to {% data variables.product.github %} if the following conditions are met: -TODO +* The secret's validity has not been confirmed. +* The secret's validity has been confirmed as "active". +* The secret is a {% data variables.product.github %} {% data variables.product.pat_generic %}. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-security %} +1. In the left sidebar, under "Vulnerability alerts", click **{% data variables.product.prodname_secret_scanning_caps %}**. +1. From the alert list, click the alert you want to view. +1. In the alert view for the leaked secret, click **Report leak**. +1. Review the information in the dialog box, then click **I understand the consequence, report this secret**. +1. Once you've reported the secret, you can close the alert. {% endif %} diff --git a/data/features/secret-scanning-report-secret-github-pat.yml b/data/features/secret-scanning-report-secret-github-pat.yml index 9bcefd75362e..c8719fad13ea 100644 --- a/data/features/secret-scanning-report-secret-github-pat.yml +++ b/data/features/secret-scanning-report-secret-github-pat.yml @@ -2,4 +2,4 @@ # Secret scanning one-click report and revocation (for GitHub PATs only) versions: ghec: '*' - ghes: '> 3.15' + ghes: '> 3.13' diff --git a/data/reusables/secret-scanning/report-secret-pat-beta-note.md b/data/reusables/secret-scanning/report-secret-pat-beta-note.md index 43366177239c..e95bcdfa4f8a 100644 --- a/data/reusables/secret-scanning/report-secret-pat-beta-note.md +++ b/data/reusables/secret-scanning/report-secret-pat-beta-note.md @@ -1 +1 @@ -Reporting a leaked secret to {% data variables.product.github %} is in beta and subject to change. +Reporting a privately exposed secret to {% data variables.product.github %} is in beta and subject to change. From 1cc229bd9a23f5c71819de51350b385d455878eb Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:48:22 +0000 Subject: [PATCH 13/73] resetting versioning after testing --- data/features/secret-scanning-report-secret-github-pat.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/features/secret-scanning-report-secret-github-pat.yml b/data/features/secret-scanning-report-secret-github-pat.yml index c8719fad13ea..9bcefd75362e 100644 --- a/data/features/secret-scanning-report-secret-github-pat.yml +++ b/data/features/secret-scanning-report-secret-github-pat.yml @@ -2,4 +2,4 @@ # Secret scanning one-click report and revocation (for GitHub PATs only) versions: ghec: '*' - ghes: '> 3.13' + ghes: '> 3.15' From 16e87096e579bf4adb35a7d2002624f53d26d03b Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Tue, 24 Sep 2024 10:51:35 +0000 Subject: [PATCH 14/73] fixing link --- .../managing-alerts-from-secret-scanning/resolving-alerts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index ae08c224f9b1..898fea10741a 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -21,7 +21,7 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: -* First verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. For more information, see "[Checking a secret's validity](#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} +* First verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. For more information, see "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} * Report the leaked token to {% data variables.product.github %}. For more information, see "[Reporting a leaked secret](#reporting-a-leaked-secret)."{% endif %} * Review and update any services that use the old token. If required, delete the compromised token and create a new token. * Check your security logs for any unauthorized activity. [TODO - LINK?] From 41d5f8029e6d3a54d5a10374259fd311c7944ae3 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Tue, 24 Sep 2024 11:53:03 +0000 Subject: [PATCH 15/73] final edits --- .../resolving-alerts.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index 898fea10741a..eaf7bde67bdf 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -21,9 +21,9 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: -* First verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. For more information, see "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}For more information, see "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} -* Report the leaked token to {% data variables.product.github %}. For more information, see "[Reporting a leaked secret](#reporting-a-leaked-secret)."{% endif %} -* Review and update any services that use the old token. If required, delete the compromised token and create a new token. +* Verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. See "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}See "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} +* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}. **Applies to {% data variables.product.company_short %} tokens only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} +* Review and update any services that use the old token. For {% data variables.product.github %} {% data variables.product.pat_generic %}s, delete the compromised token and create a new token. See "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." * Check your security logs for any unauthorized activity. [TODO - LINK?] {% ifversion secret-scanning-report-secret-github-pat %} @@ -47,11 +47,10 @@ For secrets detected in **private** repositories, anyone who can view {% data va By reporting the secret, the token provider will treat the privately exposed secret as if it had been publicly leaked. This means the token provider may revoke the secret, so you should first consider reviewing and updating any services that use the secret. If possible, you should also consider notifying the token owner before reporting the token, so that the token owner is aware that the secret may get revoked. -You will only see the option to report the privately exposed secret to {% data variables.product.github %} if the following conditions are met: +You will only see the option to report a privately exposed secret to {% data variables.product.github %} if the following conditions are met: -* The secret's validity has not been confirmed. -* The secret's validity has been confirmed as "active". * The secret is a {% data variables.product.github %} {% data variables.product.pat_generic %}. +* The secret's validity has not been confirmed, or the secret's validity has been confirmed as `active`. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} From c3958a3eb37780902676b48b8e24d6cccbaf6161 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:46:44 +0100 Subject: [PATCH 16/73] Update content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md Co-authored-by: Erin Havens --- .../managing-alerts-from-secret-scanning/resolving-alerts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index eaf7bde67bdf..748c1a296461 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -22,7 +22,7 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: * Verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. See "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}See "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} -* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}. **Applies to {% data variables.product.company_short %} tokens only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} +* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}, who will treat it like any publicly leaked secret and revoke it. **Applies to {% data variables.product.company_short %} personal access tokens only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} * Review and update any services that use the old token. For {% data variables.product.github %} {% data variables.product.pat_generic %}s, delete the compromised token and create a new token. See "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." * Check your security logs for any unauthorized activity. [TODO - LINK?] From 651765468723a12333f9f1ddd0c446d7fda6f9a5 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:47:02 +0100 Subject: [PATCH 17/73] Update content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md Co-authored-by: Erin Havens --- .../managing-alerts-from-secret-scanning/resolving-alerts.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index 748c1a296461..93da8c5cf935 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -57,6 +57,7 @@ You will only see the option to report a privately exposed secret to {% data var 1. In the left sidebar, under "Vulnerability alerts", click **{% data variables.product.prodname_secret_scanning_caps %}**. 1. From the alert list, click the alert you want to view. 1. In the alert view for the leaked secret, click **Report leak**. +1. In order to prevent breaking workflows, consider first rotating the secret, as disclosing it could lead to the secret being revoked. If possible, you should also reach out to the token owner to let them know about the leak and coordinate a remediation plan. 1. Review the information in the dialog box, then click **I understand the consequence, report this secret**. 1. Once you've reported the secret, you can close the alert. From 800ec3e7e23c754ea3254d62a621f0aa83926f2b Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:47:17 +0100 Subject: [PATCH 18/73] Update data/features/secret-scanning-report-secret-github-pat.yml Co-authored-by: Erin Havens --- data/features/secret-scanning-report-secret-github-pat.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/data/features/secret-scanning-report-secret-github-pat.yml b/data/features/secret-scanning-report-secret-github-pat.yml index 9bcefd75362e..da35c7649cf1 100644 --- a/data/features/secret-scanning-report-secret-github-pat.yml +++ b/data/features/secret-scanning-report-secret-github-pat.yml @@ -2,4 +2,3 @@ # Secret scanning one-click report and revocation (for GitHub PATs only) versions: ghec: '*' - ghes: '> 3.15' From 8e458d722009511512dc679c8a48da56493143e1 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:34:35 +0000 Subject: [PATCH 19/73] apply review feedback 2 --- .../resolving-alerts.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index 93da8c5cf935..c9785c2691fd 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -21,10 +21,10 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: -* Verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.company_short %} tokens only**. See "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}See "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} -* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}, who will treat it like any publicly leaked secret and revoke it. **Applies to {% data variables.product.company_short %} personal access tokens only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} +* Verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.github %} tokens only**. See "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}See "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} +* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}, who will treat it like any publicly leaked secret and revoke it. **Applies to {% data variables.product.github %} {% data variables.product.pat_generic %}s only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} * Review and update any services that use the old token. For {% data variables.product.github %} {% data variables.product.pat_generic %}s, delete the compromised token and create a new token. See "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." -* Check your security logs for any unauthorized activity. [TODO - LINK?] +* Depending on the secret provider, check your security logs for any unauthorized activity. {% ifversion secret-scanning-report-secret-github-pat %} @@ -37,7 +37,7 @@ Once a secret has been committed to a repository, you should consider the secret {% ifversion fpt or ghec %} -If a secret is detected in a **public** repository on {% data variables.product.github %} and the secret also matches a partner pattern, an alert is generated and the potential secret is **automatically reported** to the service provider. For details of partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." +If a secret is detected in a **public** repository on {% data variables.product.github %} and the secret also matches a partner pattern, the potential secret is **automatically reported** to the service provider. For details of all supported partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." {% endif %} @@ -57,9 +57,10 @@ You will only see the option to report a privately exposed secret to {% data var 1. In the left sidebar, under "Vulnerability alerts", click **{% data variables.product.prodname_secret_scanning_caps %}**. 1. From the alert list, click the alert you want to view. 1. In the alert view for the leaked secret, click **Report leak**. -1. In order to prevent breaking workflows, consider first rotating the secret, as disclosing it could lead to the secret being revoked. If possible, you should also reach out to the token owner to let them know about the leak and coordinate a remediation plan. + + * In order to prevent breaking workflows, consider first rotating the secret before continuing, as disclosing it could lead to the secret being revoked. If possible, you should also reach out to the token owner to let them know about the leak and coordinate a remediation plan. + 1. Review the information in the dialog box, then click **I understand the consequence, report this secret**. -1. Once you've reported the secret, you can close the alert. {% endif %} From 277727b4a378f7355744d97138980b8a5bf7a841 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Thu, 26 Sep 2024 09:23:08 +0000 Subject: [PATCH 20/73] apply review feedback --- .../resolving-alerts.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md index c9785c2691fd..b0dc2237c5c7 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts.md @@ -22,7 +22,7 @@ allowTitleToDifferFromFilename: true Once a secret has been committed to a repository, you should consider the secret compromised. {% data variables.product.github %} recommends the following actions for compromised secrets: * Verify that the secret committed to {% data variables.product.github %} is valid. {% ifversion fpt or ghes %}**Applies to {% data variables.product.github %} tokens only**. See "[Checking a secret's validity](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)."{% endif %}{% ifversion secret-scanning-validity-check-partner-patterns %}See "[Performing an on-demand validity check](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#performing-an-on-demand-validity-check)".{% endif %}{% ifversion secret-scanning-report-secret-github-pat %} -* {% ifversion ghec %}For secrets detected in private repositories, r{% else %}R{% endif %}eport the leaked secret to {% data variables.product.github %}, who will treat it like any publicly leaked secret and revoke it. **Applies to {% data variables.product.github %} {% data variables.product.pat_generic %}s only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} +* For secrets detected in private repositories, report the leaked secret to {% data variables.product.github %}, who will treat it like any publicly leaked secret and revoke it. **Applies to {% data variables.product.github %} {% data variables.product.pat_generic %}s only**. See "[Reporting a leaked secret](#reporting-a-leaked-secret)." {% endif %} * Review and update any services that use the old token. For {% data variables.product.github %} {% data variables.product.pat_generic %}s, delete the compromised token and create a new token. See "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)." * Depending on the secret provider, check your security logs for any unauthorized activity. @@ -37,7 +37,7 @@ Once a secret has been committed to a repository, you should consider the secret {% ifversion fpt or ghec %} -If a secret is detected in a **public** repository on {% data variables.product.github %} and the secret also matches a partner pattern, the potential secret is **automatically reported** to the service provider. For details of all supported partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." +If a secret is detected in a **public** repository on {% data variables.product.github %} and the secret also matches a supported partner pattern, the potential secret is **automatically reported** to the service provider. For details of all supported partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." {% endif %} @@ -58,7 +58,7 @@ You will only see the option to report a privately exposed secret to {% data var 1. From the alert list, click the alert you want to view. 1. In the alert view for the leaked secret, click **Report leak**. - * In order to prevent breaking workflows, consider first rotating the secret before continuing, as disclosing it could lead to the secret being revoked. If possible, you should also reach out to the token owner to let them know about the leak and coordinate a remediation plan. + > [!NOTE] In order to prevent breaking workflows, consider first rotating the secret before continuing, as disclosing it could lead to the secret being revoked. If possible, you should also reach out to the token owner to let them know about the leak and coordinate a remediation plan. 1. Review the information in the dialog box, then click **I understand the consequence, report this secret**. From 4814395488a444c7d4af048931d7c3b3b41ce0e6 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:38:33 +0100 Subject: [PATCH 21/73] fix linter failure --- .../using-the-dependency-submission-api.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index 2bacdffe1e3b..a11186df8bcf 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -27,7 +27,6 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data {% data reusables.dependency-submission.api-premade-actions %} - For more information about these actions, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." ### Creating your own action From d376c469c95a10d5ea102dfa39b6353137bfac9a Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Thu, 26 Sep 2024 13:47:21 +0100 Subject: [PATCH 22/73] remove TODO --- .../dependency-graph-supported-package-ecosystems.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 6b8ab970433f..613c31ac0c89 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -28,7 +28,7 @@ The recommended formats explicitly define which versions are used for all direct {% data reusables.dependency-graph.supported-package-ecosystems %} -## Supported package ecosystems via dependency submission actions +## Package ecosystems supported via dependency submission actions You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." @@ -40,6 +40,4 @@ You typically use the {% data variables.dependency-submission-api.name %} in a { {% data reusables.dependency-submission.premade-action-table %} -TODO: - Move more content from "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api) to here? - You can also create your own action. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api#creating-your-own-action)." From 8dcc3b65b9cda128dcb70981c10956adc9a3e766 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Fri, 27 Sep 2024 13:46:44 +0100 Subject: [PATCH 23/73] add note --- .../dependency-graph-supported-package-ecosystems.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 613c31ac0c89..45db0b2267f1 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -30,9 +30,9 @@ The recommended formats explicitly define which versions are used for all direct ## Package ecosystems supported via dependency submission actions -You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." +> [!NOTE] _Any_ package ecosystem can be supported if you use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. -Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. +{% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." >[!NOTE] You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. From cad2bad3a14296bfd4e2d00e55e7bdd601ccf702 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 09:13:53 +0100 Subject: [PATCH 24/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md Co-authored-by: Jon Janego --- .../about-the-dependency-graph.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index 2a6d9a1508a5..9d3249cc83bf 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -21,7 +21,9 @@ shortTitle: Dependency graph {% data reusables.dependabot.about-the-dependency-graph %} -When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} + +For information on the supported ecosystems and manifest files, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." {% data reusables.dependency-submission.dependency-submission-link %} From a78cc99f50a4b601066639ebffdd80e9e7c77e0d Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 09:39:01 +0100 Subject: [PATCH 25/73] Update content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md Co-authored-by: Jon Janego --- .../troubleshooting-the-detection-of-vulnerable-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md index dbecd43cdf63..5094b08082eb 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -46,7 +46,7 @@ topics: ## Why don't I get {% data variables.product.prodname_dependabot_alerts %} for some ecosystems? -{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. We'll continue to add support for more ecosystems over time. For an overview of the package ecosystems that we support, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for Dependabot alerts, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." It's worth noting that security advisories may exist for other ecosystems. The information in an unreviewed security advisory is provided by the maintainers of a particular repository. This data is not curated by {% data variables.product.prodname_dotcom %}. {% data reusables.security-advisory.link-browsing-advisory-db %} From 76afcd39915b3483ce18a10bfd9ed65fe88474b4 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:05:56 +0100 Subject: [PATCH 26/73] address some comments --- ...ependency-graph-supported-package-ecosystems.md | 2 +- .../about-the-dependency-graph.md | 2 +- .../dependency-submission/premade-action-table.md | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 45db0b2267f1..86feeff52757 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -30,7 +30,7 @@ The recommended formats explicitly define which versions are used for all direct ## Package ecosystems supported via dependency submission actions -> [!NOTE] _Any_ package ecosystem can be supported if you use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. +You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index 9d3249cc83bf..e4b6b5bda49d 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -21,7 +21,7 @@ shortTitle: Dependency graph {% data reusables.dependabot.about-the-dependency-graph %} -When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} +When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} For information on the supported ecosystems and manifest files, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." diff --git a/data/reusables/dependency-submission/premade-action-table.md b/data/reusables/dependency-submission/premade-action-table.md index 79369c1b5429..81f830ed1df3 100644 --- a/data/reusables/dependency-submission/premade-action-table.md +++ b/data/reusables/dependency-submission/premade-action-table.md @@ -1,11 +1,11 @@ -Ecosystem | Action | Maintained by {% data variables.product.prodname_dotcom %} ---- | --- | --- | +Ecosystem | Action | +--- | --- | Go | [Go Dependency Submission](https://github.com/marketplace/actions/go-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -Gradle | [Gradle Dependency Submission](https://github.com/marketplace/actions/build-with-gradle#the-dependency-submission-action) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -Maven | [Maven Dependency Tree Dependency Submission](https://github.com/marketplace/actions/maven-dependency-tree-dependency-submission) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -Mill | [Mill Dependency Submission](https://github.com/marketplace/actions/mill-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -Scala | [Sbt Dependency Submission](https://github.com/marketplace/actions/sbt-dependency-submission) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -NuGet and others | [Component Detection dependency submission action](https://github.com/marketplace/actions/component-detection-dependency-submission-action) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | +Gradle | [Gradle Dependency Submission](https://github.com/marketplace/actions/build-with-gradle#the-dependency-submission-action) | +Maven | [Maven Dependency Tree Dependency Submission](https://github.com/marketplace/actions/maven-dependency-tree-dependency-submission) | +Mill | [Mill Dependency Submission](https://github.com/marketplace/actions/mill-dependency-submission) | +Scala | [Sbt Dependency Submission](https://github.com/marketplace/actions/sbt-dependency-submission) | +NuGet and others | [Component Detection dependency submission action](https://github.com/marketplace/actions/component-detection-dependency-submission-action) | {% note %} From 6a0de1524b699292a15064f41fa5e8d3cf928fa7 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:17:55 +0100 Subject: [PATCH 27/73] and address more comments --- .../using-the-dependency-submission-api.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index 0304210cb5c0..08e1eba0a71e 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -50,11 +50,10 @@ To generate an SBOM, you can use: * The **REST API**. For more information, see "[AUTOTITLE](/rest/dependency-graph/sboms)." * **{% data variables.product.prodname_actions %}**. The following actions will generate an SBOM for your repository and attach it as a workflow artifact which you can download and use in other applications. For more information about downloading workflow artifacts, see "[AUTOTITLE](/actions/managing-workflow-runs/downloading-workflow-artifacts)." -Action | Details | Maintained by {% data variables.product.prodname_dotcom %} ---- | --- | --- -[SBOM-generator-action](https://github.com/marketplace/actions/sbom-generator-action) | Uses the information in your dependency graph to generate an SPDX SBOM | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -[Anchore SBOM Action](https://github.com/marketplace/actions/anchore-sbom-action) | Uses [Syft](https://github.com/anchore/syft) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/anchore/syft#supported-ecosystems) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -[sbom-tool by Microsoft](https://github.com/microsoft/sbom-tool) | Scans your dependencies and creates an SPDX compatible SBOM | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | +Action | Details | +--- | --- | +[Anchore SBOM Action](https://github.com/marketplace/actions/anchore-sbom-action) | Uses [Syft](https://github.com/anchore/syft) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/anchore/syft#supported-ecosystems) | +[sbom-tool by Microsoft](https://github.com/microsoft/sbom-tool) | Scans your dependencies and creates an SPDX compatible SBOM | ### Submitting a software bill of materials (SBOM) to the {% data variables.dependency-submission-api.name %} @@ -62,11 +61,11 @@ To receive {% data variables.product.prodname_dependabot_alerts %} for dependenc >[!TIP] The [SPDX Dependency Submission Action](https://github.com/marketplace/actions/spdx-dependency-submission-action) and the [Anchore SBOM Action](https://github.com/marketplace/actions/anchore-sbom-action) can be used to both generate the SBOM and submit it to the {% data variables.dependency-submission-api.name %}. -Action | Details | Maintained by {% data variables.product.prodname_dotcom %} ---- | --- | --- -[SPDX Dependency Submission Action](https://github.com/marketplace/actions/spdx-dependency-submission-action) | Uses [Microsoft's SBOM Tool](https://github.com/microsoft/sbom-tool) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/microsoft/component-detection/blob/main/docs/feature-overview.md) | {% octicon "check" aria-label="Maintained by {% data variables.product.prodname_dotcom %} | -[Anchore SBOM Action](https://github.com/marketplace/actions/anchore-sbom-action) | Uses [Syft](https://github.com/anchore/syft) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/anchore/syft#supported-ecosystems) | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | -[SBOM Dependency Submission Action](https://github.com/marketplace/actions/sbom-submission-action)| Uploads a CycloneDX SBOM to the {% data variables.dependency-submission-api.name %} | {% octicon "x" aria-label="Not maintained by {% data variables.product.prodname_dotcom %} | +Action | Details | +--- | --- | +[SPDX Dependency Submission Action](https://github.com/marketplace/actions/spdx-dependency-submission-action) | Uses [Microsoft's SBOM Tool](https://github.com/microsoft/sbom-tool) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/microsoft/component-detection/blob/main/docs/feature-overview.md) | +[Anchore SBOM Action](https://github.com/marketplace/actions/anchore-sbom-action) | Uses [Syft](https://github.com/anchore/syft) to create SPDX 2.2 compatible SBOMs with the [supported ecosystems](https://github.com/anchore/syft#supported-ecosystems) | +[SBOM Dependency Submission Action](https://github.com/marketplace/actions/sbom-submission-action)| Uploads a CycloneDX SBOM to the {% data variables.dependency-submission-api.name %} | For example, the following [SPDX Dependency Submission Action](https://github.com/marketplace/actions/spdx-dependency-submission-action) workflow calculates the dependencies for a repository, generates an exportable SBOM in SPDX 2.2 format, and submits it to the {% data variables.dependency-submission-api.name %}. From 8b0684eb3199444099b5f54be93884622e022a89 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:30:59 +0100 Subject: [PATCH 28/73] move new article and update links to it --- .../about-dependabot-alerts.md | 2 +- ...configuring-dependabot-security-updates.md | 2 +- ...ency-graph-supported-package-ecosystems.md | 2 - .../index.md | 1 - ...he-detection-of-vulnerable-dependencies.md | 2 +- .../about-dependency-review.md | 2 +- .../about-the-dependency-graph.md | 4 +- ...ency-graph-supported-package-ecosystems.md | 41 +++++++++++++++++++ ...loring-the-dependencies-of-a-repository.md | 2 +- .../index.md | 1 + .../using-the-dependency-submission-api.md | 2 +- .../dependabot/supported-package-managers.md | 2 +- .../products-table-header.md | 4 +- 13 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md diff --git a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md index dcf80321ff00..562dcf7418a1 100644 --- a/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md +++ b/content/code-security/dependabot/dependabot-alerts/about-dependabot-alerts.md @@ -55,7 +55,7 @@ If your code depends on a package with a security vulnerability, this can cause {% data reusables.repositories.dependency-review %} -As {% data variables.product.prodname_dependabot_alerts %} rely on the dependency graph, the ecosystems that are supported by {% data variables.product.prodname_dependabot_alerts %} are the same as those supported by the dependency graph. For a list of these ecosystems, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +As {% data variables.product.prodname_dependabot_alerts %} rely on the dependency graph, the ecosystems that are supported by {% data variables.product.prodname_dependabot_alerts %} are the same as those supported by the dependency graph. For a list of these ecosystems, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." {% note %} diff --git a/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md b/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md index 28d42ebd3e0b..e0c7e0d71d66 100644 --- a/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md +++ b/content/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates.md @@ -160,4 +160,4 @@ updates: * "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)" * "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts)" -* "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)" +* "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)" diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md index 86feeff52757..c9ffe62351d2 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md @@ -34,8 +34,6 @@ You can use the {% data variables.dependency-submission-api.name %} to add depen {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." ->[!NOTE] You will only get {% data variables.product.prodname_dependabot_alerts %} for dependencies that are from one of the [supported ecosystems](https://github.com/github/advisory-database#supported-ecosystems) of the {% data variables.product.prodname_advisory_database %}. - You typically use the {% data variables.dependency-submission-api.name %} in a {% data variables.product.prodname_actions %} workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. {% data reusables.dependency-submission.premade-action-table %} diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md index ccbf205af949..fa4bb2803ee2 100644 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md +++ b/content/code-security/dependabot/ecosystems-supported-by-dependabot/index.md @@ -15,5 +15,4 @@ topics: shortTitle: Dependabot ecosystems children: - /supported-ecosystems-and-repositories - - /dependency-graph-supported-package-ecosystems --- diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md index 5094b08082eb..3d2f52b75ad1 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -46,7 +46,7 @@ topics: ## Why don't I get {% data variables.product.prodname_dependabot_alerts %} for some ecosystems? -{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for Dependabot alerts, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for Dependabot alerts, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." It's worth noting that security advisories may exist for other ecosystems. The information in an unreviewed security advisory is provided by the maintainers of a particular repository. This data is not curated by {% data variables.product.prodname_dotcom %}. {% data reusables.security-advisory.link-browsing-advisory-db %} diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md index 33e971694a2d..208e4bac5444 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review.md @@ -32,7 +32,7 @@ For more information about configuring dependency review, see "[AUTOTITLE](/code {% data variables.product.prodname_dependabot_alerts %} will find vulnerabilities that are already in your dependencies, but it's much better to avoid introducing potential problems than to fix problems at a later date. For more information about {% data variables.product.prodname_dependabot_alerts %}, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts#dependabot-alerts-for-vulnerable-dependencies)." -Dependency review supports the same languages and package management ecosystems as the dependency graph. For more information, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +Dependency review supports the same languages and package management ecosystems as the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." For more information on supply chain features available on {% data variables.product.product_name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-supply-chain-security)." diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index e4b6b5bda49d..5d41ff97586b 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -23,7 +23,7 @@ shortTitle: Dependency graph When you push a commit to {% data variables.product.product_name %} that changes or adds a supported manifest or lock file to the default branch, the dependency graph is automatically updated.{% ifversion fpt or ghec %} In addition, the graph is updated when anyone pushes a change to the repository of one of your dependencies.{% endif %} -For information on the supported ecosystems and manifest files, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +For information on the supported ecosystems and manifest files, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." {% data reusables.dependency-submission.dependency-submission-link %} @@ -71,7 +71,7 @@ You can use the dependency graph to: * View and update vulnerable dependencies for your repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." * See information about vulnerable dependencies in pull requests. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." -For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." +For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems)." ## Further reading diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md new file mode 100644 index 000000000000..c9ffe62351d2 --- /dev/null +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -0,0 +1,41 @@ +--- +title: Dependency graph supported package ecosystems +shortTitle: Dependency graph ecosystem support # Max 31 characters +intro: 'Dependency graph supports a variety of ecosystem.' +allowTitleToDifferFromFilename: true +type: reference +topics: + - Dependency graph + - Dependencies + - Alerts + - Vulnerabilities + - Repositories +versions: + fpt: '*' + ghec: '*' + ghes: '*' +--- + +## About the dependency graph + +{% data reusables.dependabot.about-the-dependency-graph %} For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)." + +In this article, you can see what the supported ecosystems are. + +## Supported package ecosystems + +The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} + +{% data reusables.dependency-graph.supported-package-ecosystems %} + +## Package ecosystems supported via dependency submission actions + +You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. + +{% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." + +You typically use the {% data variables.dependency-submission-api.name %} in a {% data variables.product.prodname_actions %} workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. + +{% data reusables.dependency-submission.premade-action-table %} + +You can also create your own action. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api#creating-your-own-action)." diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md index 653f5d279a02..1ecbbc3b70bd 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md @@ -23,7 +23,7 @@ shortTitle: Explore dependencies ## Viewing the dependency graph -The dependency graph shows the dependencies{% ifversion fpt or ghec %} and dependents{% endif %} of your repository. {% ifversion dependency-graph-repository-view-update %} {% data reusables.dependency-graph.repository-view-update %}{% endif %} For information about the detection of dependencies and which ecosystems are supported, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." +The dependency graph shows the dependencies{% ifversion fpt or ghec %} and dependents{% endif %} of your repository. {% ifversion dependency-graph-repository-view-update %} {% data reusables.dependency-graph.repository-view-update %}{% endif %} For information about the detection of dependencies and which ecosystems are supported, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems)." {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.accessing-repository-graphs %} diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/index.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/index.md index 74891e2975c1..c63a2aa2e2ec 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/index.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/index.md @@ -12,6 +12,7 @@ shortTitle: Understand your supply chain children: - /about-supply-chain-security - /about-the-dependency-graph + - /dependency-graph-supported-package-ecosystems - /configuring-the-dependency-graph - /configuring-automatic-dependency-submission-for-your-repository - /exporting-a-software-bill-of-materials-for-your-repository diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index 08e1eba0a71e..aa0a2056806b 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -27,7 +27,7 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data {% data reusables.dependency-submission.api-premade-actions %} -For more information about these actions, see "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." +For more information about these actions, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." ### Creating your own action diff --git a/data/reusables/dependabot/supported-package-managers.md b/data/reusables/dependabot/supported-package-managers.md index 02aa24467fe9..e1bae839b86f 100644 --- a/data/reusables/dependabot/supported-package-managers.md +++ b/data/reusables/dependabot/supported-package-managers.md @@ -39,7 +39,7 @@ poetry | `pip` | v1 | {% octicon "check" aria-l {% endtip %} -For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems)." +For further information about ecosystem support for {% data variables.product.prodname_dependabot_security_updates %}, see also "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems)." #### Cargo diff --git a/data/reusables/supported-languages/products-table-header.md b/data/reusables/supported-languages/products-table-header.md index a84240937276..e3b941729edf 100644 --- a/data/reusables/supported-languages/products-table-header.md +++ b/data/reusables/supported-languages/products-table-header.md @@ -1,11 +1,11 @@ {% ifversion fpt or ghec -%} -| Language | [GitHub Copilot](/copilot/about-github-copilot/what-is-github-copilot) | [Code navigation](/repositories/working-with-files/using-files/navigating-code-on-github) | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | +| Language | [GitHub Copilot](/copilot/about-github-copilot/what-is-github-copilot) | [Code navigation](/repositories/working-with-files/using-files/navigating-code-on-github) | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | | :-- | :-: | :-: | :-: | :-: | :-: | :-: | :-: | {%- else -%} -| Language | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | +| Language | [{% data variables.product.prodname_code_scanning_caps %}](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) | [Dependency graph, {% data variables.product.prodname_dependabot_alerts %}](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems) | [{% data variables.product.prodname_dependabot_version_updates %}, {% data variables.product.prodname_dependabot_security_updates %}](/code-security/dependabot/dependabot-version-updates/about-dependabot-version-updates#supported-repositories-and-ecosystems) | [{% data variables.product.prodname_actions %}](/actions/automating-builds-and-tests/about-continuous-integration#supported-languages) | [{% data variables.product.prodname_registry %}](/packages/learn-github-packages/introduction-to-github-packages#supported-clients-and-formats) | | :-- | :-: | :-: | :-: | :-: | :-: | {%- endif %} From 66bc9a341aa25eac55a6870e3446ce61806b1fc0 Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:43:05 +0100 Subject: [PATCH 29/73] forgot to delete the file in its old location --- ...ency-graph-supported-package-ecosystems.md | 41 ------------------- 1 file changed, 41 deletions(-) delete mode 100644 content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md diff --git a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md b/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md deleted file mode 100644 index c9ffe62351d2..000000000000 --- a/content/code-security/dependabot/ecosystems-supported-by-dependabot/dependency-graph-supported-package-ecosystems.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Dependency graph supported package ecosystems -shortTitle: Dependency graph ecosystem support # Max 31 characters -intro: 'Dependency graph supports a variety of ecosystem.' -allowTitleToDifferFromFilename: true -type: reference -topics: - - Dependency graph - - Dependencies - - Alerts - - Vulnerabilities - - Repositories -versions: - fpt: '*' - ghec: '*' - ghes: '*' ---- - -## About the dependency graph - -{% data reusables.dependabot.about-the-dependency-graph %} For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)." - -In this article, you can see what the supported ecosystems are. - -## Supported package ecosystems - -The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} - -{% data reusables.dependency-graph.supported-package-ecosystems %} - -## Package ecosystems supported via dependency submission actions - -You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. - -{% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." - -You typically use the {% data variables.dependency-submission-api.name %} in a {% data variables.product.prodname_actions %} workflow to submit dependencies for your project when your project is built. {% data reusables.dependency-submission.api-premade-actions %} You can find links to the currently available actions in the table below. - -{% data reusables.dependency-submission.premade-action-table %} - -You can also create your own action. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api#creating-your-own-action)." From 2df7110e5ad3f2699f750758037fb760a15d96ba Mon Sep 17 00:00:00 2001 From: mchammer01 <42146119+mchammer01@users.noreply.github.com> Date: Mon, 30 Sep 2024 11:28:42 +0100 Subject: [PATCH 30/73] polish --- .../about-the-dependency-graph.md | 2 -- .../using-the-dependency-submission-api.md | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md index 5d41ff97586b..4a85e38f682a 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md @@ -71,8 +71,6 @@ You can use the dependency graph to: * View and update vulnerable dependencies for your repository. For more information, see "[AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)." * See information about vulnerable dependencies in pull requests. For more information, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request)." -For information about ecosystem support for the dependency graph, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems)." - ## Further reading * "[Dependency graph](https://en.wikipedia.org/wiki/Dependency_graph)" on Wikipedia diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md index aa0a2056806b..0cffca354ddf 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md @@ -27,7 +27,7 @@ You can use the {% data variables.dependency-submission-api.name %} in a {% data {% data reusables.dependency-submission.api-premade-actions %} -For more information about these actions, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems-via-dependency-submission-actions)." +For more information about these actions, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#package-ecosystems-supported-via-dependency-submission-actions)." ### Creating your own action From ce60013076e86068bd51527fb876fc39b81e497b Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Tue, 1 Oct 2024 10:44:20 +0000 Subject: [PATCH 31/73] update beta to new variable --- data/reusables/secret-scanning/report-secret-pat-beta-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/secret-scanning/report-secret-pat-beta-note.md b/data/reusables/secret-scanning/report-secret-pat-beta-note.md index e95bcdfa4f8a..0560a71be12c 100644 --- a/data/reusables/secret-scanning/report-secret-pat-beta-note.md +++ b/data/reusables/secret-scanning/report-secret-pat-beta-note.md @@ -1 +1 @@ -Reporting a privately exposed secret to {% data variables.product.github %} is in beta and subject to change. +Reporting a privately exposed secret to {% data variables.product.github %} is in {% data variables.release-phases.public_preview %} and subject to change. From 06458da65233ea7a31769df8ecce50f7bcc0c0d6 Mon Sep 17 00:00:00 2001 From: Felix Guntrip Date: Tue, 1 Oct 2024 12:45:39 +0100 Subject: [PATCH 32/73] Issues 2.0 (Public beta) (#52430) Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- assets/images/help/issues/issue-add-type.png | Bin 0 -> 35455 bytes .../help/issues/issue-edit-description.png | Bin 0 -> 34490 bytes .../images/help/issues/issue-edit-title.png | Bin 0 -> 33502 bytes .../help/issues/issue-type-dropdown.png | Bin 0 -> 67565 bytes assets/images/help/issues/issue-type-edit.png | Bin 0 -> 44289 bytes .../help/issues/sub-issue-drop-down.png | Bin 0 -> 34778 bytes .../images/help/issues/sub-issue-expand.png | Bin 0 -> 92203 bytes .../images/help/issues/sub-issue-parent.png | Bin 0 -> 34221 bytes .../accessibility/keyboard-shortcuts.md | 5 ++ .../filtering-projects.md | 28 ++++++++ ...ent-issue-and-sub-issue-progress-fields.md | 42 ++++++++++++ .../understanding-fields/index.md | 1 + .../about-issues.md | 39 +++++------ .../configuring-issues/index.md | 1 + ...managing-issue-types-in-an-organization.md | 44 ++++++++++++ ...-tracking-work-for-your-team-or-project.md | 10 +++ .../configuring-issues/quickstart.md | 6 ++ .../tracking-your-work-with-issues/index.md | 8 --- .../using-issues/adding-sub-issues.md | 49 ++++++++++++++ .../using-issues/browsing-sub-issues.md | 32 +++++++++ .../using-issues/editing-an-issue.md | 62 +++++++++++++++++ ...-and-searching-issues-and-pull-requests.md | 64 +++++++++++++++++- .../using-issues/index.md | 3 + .../searching-issues-and-pull-requests.md | 1 + data/features/issue-types.yml | 4 ++ data/features/issues-advanced-search.yml | 4 ++ data/features/issues-react.yml | 4 ++ data/features/sub-issues.yml | 4 ++ data/reusables/issues/about-sub-issues.md | 1 + .../issues/access-issue-types-settings.md | 3 + data/reusables/issues/release-stage.md | 3 + data/reusables/projects/create-issue-modal.md | 9 +-- .../assign-an-issue-as-project-maintainer.md | 2 +- 33 files changed, 393 insertions(+), 36 deletions(-) create mode 100644 assets/images/help/issues/issue-add-type.png create mode 100644 assets/images/help/issues/issue-edit-description.png create mode 100644 assets/images/help/issues/issue-edit-title.png create mode 100644 assets/images/help/issues/issue-type-dropdown.png create mode 100644 assets/images/help/issues/issue-type-edit.png create mode 100644 assets/images/help/issues/sub-issue-drop-down.png create mode 100644 assets/images/help/issues/sub-issue-expand.png create mode 100644 assets/images/help/issues/sub-issue-parent.png create mode 100644 content/issues/planning-and-tracking-with-projects/understanding-fields/about-parent-issue-and-sub-issue-progress-fields.md create mode 100644 content/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization.md create mode 100644 content/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues.md create mode 100644 content/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues.md create mode 100644 content/issues/tracking-your-work-with-issues/using-issues/editing-an-issue.md create mode 100644 data/features/issue-types.yml create mode 100644 data/features/issues-advanced-search.yml create mode 100644 data/features/issues-react.yml create mode 100644 data/features/sub-issues.yml create mode 100644 data/reusables/issues/about-sub-issues.md create mode 100644 data/reusables/issues/access-issue-types-settings.md create mode 100644 data/reusables/issues/release-stage.md diff --git a/assets/images/help/issues/issue-add-type.png b/assets/images/help/issues/issue-add-type.png new file mode 100644 index 0000000000000000000000000000000000000000..d783676ceb5ea6ffc386a0422ce6edd51b53099b GIT binary patch literal 35455 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 literal 0 HcmV?d00001 diff --git a/assets/images/help/issues/issue-edit-description.png b/assets/images/help/issues/issue-edit-description.png new file mode 100644 index 0000000000000000000000000000000000000000..e0b7e695d964123ecc48bf4a07c614f311f23346 GIT binary patch literal 34490 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 z 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 DFJX_q literal 0 HcmV?d00001 diff --git a/assets/images/help/issues/issue-edit-title.png b/assets/images/help/issues/issue-edit-title.png new file mode 100644 index 0000000000000000000000000000000000000000..331c93a657a32e0dcb808409931908b58c5c25f0 GIT binary patch literal 33502 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 P{7FkFh?l(6`|^JP&M95} literal 0 HcmV?d00001 diff --git a/assets/images/help/issues/issue-type-dropdown.png b/assets/images/help/issues/issue-type-dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..b21967e76a3e9f1a7c306e939e4d0a144f2cc9aa GIT binary patch literal 67565 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�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 literal 0 HcmV?d00001 diff --git a/assets/images/help/issues/issue-type-edit.png b/assets/images/help/issues/issue-type-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..2d661df0896b25faa27366355861bdb1758b1fb8 GIT binary patch literal 44289 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 VNmA2qn!rAPQexjkD}@aL{vQShift and click | When creating an issue from a task list, open the new issue form in a new tab by holding Shift and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)." | |Command and click (Mac) or
Ctrl+Shift and click (Windows/Linux) | When creating an issue from a task list, open the new issue form in the new window by holding Command or Ctrl+Shift and clicking the {% octicon "issue-opened" aria-label="The issue opened icon" %} in the upper-right corner of the task. For more information, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)." | | {% endif %} | +| {% ifversion sub-issues %} | +|Option+Shift+c (Mac) or
Alt+Shift+c (Windows/Linux) | Create a new sub-issue. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues)." | +|Option, Shift+a (Mac) or
Alt+Shift+a (Windows/Linux) | Add an existing issue as sub-issue. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues)." | +|Option+Shift+p (Mac) or
Alt+Shift+p (Windows/Linux) | Edit parent issue. | +| {% endif %} | ## "Files changed" tab in pull requests diff --git a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects.md b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects.md index 300c9635e19d..edb96e107a9d 100644 --- a/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects.md +++ b/content/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects.md @@ -208,3 +208,31 @@ You can also use a * as a wildcard. | field:*TEXT | **label:*support** will show items with a label that ends with "support." {% endif %} + +{% ifversion issue-types %} + +## Filtering by issue type + +If your organization uses issue types, you can filter for particular types. + +{% data reusables.issues.release-stage %} + +| Qualifier | Example +| ---------- | ------------- +| type:"ISSUE TYPE" | **type:"bug"** will show issues with the "bug" type. + +{% endif %} + +{% ifversion sub-issues %} + +## Filtering by parent issue + +You can filter your sub-issues by their parent issue. + +{% data reusables.issues.release-stage %} + +| Qualifier | Example +| ---------- | ------------- +| parent-issue:OWNER/REPO#ISSUE NUMBER | **parent-issue:octocat/game#4** will show issues with issue #4 in octocat/game as their parent issue. + +{% endif %} diff --git a/content/issues/planning-and-tracking-with-projects/understanding-fields/about-parent-issue-and-sub-issue-progress-fields.md b/content/issues/planning-and-tracking-with-projects/understanding-fields/about-parent-issue-and-sub-issue-progress-fields.md new file mode 100644 index 000000000000..a5fc0b7eb1db --- /dev/null +++ b/content/issues/planning-and-tracking-with-projects/understanding-fields/about-parent-issue-and-sub-issue-progress-fields.md @@ -0,0 +1,42 @@ +--- +title: About parent issue and sub-issue progress fields +shortTitle: About sub-issue fields +intro: 'You can show an issue''s parent issue and view sub-issue progress in your projects.' +versions: + feature: sub-issues +type: tutorial +topics: + - Projects +--- + +If your organization uses sub-issues, you can enable the "Parent issue" and "Sub-issue progress" fields on your projects to see the relationships between your issues and the progress made on those issues. + +The "Parent issue" field can be used to group items, allowing you to create views that break down your work using the sub-issue hierarchies you have created. For more about grouping views, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/changing-the-layout-of-a-view#grouping-by-field-values-in-table-layout)." + +You can also filter by the "Parent issue" field to only display items that are sub-issues of a particular issue. You can start by typing "parent-issue" and then selecting an issue from the list. Or, if you know the repository and issue number, you can type the filter in full: + +```text +parent-issue:"/#" +``` + +To use the filter, replace `` with the repository owner, `` with the repository name, and `` with the issue number. See "[AUTOTITLE](/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects)." + +## Enabling the Parent issue field + +You can enable the "Parent issue" field to see which parent issues the issues in your project belong to. + +1. In table view, in the rightmost field header, click {% octicon "plus" aria-label="the plus icon" %}. + + ![Screenshot of a project. The "Add field" button, indicated by a plus icon, is highlighted with an orange outline.](/assets/images/help/projects-v2/new-field-button.png) + +1. Under "Hidden fields", click **Parent issue**. + +## Enabling the Sub-issue progress + +You can enable the "Sub-issue progress" field to see how many sub-issues have been completed. + +1. In table view, in the rightmost field header, click {% octicon "plus" aria-label="the plus icon" %}. + + ![Screenshot of a project. The "Add field" button, indicated by a plus icon, is highlighted with an orange outline.](/assets/images/help/projects-v2/new-field-button.png) + +1. Under "Hidden fields", click **Sub-issue progress**. diff --git a/content/issues/planning-and-tracking-with-projects/understanding-fields/index.md b/content/issues/planning-and-tracking-with-projects/understanding-fields/index.md index 314423b12832..d2da9f2f4e79 100644 --- a/content/issues/planning-and-tracking-with-projects/understanding-fields/index.md +++ b/content/issues/planning-and-tracking-with-projects/understanding-fields/index.md @@ -12,6 +12,7 @@ children: - /about-date-fields - /about-single-select-fields - /about-iteration-fields + - /about-parent-issue-and-sub-issue-progress-fields - /renaming-custom-fields - /deleting-custom-fields allowTitleToDifferFromFilename: true diff --git a/content/issues/tracking-your-work-with-issues/about-issues.md b/content/issues/tracking-your-work-with-issues/about-issues.md index 8e22db09c2f3..2737db321d96 100644 --- a/content/issues/tracking-your-work-with-issues/about-issues.md +++ b/content/issues/tracking-your-work-with-issues/about-issues.md @@ -1,6 +1,6 @@ --- title: About issues -intro: 'Use {% data variables.product.prodname_github_issues %} to track ideas, feedback, tasks, or bugs for work on {% data variables.product.company_short %}.' +intro: 'Learn how you can use {% data variables.product.prodname_github_issues %} to track ideas, feedback, tasks, or bugs.' redirect_from: - /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/about-issues - /articles/creating-issues @@ -16,46 +16,47 @@ topics: - Issues - Project management --- -## About issues -{% data variables.product.prodname_github_issues %} are items you can create in a repository to plan, discuss and track work. +You can create issues in your repository to plan, discuss, and track work. Issues are quick to create, flexible, and can be used in many ways. Issues can track bug reports, new features and ideas, and anything else you need to write down or discuss with your team. {% ifversion sub-issues %}You can also break your work down further by adding sub-issues and easily browse the full hierarchy of work to be done.{% endif %} -Issues are simple to create and flexible to suit a variety of scenarios. You can use issues to track work, give or receive feedback, collaborate on ideas or tasks, and efficiently communicate with others. +Issues can be created in a variety of ways, so you can choose the most convenient method for your workflow. For example, you can create an issue from a repository,{% ifversion sub-issues %} while adding sub-issues,{% endif %} convert a comment in an issue or pull request, create an issue from a specific line of code, or via a URL query. You can also create an issue from your platform of choice: through the web UI, {% data variables.product.prodname_desktop %}, {% data variables.product.prodname_cli %}, GraphQL and REST APIs, or {% data variables.product.prodname_mobile %}. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue)." -### Integrated with {% data variables.product.company_short %} +{% ifversion sub-issues %} -Issues let you track your work on {% data variables.product.company_short %}. When you mention an issue in another issue or pull request, the issue's timeline reflects the cross-reference so that you can keep track of related work. To indicate that work is in progress, you can link an issue to a pull request. When the pull request merges, the linked issue automatically closes. +## About sub-issues -For more information on keywords, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)." +{% data reusables.issues.release-stage %} -### Quickly create issues +{% data reusables.issues.about-sub-issues %} See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues)" and "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues)." -Issues can be created in a variety of ways, so you can choose the most convenient method for your workflow. For example, you can create an issue from a repository,{% ifversion fpt or ghec %} an item in a task list,{% endif %} a note in a project, a comment in an issue or pull request, a specific line of code, or a URL query. You can also create an issue from your platform of choice: through the web UI, {% data variables.product.prodname_desktop %}, {% data variables.product.prodname_cli %}, GraphQL and REST APIs, or {% data variables.product.prodname_mobile %}. For more information, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/creating-an-issue)." +{% endif %} -### Track work +## About integration with {% data variables.product.github %} -You can organize and prioritize issues with projects. {% ifversion fpt or ghec %}To track issues as part of a larger issue, you can use task lists.{% endif %} To categorize related issues, you can use labels and milestones. +Issues integrate with your work all across {% data variables.product.github %}. Mentioning an issue in another issue or pull request will create references between them and using keywords, like `fixes:`, in your pull requests will automatically close the associated issues. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/linking-a-pull-request-to-an-issue)." -For more information about projects, see {% ifversion projects-v2 %}"[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." {% else %}"[AUTOTITLE](/issues/organizing-your-work-with-project-boards)."{% endif %} {% ifversion fpt or ghec %}For more information about task lists, see "[AUTOTITLE](/get-started/writing-on-github/working-with-advanced-formatting/about-task-lists)." {% endif %}For more information about labels and milestones, see "[AUTOTITLE](/issues/using-labels-and-milestones-to-track-work)." +{% data variables.projects.projects_v2_caps %} is strongly integrated with issues. All your issue metadata is available in your projects, allowing you to create views and filters to represent your work. See "[AUTOTITLE](/issues/planning-and-tracking-with-projects/learning-about-projects/about-projects)." -### Stay up to date +## Staying up to date To stay updated on the most recent comments in an issue, you can subscribe to an issue to receive notifications about the latest comments. To quickly find links to recently updated issues you're subscribed to, visit your dashboard. For more information, see "[AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications)" and "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/about-your-personal-dashboard)." -### Community management +You can assign yourself and teammates to issues to make it clear who is working on an issue and also make it easier for you to locate your issues. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/assigning-issues-and-pull-requests-to-other-github-users)" and "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/viewing-all-of-your-issues-and-pull-requests)." + +## Community management -To help contributors open meaningful issues that provide the information that you need, you can use {% ifversion fpt or ghec %}issue forms and {% endif %}issue templates. For more information, see "[AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)." +To help contributors open meaningful issues that provide the information that you need, you can use {% ifversion fpt or ghec %}issue forms and {% endif %}issue templates. See "[AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests)." -{% ifversion fpt or ghec %}To maintain a healthy community, you can report comments that violate {% data variables.product.prodname_dotcom %}'s [Community Guidelines](/free-pro-team@latest/site-policy/github-terms/github-community-guidelines). For more information, see "[AUTOTITLE](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam)."{% endif %} +{% ifversion fpt or ghec %}To maintain a healthy community, you can report comments that violate {% data variables.product.github %}'s [Community Guidelines](/free-pro-team@latest/site-policy/github-terms/github-community-guidelines). See "[AUTOTITLE](/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam)."{% endif %} -### Efficient communication +## Efficient communication You can @mention collaborators who have access to your repository in an issue to draw their attention to a comment. To link related issues in the same repository, you can type `#` followed by part of the issue title and then clicking the issue that you want to link. To communicate responsibility, you can assign issues. If you find yourself frequently typing the same comment, you can use saved replies. -{% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)" and "[AUTOTITLE](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users)." +{% ifversion fpt or ghec %} See "[AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax)" and "[AUTOTITLE](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users)." {% endif %} {% ifversion discussions %} -### Comparing issues and discussions +## Comparing issues and discussions Some conversations are more suitable for {% data variables.product.prodname_discussions %}. {% data reusables.discussions.you-can-use-discussions %} For guidance on when to use an issue or a discussion, see "[AUTOTITLE](/get-started/using-github/communicating-on-github)." diff --git a/content/issues/tracking-your-work-with-issues/configuring-issues/index.md b/content/issues/tracking-your-work-with-issues/configuring-issues/index.md index 4f52cd6e0d2f..9eb6f25af42a 100644 --- a/content/issues/tracking-your-work-with-issues/configuring-issues/index.md +++ b/content/issues/tracking-your-work-with-issues/configuring-issues/index.md @@ -10,4 +10,5 @@ topics: children: - /quickstart - /planning-and-tracking-work-for-your-team-or-project + - /managing-issue-types-in-an-organization --- diff --git a/content/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization.md b/content/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization.md new file mode 100644 index 000000000000..4ac78256c421 --- /dev/null +++ b/content/issues/tracking-your-work-with-issues/configuring-issues/managing-issue-types-in-an-organization.md @@ -0,0 +1,44 @@ +--- +title: Managing issue types in an organization +intro: 'Learn about issue types and how to manage them in your organization.' +versions: + feature: 'issue-types' +type: overview +topics: + - Project management +shortTitle: 'Managing issue types' +permissions: 'Organization owners can modify issue types.' +--- + +{% data reusables.issues.release-stage %} + +You can use issue types to classify and manage different types of issues across your organization. You can create up to ten issue types that your organization members can apply to issues, making it easier for you and your members to find issues and plan work. + +Default issue types are included in every organization, but these can edited, disabled, or deleted. The default types are task, bug, and feature. + +When you add an issue type to an issue, the type will be shown on any lists of issues and in the issues themselves. You can filter and search by issue type and use issue types when creating filters and views in your projects. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests#filtering-by-issue-type)" and "[AUTOTITLE](/issues/planning-and-tracking-with-projects/customizing-views-in-your-project/filtering-projects#filtering-by-issue-type)." + +## Adding an issue type + +{% data reusables.issues.access-issue-types-settings %} +1. On the right side of the page, click **Create new type**. +1. Under "Type name", type the name of your new issue type. +1. Under "Description", to help other people understand the purpose of your new issue type, type a description. +1. Under "Color", click on the color you would like for the new issue type. +1. Optionally, to stop the new issue type being available in public repositories, select **Private repositories only**. +1. Click **Create**. + +## Making changes to issue types + +You can change the name, description, color, and public repository visibility of your issue types. + +You can also choose to disable or delete an issue type. If you disable an issue type, it will not be shown and it won't be possible to set an issue to that type, but if you later decide to enable the issue type, it will be displayed again on any issues previously set to the issue type. If you delete an issue type, it is permanently removed. + +{% data reusables.issues.access-issue-types-settings %} +1. To the right of the issue type you want to make changes to, click {% octicon "kebab-horizontal" aria-label="open type options" %}. + + ![Screenshot of the issue types settings page for an organization. The "open type options" button is highlighted with an orange rectangle.](/assets/images/help/issues/issue-type-edit.png) + +1. In the menu, click **Edit** and make your changes. + * To make changes to the type name, description, color, and if the issue type should only appear for private repositories. Then click **Save**. + * To disable or delete the issue type, in the "Danger zone", click **Disable** or **Delete** and follow the prompts. diff --git a/content/issues/tracking-your-work-with-issues/configuring-issues/planning-and-tracking-work-for-your-team-or-project.md b/content/issues/tracking-your-work-with-issues/configuring-issues/planning-and-tracking-work-for-your-team-or-project.md index 058365d453e4..5e504821894f 100644 --- a/content/issues/tracking-your-work-with-issues/configuring-issues/planning-and-tracking-work-for-your-team-or-project.md +++ b/content/issues/tracking-your-work-with-issues/configuring-issues/planning-and-tracking-work-for-your-team-or-project.md @@ -84,6 +84,16 @@ Below we have added a task list to our Project Octocat issue, breaking it down i ![Screenshot of an issue called "Front-end work for Project Octocat." The issue body contains a task list, with a checkbox preceding each issue link.](/assets/images/help/issues/quickstart-add-task-list-to-issue.png) +{% ifversion sub-issues %} + +### Breaking down your work with sub-issues + +{% data reusables.issues.release-stage %} + +{% data reusables.issues.about-sub-issues %} See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues)" and "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues)." + +{% endif %} + ## Making decisions as a team You can use issues and discussions to communicate and make decisions as a team on planned improvements or priorities for your project. Issues are useful when you create them for discussion of specific details, such as bug or performance reports, planning for the next quarter, or design for a new initiative. Discussions are useful for open-ended brainstorming or feedback, outside the codebase and across repositories. For more information, see "[AUTOTITLE](/get-started/using-github/communicating-on-github#which-discussion-tool-should-i-use)." diff --git a/content/issues/tracking-your-work-with-issues/configuring-issues/quickstart.md b/content/issues/tracking-your-work-with-issues/configuring-issues/quickstart.md index 2feb6b53b5bf..8dd18bc88893 100644 --- a/content/issues/tracking-your-work-with-issues/configuring-issues/quickstart.md +++ b/content/issues/tracking-your-work-with-issues/configuring-issues/quickstart.md @@ -92,6 +92,12 @@ You can use issues for a wide range of purposes. For example: * Planning tasks * Reporting bugs +{% ifversion sub-issues %} + +To break your issue down into more manageable tasks, you can add multiple levels of sub-issues. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues)." + +{% endif %} + Here are some helpful resources for taking your next steps with {% data variables.product.prodname_github_issues %}: * To learn more about issues, see "[AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues)." diff --git a/content/issues/tracking-your-work-with-issues/index.md b/content/issues/tracking-your-work-with-issues/index.md index f9cc3077cbcf..9029bc314541 100644 --- a/content/issues/tracking-your-work-with-issues/index.md +++ b/content/issues/tracking-your-work-with-issues/index.md @@ -16,12 +16,4 @@ children: redirect_from: - /issues/tracking-your-work-with-issues/creating-issues - /issues/tracking-your-work-with-issues/managing-issues - - /early-access/issues/about-tasklists - - /issues/tracking-your-work-with-issues/about-tasklists - - /issues/managing-your-tasks-with-tasklists/about-tasklists - - /issues/managing-your-tasks-with-tasklists/creating-a-tasklist - - /issues/managing-your-tasks-with-tasklists - - /issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist - - /issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists - - /issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists --- diff --git a/content/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues.md b/content/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues.md new file mode 100644 index 000000000000..10a492f7703a --- /dev/null +++ b/content/issues/tracking-your-work-with-issues/using-issues/adding-sub-issues.md @@ -0,0 +1,49 @@ +--- +title: Adding sub-issues +intro: 'Learn about using sub-issues to break down your work into tasks.' +versions: + feature: 'sub-issues' +type: overview +topics: + - Project management +permissions: 'People with at least triage permissions for a repository can add sub-issues.' +redirect_from: + - /early-access/issues/about-tasklists + - /issues/tracking-your-work-with-issues/about-tasklists + - /issues/managing-your-tasks-with-tasklists/about-tasklists + - /issues/managing-your-tasks-with-tasklists/creating-a-tasklist + - /issues/managing-your-tasks-with-tasklists + - /issues/managing-your-tasks-with-tasklists/managing-tasks-in-a-tasklist + - /issues/managing-your-tasks-with-tasklists/quickstart-for-tasklists + - /issues/managing-your-tasks-with-tasklists/using-projects-and-tasklists +--- + +{% data reusables.issues.release-stage %} + +You can add sub-issues to an issue to break down larger pieces of work into tasks. Your sub-issues show their relationship to the parent issue allowing you to track your work across {% data variables.product.github %}. Parent issues and sub-issue progress is also available in your {% data variables.projects.projects_v2 %}, allowing you to build views, filter, and group by parent issue. + +Your sub-issues can themselves contain sub-issues, allowing you to create full hierarchies of issues that visualize entire projects or pieces of work and show the relationships between your issues. + +You can add up to fifty sub-issues per parent issue and create up to eight levels of nested sub-issues. + +## Creating a sub-issue + +1. Navigate to the issue that you want to add a sub-issue to. +1. At the bottom of the issue description, click **Create sub-issue**. +1. In the dialog, type the title for your sub-issue. +1. Optionally, type the description for your issue, and set {% ifversion issue-types %}the issue type and{% endif %} any assignees, labels, projects, and milestones. +1. Optionally, if you want to continue create sub-issues for this parent issue, select **Create more sub-issues**. +1. Click **Create**. + +## Adding an existing issue as a sub-issue + +1. Navigate to the issue that you want to add a sub-issue to. +1. At the bottom of the issue description, next to "Create sub-issue", click {% octicon "triangle-down" aria-label="View more sub-issue options" %}. + + ![Screenshot of the sub-issues section below the issue description. The "View more sub-issue options" button is highlighted with an orange rectangle.](/assets/images/help/issues/sub-issue-drop-down.png) + +1. In the drop-down menu, click **Add existing issue**. +1. Select the issue that you want to add as a sub-issue. + * Select an issue from one of the suggestions. + * In the "Search issues" field, type an issue title or issue number, then click on the results. + * To add issues from other repositories, click {% octicon "arrow-left" aria-label="Back to repository selection" %} next to the repository name and select a different repository. diff --git a/content/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues.md b/content/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues.md new file mode 100644 index 000000000000..0633ec492d09 --- /dev/null +++ b/content/issues/tracking-your-work-with-issues/using-issues/browsing-sub-issues.md @@ -0,0 +1,32 @@ +--- +title: Browsing sub-issues +intro: 'Learn how to navigate issue hierarchy in your repositories.' +versions: + feature: 'sub-issues' +type: overview +topics: + - Project management +--- + +{% data reusables.issues.release-stage %} + +{% data reusables.issues.about-sub-issues %} + +## Navigating issue hierarchy + +You can browse through all levels of sub-issues from the parent issue. + +1. Navigate to the parent issue. +1. To view the sub-issues under another sub-issue, click the expand toggle ({% octicon "triangle-right" aria-hidden="true" %}). + + ![Screenshot of a sub-issues section. The expand toggle is highlighted with an orange rectangle.](/assets/images/help/issues/sub-issue-expand.png) + +## Finding a sub-issue's parent issue + +When you view a sub-issue, you can always find a link back to the parent issue in the header below the issue title. + +![Screenshot of a sub-issue's header. The link to the parent issue, "Parent: create a scoreboard", is highlighted with an orange rectangle.](/assets/images/help/issues/sub-issue-parent.png) + +## Using sub-issues in your projects + +You can add sub-issues to your projects and make use of the hierarchy data for building views, grouping items, and filtering your views. See "[AUTOTITLE](/issues/planning-and-tracking-with-projects/understanding-fields/about-parent-issue-and-sub-issue-progress-fields)." diff --git a/content/issues/tracking-your-work-with-issues/using-issues/editing-an-issue.md b/content/issues/tracking-your-work-with-issues/using-issues/editing-an-issue.md new file mode 100644 index 000000000000..43b6fe598c2a --- /dev/null +++ b/content/issues/tracking-your-work-with-issues/using-issues/editing-an-issue.md @@ -0,0 +1,62 @@ +--- +title: Editing an issue +intro: 'Learn how to make changes to an existing issue.' +permissions: 'Issue authors, people with write access or higher in repositories owned by an organization, and collaborators in repositories owned by a personal account can make changes to issues. {% data reusables.enterprise-accounts.emu-permission-repo %}' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +topics: + - Pull requests + - Issues + - Project management +type: how_to +--- + +## Editing an issue title + +You can edit an issue's title. The change to the title is added to the issue's timeline. + +1. Navigate to the issue you want to edit. +1. To the right of the issue title, click **Edit**. + + ![Screenshot of an issue header, the "Edit" button is highlighted with an orange outline.](/assets/images/help/issues/issue-edit-title.png) + +1. Type your new title. +1. Click **Save**. + +## Editing an issue description + +You can also make changes to the issue description. The edit history is available unless the author or a person with write access removes it. See "[AUTOTITLE](/communities/moderating-comments-and-conversations/tracking-changes-in-a-comment)." + +1. Navigate to the issue you want to edit. +1. At the top right of the issue description, click {% octicon "kebab-horizontal" aria-label="Issue body actions" %}. + + ![Screenshot of an issue description. The "Issue body actions" button is highlighted with an orange outline.](/assets/images/help/issues/issue-edit-description.png) + +1. In the menu, click {% octicon "pencil" aria-hidden="true" %} **Edit**. +1. Type your changes to the issue description. +1. Click **Save**. + +{% ifversion issue-types %} + +## Adding or changing the issue type + +{% data reusables.issues.release-stage %} + +You can add an issue type or make changes to an existing issue type. + +1. Navigate to the issue you want to edit. +1. To the right of the issue, in the sidebar, click **Type**. + + ![Screenshot of an issue sidebar. The "Add issue type" button is highlighted with an orange outline.](/assets/images/help/issues/issue-add-type.png) + +1. In the list, select a new issue type. +1. Click **Save**. + +{% endif %} + +## Further reading + +* [AUTOTITLE](/issues/tracking-your-work-with-issues/administering-issues/closing-an-issue) +* [AUTOTITLE](/issues/tracking-your-work-with-issues/administering-issues/deleting-an-issue) diff --git a/content/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests.md b/content/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests.md index 417541b15887..4d695dd901a3 100644 --- a/content/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests.md +++ b/content/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests.md @@ -67,6 +67,48 @@ You can filter issues and pull requests to find: ![Screenshot of the list of issues for a repository. Above the list, a dropdown menu, labeled "Filters", is outlined in dark orange.](/assets/images/help/issues/issues-filter-dropdown.png) +{% ifversion issues-advanced-search %} + +{% webui %} + +## Building advanced filters for issues + +{% data reusables.issues.release-stage %} + +You can build advanced filters using boolean and nested queries on your repository's issues page. As you type your filter, {% data variables.product.github %} will show available qualifiers, suggest values, and warn when there is a problem with your filter. + +### Using boolean operators + +You can use `AND` and `OR` operators to refine your filters. + +Use `AND` when you need results where both statements are true. In the example filter below, the results will be comprised of issues with the "Bug fix" label that are assigned to the @octocat user. + +```text +label:"Bug fix" AND assignee:octocat +``` + +To return results where either statement is true, use `OR`. In the example below, the results will contain issues assigned to either @octocat or @hubot. + +```text +assignee:octocat OR assignee:hubot +``` + +If you choose not to use `AND` and `OR` operators, {% data variables.product.github %} will treat a space between statements as an `AND` operator unless you are using an `org`, `repo`, or `user` field to filter by ownership where any spaces will be treated as an `OR` operator. + +### Using parentheses for more complicated filters + +You can also use parentheses to nest filters and group qualifiers. In the example below, the results will contain issues that are either assigned to @octocat with the "bug" issue type or assigned to @hubot with the "Enchancement" issue type. + +```text +(type:"Bug" AND assignee:octocat) OR (type:"Enhancement" AND assignee:hubot) +``` + +You can nest filters using parentheses up to five levels deep. It's not currently possible to include the `repo`, `org`, or `user` qualifiers within parentheses. + +{% endwebui %} + +{% endif %} + ## Filtering issues and pull requests by assignees Once you've [assigned an issue or pull request to someone](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users), you can find items based on who's working on them. @@ -99,6 +141,24 @@ Once you've [applied labels to an issue or pull request](/issues/using-labels-an {% endtip %} +{% ifversion issue-types %} + +## Filtering by issue type + +{% data reusables.issues.release-stage %} + +If your organization uses issue types, you can filter issues for a particular type. You can also type the `type:` qualifier directly into your filter. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-issues %} +1. Above the list of issues, select the **Types** dropdown menu. + + ![Screenshot of a list of issues. In the header above the list, a dropdown menu, labeled "Types", is outlined in dark orange and the Issue Types menu is open.](/assets/images/help/issues/issue-type-dropdown.png) + +1. In the list of type, click an issue type. + +{% endif %} + ## Filtering pull requests by review status You can use filters to list pull requests by review status and to find pull requests that you've reviewed or other people have asked you to review. @@ -122,7 +182,7 @@ You can filter a repository's list of pull requests to find: ## Using search to filter issues and pull requests -You can use advanced filters to search for issues and pull requests that meet specific criteria. +You can use filters to search for issues and pull requests that meet specific criteria. ### Searching for issues and pull requests @@ -182,8 +242,10 @@ For issues, you can also use search to: * Filter for issues that are linked to a pull request by a closing reference: `linked:pr`{% ifversion issue-close-reasons %} * Filter issues by the reason they were closed: `is:closed reason:completed` or `is:closed reason:"not planned"`{% endif %} +{% ifversion issue-types %}* Filter for issues with a particular type: `is:open type:"Bug"`{% endif %} For pull requests, you can also use search to: + * Filter [draft](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests#draft-pull-requests) pull requests: `is:draft` * Filter pull requests that haven't been [reviewed](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) yet: `state:open type:pr review:none` * Filter pull requests that [require a review](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches#require-pull-request-reviews-before-merging) before they can be merged: `state:open type:pr review:required` diff --git a/content/issues/tracking-your-work-with-issues/using-issues/index.md b/content/issues/tracking-your-work-with-issues/using-issues/index.md index 0f4b3fcaf6ec..bfa3a7b76aaf 100644 --- a/content/issues/tracking-your-work-with-issues/using-issues/index.md +++ b/content/issues/tracking-your-work-with-issues/using-issues/index.md @@ -9,8 +9,11 @@ topics: - Issues children: - /creating-an-issue + - /adding-sub-issues - /assigning-issues-and-pull-requests-to-other-github-users + - /editing-an-issue - /viewing-all-of-your-issues-and-pull-requests + - /browsing-sub-issues - /filtering-and-searching-issues-and-pull-requests - /creating-a-branch-for-an-issue - /linking-a-pull-request-to-an-issue diff --git a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md index 981ee9f59219..4293627692a3 100644 --- a/content/search-github/searching-on-github/searching-issues-and-pull-requests.md +++ b/content/search-github/searching-on-github/searching-issues-and-pull-requests.md @@ -20,6 +20,7 @@ You can search for issues and pull requests globally across all of {% data varia **Tips:**{% ifversion ghes %} * This article contains example searches on the {% data variables.product.prodname_dotcom %}.com website, but you can use the same search filters on {% data variables.location.product_location %}.{% endif %} +{% ifversion issues-advanced-search %}* If your organization has opted-in to the {% data variables.release-phases.public_preview %} of advanced issue search, you can use boolean and nested queries on your repository's issues page. See "[AUTOTITLE](/issues/tracking-your-work-with-issues/using-issues/filtering-and-searching-issues-and-pull-requests#building-advanced-filters-for-issues)."{% endif %} * For a list of search syntaxes that you can add to any search qualifier to further improve your results, see "[AUTOTITLE](/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax)". * Use quotations around multi-word search terms. For example, if you want to search for issues with the label "In progress," you'd search for `label:"in progress"`. Search is not case sensitive. * Use a minus (hyphen) symbol to exclude results that match a qualifier. For example, to ignore issues created by the "octocat" user, you'd use `-author:octocat` in your search. Note that this does not work for [missing metadata qualifiers](#search-by-missing-metadata). diff --git a/data/features/issue-types.yml b/data/features/issue-types.yml new file mode 100644 index 000000000000..b3bc3b123567 --- /dev/null +++ b/data/features/issue-types.yml @@ -0,0 +1,4 @@ +# Issue 13435 +versions: + fpt: '*' + ghec: '*' diff --git a/data/features/issues-advanced-search.yml b/data/features/issues-advanced-search.yml new file mode 100644 index 000000000000..3700e534d980 --- /dev/null +++ b/data/features/issues-advanced-search.yml @@ -0,0 +1,4 @@ +# Issue 14644 +versions: + fpt: '*' + ghec: '*' diff --git a/data/features/issues-react.yml b/data/features/issues-react.yml new file mode 100644 index 000000000000..fe41bbbd7ea5 --- /dev/null +++ b/data/features/issues-react.yml @@ -0,0 +1,4 @@ +# Issue 10158 (Issues 2.0) +versions: + fpt: '*' + ghec: '*' diff --git a/data/features/sub-issues.yml b/data/features/sub-issues.yml new file mode 100644 index 000000000000..fee36c9a085c --- /dev/null +++ b/data/features/sub-issues.yml @@ -0,0 +1,4 @@ +# Issue 15008 +versions: + fpt: '*' + ghec: '*' diff --git a/data/reusables/issues/about-sub-issues.md b/data/reusables/issues/about-sub-issues.md new file mode 100644 index 000000000000..413a0486938e --- /dev/null +++ b/data/reusables/issues/about-sub-issues.md @@ -0,0 +1 @@ +You can add sub-issues to an issue to quickly break down larger pieces of work into tasks. Sub-issues add support for hierarchies of issues on {% data variables.product.github %} by creating relationships between your issues. You can create multiple levels of sub-issues that accurately represent your project by breaking down tasks into exactly the amount of detail that you and your team require. diff --git a/data/reusables/issues/access-issue-types-settings.md b/data/reusables/issues/access-issue-types-settings.md new file mode 100644 index 000000000000..433269e963bc --- /dev/null +++ b/data/reusables/issues/access-issue-types-settings.md @@ -0,0 +1,3 @@ +{% data reusables.profile.access_org %} +{% data reusables.profile.org_settings %} +1. In the "Code, planning, and automation" section of the sidebar, select **{% octicon "table" aria-hidden="true" %} Planning**, then click **Issue types**. diff --git a/data/reusables/issues/release-stage.md b/data/reusables/issues/release-stage.md new file mode 100644 index 000000000000..b503d75980de --- /dev/null +++ b/data/reusables/issues/release-stage.md @@ -0,0 +1,3 @@ +>[!NOTE] +>Issue types, sub-issues, and advanced issue search are currently in an opt-in {% data variables.release-phases.public_preview %} for organizations. To learn more and add your organization to the waitlist, see the "[GitHub Blog](https://github.blog/changelog/2024-10-01-evolving-github-issues-public-preview)." + diff --git a/data/reusables/projects/create-issue-modal.md b/data/reusables/projects/create-issue-modal.md index 8aa27c381327..dcb4001172fa 100644 --- a/data/reusables/projects/create-issue-modal.md +++ b/data/reusables/projects/create-issue-modal.md @@ -3,17 +3,12 @@ ![Screenshot showing the bottom row of a table view. The "+" button is highlighted with an orange outline.](/assets/images/help/projects-v2/omnibar-add.png) 1. Click **Create new issue**. - 1. At the top of the "Create new issue" dialog, select the repository where you want the new issue to be created. - + ![Screenshot showing the "Create new issue" dialog.](/assets/images/help/projects-v2/issue-create-form.png) - + 1. Below the repository dropdown, type a title for the new issue. - 1. Optionally, use the fields below the title field to set assignees, labels, and milestones, and add the new issue to other projects. - 1. Optionally, type a description for your issue. - 1. Optionally, if you want to create more issues, select **Create more** and the dialog will reopen when you create your issue. - 1. Click **Create**. diff --git a/data/reusables/repositories/assign-an-issue-as-project-maintainer.md b/data/reusables/repositories/assign-an-issue-as-project-maintainer.md index ea40e8c4a2bb..84540e9395aa 100644 --- a/data/reusables/repositories/assign-an-issue-as-project-maintainer.md +++ b/data/reusables/repositories/assign-an-issue-as-project-maintainer.md @@ -1 +1 @@ -1. If you're a project maintainer, you can [assign the issue to someone](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users), [add it to a {% data variables.projects.project_v2 %}](/issues/planning-and-tracking-with-projects/managing-items-in-your-project/adding-items-to-your-project#assigning-a-project-from-within-an-issue-or-pull-request), [associate it with a milestone](/issues/using-labels-and-milestones-to-track-work/associating-milestones-with-issues-and-pull-requests), or [apply a label](/issues/using-labels-and-milestones-to-track-work/managing-labels). +1. If you're a project maintainer, you can [assign the issue to someone](/issues/tracking-your-work-with-issues/assigning-issues-and-pull-requests-to-other-github-users), [add it to a {% data variables.projects.project_v2 %}](/issues/planning-and-tracking-with-projects/managing-items-in-your-project/adding-items-to-your-project#assigning-a-project-from-within-an-issue-or-pull-request), [associate it with a milestone](/issues/using-labels-and-milestones-to-track-work/associating-milestones-with-issues-and-pull-requests), {% ifversion issue-types %}[set the issue type](/issues/tracking-your-work-with-issues/using-issues/editing-an-issue#adding-or-changing-the-issue-type), {% endif %}or [apply a label](/issues/using-labels-and-milestones-to-track-work/managing-labels). From 9192b4651c66aeb805b17499cbc4d9d79ae0dcf8 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Tue, 1 Oct 2024 14:25:43 +0100 Subject: [PATCH 33/73] Update content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md Co-authored-by: Anne-Marie <102995847+am-stead@users.noreply.github.com> --- .../troubleshooting-the-detection-of-vulnerable-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md index 3d2f52b75ad1..b0d5e4a63c5f 100644 --- a/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md +++ b/content/code-security/dependabot/working-with-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies.md @@ -46,7 +46,7 @@ topics: ## Why don't I get {% data variables.product.prodname_dependabot_alerts %} for some ecosystems? -{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for Dependabot alerts, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." +{% data variables.product.prodname_dependabot_alerts %} are supported for a set of ecosystems where we can provide high-quality, actionable data. Curated advisories in the {% data variables.product.prodname_advisory_database %}, the dependency graph, {% ifversion fpt or ghec %}{% data variables.product.prodname_dependabot %} security updates, {% endif %}and {% data variables.product.prodname_dependabot_alerts %} are provided for several ecosystems, including Java’s Maven, JavaScript’s npm and Yarn, .NET’s NuGet, Python’s pip, Ruby's RubyGems, and PHP’s Composer. For an overview of the package ecosystems that we support for {% data variables.product.prodname_dependabot_alerts %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems#supported-package-ecosystems)." It's worth noting that security advisories may exist for other ecosystems. The information in an unreviewed security advisory is provided by the maintainers of a particular repository. This data is not curated by {% data variables.product.prodname_dotcom %}. {% data reusables.security-advisory.link-browsing-advisory-db %} From ec8a5a0bf33da8ce2be43bdd5ecb1e7fe1f49043 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Tue, 1 Oct 2024 14:26:08 +0100 Subject: [PATCH 34/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md Co-authored-by: Anne-Marie <102995847+am-stead@users.noreply.github.com> --- .../dependency-graph-supported-package-ecosystems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md index c9ffe62351d2..565ee9fe91af 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -1,7 +1,7 @@ --- title: Dependency graph supported package ecosystems shortTitle: Dependency graph ecosystem support # Max 31 characters -intro: 'Dependency graph supports a variety of ecosystem.' +intro: 'Dependency graph supports a variety of ecosystems.' allowTitleToDifferFromFilename: true type: reference topics: From abd53fc7b0357032a690c6ff31d86968d61bf809 Mon Sep 17 00:00:00 2001 From: Felix Guntrip Date: Tue, 1 Oct 2024 16:24:59 +0100 Subject: [PATCH 35/73] Issues 2.0 (Public beta) (#52430) Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> From e1f75c3905bc2b9ad6b6239d0e0af96e9fe54568 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:24:15 +0100 Subject: [PATCH 36/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md Co-authored-by: Jon Janego --- .../dependency-graph-supported-package-ecosystems.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md index 565ee9fe91af..f03bf2e726ad 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -30,7 +30,7 @@ The recommended formats explicitly define which versions are used for all direct ## Package ecosystems supported via dependency submission actions -You can use the {% data variables.dependency-submission-api.name %} to add dependencies from the package manager or ecosystem of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these discovered and submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. +You can use the {% data variables.dependency-submission-api.name %} to add build-time dependencies to the dependency graph, or to add dependencies from package managers and ecosystems of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. {% data reusables.dependency-graph.dependency-submission-API-short %} For more information on the {% data variables.dependency-submission-api.name %}, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api)." From 1924b655fc8f99f0f8e588c8aeb095b2ab580ee0 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Tue, 1 Oct 2024 17:27:00 +0100 Subject: [PATCH 37/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md Co-authored-by: Jon Janego --- .../dependency-graph-supported-package-ecosystems.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md index f03bf2e726ad..2b40b7f4b20d 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -27,6 +27,7 @@ In this article, you can see what the supported ecosystems are. The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} {% data reusables.dependency-graph.supported-package-ecosystems %} +For ecosystems that resolve transitive dependencies at build-time, we recommend configuring dependency submission to automatically submit these dependencies to the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-automatic-dependency-submission-for-your-repository)." ## Package ecosystems supported via dependency submission actions From 74b436760166e618fc224accd2fd89c997deae9d Mon Sep 17 00:00:00 2001 From: Josh Johanning Date: Wed, 2 Oct 2024 05:14:10 -0500 Subject: [PATCH 38/73] Update Codespaces repository permissions (#48996) Co-authored-by: hubwriter --- .../repository-roles-for-an-organization.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md index 8f869b19e3e7..0871f4225adb 100644 --- a/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md +++ b/content/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization.md @@ -166,8 +166,9 @@ Some of the features listed below are limited to organizations using {% data var | [Create new discussions and comment on existing discussions](/discussions/collaborating-with-your-community-using-discussions/participating-in-a-discussion) | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | [Delete a discussion](/discussions/managing-discussions-for-your-community/managing-discussions#deleting-a-discussion) | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | {% ifversion fpt or ghec %} | -| [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for private{% ifversion ghec %}/internal{% endif %} repositories | {% octicon "x" aria-label="No" %} | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | -| [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for public repositories | {% octicon "x" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | +| [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for private{% ifversion ghec %}/internal{% endif %} repositories | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | +| [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for private{% ifversion ghec %}/internal{% endif %} repositories with [Codespaces secrets access](/codespaces/managing-codespaces-for-your-organization/managing-development-environment-secrets-for-your-repository-or-organization?tool=webui) | {% octicon "check" aria-label="No" %} | {% octicon "check" aria-label="No" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | +| [Create codespaces](/codespaces/developing-in-codespaces/creating-a-codespace-for-a-repository?tool=webui) for public repositories
(users with read-only access can only create codespaces at their own expense) | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | {% octicon "check" aria-label="Yes" %} | | {% endif %} | {% endrowheaders %} From 3c767bca4e03e53e166c970cec5bcc0f550ed6f3 Mon Sep 17 00:00:00 2001 From: elle shwer Date: Wed, 2 Oct 2024 10:00:33 -0400 Subject: [PATCH 39/73] Removes ce reference to dot com copilot given CB also manages this policy (#52507) Co-authored-by: Sam Browning <106113886+sabrowning1@users.noreply.github.com> --- .../managing-policies-for-copilot-in-your-organization.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md index 04ceb08a718c..15294ed9807d 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization.md @@ -23,8 +23,7 @@ shortTitle: Managing policies Organization owners can set policies to govern how {% data variables.product.prodname_copilot %} can be used within the organization. For example, an organization owner can enable or disable the following {% data variables.product.prodname_copilot_short %} features{% ifversion ghec %} (unless an enterprise owner has blocked access to these features at the enterprise level){% endif %}: -{% ifversion ghec %} -* {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %} (if your organization has a {% data variables.product.prodname_copilot_enterprise_short %} subscription){% endif %} +* {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %} * {% data variables.product.prodname_copilot_chat_short %} in the IDE * {% data variables.product.prodname_copilot_mobile_short %} * {% data variables.product.prodname_copilot_cli_short %} From 4399e323002bd12e04a2bc11835bd4f2bf4db40f Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:27:50 +0100 Subject: [PATCH 40/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md --- .../dependency-graph-supported-package-ecosystems.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md index 2b40b7f4b20d..4fee0d7ee353 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -27,6 +27,7 @@ In this article, you can see what the supported ecosystems are. The recommended formats explicitly define which versions are used for all direct and all indirect dependencies. If you use these formats, your dependency graph is more accurate. It also reflects the current build set up and enables the dependency graph to report vulnerabilities in both direct and indirect dependencies.{% ifversion fpt or ghec %} Indirect dependencies that are inferred from a manifest file (or equivalent) are excluded from the checks for insecure dependencies.{% endif %} {% data reusables.dependency-graph.supported-package-ecosystems %} + For ecosystems that resolve transitive dependencies at build-time, we recommend configuring dependency submission to automatically submit these dependencies to the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-automatic-dependency-submission-for-your-repository)." ## Package ecosystems supported via dependency submission actions From ee6454f8d2ac8cb70eccc12f3787939039800b30 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Wed, 2 Oct 2024 15:35:51 +0100 Subject: [PATCH 41/73] Update content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md --- .../dependency-graph-supported-package-ecosystems.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md index 4fee0d7ee353..77e68e4e8443 100644 --- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md +++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/dependency-graph-supported-package-ecosystems.md @@ -28,8 +28,12 @@ The recommended formats explicitly define which versions are used for all direct {% data reusables.dependency-graph.supported-package-ecosystems %} +{% ifversion maven-transitive-dependencies %} + For ecosystems that resolve transitive dependencies at build-time, we recommend configuring dependency submission to automatically submit these dependencies to the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-automatic-dependency-submission-for-your-repository)." +{% endif %} + ## Package ecosystems supported via dependency submission actions You can use the {% data variables.dependency-submission-api.name %} to add build-time dependencies to the dependency graph, or to add dependencies from package managers and ecosystems of your choice to the dependency graph, even if the ecosystem is not in the supported ecosystem list above. Dependency information from these submitted dependencies will, in turn, flow into {% data variables.product.prodname_dependabot_updates %} and {% data variables.product.prodname_dependabot_alerts %}. From 05e041af58228fa9a9236bed990838c3c13bccc5 Mon Sep 17 00:00:00 2001 From: Ciara Carey <84123925+ciaracarey@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:10:46 +0100 Subject: [PATCH 42/73] Configuring Cloudsmith as a private registry --- ...figuration-of-private-registries-for-dependabot.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md index 38ac653c3971..3d9dd7768d4c 100644 --- a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md +++ b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md @@ -42,6 +42,7 @@ You'll also find recommendations for the setup of the following registry hosts: * [Artifactory](#artifactory) * [Azure Artifacts](#azure-artifacts) +* [Cloudsmith](#cloudsmith) * [{% data variables.product.prodname_registry %} registry](#github-packages-registry) * [Nexus](#nexus) * [ProGet](#proget) @@ -52,7 +53,7 @@ You'll also find recommendations for the setup of the following registry hosts: ### Bundler -Supported by Artifactory, Artifacts, {% data variables.product.prodname_registry %} registry, Nexus, and ProGet. +Supported by Artifactory, Artifacts, Cloudsmith, {% data variables.product.prodname_registry %} registry, Nexus, and ProGet. You can authenticate with either a username and password, or a token. For more information, see `rubygems-server` in "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#rubygems-server)." @@ -323,7 +324,7 @@ Registries should be configured using the `https` protocol. ### Nuget -Supported by Artifactory, Artifacts, {% data variables.product.prodname_registry %} registry, Nexus, and ProGet. +Supported by Artifactory, Artifacts, Cloudsmith, {% data variables.product.prodname_registry %} registry, Nexus, and ProGet. The `nuget-feed` type supports username and password, or token. For more information, see `nuget-feed` in "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#nuget-feed)." @@ -406,7 +407,7 @@ pub supports URL and token authentication. The URL used for the registry should ### Python -Supported by Artifactory, Azure Artifacts, Nexus, and ProGet. The {% data variables.product.prodname_registry %} registry is not supported. +Supported by Artifactory, Azure Artifacts, Cloudsmith, Nexus, and ProGet. The {% data variables.product.prodname_registry %} registry is not supported. The `python-index` type supports username and password, or token. For more information, see `python-index` in "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#python-index)." @@ -621,6 +622,10 @@ The Azure Artifacts password must be an unencoded token and should include a `:` You can check whether the private registry is successfully accessed by looking at the {% data variables.product.prodname_dependabot %} logs. +### Cloudsmith + +For information about Cloudsmith and instructions on how to configure {% data variables.product.prodname_dependabot %} to work with Cloudsmith, see [Getting Started with Cloudsmith](https://help.cloudsmith.io/docs/welcome-to-cloudsmith-docs) and [Integrate Github Dependabot with Cloudsmith](https://help.cloudsmith.io/docs/dependabot), respectively. + ### {% data variables.product.prodname_registry %} registry For information about {% data variables.product.prodname_registry %} registries, see "[AUTOTITLE](/packages/working-with-a-github-packages-registry)." From that article, you can access pages describing how to configure the following registries. From fa3ccf053d9959c50262504689860dd63540bc85 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Wed, 2 Oct 2024 16:28:39 +0000 Subject: [PATCH 43/73] Add updated secret scanning data --- src/secret-scanning/data/public-docs.yml | 49 +++++++++++++++++------- src/secret-scanning/lib/config.json | 4 +- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/src/secret-scanning/data/public-docs.yml b/src/secret-scanning/data/public-docs.yml index 78146f9174b5..d399de3ad8e1 100644 --- a/src/secret-scanning/data/public-docs.yml +++ b/src/secret-scanning/data/public-docs.yml @@ -498,6 +498,17 @@ hasPushProtection: true hasValidityCheck: false isduplicate: false +- provider: Azure + supportedSecret: Azure OpenAI Key + secretType: azure_openai_key + versions: + fpt: '*' + ghec: '*' + isPublic: true + isPrivateWithGhas: true + hasPushProtection: true + hasValidityCheck: false + isduplicate: false - provider: Azure supportedSecret: Azure Relay Key Identifiable secretType: azure_relay_key_identifiable @@ -719,6 +730,17 @@ hasPushProtection: true hasValidityCheck: false isduplicate: false +- provider: Cfx.re + supportedSecret: Cfx.re Server Key + secretType: cfxre_server_key + versions: + fpt: '*' + ghec: '*' + isPublic: true + isPrivateWithGhas: false + hasPushProtection: false + hasValidityCheck: false + isduplicate: false - provider: Checkout.com supportedSecret: Checkout.com Production Secret Key secretType: checkout_production_secret_key @@ -821,7 +843,7 @@ ghes: '*' isPublic: true isPrivateWithGhas: false - hasPushProtection: true + hasPushProtection: false hasValidityCheck: false isduplicate: false - provider: Contentful @@ -833,7 +855,7 @@ ghes: '*' isPublic: false isPrivateWithGhas: true - hasPushProtection: false + hasPushProtection: true hasValidityCheck: false isduplicate: false - provider: Contributed Systems @@ -2154,6 +2176,17 @@ hasPushProtection: false hasValidityCheck: false isduplicate: false +- provider: Netflix + supportedSecret: Netflix NetKey + secretType: netflix_netkey + versions: + fpt: '*' + ghec: '*' + isPublic: true + isPrivateWithGhas: false + hasPushProtection: false + hasValidityCheck: false + isduplicate: false - provider: New Relic supportedSecret: New Relic Insights Query Key secretType: new_relic_insights_query_key @@ -2588,18 +2621,6 @@ hasPushProtection: true hasValidityCheck: false isduplicate: false -- provider: Postman - supportedSecret: Postman API Key - secretType: postman_api_key - versions: - fpt: '*' - ghec: '*' - ghes: '>=3.5' - isPublic: true - isPrivateWithGhas: true - hasPushProtection: true - hasValidityCheck: false - isduplicate: false - provider: Postman supportedSecret: Postman Collection Key secretType: postman_collection_key diff --git a/src/secret-scanning/lib/config.json b/src/secret-scanning/lib/config.json index 07656cae2d8a..4771c7d5dd8f 100644 --- a/src/secret-scanning/lib/config.json +++ b/src/secret-scanning/lib/config.json @@ -1,5 +1,5 @@ { - "sha": "e7e694827d5b0076e65765c704bd594485eee15b", - "blob-sha": "612e8fb3ccba3b0278376fc88e2b9e10e486714e", + "sha": "6ac440cc8b236597da752259f1d6644f226400bf", + "blob-sha": "98f5cf2265e2fe9f7be69217f2073fe6fc2b23bc", "targetFilename": "code-security/secret-scanning/introduction/supported-secret-scanning-patterns" } \ No newline at end of file From 4d1d26e8b5a65d46ade371033bbc4708e042bfc4 Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Thu, 3 Oct 2024 09:36:21 +0100 Subject: [PATCH 44/73] Fix bug in Copilot Standalone docs (#52514) --- .../reusables/copilot-business-for-non-ghe/assign-licenses.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/reusables/copilot-business-for-non-ghe/assign-licenses.md b/data/reusables/copilot-business-for-non-ghe/assign-licenses.md index 7515c6d4111c..3f7331061087 100644 --- a/data/reusables/copilot-business-for-non-ghe/assign-licenses.md +++ b/data/reusables/copilot-business-for-non-ghe/assign-licenses.md @@ -1,7 +1,7 @@ When you have created a team in the enterprise, you can assign licenses to all members of the team. -{% data reusables.enterprise-accounts.settings-tab %} -1. Under {% octicon "gear" aria-hidden="true" %} **Settings**, click **Enterprise licensing**. +{% data reusables.billing.enterprise-billing-menu %} +1. Under {% octicon "credit-card" aria-hidden="true" %} **Billing & Licensing**, click **Licensing**. 1. In the "{% data variables.product.prodname_copilot_business_short %}" section, click **Manage seats**. ![Screenshot of the "{% data variables.product.prodname_copilot_business_short %}" section. A button, labeled "Manage seats", is highlighted with an orange outline.](/assets/images/help/copilot/copilot-business-manage-seats.png) From b71d10af2b11b21ffce48c36e338bccba5c8d9e0 Mon Sep 17 00:00:00 2001 From: mc <42146119+mchammer01@users.noreply.github.com> Date: Thu, 3 Oct 2024 11:16:52 +0100 Subject: [PATCH 45/73] Update content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md --- ...or-the-configuration-of-private-registries-for-dependabot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md index 3d9dd7768d4c..4e7cac04c96b 100644 --- a/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md +++ b/content/code-security/dependabot/working-with-dependabot/guidance-for-the-configuration-of-private-registries-for-dependabot.md @@ -624,7 +624,7 @@ You can check whether the private registry is successfully accessed by looking a ### Cloudsmith -For information about Cloudsmith and instructions on how to configure {% data variables.product.prodname_dependabot %} to work with Cloudsmith, see [Getting Started with Cloudsmith](https://help.cloudsmith.io/docs/welcome-to-cloudsmith-docs) and [Integrate Github Dependabot with Cloudsmith](https://help.cloudsmith.io/docs/dependabot), respectively. +For information about Cloudsmith and instructions on how to configure {% data variables.product.prodname_dependabot %} to work with Cloudsmith, see [Getting Started with Cloudsmith](https://help.cloudsmith.io/docs/welcome-to-cloudsmith-docs) and [Integrate Github Dependabot with Cloudsmith](https://help.cloudsmith.io/docs/dependabot) in the Cloudsmith documentation. ### {% data variables.product.prodname_registry %} registry From 01cabb6092b021e5421381dc2d2e4b4e71c9a0a2 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Thu, 3 Oct 2024 19:47:12 +0100 Subject: [PATCH 46/73] Update security configuration "Apply configuration" reusable to mention behavior for archived repos (#52317) --- data/reusables/security-configurations/apply-configuration.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/reusables/security-configurations/apply-configuration.md b/data/reusables/security-configurations/apply-configuration.md index 5f28d4e441a5..e84c786e38cf 100644 --- a/data/reusables/security-configurations/apply-configuration.md +++ b/data/reusables/security-configurations/apply-configuration.md @@ -1 +1,5 @@ 1. To apply the {% data variables.product.prodname_security_configuration %}, click **Apply**. + +{% ifversion fpt or ghec or ghes > 3.15 %}The {% data variables.product.prodname_security_configuration %} is applied to both active and archived repositories because some security features run on archived repositories, for example, {% data variables.product.prodname_secret_scanning %}. In addition, if a repository is later unarchived you can be confident that it is protected by the chosen {% data variables.product.prodname_security_configuration %}.{% elsif ghes = 3.15 %} + > [!NOTE] + >On {% data variables.product.prodname_ghe_server %} {{ allVersions[currentVersion].currentRelease }} the {% data variables.product.prodname_security_configuration %} is applied only to active repositories and not archived repositories.{% endif %} From 1108a25c83394b75e56d0d9800c60f440b9a42c9 Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Fri, 4 Oct 2024 01:23:03 +0100 Subject: [PATCH 47/73] Secret scanning renaming secondary inbox to 'experimental' (previously 'other') [GA] #15737 (#52272) Co-authored-by: Courtney Claessens Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> --- .../supported-secret-scanning-patterns.md | 6 ++-- .../about-alerts.md | 8 ++--- .../evaluating-alerts.md | 2 +- .../viewing-alerts.md | 35 +++++++++++++++++-- ...reating-a-custom-security-configuration.md | 2 +- .../exporting-data-from-security-overview.md | 2 +- .../filtering-alerts-in-security-overview.md | 6 +++- ...ecret-scanning-alert-experimental-list.yml | 5 +++ .../security-overview/alert-differences.md | 2 +- .../security-overview/settings-limitations.md | 2 +- 10 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 data/features/secret-scanning-alert-experimental-list.yml diff --git a/content/code-security/secret-scanning/introduction/supported-secret-scanning-patterns.md b/content/code-security/secret-scanning/introduction/supported-secret-scanning-patterns.md index ef71f6e4fdb3..4c594a53ceef 100644 --- a/content/code-security/secret-scanning/introduction/supported-secret-scanning-patterns.md +++ b/content/code-security/secret-scanning/introduction/supported-secret-scanning-patterns.md @@ -37,12 +37,12 @@ This table lists the secrets supported by {% data variables.product.prodname_sec * **Partner**—token for which leaks are reported to the relevant token partner. Applies to public repositories only. * **User**—token for which leaks are reported to users on {% data variables.product.prodname_dotcom %}.{% ifversion secret-scanning-non-provider-patterns %} * Applies to public repositories, and to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} are enabled. - * Includes high confidence tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which usually have a higher ratio of false positives. + * Includes {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which usually have a higher ratio of false positives. * For {% data variables.product.prodname_secret_scanning %} to scan for non-provider patterns, the detection of non-provider patterns must be enabled for the repository or the organization. For more information, see "[AUTOTITLE](/code-security/secret-scanning/enabling-secret-scanning-features/enabling-secret-scanning-for-your-repository)." {% data reusables.secret-scanning.non-provider-patterns-beta %}{% endif %}{% endif %}{% ifversion ghes %} * **{% data variables.product.prodname_secret_scanning_caps %} alert**—token for which leaks are reported to users on {% data variables.product.prodname_dotcom %}.{% ifversion secret-scanning-non-provider-patterns %} * Applies to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} are enabled. - * Includes high confidence tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which often result in false positives.{% else %} Applies to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} enabled.{% endif %}{% endif %} + * Includes {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} tokens, which relate to supported patterns and specified custom patterns, as well as non-provider tokens such as private keys, which often result in false positives.{% else %} Applies to private repositories where {% data variables.product.prodname_GH_advanced_security %} and {% data variables.product.prodname_secret_scanning %} enabled.{% endif %}{% endif %} * **Push protection**—token for which leaks are reported to users on {% data variables.product.prodname_dotcom %}. Applies to repositories with {% data variables.product.prodname_secret_scanning %} and push protection enabled. * **Validity check**—token for which a validity check is implemented. {% ifversion secret-scanning-validity-check-partner-patterns %}For partner tokens, {% data variables.product.prodname_dotcom %} sends the token to the relevant partner. Note that not all partners are based in the United States. For more information, see "[{% data variables.product.prodname_advanced_security %}](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#advanced-security)" in the Site Policy documentation.{% else %} {% ifversion ghes %}Currently only applies to {% data variables.product.prodname_dotcom %} tokens.{% endif %} {% ifversion fpt %}Currently only applies to {% data variables.product.prodname_dotcom %} tokens, and not shown in the table. For more information about validity check support see "[AUTOTITLE](/enterprise-cloud@latest/code-security/secret-scanning/secret-scanning-patterns#supported-secrets)" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% endif %}{% endif %} @@ -66,7 +66,7 @@ This table lists the secrets supported by {% data variables.product.prodname_sec >[!NOTE] Push protection and validity checks are not supported for non-provider patterns. -### High confidence patterns +### {% ifversion secret-scanning-alert-experimental-list %}Default{% else %}High confidence{% endif %} patterns {% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md index b166bb541bbe..112bb0fae4af 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md @@ -27,12 +27,10 @@ When {% data variables.product.company_short %} detects a supported secret in a {% ifversion secret-scanning-non-provider-patterns %}{% ifversion fpt or ghec %}User {% else %}{% data variables.product.prodname_secret_scanning %}{% endif %} alerts can be of the following types: -* High confidence alerts, which relate to supported patterns and specified custom patterns. -* Other alerts, which have a higher ratio of false positives, and correspond to secrets such as private keys{% ifversion secret-scanning-ai-generic-secret-detection %} or AI-detected generic secrets{% endif %}. +* {% ifversion secret-scanning-alert-experimental-list %}Default{% else %}High confidence{% endif %} alerts, which relate to supported patterns and specified custom patterns. +* {% ifversion secret-scanning-alert-experimental-list %}Experimental{% else %}Other{% endif %} alerts, which can have a higher ratio of false positives or secrets used in tests. -{% data variables.product.prodname_dotcom %} displays these "other" alerts in a different list to high confidence alerts, making triaging a better experience for users. For more information, see "[AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts)." - -{% data reusables.secret-scanning.non-provider-patterns-beta %} +{% data variables.product.prodname_dotcom %} displays {% ifversion secret-scanning-alert-experimental-list %}experimental{% else %}these "other"{% endif %} alerts in a different list to {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} alerts, making triaging a better experience for users. For more information, see "[AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts)." {% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md index 0ec0fcaffaf6..7fc067804b67 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts.md @@ -44,7 +44,7 @@ Organizations using {% data variables.product.prodname_ghe_cloud %} with a licen {% data reusables.gated-features.partner-pattern-validity-check-ghas %} -For information on how to enable validity checks for partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/enabling-secret-scanning-features/enabling-validity-checks-for-your-repository)," and for information on which partner patterns are currently supported, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#high-confidence-patterns)." +For information on how to enable validity checks for partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/enabling-secret-scanning-features/enabling-validity-checks-for-your-repository)," and for information on which partner patterns are currently supported, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns)." {% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md index 8c044d59d82d..37965de4f002 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md @@ -22,12 +22,33 @@ allowTitleToDifferFromFilename: true {% data reusables.secret-scanning.secret-scanning-about-alerts %} {% data reusables.secret-scanning.repository-alert-location %} {% ifversion secret-scanning-non-provider-patterns %} + To help you triage alerts more effectively, {% data variables.product.company_short %} separates alerts into two lists: + +{% ifversion secret-scanning-alert-experimental-list %} +* **Default** alerts +* **Experimental** alerts + +{% else %} * **High confidence** alerts. * **Other** alerts. ![Screenshot of the {% data variables.product.prodname_secret_scanning %} alert view. The button to toggle between "High confidence" and "Other" alerts is highlighted with an orange outline.](/assets/images/help/security/secret-scanning-high-confidence-alert-view.png) +{% endif %} + +{% ifversion secret-scanning-alert-experimental-list %} + +### Default alerts list + +The default alerts list displays alerts that relate to supported patterns and specified custom patterns. This is the main view for alerts. + +### Experimental alerts list + +The experimental alerts list displays alerts that relate to non-provider patterns (such as private keys){% ifversion secret-scanning-ai-generic-secret-detection %}, or generic secrets detected using AI (such as passwords){% endif %}. These types of alerts can have a higher rate of false positives or secrets used in tests. You can toggle to the experimental alerts list from the default alerts list. + +{% else %} + ### High confidence alerts list The "High confidence" alerts list displays alerts that relate to supported patterns and specified custom patterns. This list is always the default view for the alerts page. @@ -36,6 +57,8 @@ The "High confidence" alerts list displays alerts that relate to supported patte The "Other" alerts list displays alerts that relate to non-provider patterns (such as private keys){% ifversion secret-scanning-ai-generic-secret-detection %}, or generic secrets detected using AI (such as passwords){% endif %}. These types of alerts have a higher rate of false positives. +{% endif %} + In addition, alerts that fall into this category: * Are limited in quantity to 5000 alerts per repository (this includes open and closed alerts). * Are not shown in the summary views for security overview, only in the "{% data variables.product.prodname_secret_scanning_caps %}" view. @@ -43,6 +66,12 @@ In addition, alerts that fall into this category: For {% data variables.product.company_short %} to scan for non-provider patterns{% ifversion secret-scanning-ai-generic-secret-detection %} and generic secrets{% endif %}, you must first enable the feature{% ifversion secret-scanning-ai-generic-secret-detection %}s{% endif %} for your repository or organization. For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/non-provider-patterns/enabling-secret-scanning-for-non-provider-patterns){% ifversion secret-scanning-ai-generic-secret-detection %}" and "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/enabling-ai-powered-generic-secret-detection){% endif %}." +{% ifversion secret-scanning-alert-experimental-list %} + +{% data variables.product.github %} will continue to release new patterns and secret types to the experimental alerts list and will promote them to the default list when feature-complete (e.g. when they have an appropriately low volume and false positive rate). + +{% endif %} + {% endif %} ## Viewing alerts @@ -52,7 +81,7 @@ Alerts for {% data variables.product.prodname_secret_scanning %} are displayed u {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-security %} 1. In the left sidebar, under "Vulnerability alerts", click **{% data variables.product.prodname_secret_scanning_caps %}**. {% ifversion secret-scanning-non-provider-patterns %} -1. Optionally, toggle to "Other" to see alerts for non-provider patterns{% ifversion secret-scanning-ai-generic-secret-detection %} or generic secrets detected using AI{% endif %}.{% endif %} +1. Optionally, toggle to {% ifversion secret-scanning-alert-experimental-list %}"Experimental"{% else %}"Other"{% endif %} to see alerts for non-provider patterns{% ifversion secret-scanning-ai-generic-secret-detection %} or generic secrets detected using AI{% endif %}.{% endif %} 1. Under "{% data variables.product.prodname_secret_scanning_caps %}", click the alert you want to view. {% ifversion secret-scanning-user-owned-repos %} @@ -78,8 +107,8 @@ You can apply various filters to the alerts list to help you find the alerts you |`secret-type:SECRET-NAME`| Displays alerts for a specific secret type, for example, `secret-type:github_personal_access_token`. For a list of supported secret types, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secret)." | |`provider:PROVIDER-NAME`|Displays alerts for a specific provider, for example, `provider:github`. For a list of supported partners, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)."| | {% ifversion secret-scanning-non-provider-patterns %} | -|`confidence:high`| Displays alerts for high-confidence secrets, which relate to supported secrets and custom patterns. For a list of supported high-confidence patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#high-confidence-patterns)." | -|`confidence:other`| Displays alerts for non-provider patterns, such as private keys{% ifversion secret-scanning-ai-generic-secret-detection %}, and AI-detected generic secrets, such as passwords{% endif %}. For a list of supported non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)." {% ifversion secret-scanning-ai-generic-secret-detection %}For more information about AI-detected generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)."{% endif %}| +|{% ifversion secret-scanning-alert-experimental-list %}`results:default`{% else %}`confidence:high`{% endif %}| Displays alerts for {% ifversion secret-scanning-alert-experimental-list %}{% else %}high-confidence secrets, which relate to {% endif %}supported secrets and custom patterns. For a list of supported patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns)." | +|{% ifversion secret-scanning-alert-experimental-list %}`results:experimental`{% else %}`confidence:other`{% endif %}| Displays alerts for non-provider patterns, such as private keys{% ifversion secret-scanning-ai-generic-secret-detection %}, and AI-detected generic secrets, such as passwords{% endif %}. For a list of supported non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)." {% ifversion secret-scanning-ai-generic-secret-detection %}For more information about AI-detected generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)."{% endif %}| | {% endif %} | ## Next steps diff --git a/content/code-security/securing-your-organization/meeting-your-specific-security-needs-with-custom-security-configurations/creating-a-custom-security-configuration.md b/content/code-security/securing-your-organization/meeting-your-specific-security-needs-with-custom-security-configurations/creating-a-custom-security-configuration.md index d3cff0bf9e2a..c7621acfb92e 100644 --- a/content/code-security/securing-your-organization/meeting-your-specific-security-needs-with-custom-security-configurations/creating-a-custom-security-configuration.md +++ b/content/code-security/securing-your-organization/meeting-your-specific-security-needs-with-custom-security-configurations/creating-a-custom-security-configuration.md @@ -48,7 +48,7 @@ With {% data variables.product.prodname_custom_security_configurations %}, you c * {% data variables.product.prodname_secret_scanning_caps %}. To learn about {% data variables.product.prodname_secret_scanning %}, see "[AUTOTITLE](/code-security/secret-scanning/introduction/about-secret-scanning)."{% ifversion secret-scanning-validity-check-partner-patterns %} * Validity check. To learn more about validity checks for partner patterns, see "[AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/evaluating-alerts#checking-a-secrets-validity)".{% endif %} * Push protection. To learn about push protection, see "[AUTOTITLE](/code-security/secret-scanning/introduction/about-push-protection)."{% ifversion org-npp-enablement-security-configurations %} - * Non-provider patterns. To learn more about scanning for non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)" and "[AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts#other-alerts-list)." + * Non-provider patterns. To learn more about scanning for non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)" and "[AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts)." {% data reusables.secret-scanning.non-provider-patterns-beta %}{% endif %} diff --git a/content/code-security/security-overview/exporting-data-from-security-overview.md b/content/code-security/security-overview/exporting-data-from-security-overview.md index d30dd00691d3..7b977bcc8bfa 100644 --- a/content/code-security/security-overview/exporting-data-from-security-overview.md +++ b/content/code-security/security-overview/exporting-data-from-security-overview.md @@ -45,7 +45,7 @@ The CSV file you download will contain data corresponding to the filters you hav {% note %} -**Note:** The summary views ({% ifversion security-overview-dashboard %}"Overview", {% endif %}"Coverage" and "Risk") show data only for high-confidence alerts. {% data variables.product.prodname_code_scanning_caps %} alerts from third-party tools, and {% data variables.product.prodname_secret_scanning %} alerts for non-provider patterns or for ignored directories are all omitted from these views. Consequently, files exported from the summary views do not contain data for these types of alert. +**Note:** The summary views ({% ifversion security-overview-dashboard %}"Overview", {% endif %}"Coverage" and "Risk") show data only for {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} alerts. {% data variables.product.prodname_code_scanning_caps %} alerts from third-party tools, and {% data variables.product.prodname_secret_scanning %} alerts for non-provider patterns or for ignored directories are all omitted from these views. Consequently, files exported from the summary views do not contain data for these types of alert. {% endnote %} diff --git a/content/code-security/security-overview/filtering-alerts-in-security-overview.md b/content/code-security/security-overview/filtering-alerts-in-security-overview.md index b83d5e506efe..7b24d4e06cb5 100644 --- a/content/code-security/security-overview/filtering-alerts-in-security-overview.md +++ b/content/code-security/security-overview/filtering-alerts-in-security-overview.md @@ -219,8 +219,12 @@ All {% data variables.product.prodname_code_scanning %} alerts have one of the c | Qualifier | Description | | -------- | -------- | -|`bypassed` | Display {% data variables.secret-scanning.alerts %} where push protection was bypassed (`true`) or not bypassed (`false`). +|`bypassed` | Display {% data variables.secret-scanning.alerts %} where push protection was bypassed (`true`) or not bypassed (`false`).| +|{% ifversion secret-scanning-alert-experimental-list %}| +|`results`|Display default (`default`) or experimental (`experimental`) {% data variables.secret-scanning.alerts %}.| +|{% else %}| |`confidence`|Display {% data variables.secret-scanning.alerts %} of high (`high`) or other (`other`) confidence.| +|{% endif %}| |`is`|Display {% data variables.secret-scanning.alerts %} that are open (`open`) or closed (`closed`).| |`provider` | Display alerts for all secrets issued by a specified provider, for example: `adafruit`. | |`resolution`| Display {% data variables.secret-scanning.alerts %} closed as "false positive" (`false-positive`), "pattern deleted" (`pattern-deleted`), "pattern edited' (`pattern-edited`), "revoked" (`revoked`) "used in tests" (`used-in-tests`), or "won't fix" (`wont-fix`).| diff --git a/data/features/secret-scanning-alert-experimental-list.yml b/data/features/secret-scanning-alert-experimental-list.yml new file mode 100644 index 000000000000..771ba66462ed --- /dev/null +++ b/data/features/secret-scanning-alert-experimental-list.yml @@ -0,0 +1,5 @@ +# Reference: #15737. +# Documentation for secret scanning experimental alert list (replacing the "Other" alert list) +versions: + ghec: '*' + ghes: '>=3.16' diff --git a/data/reusables/security-overview/alert-differences.md b/data/reusables/security-overview/alert-differences.md index 97d4b2ce7514..8bf34744cd42 100644 --- a/data/reusables/security-overview/alert-differences.md +++ b/data/reusables/security-overview/alert-differences.md @@ -1,5 +1,5 @@ {% ifversion secret-scanning-non-provider-patterns %} ->[!NOTE] The summary views ({% ifversion security-overview-dashboard %}"Overview", {% endif %}"Coverage" and "Risk") show data only for high confidence alerts. {% ifversion security-overview-additional-tools %}{% data variables.product.prodname_secret_scanning_caps %} {% else %}{% data variables.product.prodname_code_scanning_caps %} alerts from third-party tools, and {% data variables.product.prodname_secret_scanning %}{% endif %} alerts for ignored directories and non-provider alerts are all omitted from these views. Consequently, the individual alert views may include a larger number of open and closed alerts. +>[!NOTE] The summary views ({% ifversion security-overview-dashboard %}"Overview", {% endif %}"Coverage" and "Risk") show data only for {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} alerts. {% ifversion security-overview-additional-tools %}{% data variables.product.prodname_secret_scanning_caps %} {% else %}{% data variables.product.prodname_code_scanning_caps %} alerts from third-party tools, and {% data variables.product.prodname_secret_scanning %}{% endif %} alerts for ignored directories and non-provider alerts are all omitted from these views. Consequently, the individual alert views may include a larger number of open and closed alerts. {% endif %} diff --git a/data/reusables/security-overview/settings-limitations.md b/data/reusables/security-overview/settings-limitations.md index 6dc3ca95fe90..424ea93a60f5 100644 --- a/data/reusables/security-overview/settings-limitations.md +++ b/data/reusables/security-overview/settings-limitations.md @@ -4,7 +4,7 @@ **Notes:** * Enabling {% data variables.product.prodname_code_scanning %} default setup _will not_ override any existing configurations of advanced setup for the selected repositories, but it _will_ override any existing configurations of default setup. -* Enabling "Alerts" for {% data variables.product.prodname_secret_scanning %} enables high-confidence alerts. If you want to enable non-provider alerts, you need to edit the repository, organization, or enterprise settings. For more information about alert types, see "[Supported secrets](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." +* Enabling "Alerts" for {% data variables.product.prodname_secret_scanning %} enables {% ifversion secret-scanning-alert-experimental-list %}default{% else %}high confidence{% endif %} alerts. If you want to enable non-provider alerts, you need to edit the repository, organization, or enterprise settings. For more information about alert types, see "[Supported secrets](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)." {% endnote %} From 28909a94e2cdc87a3e3edbdb3db1f89a40049ec3 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 4 Oct 2024 09:12:35 -0400 Subject: [PATCH 48/73] [Early access companion] PR #360 (#52528) Co-authored-by: hubwriter From 510de5ca0aea4bc8bc8f622e4e71ab7d7cb318de Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:19:42 -0400 Subject: [PATCH 49/73] Update CodeQL query tables (#52488) Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> --- data/reusables/code-scanning/codeql-query-tables/cpp.md | 6 +++--- data/reusables/code-scanning/codeql-query-tables/swift.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/reusables/code-scanning/codeql-query-tables/cpp.md b/data/reusables/code-scanning/codeql-query-tables/cpp.md index c62a6bb36c98..c86735ba9403 100644 --- a/data/reusables/code-scanning/codeql-query-tables/cpp.md +++ b/data/reusables/code-scanning/codeql-query-tables/cpp.md @@ -10,8 +10,8 @@ | [Cast between HRESULT and a Boolean type](https://codeql.github.com/codeql-query-help/cpp/cpp-hresult-boolean-conversion/) | 253 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Cast from char* to wchar_t*](https://codeql.github.com/codeql-query-help/cpp/cpp-incorrect-string-type-conversion/) | 704 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | | [CGI script vulnerable to cross-site scripting](https://codeql.github.com/codeql-query-help/cpp/cpp-cgi-xss/) | 079 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| [Cleartext storage of sensitive information in file](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-storage-file/) | 260, 313 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | -| [Cleartext transmission of sensitive information](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-transmission/) | 319, 359 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | +| [Cleartext storage of sensitive information in file](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-storage-file/) | 260, 313 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | +| [Cleartext transmission of sensitive information](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-transmission/) | 319, 359 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Comparison of narrow type with wide type in loop condition](https://codeql.github.com/codeql-query-help/cpp/cpp-comparison-with-wider-type/) | 190, 197, 835 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Dangerous use of 'cin'](https://codeql.github.com/codeql-query-help/cpp/cpp-dangerous-cin/) | 676 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Exposure of system data to an unauthorized control sphere](https://codeql.github.com/codeql-query-help/cpp/cpp-system-data-exposure/) | 497 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | @@ -59,7 +59,7 @@ | [Certificate not checked](https://codeql.github.com/codeql-query-help/cpp/cpp-certificate-not-checked/) | 295 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Certificate result conflation](https://codeql.github.com/codeql-query-help/cpp/cpp-certificate-result-conflation/) | 295 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Cleartext storage of sensitive information in an SQLite database](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-storage-database/) | 313 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| [Cleartext storage of sensitive information in buffer](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-storage-buffer/) | 312 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | +| [Cleartext storage of sensitive information in buffer](https://codeql.github.com/codeql-query-help/cpp/cpp-cleartext-storage-buffer/) | 312 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Comma before misleading indentation](https://codeql.github.com/codeql-query-help/cpp/cpp-comma-before-misleading-indentation/) | 1078, 670 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [File created without restricting permissions](https://codeql.github.com/codeql-query-help/cpp/cpp-world-writable-file-creation/) | 732 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Incorrect 'not' operator usage](https://codeql.github.com/codeql-query-help/cpp/cpp-incorrect-not-operator-usage/) | 480 | {% octicon "x" aria-label="Not included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | diff --git a/data/reusables/code-scanning/codeql-query-tables/swift.md b/data/reusables/code-scanning/codeql-query-tables/swift.md index b036413620a8..a6ed868def9b 100644 --- a/data/reusables/code-scanning/codeql-query-tables/swift.md +++ b/data/reusables/code-scanning/codeql-query-tables/swift.md @@ -8,7 +8,7 @@ | [Cleartext storage of sensitive information in an application preference store](https://codeql.github.com/codeql-query-help/swift/swift-cleartext-storage-preferences/) | 312 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Cleartext transmission of sensitive information](https://codeql.github.com/codeql-query-help/swift/swift-cleartext-transmission/) | 319 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | | [Constant password](https://codeql.github.com/codeql-query-help/swift/swift-constant-password/) | 259 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | -| [Database query built from user-controlled sources](https://codeql.github.com/codeql-query-help/swift/swift-sql-injection/) | 089 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "x" aria-label="Not included" %} | +| [Database query built from user-controlled sources](https://codeql.github.com/codeql-query-help/swift/swift-sql-injection/) | 089 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Encryption using ECB](https://codeql.github.com/codeql-query-help/swift/swift-ecb-encryption/) | 327 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Hard-coded encryption key](https://codeql.github.com/codeql-query-help/swift/swift-hardcoded-key/) | 321 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | | [Incomplete regular expression for hostnames](https://codeql.github.com/codeql-query-help/swift/swift-incomplete-hostname-regexp/) | 020 | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | {% octicon "check" aria-label="Included" %} | From 58cc8b64b363165b8fca53da36ac4f419d76cc2d Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Fri, 4 Oct 2024 14:33:18 -0400 Subject: [PATCH 50/73] Update CodeQL CLI manual (#52486) Co-authored-by: Angela P Wen Co-authored-by: Sunbrye Ly <56200261+sunbrye@users.noreply.github.com> --- .../codeql-cli-manual/generate-query-help.md | 9 +- .../codeql-cli/codeql-cli-manual/index.md | 1 + .../codeql-cli-manual/resolve-packs.md | 165 ++++++++++++++++++ .../codeql-cli-manual/resolve-qlpacks.md | 8 +- 4 files changed, 176 insertions(+), 7 deletions(-) create mode 100644 content/code-security/codeql-cli/codeql-cli-manual/resolve-packs.md diff --git a/content/code-security/codeql-cli/codeql-cli-manual/generate-query-help.md b/content/code-security/codeql-cli/codeql-cli-manual/generate-query-help.md index 58ca95316ef9..1ffeffeada5f 100644 --- a/content/code-security/codeql-cli/codeql-cli-manual/generate-query-help.md +++ b/content/code-security/codeql-cli/codeql-cli-manual/generate-query-help.md @@ -24,7 +24,7 @@ redirect_from: ## Synopsis ```shell copy -codeql generate query-help --format= [--output=] ... -- ... +codeql generate query-help --format= [--output=] ... -- ... ``` ## Description @@ -35,14 +35,15 @@ Generate end-user query help from .qhelp files. ### Primary Options -#### `...` +#### `...` \[Mandatory] Query help files to render. Each argument is one of: * A .qhelp file to render. -* A .ql file with a corresponding .qhelp file to render. +* A .md file to render. +* A .ql file with a corresponding .qhelp or .md file to render. * A directory that will be searched recursively for .ql files with - corresponding .qhelp files. + corresponding .qhelp or .md files. * A .qls file that defines a particular set of queries. * The basename of a "well-known" .qls file exported by one of the installed QL packs. diff --git a/content/code-security/codeql-cli/codeql-cli-manual/index.md b/content/code-security/codeql-cli/codeql-cli-manual/index.md index 3e27e5a1b32a..3fba7fe6156d 100644 --- a/content/code-security/codeql-cli/codeql-cli-manual/index.md +++ b/content/code-security/codeql-cli/codeql-cli-manual/index.md @@ -83,6 +83,7 @@ children: - /resolve-library-path - /resolve-metadata - /resolve-ml-models + - /resolve-packs - /resolve-qlpacks - /resolve-qlref - /resolve-queries diff --git a/content/code-security/codeql-cli/codeql-cli-manual/resolve-packs.md b/content/code-security/codeql-cli/codeql-cli-manual/resolve-packs.md new file mode 100644 index 000000000000..f3ebe2be266b --- /dev/null +++ b/content/code-security/codeql-cli/codeql-cli-manual/resolve-packs.md @@ -0,0 +1,165 @@ +--- +title: resolve packs +intro: Display a list of available CodeQL packs and their locations. +versions: # DO NOT MANUALLY EDIT. CHANGES WILL BE OVERWRITTEN BY A 🤖 + fpt: '*' + ghec: '*' + ghes: '*' +topics: + - Advanced Security + - Code scanning + - CodeQL +type: reference +product: '{% data reusables.gated-features.codeql %}' +autogenerated: codeql-cli +--- + + + +{% data reusables.codeql-cli.man-pages-version-note %} + +## Synopsis + +```shell copy +codeql resolve packs ... +``` + +## Description + +Display a list of available CodeQL packs and their locations. + +This command shows all of the locations searched for CodeQL packs, based +on the specified search path options. For each searched location, it +lists the packs that were found in that location. + +## Options + +### Primary Options + +#### `--search-path=
[:...]` + +A list of directories under which QL packs may be found. Each directory +can either be a QL pack (or bundle of packs containing a +`.codeqlmanifest.json` file at the root) or the immediate parent of one +or more such directories. + +If the path contains more than one directory, their order defines +precedence between them: when a pack name that must be resolved is +matched in more than one of the directory trees, the one given first +wins. + +Pointing this at a checkout of the open-source CodeQL repository ought +to work when querying one of the languages that live there. + +If you have checked out the CodeQL repository as a sibling of the +unpacked CodeQL toolchain, you don't need to give this option; such +sibling directories will always be searched for QL packs that cannot be +found otherwise. (If this default does not work, it is strongly +recommended to set up `--search-path` once and for all in a per-user +configuration file). + +(Note: On Windows the path separator is `;`). + +#### `--additional-packs=[:...]` + +If this list of directories is given, they will be searched for packs +before the ones in `--search-path`. The order between these doesn't +matter; it is an error if a pack name is found in two different places +through this list. + +This is useful if you're temporarily developing a new version of a pack +that also appears in the default path. On the other hand, it is _not +recommended_ to override this option in a config file; some internal +actions will add this option on the fly, overriding any configured +value. + +(Note: On Windows the path separator is `;`). + +#### `--kind=` + +Specifies which kind of packages to return. Options are: `query`, +`library`, `extension`, and `all` (default). + +Note that extension packs are a kind of library pack and are included +when the kind is `library`. + +#### `--format=` + +Select output format, either `text` _(default)_ or `json`. + +#### `--[no-]show-hidden-packs` + +Show which packs were hidden by a pack found earlier in the search. + +### Options for configuring the CodeQL package manager + +#### `--registries-auth-stdin` + +Authenticate to GitHub Enterprise Server Container registries by passing +a comma-separated list of \=\ pairs. + +For example, you can pass +`https://containers.GHEHOSTNAME1/v2/=TOKEN1,https://containers.GHEHOSTNAME2/v2/=TOKEN2` +to authenticate to two GitHub Enterprise Server instances. + +This overrides the CODEQL\_REGISTRIES\_AUTH and GITHUB\_TOKEN environment +variables. If you only need to authenticate to the github.com Container +registry, you can instead authenticate using the simpler +`--github-auth-stdin` option. + +#### `--github-auth-stdin` + +Authenticate to the github.com Container registry by passing a +github.com GitHub Apps token or personal access token via standard +input. + +To authenticate to GitHub Enterprise Server Container registries, pass +`--registries-auth-stdin` or use the CODEQL\_REGISTRIES\_AUTH environment +variable. + +This overrides the GITHUB\_TOKEN environment variable. + +### Common options + +#### `-h, --help` + +Show this help text. + +#### `-J=` + +\[Advanced] Give option to the JVM running the command. + +(Beware that options containing spaces will not be handled correctly.) + +#### `-v, --verbose` + +Incrementally increase the number of progress messages printed. + +#### `-q, --quiet` + +Incrementally decrease the number of progress messages printed. + +#### `--verbosity=` + +\[Advanced] Explicitly set the verbosity level to one of errors, +warnings, progress, progress+, progress++, progress+++. Overrides `-v` +and `-q`. + +#### `--logdir=` + +\[Advanced] Write detailed logs to one or more files in the given +directory, with generated names that include timestamps and the name of +the running subcommand. + +(To write a log file with a name you have full control over, instead +give `--log-to-stderr` and redirect stderr as desired.) + +#### `--common-caches=` + +\[Advanced] Controls the location of cached data on disk that will +persist between several runs of the CLI, such as downloaded QL packs and +compiled query plans. If not set explicitly, this defaults to a +directory named `.codeql` in the user's home directory; it will be +created if it doesn't already exist. + +Available since `v2.15.2`. diff --git a/content/code-security/codeql-cli/codeql-cli-manual/resolve-qlpacks.md b/content/code-security/codeql-cli/codeql-cli-manual/resolve-qlpacks.md index 79c423547535..bd7a33090a69 100644 --- a/content/code-security/codeql-cli/codeql-cli-manual/resolve-qlpacks.md +++ b/content/code-security/codeql-cli/codeql-cli-manual/resolve-qlpacks.md @@ -29,10 +29,12 @@ codeql resolve qlpacks ... ## Description -Create a list of installed QL packs and their locations. +\[Deprecated] Create a list of installed QL packs and their locations. -This plumbing command creates a list of QL packs that can be resolved -given the configured (or given) search path. +This command is deprecated. Use the [codeql resolve packs](/code-security/codeql-cli/codeql-cli-manual/resolve-packs) command instead. + +This command creates a list of QL packs that can be resolved given the +configured (or given) search path. When run with JSON output selected, it can report multiple locations for each pack name. When that happens, it means that the pack has From 89c07cd218611b3591db90e34a5dce06e86b8b7f Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Mon, 7 Oct 2024 03:37:51 -0400 Subject: [PATCH 51/73] Update audit log event data (#52542) --- src/audit-logs/data/fpt/organization.json | 5 +++++ src/audit-logs/data/ghec/enterprise.json | 5 +++++ src/audit-logs/data/ghec/organization.json | 5 +++++ src/audit-logs/data/ghes-3.15/organization.json | 5 +++++ src/audit-logs/lib/config.json | 2 +- 5 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/audit-logs/data/fpt/organization.json b/src/audit-logs/data/fpt/organization.json index 8d5632358e0f..8d75de024fa1 100644 --- a/src/audit-logs/data/fpt/organization.json +++ b/src/audit-logs/data/fpt/organization.json @@ -3024,6 +3024,11 @@ "description": "A secret scanning alert was reopened.", "docs_reference_links": "N/A" }, + { + "action": "secret_scanning_alert.report", + "description": "A leaked secret was reported to the secret's provider by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts" + }, { "action": "secret_scanning_alert.resolve", "description": "A secret scanning alert was resolved.", diff --git a/src/audit-logs/data/ghec/enterprise.json b/src/audit-logs/data/ghec/enterprise.json index 878ab3411fc3..88ac2f9f49c7 100644 --- a/src/audit-logs/data/ghec/enterprise.json +++ b/src/audit-logs/data/ghec/enterprise.json @@ -3769,6 +3769,11 @@ "description": "A secret scanning alert was reopened.", "docs_reference_links": "N/A" }, + { + "action": "secret_scanning_alert.report", + "description": "A leaked secret was reported to the secret's provider by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts" + }, { "action": "secret_scanning_alert.resolve", "description": "A secret scanning alert was resolved.", diff --git a/src/audit-logs/data/ghec/organization.json b/src/audit-logs/data/ghec/organization.json index 8d5632358e0f..8d75de024fa1 100644 --- a/src/audit-logs/data/ghec/organization.json +++ b/src/audit-logs/data/ghec/organization.json @@ -3024,6 +3024,11 @@ "description": "A secret scanning alert was reopened.", "docs_reference_links": "N/A" }, + { + "action": "secret_scanning_alert.report", + "description": "A leaked secret was reported to the secret's provider by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts" + }, { "action": "secret_scanning_alert.resolve", "description": "A secret scanning alert was resolved.", diff --git a/src/audit-logs/data/ghes-3.15/organization.json b/src/audit-logs/data/ghes-3.15/organization.json index 892cc765abc7..008606185937 100644 --- a/src/audit-logs/data/ghes-3.15/organization.json +++ b/src/audit-logs/data/ghes-3.15/organization.json @@ -2994,6 +2994,11 @@ "description": "A secret scanning alert was reopened.", "docs_reference_links": "N/A" }, + { + "action": "secret_scanning_alert.report", + "description": "A leaked secret was reported to the secret's provider by secret scanning.", + "docs_reference_links": "/code-security/secret-scanning/managing-alerts-from-secret-scanning/resolving-alerts" + }, { "action": "secret_scanning_alert.resolve", "description": "A secret scanning alert was resolved.", diff --git a/src/audit-logs/lib/config.json b/src/audit-logs/lib/config.json index 5d40cb6aa2f2..6d0638335f52 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": "3a21b2ac13997a590ad1a9b1a9f3f86109c3525e" + "sha": "80525072bb4d34946c5f2c182cd746effa36a25d" } \ No newline at end of file From a5a9b346d6c24c8641d380c3753c932fedac0232 Mon Sep 17 00:00:00 2001 From: Ben Ahmady <32935794+subatoi@users.noreply.github.com> Date: Mon, 7 Oct 2024 08:40:23 +0100 Subject: [PATCH 52/73] Fix lots of git-scm links (#52523) --- .../removing-sensitive-data-from-a-repository.md | 4 ++-- .../configuring-git-to-handle-line-endings.md | 4 ++-- .../managing-remote-repositories.md | 2 +- .../setting-your-username-in-git.md | 2 +- content/get-started/using-git/about-git-rebase.md | 4 ++-- .../using-git/getting-changes-from-a-remote-repository.md | 2 +- .../using-git/pushing-commits-to-a-remote-repository.md | 2 +- .../what-are-the-differences-between-subversion-and-git.md | 4 ++-- .../using-submodules-with-github-pages.md | 2 +- .../changing-a-commit-message.md | 2 +- .../commit-exists-on-github-but-not-in-my-local-clone.md | 6 +++--- .../releasing-projects-on-github/about-releases.md | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md index 241c1ce56ce4..4c80bd3f5270 100644 --- a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md +++ b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md @@ -186,7 +186,7 @@ After using either the BFG tool or `git filter-repo` to remove the sensitive dat {% endif %} -1. Tell your collaborators to [rebase](https://git-scm.com/book/en/Git-Branching-Rebasing), _not_ merge, any branches they created off of your old (tainted) repository history. One merge commit could reintroduce some or all of the tainted history that you just went to the trouble of purging. +1. Tell your collaborators to [rebase](https://git-scm.com/book/en/v2/Git-Branching-Rebasing), _not_ merge, any branches they created off of your old (tainted) repository history. One merge commit could reintroduce some or all of the tainted history that you just went to the trouble of purging. 1. If you used `git filter-repo`, you can skip this step. @@ -219,5 +219,5 @@ There are a few simple tricks to avoid committing things you don't want committe ## Further reading * [`git filter-repo` man page](https://htmlpreview.github.io/?https://github.com/newren/git-filter-repo/blob/docs/html/git-filter-repo.html) -* [Pro Git: Git Tools - Rewriting History](https://git-scm.com/book/en/Git-Tools-Rewriting-History) +* [Pro Git: Git Tools - Rewriting History](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History) * "[AUTOTITLE](/code-security/secret-scanning/introduction/about-secret-scanning)" diff --git a/content/get-started/getting-started-with-git/configuring-git-to-handle-line-endings.md b/content/get-started/getting-started-with-git/configuring-git-to-handle-line-endings.md index ad92835faeef..5a46547226dc 100644 --- a/content/get-started/getting-started-with-git/configuring-git-to-handle-line-endings.md +++ b/content/get-started/getting-started-with-git/configuring-git-to-handle-line-endings.md @@ -138,7 +138,7 @@ To ensure that all the line endings in your repository match your new configurat ## Further reading -* [Customizing Git - Git Attributes](https://git-scm.com/book/en/Customizing-Git-Git-Attributes) in the Pro Git book +* [Customizing Git - Git Attributes](https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes) in the Pro Git book * [git-config](https://git-scm.com/docs/git-config) in the man pages for Git -* [Getting Started - First-Time Git Setup](https://git-scm.com/book/en/Getting-Started-First-Time-Git-Setup) in the Pro Git book +* [Getting Started - First-Time Git Setup](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup) in the Pro Git book * [Mind the End of Your Line](http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/) by [Tim Clem](https://github.com/tclem) diff --git a/content/get-started/getting-started-with-git/managing-remote-repositories.md b/content/get-started/getting-started-with-git/managing-remote-repositories.md index 755e90f52fdc..6fdab1b6af26 100644 --- a/content/get-started/getting-started-with-git/managing-remote-repositories.md +++ b/content/get-started/getting-started-with-git/managing-remote-repositories.md @@ -248,4 +248,4 @@ Check that you've correctly typed the remote name. ## Further reading -* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) +* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) diff --git a/content/get-started/getting-started-with-git/setting-your-username-in-git.md b/content/get-started/getting-started-with-git/setting-your-username-in-git.md index 27f8dd3f36ce..5d39fcc17de5 100644 --- a/content/get-started/getting-started-with-git/setting-your-username-in-git.md +++ b/content/get-started/getting-started-with-git/setting-your-username-in-git.md @@ -57,4 +57,4 @@ Changing the name associated with your Git commits using `git config` will only ## Further reading * "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address)" -* ["Git Configuration" from the _Pro Git_ book](https://git-scm.com/book/en/Customizing-Git-Git-Configuration) +* ["Git Configuration" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration) diff --git a/content/get-started/using-git/about-git-rebase.md b/content/get-started/using-git/about-git-rebase.md index df0b98cadbd8..fd5f69289bdc 100644 --- a/content/get-started/using-git/about-git-rebase.md +++ b/content/get-started/using-git/about-git-rebase.md @@ -104,7 +104,7 @@ Breaking this information, from top to bottom, we see that: ## Further reading * "[AUTOTITLE](/get-started/using-git/using-git-rebase-on-the-command-line)" -* [The "Git Branching" chapter from the _Pro Git_ book](https://git-scm.com/book/en/Git-Branching-Rebasing) -* [The "Interactive Rebasing" chapter from the _Pro Git_ book](https://git-scm.com/book/en/Git-Tools-Rewriting-History#_changing_multiple) +* [The "Git Branching" chapter from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Branching-Rebasing) +* [The "Interactive Rebasing" chapter from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#_changing_multiple) * "[Squashing commits with rebase](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)" * "[AUTOTITLE](/desktop/working-with-your-remote-repository-on-github-or-github-enterprise/syncing-your-branch-in-github-desktop)" in the {% data variables.product.prodname_desktop %} documentation diff --git a/content/get-started/using-git/getting-changes-from-a-remote-repository.md b/content/get-started/using-git/getting-changes-from-a-remote-repository.md index d2aca2b65587..d1adc675f501 100644 --- a/content/get-started/using-git/getting-changes-from-a-remote-repository.md +++ b/content/get-started/using-git/getting-changes-from-a-remote-repository.md @@ -90,5 +90,5 @@ to take the branch back to where it was in before you pulled. ## Further reading -* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes){% ifversion fpt or ghec %} +* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes){% ifversion fpt or ghec %} * "[AUTOTITLE](/get-started/using-github/troubleshooting-connectivity-problems)"{% endif %} diff --git a/content/get-started/using-git/pushing-commits-to-a-remote-repository.md b/content/get-started/using-git/pushing-commits-to-a-remote-repository.md index 4b1adc888cde..b877e466cd0b 100644 --- a/content/get-started/using-git/pushing-commits-to-a-remote-repository.md +++ b/content/get-started/using-git/pushing-commits-to-a-remote-repository.md @@ -112,7 +112,7 @@ For more information on working with forks, see "[AUTOTITLE](/pull-requests/coll ## Further reading -* [The "Remotes" chapter from the "Pro Git" book](https://git-scm.com/book/ch5-2.html) +* [The "Remotes" chapter from the "Pro Git" book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) * [`git remote` main page](https://git-scm.com/docs/git-remote.html) * "[AUTOTITLE](/get-started/getting-started-with-git/git-cheatsheet)" * "[AUTOTITLE](/get-started/getting-started-with-git/git-workflows)" diff --git a/content/get-started/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git.md b/content/get-started/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git.md index 88b449569d1b..2453eb049e99 100644 --- a/content/get-started/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git.md +++ b/content/get-started/working-with-subversion-on-github/what-are-the-differences-between-subversion-and-git.md @@ -49,7 +49,7 @@ A _subproject_ is a project that's developed and managed somewhere outside of yo In SVN, a subproject is called an _SVN external_. In Git, it's called a _Git submodule_. Although conceptually similar, Git submodules are not kept up-to-date automatically; you must explicitly ask for a new version to be brought into your project. -For more information, see "[Git Tools Submodules](https://git-scm.com/book/en/Git-Tools-Submodules)" in the Git documentation. +For more information, see "[Git Tools Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)" in the Git documentation. ## Preserving history @@ -65,5 +65,5 @@ SVN is configured to assume that the history of a project never changes. Git all ## Further reading -* ["Branching and Merging" from the _Git SCM_ book](https://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging) +* ["Branching and Merging" from the _Git SCM_ book](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging) * "[AUTOTITLE](/migrations/importing-source-code/using-the-command-line-to-import-source-code/importing-a-subversion-repository)" diff --git a/content/pages/getting-started-with-github-pages/using-submodules-with-github-pages.md b/content/pages/getting-started-with-github-pages/using-submodules-with-github-pages.md index 36fe771d85b7..bf9a213d7c4c 100644 --- a/content/pages/getting-started-with-github-pages/using-submodules-with-github-pages.md +++ b/content/pages/getting-started-with-github-pages/using-submodules-with-github-pages.md @@ -22,5 +22,5 @@ Use the `https://` read-only URL for your submodules, including nested submodule ## Further reading -* "[Git Tools - Submodules](https://git-scm.com/book/en/Git-Tools-Submodules)" from the _Pro Git_ book +* "[Git Tools - Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)" from the _Pro Git_ book * "[AUTOTITLE](/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites)" diff --git a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md index e7049d5ce04f..af2aea1662b2 100644 --- a/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md +++ b/content/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/changing-a-commit-message.md @@ -33,7 +33,7 @@ The new commit and message will appear on {% data variables.location.product_loc {% tip %} -You can change the default text editor for Git by changing the `core.editor` setting. For more information, see "[Basic Client Configuration](https://git-scm.com/book/en/Customizing-Git-Git-Configuration#_basic_client_configuration)" in the Git manual. +You can change the default text editor for Git by changing the `core.editor` setting. For more information, see "[Basic Client Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#_basic_client_configuration)" in the Git manual. {% endtip %} diff --git a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md index e9d8859ca2ea..e22125bc79a3 100644 --- a/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md +++ b/content/pull-requests/committing-changes-to-your-project/troubleshooting-commits/commit-exists-on-github-but-not-in-my-local-clone.md @@ -43,7 +43,7 @@ You can use `git fetch upstream` to get information from a repository you've for {% tip %} -**Tip**: For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. +**Tip**: For more information, read about [managing remotes and fetching data](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) in the [Pro Git](https://git-scm.com/book) book. {% endtip %} @@ -87,5 +87,5 @@ Avoid force pushing to a repository unless absolutely necessary. This is especia ## Further reading -* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Basics-Working-with-Remotes) -* ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery) +* ["Working with Remotes" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) +* ["Data Recovery" from the _Pro Git_ book](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery) diff --git a/content/repositories/releasing-projects-on-github/about-releases.md b/content/repositories/releasing-projects-on-github/about-releases.md index b2d7a41e6138..8253bf623b53 100644 --- a/content/repositories/releasing-projects-on-github/about-releases.md +++ b/content/repositories/releasing-projects-on-github/about-releases.md @@ -20,7 +20,7 @@ topics: Releases are deployable software iterations you can package and make available for a wider audience to download and use. -Releases are based on [Git tags](https://git-scm.com/book/en/Git-Basics-Tagging), which mark a specific point in your repository's history. A tag date may be different than a release date since they can be created at different times. For more information about viewing your existing tags, see "[AUTOTITLE](/repositories/releasing-projects-on-github/viewing-your-repositorys-releases-and-tags)." +Releases are based on [Git tags](https://git-scm.com/book/en/v2/Git-Basics-Tagging), which mark a specific point in your repository's history. A tag date may be different than a release date since they can be created at different times. For more information about viewing your existing tags, see "[AUTOTITLE](/repositories/releasing-projects-on-github/viewing-your-repositorys-releases-and-tags)." You can receive notifications when new releases are published in a repository without receiving notifications about other updates to the repository. For more information, see "[AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions)." From b8adf7148682d46929b5f14fd956066b8067f1dc Mon Sep 17 00:00:00 2001 From: eden Date: Mon, 7 Oct 2024 08:41:16 +0100 Subject: [PATCH 53/73] Remove examples from intro (#52536) --- .../removing-sensitive-data-from-a-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md index 4c80bd3f5270..6bb8c0fdef9f 100644 --- a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md +++ b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md @@ -1,6 +1,6 @@ --- title: Removing sensitive data from a repository -intro: 'If you commit sensitive data, such as a password or SSH key into a Git repository, you can remove it from the history.' +intro: 'If you commit sensitive data into a Git repository, you can remove it from the history.' redirect_from: - /remove-sensitive-data - /removing-sensitive-data From 1fd4ff15401554499b6937b4b5b79caff0f92446 Mon Sep 17 00:00:00 2001 From: Chris Smowton Date: Mon, 7 Oct 2024 08:41:38 +0100 Subject: [PATCH 54/73] Document CodeQL Golang extractor options (#52487) Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- .../codeql-code-scanning-for-compiled-languages.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md index b001cc2bfe6e..2f93484ed8bb 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md @@ -417,6 +417,12 @@ The `autobuild` process attempts to autodetect a suitable way to install the dep {% endnote %} +### Extractor options for Go + +By default, test code (code in files ending in `_test.go`) is not analyzed. You can override this with the option `--extractor-option extract_tests=true` when using the {% data variables.product.prodname_codeql_cli %}, or by setting the environment variable `CODEQL_EXTRACTOR_GO_OPTION_EXTRACT_TESTS` to `true`. + +Additionally, `vendor` directories are excluded from {% data variables.product.prodname_codeql %} Go analysis by default. You can override this by passing the `--extractor-option extract_vendor_dirs=true` option when using the {% data variables.product.prodname_codeql_cli %}, or by setting the environment variable `CODEQL_EXTRACTOR_GO_OPTION_EXTRACT_VENDOR_DIRS` to `true`. + ## Building Java and Kotlin {% ifversion codeql-no-build %}{% data variables.product.prodname_codeql %} supports the following build modes. From 9d13e610078903d707da897d0234d944e600661e Mon Sep 17 00:00:00 2001 From: Chad Bentz <1760475+felickz@users.noreply.github.com> Date: Mon, 7 Oct 2024 03:52:42 -0400 Subject: [PATCH 55/73] Refactor removed list item, adding back (#52485) --- ...ring-advanced-setup-for-code-scanning-with-codeql-at-scale.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning-with-codeql-at-scale.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning-with-codeql-at-scale.md index 9990322f83c6..b0d97945169a 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning-with-codeql-at-scale.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning-with-codeql-at-scale.md @@ -33,6 +33,7 @@ For repositories that are not eligible for default setup, you can use a bulk con 1. Use one of the example scripts or create a custom script to add the workflow to each repository in the group. * PowerShell example: [`jhutchings1/Create-ActionsPRs`](https://github.com/jhutchings1/Create-ActionsPRs) repository * NodeJS example: [`nickliffen/ghas-enablement`](https://github.com/NickLiffen/ghas-enablement) repository + * Python example: [`Malwarebytes/ghas-cli`](https://github.com/Malwarebytes/ghas-cli) repository {% ifversion codeql-model-packs-org %} From 9940ab2b9576962bd84966a7ecc97e7e4bea102b Mon Sep 17 00:00:00 2001 From: Anne-Marie <102995847+am-stead@users.noreply.github.com> Date: Mon, 7 Oct 2024 08:54:19 +0100 Subject: [PATCH 56/73] [Fast follow] Secret scanning renaming secondary inbox to 'experimental' (previously 'other') [GA] (#52537) --- .../secret-scanning-default-alert-view.png | Bin 0 -> 110858 bytes .../viewing-alerts.md | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 assets/images/help/security/secret-scanning-default-alert-view.png diff --git a/assets/images/help/security/secret-scanning-default-alert-view.png b/assets/images/help/security/secret-scanning-default-alert-view.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc7f7f309ff712127e4ab97547f1df16c081ff0 GIT binary patch literal 110858 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 Date: Mon, 7 Oct 2024 08:58:41 +0100 Subject: [PATCH 57/73] Adds content explaining different flags used for C# analysis (#52484) Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- ...ql-code-scanning-for-compiled-languages.md | 20 ++++++++++++++ .../c-sharp-compiler-unexpectedly-failing.md | 26 +++++++++++++++++++ .../troubleshooting-code-scanning/index.md | 1 + 3 files changed, 47 insertions(+) create mode 100644 content/code-security/code-scanning/troubleshooting-code-scanning/c-sharp-compiler-unexpectedly-failing.md diff --git a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md index 2f93484ed8bb..4231fa5d9e95 100644 --- a/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md +++ b/content/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages.md @@ -349,6 +349,26 @@ You can ensure a more accurate analysis by taking the following steps: | Operating system | Windows, macOS, and Linux | | Build system | .NET and MSbuild, as well as build scripts | +### C# compiler flags injected by {% data variables.product.prodname_codeql %} + +>[!NOTE] The following compiler flags only apply if you're using build mode `manual`. + +The {% data variables.product.prodname_codeql %} tracer enables the extraction of all compiled languages by intercepting build processes and forwarding information to the relevant {% data variables.product.prodname_codeql %} language extractors. The tracer injects certain flags into the C# compiler invocation to ensure every component is built and included in the {% data variables.product.prodname_codeql %} database, which may cause your C# code to build in a different way to what you expect during {% data variables.product.prodname_codeql %} analysis. + +#### `/p:MvcBuildViews=true` + +When this option is set to `true`, the views in ASP.NET model-view-controller (MVC) projects are precompiled as part of the build process, which can help to catch errors and improve performance. The tracer injects this flag to make sure {% data variables.product.prodname_codeql %} finds and highlights security issues that may involve dataflow through the code generated from these views. For more information, see "[Adding a View to an MVC Application](https://learn.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/adding-a-view)" in Microsoft Learn. + +#### `/p:UseSharedCompilation=false` + +Setting this option to `false` disables the use of the shared compilation feature, which may result in slower build times. When `/p:UseSharedCompilation=false` is **not** specified, `msbuild` starts a compiler server process, and all the compilation will be done by that single process. However, the {% data variables.product.prodname_codeql %} tracer depends on inspecting the arguments of newly created processes. + +#### `/p:EmitCompilerGeneratedFiles=true` + +Setting this option to `true` will emit compiler-generated files during the build process. This option causes the compiler to generate additional source files that are used to support features such as improved regular expression support, serialization, and web application view generation. These generated artifacts are typically not written to disk by the compiler, but setting the option to `true` forces writing the files to disk, and so the extractor can process the files. + +For some legacy projects, and projects that use `.sqlproj` files, you may see that the injected `/p:EmitCompilerGeneratedFiles=true` property causes unexpected issues with `msbuild`. For information about troubleshooting this, see "[AUTOTITLE](/code-security/code-scanning/troubleshooting-code-scanning/c-sharp-compiler-unexpectedly-failing)." + ### Windows autodetection The `autobuild` process attempts to autodetect a suitable build method for C# using the following approach: diff --git a/content/code-security/code-scanning/troubleshooting-code-scanning/c-sharp-compiler-unexpectedly-failing.md b/content/code-security/code-scanning/troubleshooting-code-scanning/c-sharp-compiler-unexpectedly-failing.md new file mode 100644 index 000000000000..240e0a38fc39 --- /dev/null +++ b/content/code-security/code-scanning/troubleshooting-code-scanning/c-sharp-compiler-unexpectedly-failing.md @@ -0,0 +1,26 @@ +--- +title: 'C# compiler unexpectedly failing' +shortTitle: 'C# compiler failing' +allowTitleToDifferFromFilename: true +intro: 'If your MSBuild C# compilation is unexpectedly failing, you may need to amend your application project file.' +versions: + fpt: '*' + ghes: '*' + ghec: '*' +--- + +## About these errors + +The {% data variables.product.prodname_codeql %} tracer injects some flags into the C# compiler invocation to ensure every component is built and included in the {% data variables.product.prodname_codeql %} database, which may cause your C# code to build differently to what you expect during {% data variables.product.prodname_codeql %} analysis. See "[AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages)." + +`/p:EmitCompilerGeneratedFiles=true` is one of the injected properties, and emits compiler-generated files during the build process. This option causes the compiler to generate additional files that are used to support features such as improved regular expression support, serialization, and web application view generation. These generated artifacts are typically not written to disk by the compiler, but setting the option to `true` forces writing the files to disk, and so the extractor can process the files. + +For some legacy projects, and projects that use `.sqlproj` files, you may see that the injected `/p:EmitCompilerGeneratedFiles=true` property causes unexpected issues with `msbuild`. + +## Confirming the cause of the problem + +If you have set the "treat warnings as errors" flag, then `msbuild` will produce an error, which will cause the extraction to fail. + +## Fixing the problem + +You should add the `` element to the application's project file. For more information, see "[Understanding the project file](https://learn.microsoft.com/en-us/aspnet/web-forms/overview/deployment/web-deployment-in-the-enterprise/understanding-the-project-file)" in Microsoft Learn. diff --git a/content/code-security/code-scanning/troubleshooting-code-scanning/index.md b/content/code-security/code-scanning/troubleshooting-code-scanning/index.md index 9b771f93c55e..29c76568c830 100644 --- a/content/code-security/code-scanning/troubleshooting-code-scanning/index.md +++ b/content/code-security/code-scanning/troubleshooting-code-scanning/index.md @@ -19,6 +19,7 @@ children: - /alerts-in-generated-code - /analysis-takes-too-long - /automatic-build-failed + - /c-sharp-compiler-unexpectedly-failing - /cannot-enable-codeql-in-a-private-repository - /default-setup-fails-with-a-language - /enabling-default-setup-takes-too-long From 543abb3fb962eb45e15056faf4f99a10cb61ff4b Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:18:10 +0200 Subject: [PATCH 58/73] Enterprise bug fix hour for week of September 23, 2024 (#52477) --- .../saml-configuration-reference.md | 9 +-------- .../adding-organization-members-to-a-team.md | 4 +++- data/reusables/enterprise_management_console/privacy.md | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md b/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md index 35b2c3669982..267a32d70de4 100644 --- a/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md +++ b/content/admin/managing-iam/iam-configuration-reference/saml-configuration-reference.md @@ -140,11 +140,4 @@ If you define a customized session duration value less than 24 hours, {% data va To prevent authentication errors, we recommend a minimum session duration of 4 hours. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-saml-for-enterprise-iam/troubleshooting-saml-authentication#users-are-repeatedly-redirected-to-authenticate)." {% endif %} -{% note %} - -**Notes**: - -* For Microsoft Entra ID (previously known as Azure AD), the configurable lifetime policy for SAML tokens does not control session timeout for {% data variables.product.product_name %}. -* Okta does not currently send the `SessionNotOnOrAfter` attribute during SAML authentication with {% data variables.product.product_name %}. For more information, contact Okta. - -{% endnote %} +>[!NOTE] For Microsoft Entra ID (previously known as Azure AD), the configurable lifetime policy for SAML tokens does not control session timeout for {% data variables.product.product_name %}. diff --git a/content/organizations/organizing-members-into-teams/adding-organization-members-to-a-team.md b/content/organizations/organizing-members-into-teams/adding-organization-members-to-a-team.md index b3636e2121a5..b382e81644e5 100644 --- a/content/organizations/organizing-members-into-teams/adding-organization-members-to-a-team.md +++ b/content/organizations/organizing-members-into-teams/adding-organization-members-to-a-team.md @@ -43,7 +43,9 @@ shortTitle: Add members to a team ## Mapping teams to LDAP groups (for instances using LDAP Sync for user authentication) -A team that's [synced to an LDAP group](/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap#enabling-ldap-sync) is indicated with a special LDAP badge. The member list for an LDAP synced team can only be managed from the LDAP group it's mapped to. +You can create a team with LDAP Sync enabled. See "[AUTOTITLE](/organizations/organizing-members-into-teams/creating-a-team#creating-teams-with-ldap-sync-enabled)." + +A team that's synced to an LDAP group is indicated with a special LDAP badge. The member list for an LDAP synced team can only be managed from the LDAP group it's mapped to. See "[AUTOTITLE](/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap#enabling-ldap-sync)." To add a new member to a team synced to an LDAP group, add the user as a member of the LDAP group, or contact your LDAP administrator. diff --git a/data/reusables/enterprise_management_console/privacy.md b/data/reusables/enterprise_management_console/privacy.md index 625bd02c88e3..f7de58c0a47f 100644 --- a/data/reusables/enterprise_management_console/privacy.md +++ b/data/reusables/enterprise_management_console/privacy.md @@ -1 +1 @@ -1. In the "Settings" sidebar, click **Privacy**. +1. In the "Settings" sidebar, click **Privacy** and uncheck **Privacy mode**. From b786e9d0a6dda4baa84472dfbd50a9d448656324 Mon Sep 17 00:00:00 2001 From: Andrew Eisenberg Date: Mon, 7 Oct 2024 01:18:59 -0700 Subject: [PATCH 59/73] Update setting up CodeQL docs (#52436) --- .../setting-up-the-codeql-cli.md | 44 ++++++++++--------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md index c95802d62d89..2d3bb67f517f 100644 --- a/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md +++ b/content/code-security/codeql-cli/getting-started-with-the-codeql-cli/setting-up-the-codeql-cli.md @@ -64,39 +64,41 @@ Extract the {% data variables.product.prodname_codeql_cli %} tar archive to a di After you extract the {% data variables.product.prodname_codeql_cli %} bundle, you can run the following command to verify that the CLI is correctly configured to create and analyze databases: -* `codeql resolve qlpacks` if `//codeql` is on the `PATH`. -* `//codeql/codeql resolve qlpacks` otherwise. +* `codeql resolve packs` if `//codeql` is on the `PATH`. +* `//codeql/codeql resolve packs` otherwise. -You should see output similar to the extract below, if successful: +If successful, you should see output similar to the extract below: ```shell -codeql/cpp-all (//qlpacks/codeql/cpp-all/) -codeql/cpp-examples (//qlpacks/codeql/cpp-examples/) -codeql/cpp-queries (//qlpacks/codeql/cpp-queries/) -codeql/csharp-all (//qlpacks/codeql/charp-all/) -codeql/csharp-examples (//qlpacks/codeql/charp-examples/) -codeql/csharp-queries (//qlpacks/codeql/charp-queries/) -codeql/java-all (//qlpacks/codeql/java-all/) -codeql/java-examples (//qlpacks/codeql/java-examples/) -codeql/java-queries (//qlpacks/codeql/java-queries/) -codeql/javascript-all (//qlpacks/codeql/javascript-all/) -codeql/javascript-examples (//qlpacks/codeql/javascript-examples/) -codeql/javascript-queries (//qlpacks/codeql/javascript-queries/) -codeql/python-all (//qlpacks/codeql/python-all/) -codeql/python-examples (//qlpacks/codeql/python-examples/) -codeql/python-queries (//qlpacks/codeql/python-queries/) -codeql/ruby-all (//qlpacks/codeql/ruby-all/) -codeql/ruby-examples (//qlpacks/codeql/ruby-examples/) -codeql/ruby-queries (//qlpacks/codeql/ruby-queries/) +Searching directories specified by `--additional-packs`. All directories have equal priority. + Searching in: + No packs were found at this location. +Searching directories specified by `--search-path`. Directories are searched in order. +Searching the root of the CodeQL distribution. + Searching in: + + The following packs were found: + codeql/java-all@: (library) /qlpacks/codeql/javat-all//qlpack.yml + codeql/java-queries@: (query) /qlpacks/codeql/java-queries//qlpack.yml + codeql/javascript-all@: (library) /qlpacks/codeql/javascript-all//qlpack.yml + codeql/javascript-queries@: (query) /qlpacks/codeql/javascript-queries//qlpack.yml + codeql/swift-all@: (library) /qlpacks/codeql/swift-all//qlpack.yml + codeql/swift-queries@: (query) /qlpacks/codeql/swift-queries//qlpack.yml ... ``` +The results have been truncated for brevity. The actual results will be longer and more detailed. + You should check that the output contains the expected languages and also that the directory location for the qlpack files is correct. The location should be within the extracted {% data variables.product.prodname_codeql_cli %} bundle, shown in the earlier example as ``. If the {% data variables.product.prodname_codeql_cli %} is unable to locate the qlpacks for the expected languages, check that you downloaded the {% data variables.product.prodname_codeql %} bundle and not a standalone copy of the {% data variables.product.prodname_codeql_cli %}. You can also run `codeql resolve languages` to show which languages are available for database creation. This will list the languages supported by default in your {% data variables.product.prodname_codeql_cli %} package. Optionally, you can download some CodeQL packs containing pre-compiled queries you would like to run. For more information, see "[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/customizing-analysis-with-codeql-packs)." +The `codeql resolve packs` command is useful for diagnosing problems when the {% data variables.product.prodname_codeql_cli %} is unable to locate query packs that you expect to be available for analysis. + +>[!NOTE] The `codeql resolve packs` command is available in the {% data variables.product.prodname_codeql_cli %} versions 2.19.0 and later. For earlier versions of the CLI, you should run the `codeql resolve qlpacks` command, which produces similar, but less detailed output. + ## Next steps To learn how to prepare your code to be analyzed by the {% data variables.product.prodname_codeql_cli %}, see "[AUTOTITLE](/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis)." From a10cd727d140863574a10a0950263d6e8189909f Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:20:18 +0200 Subject: [PATCH 60/73] [Improvement]: Add step to Copilot cancellation flow on configuring policies (#52460) Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- data/reusables/copilot/disable-copilot-organization.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/data/reusables/copilot/disable-copilot-organization.md b/data/reusables/copilot/disable-copilot-organization.md index ff5730b4cd1c..6ccaba32fc9c 100644 --- a/data/reusables/copilot/disable-copilot-organization.md +++ b/data/reusables/copilot/disable-copilot-organization.md @@ -1,5 +1,8 @@ {% data reusables.profile.access_org %} {% data reusables.profile.org_settings %} 1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "copilot" aria-hidden="true" %} {% data variables.product.prodname_copilot_short %}**, and then click **Access**. + + >[!IMPORTANT] If you have not configured all policies for {% data variables.product.prodname_copilot_short %}, you will not be able to complete the following steps. If that is the case, click **Go to policies** and ensure all policies are configured before proceeding. + 1. Under {% ifversion ghec %}"{% data variables.product.prodname_copilot_enterprise_short %} is active in your organization" or {% endif %}"{% data variables.product.prodname_copilot_business_short %} is active in your organization," to revoke {% data variables.product.prodname_copilot %} access for all users in your organization, select **Disabled**. -1. In the "Remove Copilot access" dialog, click **Confirm and remove seats**. +1. In the "Remove {% data variables.product.prodname_copilot_short %} access" dialog, click **Confirm and remove seats**. From 172df952d13eae447069342a0fec3285aceadd0c Mon Sep 17 00:00:00 2001 From: vaindil Date: Mon, 7 Oct 2024 04:25:09 -0400 Subject: [PATCH 61/73] Fix pull request review wording (#52315) Co-authored-by: Joy <105074214+ArcticEagL@users.noreply.github.com> --- data/reusables/repositories/request-changes-tips.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/repositories/request-changes-tips.md b/data/reusables/repositories/request-changes-tips.md index 1c058e294e20..2088eb6e0cec 100644 --- a/data/reusables/repositories/request-changes-tips.md +++ b/data/reusables/repositories/request-changes-tips.md @@ -1,7 +1,7 @@ {% tip %} **Tips**: -* If a collaborator with `admin`, `owner`, or `write` access to the repository submits a review requesting changes, the pull request cannot be merged until the same collaborator submits another review approving the changes in the pull request. +* The **Request changes** option is purely informational and will not prevent merging unless a ruleset or classic branch protection rule is configured with the "require a pull request" option. If configured and a collaborator with `admin`, `owner`, or `write` access to the repository submits a review requesting changes, the pull request cannot be merged until the same collaborator submits another review approving the changes in the pull request. * Repository owners and administrators can merge a pull request even if it hasn't received an approving review, or if a reviewer who requested changes has left the organization or is unavailable. * If both required reviews and stale review dismissal are enabled and a code-modifying commit is pushed to the branch of an approved pull request, the approval is dismissed. The pull request must be reviewed and approved again before it can be merged. * When several open pull requests each have a head branch pointing to the same commit, you won’t be able to merge them if one or both have a pending or rejected review. From 7454d17710fc42561ef8d1b0643fc5ef5b630bac Mon Sep 17 00:00:00 2001 From: Gaurav Ketkar <9720857+gaurav-ketkar@users.noreply.github.com> Date: Mon, 7 Oct 2024 01:25:31 -0700 Subject: [PATCH 62/73] Update viewing-and-updating-support-tickets.md (#52533) --- .../viewing-and-updating-support-tickets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/support/contacting-github-support/viewing-and-updating-support-tickets.md b/content/support/contacting-github-support/viewing-and-updating-support-tickets.md index 72721cffa1fa..c5c6323022a7 100644 --- a/content/support/contacting-github-support/viewing-and-updating-support-tickets.md +++ b/content/support/contacting-github-support/viewing-and-updating-support-tickets.md @@ -16,7 +16,7 @@ topics: {% data reusables.support.zendesk-old-tickets %} -You can use the {% data variables.contact.contact_landing_page_portal %} to view current and past support tickets and respond to {% data variables.contact.github_support %}. After 120 days, resolved tickets are archived{% ifversion ghec or ghes %}, and archived tickets can only be viewed for enterprise accounts{% endif %}. +You can use the {% data variables.contact.contact_landing_page_portal %} to view current and past support tickets and respond to {% data variables.contact.github_support %}. After 120 days, resolved tickets are archived, and archived tickets can only be viewed for enterprise accounts. Your capabilities in the {% data variables.contact.landing_page_portal %} depend on the account you select when you submit a ticket.{% ifversion ghes or ghec %} If you select an enterprise account, your role in the enterprise also affects your capabilities. From 351608617bc2de1890f06096a1ff68dab3cfec29 Mon Sep 17 00:00:00 2001 From: Steve-Glass <84886334+Steve-Glass@users.noreply.github.com> Date: Mon, 7 Oct 2024 04:25:40 -0400 Subject: [PATCH 63/73] remove supported region and update NSG template (#52399) Co-authored-by: Felicity Chapman --- .../actions/azure-vnet-procedures-prereqs.md | 12 ------------ .../actions/azure-vnet-supported-regions.md | 3 --- 2 files changed, 15 deletions(-) diff --git a/data/reusables/actions/azure-vnet-procedures-prereqs.md b/data/reusables/actions/azure-vnet-procedures-prereqs.md index 3354efe0324c..b17cab8b3d02 100644 --- a/data/reusables/actions/azure-vnet-procedures-prereqs.md +++ b/data/reusables/actions/azure-vnet-procedures-prereqs.md @@ -213,18 +213,6 @@ You will use a script to automate configuring your Azure resources. destinationAddressPrefixes: [] } } - { - name: 'DenyInternetOutBoundOverwrite' - properties: { - protocol: '*' - sourcePortRange: '*' - destinationPortRange: '*' - sourceAddressPrefix: '*' - destinationAddressPrefix: 'Internet' - access: 'Deny' - priority: 400 - direction: 'Outbound' - } } ] } diff --git a/data/reusables/actions/azure-vnet-supported-regions.md b/data/reusables/actions/azure-vnet-supported-regions.md index 1dc5667bb260..021a96bf7742 100644 --- a/data/reusables/actions/azure-vnet-supported-regions.md +++ b/data/reusables/actions/azure-vnet-supported-regions.md @@ -7,7 +7,6 @@ The {% data variables.product.prodname_actions %} service supports a subset of a
  • WestUs3
  • CentralUs
  • NorthCentralUs
  • -
  • SouthCentralUs
  • AustraliaEast
  • JapanEast
  • FranceCentral
  • @@ -25,7 +24,6 @@ Azure private networking supports GPU runners in the following regions. * `EastUs` * `WestUs` * `NorthCentralUs` -* `SouthCentralUs` Azure private networking supports arm64 runners in the following regions. @@ -34,6 +32,5 @@ Azure private networking supports arm64 runners in the following regions. * `WestUs2` * `WestUs3` * `NorthCentralUs` -* `SouthCentralUs` If your desired region is not supported, please submit a request for new region availability in [this GitHub form](https://resources.github.com/private-networking-for-github-hosted-runners-with-azure-virtual-networks/). You may also use global virtual network peering to connect virtual networks across Azure regions. For more information, see [Virtual network peering](https://learn.microsoft.com/en-us/azure/virtual-network/virtual-network-peering-overview) in the Azure documentation. From 566209cddae3a5e619cee6ed128573b2ce7b83f5 Mon Sep 17 00:00:00 2001 From: Dan Hardej Date: Mon, 7 Oct 2024 16:25:47 +0800 Subject: [PATCH 64/73] Add gated feature conditions for artefact attestations (#52285) Co-authored-by: Ben Ahmady <32935794+subatoi@users.noreply.github.com> --- ...g-artifact-attestations-to-establish-provenance-for-builds.md | 1 + data/reusables/gated-features/attestations.md | 1 + 2 files changed, 2 insertions(+) create mode 100644 data/reusables/gated-features/attestations.md diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md b/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md index 2c998f276042..a0fa57db6d49 100644 --- a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md +++ b/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md @@ -1,6 +1,7 @@ --- title: Using artifact attestations to establish provenance for builds intro: Artifact attestations enable you to increase the supply chain security of your builds by establishing where and how your software was built. +product: '{% data reusables.gated-features.attestations %}' versions: fpt: '*' ghec: '*' diff --git a/data/reusables/gated-features/attestations.md b/data/reusables/gated-features/attestations.md new file mode 100644 index 000000000000..d84e777be5cb --- /dev/null +++ b/data/reusables/gated-features/attestations.md @@ -0,0 +1 @@ +Artifact attestations are available in public repositories for all current {% data variables.product.prodname_dotcom %} plans. They are not available on legacy plans, such as Bronze, Silver, or Gold. {% ifversion fpt %}If you are on a {% data variables.product.prodname_free_user %}, {% data variables.product.prodname_pro %}, or {% data variables.product.prodname_team %} plan, artefact attestations are only available for public repositories. To use artifact attestations in private or internal repositories, you must be on a {% data variables.product.prodname_ghe_cloud %} plan. {% endif %} From 68435ebcd9e46cf117219be83db26ca1fc0c752d Mon Sep 17 00:00:00 2001 From: chiph Date: Mon, 7 Oct 2024 03:26:18 -0500 Subject: [PATCH 65/73] Add instructions for site admins - removal of sensitive data on GHES (#49238) Co-authored-by: hubwriter Co-authored-by: Felicity Chapman Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- ...moving-sensitive-data-from-a-repository.md | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md index 6bb8c0fdef9f..255c201ccab9 100644 --- a/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md +++ b/content/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository.md @@ -180,7 +180,7 @@ To illustrate how `git filter-repo` works, we'll show you how to remove your fil After using either the BFG tool or `git filter-repo` to remove the sensitive data and pushing your changes to {% data variables.product.product_name %}, you must take a few more steps to fully remove the data from {% data variables.product.product_name %}. -1. Contact {% data variables.contact.contact_support %}, and ask to remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %}. Please provide the name of the repository and/or a link to the commit you need removed.{% ifversion ghes %} For more information about how site administrators can remove unreachable Git objects, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-repo-gc)."{% endif %}{% ifversion fpt or ghec %} +1. Contact {% data variables.contact.contact_support %}, and ask to remove cached views and references to the sensitive data in pull requests on {% data variables.product.product_name %}. Please provide the name of the repository and/or a link to the commit you need removed.{% ifversion ghes %} For more information about how site administrators can remove unreachable Git objects, see "[AUTOTITLE](/admin/configuration/configuring-your-enterprise/command-line-utilities#ghe-repo-gc)." For more information about how site administrators can identify reachable commits, see "[Identifying reachable commits](#identifying-reachable-commits)."{% endif %}{% ifversion fpt or ghec %} > [!IMPORTANT] {% data variables.contact.github_support %} won't remove non-sensitive data, and will only assist in the removal of sensitive data in cases where we determine that the risk can't be mitigated by rotating affected credentials. @@ -204,6 +204,44 @@ After using either the BFG tool or `git filter-repo` to remove the sensitive dat > [!NOTE] You can also achieve this by pushing your filtered history to a new or empty repository and then making a fresh clone from {% data variables.product.product_name %}. +{% ifversion ghes %} + +## Identifying reachable commits + +To fully remove unwanted or sensitive data from a repository, the commit that first introduced the data needs to be completely unreferenced in branches, tags, pull requests, and forks. A single reference anywhere will prevent garbage collection from being able to purge the data completely. + +You can check for existing references by using the following commands when connected to the appliance via SSH. You'll need the SHA of the commit that originally introduced the sensitive data. + +```shell +ghe-repo OWNER/REPOSITORY -c 'git ref-contains COMMIT_SHA_NUMBER' +ghe-repo OWNER/REPOSITORY -c 'cd ../network.git && git ref-contains COMMIT_SHA_NUMBER' +``` + +If either of those commands return any results, you'll need to remove those references before the commit can be successfully garbage collected. The second command will identify references that exist in forks of the repository (if the repository has no forks, you may skip running it). + +* Results beginning with `refs/heads/` or `refs/tags/` indicate branches and tags respectively which still contain references to the offending commit, suggesting that the modified repository was not fully cleaned of the commit, or that it was not force-pushed. +* Results beginning with `refs/pull/` or `refs/__gh__/pull` indicate pull requests that reference the offending commit. These pull requests need to be deleted in order to allow the commit to be garbage collected. A pull request can be deleted in the site admin dashboard at `https://HOSTNAME/stafftools/repositories/OWNER/REPOSITORY/PULL_REQUESTS/`, replacing `` with the pull request number. + +If references are found in any forks, the results will look similar, but will start with `refs/remotes/NWO/`. To identify the fork by name, you can run the following command. + +```shell +ghe-nwo NWO +``` + +The same procedure using the BFG tool or `git filter-repo` can be used to remove the sensitive data from the repository's forks. Alternatively, the forks can be deleted altogether, and if needed, the repository can be re-forked once the cleanup of the root repository is complete. + +Once you have removed the commit's references, re-run the commands to double-check. + +If there are no results from either of the `ref-contains` commands, you can run garbage collection with the `--prune` flag to remove the unreferenced commits by running the following command. + +```shell +ghe-repo-gc -v --prune OWNER/REPOSITORY +``` + +Once garbage collection has successfully removed the commit, you'll want to browse to the repository's site admin dashboard at `https://HOSTNAME/stafftools/repositories/OWNER/REPOSITORY`, select **Network**, then click **Invalidate Git cache** to remove any cached data. + +{% endif %} + ## Avoiding accidental commits in the future Preventing contributors from making accidental commits can help you prevent sensitive information from being exposed. For more information see "[AUTOTITLE](/code-security/getting-started/best-practices-for-preventing-data-leaks-in-your-organization)." From 91da314d5424690a90e55be2832813853c67eeb5 Mon Sep 17 00:00:00 2001 From: Felicity Chapman Date: Mon, 7 Oct 2024 09:26:30 +0100 Subject: [PATCH 66/73] Update the titles and introductions of code security transparency content to meet guidelines (#52495) --- .../introduction-to-code-scanning/about-code-scanning.md | 2 +- .../disabling-autofix-for-code-scanning.md | 2 +- .../code-scanning/managing-code-scanning-alerts/index.md | 2 +- .../managing-code-scanning-alerts-for-your-repository.md | 2 +- ...canning.md => responsible-use-autofix-code-scanning.md} | 6 ++++-- .../triaging-code-scanning-alerts-in-pull-requests.md | 4 ++-- .../secret-scanning/introduction/about-secret-scanning.md | 4 ++-- .../managing-alerts-from-secret-scanning/about-alerts.md | 2 +- .../managing-alerts-from-secret-scanning/viewing-alerts.md | 2 +- .../defining-custom-patterns-for-secret-scanning.md | 2 +- ...ting-regular-expressions-for-custom-patterns-with-ai.md | 2 +- .../custom-patterns/index.md | 2 +- ...ns-with-ai.md => responsible-use-ai-regex-generator.md} | 6 ++++-- .../enabling-ai-powered-generic-secret-detection.md | 2 +- .../generic-secret-detection/index.md | 2 +- ...ecret-scanning.md => responsible-ai-generic-secrets.md} | 7 +++++-- ...uring-global-security-settings-for-your-organization.md | 4 ++-- .../security-overview/viewing-security-insights.md | 6 +++--- 18 files changed, 33 insertions(+), 26 deletions(-) rename content/code-security/code-scanning/managing-code-scanning-alerts/{about-autofix-for-codeql-code-scanning.md => responsible-use-autofix-code-scanning.md} (97%) rename content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/{about-generating-regular-expressions-with-ai.md => responsible-use-ai-regex-generator.md} (92%) rename content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/{about-the-detection-of-generic-secrets-with-secret-scanning.md => responsible-ai-generic-secrets.md} (93%) diff --git a/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning.md b/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning.md index 9764a23a836f..cd63a6ff7ac4 100644 --- a/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning.md +++ b/content/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning.md @@ -29,7 +29,7 @@ If {% data variables.product.prodname_code_scanning %} finds a potential vulnera {% ifversion code-scanning-autofix %} -{% data variables.product.prodname_copilot_autofix %} will suggest fixes for alerts from {% data variables.product.prodname_codeql %} analysis in private repositories, allowing developers to prevent and reduce vulnerabilities with less effort. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +{% data variables.product.prodname_copilot_autofix %} will suggest fixes for alerts from {% data variables.product.prodname_codeql %} analysis in private repositories, allowing developers to prevent and reduce vulnerabilities with less effort. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." {% endif %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/disabling-autofix-for-code-scanning.md b/content/code-security/code-scanning/managing-code-scanning-alerts/disabling-autofix-for-code-scanning.md index 1a0690d14ab6..b339f6a0426b 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/disabling-autofix-for-code-scanning.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/disabling-autofix-for-code-scanning.md @@ -16,7 +16,7 @@ topics: ## About disabling {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_code_scanning %} -{% data variables.product.prodname_copilot_autofix %} is a {% data variables.product.prodname_copilot %}-powered is an expansion of {% data variables.product.prodname_code_scanning %} that provides users with targeted recommendations to help them fix {% data variables.product.prodname_code_scanning %} alerts so they can avoid introducing new security vulnerabilities. To learn more about {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_code_scanning %}, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +{% data variables.product.prodname_copilot_autofix %} is a {% data variables.product.prodname_copilot %}-powered is an expansion of {% data variables.product.prodname_code_scanning %} that provides users with targeted recommendations to help them fix {% data variables.product.prodname_code_scanning %} alerts so they can avoid introducing new security vulnerabilities. To learn more about {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_code_scanning %}, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." {% data reusables.rai.code-scanning.copilot-autofix-note %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/index.md b/content/code-security/code-scanning/managing-code-scanning-alerts/index.md index 9c35377af5d9..d0f0f9a74e77 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/index.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/index.md @@ -13,7 +13,7 @@ topics: - CodeQL children: - /about-code-scanning-alerts - - /about-autofix-for-codeql-code-scanning + - /responsible-use-autofix-code-scanning - /disabling-autofix-for-code-scanning - /managing-code-scanning-alerts-for-your-repository - /triaging-code-scanning-alerts-in-pull-requests diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository.md b/content/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository.md index 0cfd17a1addc..0f74048c7a94 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/managing-code-scanning-alerts-for-your-repository.md @@ -136,7 +136,7 @@ Alternatively, to track a {% data variables.product.prodname_code_scanning %} al ## Generating suggested fixes for {% data variables.product.prodname_code_scanning %} alerts -{% data variables.product.prodname_copilot_autofix %} can generate fixes for alerts from {% data variables.product.prodname_codeql %} analysis. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +{% data variables.product.prodname_copilot_autofix %} can generate fixes for alerts from {% data variables.product.prodname_codeql %} analysis. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." {% data reusables.rai.code-scanning.copilot-autofix-note %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning.md b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md similarity index 97% rename from content/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning.md rename to content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md index a58be2312237..1e49cb31592f 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning.md @@ -1,7 +1,7 @@ --- -title: About Copilot Autofix for CodeQL code scanning +title: Responsible use of Copilot Autofix for code scanning shortTitle: Copilot Autofix for code scanning -intro: Learn how GitHub uses AI to suggest potential fixes for {% data variables.product.prodname_code_scanning %} alerts found by {% data variables.product.prodname_codeql %}. +intro: Learn how GitHub uses AI to suggest potential fixes for {% data variables.product.prodname_code_scanning %} alerts and find out how best to mitigate limitations in the AI suggestions. allowTitleToDifferFromFilename: true product: '{% data reusables.rai.code-scanning.gated-feature-autofix %}' versions: @@ -12,6 +12,8 @@ topics: - Code scanning - CodeQL - AI +redirect_from: + - /code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning --- ## About {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %} diff --git a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md index 284295fce06d..b5b741b73e91 100644 --- a/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md +++ b/content/code-security/code-scanning/managing-code-scanning-alerts/triaging-code-scanning-alerts-in-pull-requests.md @@ -128,7 +128,7 @@ Anyone with push access to a pull request can fix a {% data variables.product.pr ### Generating {% data variables.product.prodname_copilot_autofix_short %} suggestions and publishing to a pull request -When {% data variables.product.prodname_copilot_autofix_short %} is enabled for a repository, alerts are displayed in pull requests as normal and information from any alerts found by {% data variables.product.prodname_codeql %} is automatically sent to the LLM for processing. When LLM analysis is complete, any results are published as comments on relevant alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +When {% data variables.product.prodname_copilot_autofix_short %} is enabled for a repository, alerts are displayed in pull requests as normal and information from any alerts found by {% data variables.product.prodname_codeql %} is automatically sent to the LLM for processing. When LLM analysis is complete, any results are published as comments on relevant alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." {% note %} @@ -145,7 +145,7 @@ Usually, when you suggest changes to a pull request, your comment contains chang ### Assessing and committing an {% data variables.product.prodname_copilot_autofix_short %} suggestion -Each {% data variables.product.prodname_copilot_autofix_short %} suggestion demonstrates a potential solution for a {% data variables.product.prodname_code_scanning %} alert in your codebase. You must assess the suggested changes to determine whether they are a good solution for your codebase and to ensure that they maintain the intended behavior. For information about the limitations of {% data variables.product.prodname_copilot_autofix_short %} suggestions, see "[Limitations of suggestions](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning#limitations-of-suggestions)" and "[Mitigating the limitations of suggestions](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning#mitigating-the-limitations-of-suggestions)" in "About {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}." +Each {% data variables.product.prodname_copilot_autofix_short %} suggestion demonstrates a potential solution for a {% data variables.product.prodname_code_scanning %} alert in your codebase. You must assess the suggested changes to determine whether they are a good solution for your codebase and to ensure that they maintain the intended behavior. For information about the limitations of {% data variables.product.prodname_copilot_autofix_short %} suggestions, see "[Limitations of suggestions](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning#limitations-of-suggestions)" and "[Mitigating the limitations of suggestions](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning#mitigating-the-limitations-of-suggestions)" in "About {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_codeql %} {% data variables.product.prodname_code_scanning %}." 1. Click **Edit** to display the editing options and select your preferred method. * Under **Edit with {% data variables.product.prodname_cli %}**, follow the instructions for checking out the pull request locally and applying the suggested fix. diff --git a/content/code-security/secret-scanning/introduction/about-secret-scanning.md b/content/code-security/secret-scanning/introduction/about-secret-scanning.md index 3b8147990214..8514360667d6 100644 --- a/content/code-security/secret-scanning/introduction/about-secret-scanning.md +++ b/content/code-security/secret-scanning/introduction/about-secret-scanning.md @@ -108,7 +108,7 @@ Scan for and detect secrets that are not specific to a service provider, such as ### Generic secret detection -Leverage {% data variables.product.prodname_secret_scanning %}'s AI capabilities to detect unstructured secrets, such as passwords, in your repository. For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)." +Leverage {% data variables.product.prodname_secret_scanning %}'s AI capabilities to detect unstructured secrets, such as passwords, in your repository. For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets)." {% endif %} @@ -124,7 +124,7 @@ Define your own patterns for secrets used by your organization that {% data vari {% ifversion secret-scanning-custom-pattern-ai-generated %} -You can also leverage AI to generate regular expressions that will capture all your custom patterns. For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai)." +You can also leverage AI to generate regular expressions that will capture all your custom patterns. For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator)." {% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md index 112bb0fae4af..59de0ea9ac88 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/about-alerts.md @@ -66,4 +66,4 @@ Partner alerts are not sent to repository administrators, so you do not need to * "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns){% ifversion ghec or ghes %} * "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning)"{% endif %}{% ifversion secret-scanning-non-provider-patterns %} * "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/non-provider-patterns/enabling-secret-scanning-for-non-provider-patterns)"{% endif %}{% ifversion secret-scanning-ai-generic-secret-detection %} -* "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)"{% endif %} +* "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets)"{% endif %} diff --git a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md index 8698fdc41f77..a7a59be38467 100644 --- a/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md +++ b/content/code-security/secret-scanning/managing-alerts-from-secret-scanning/viewing-alerts.md @@ -110,7 +110,7 @@ You can apply various filters to the alerts list to help you find the alerts you |`provider:PROVIDER-NAME`|Displays alerts for a specific provider, for example, `provider:github`. For a list of supported partners, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#supported-secrets)."| | {% ifversion secret-scanning-non-provider-patterns %} | |{% ifversion secret-scanning-alert-experimental-list %}`results:default`{% else %}`confidence:high`{% endif %}| Displays alerts for {% ifversion secret-scanning-alert-experimental-list %}{% else %}high-confidence secrets, which relate to {% endif %}supported secrets and custom patterns. For a list of supported patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns)." | -|{% ifversion secret-scanning-alert-experimental-list %}`results:experimental`{% else %}`confidence:other`{% endif %}| Displays alerts for non-provider patterns, such as private keys{% ifversion secret-scanning-ai-generic-secret-detection %}, and AI-detected generic secrets, such as passwords{% endif %}. For a list of supported non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)." {% ifversion secret-scanning-ai-generic-secret-detection %}For more information about AI-detected generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)."{% endif %}| +|{% ifversion secret-scanning-alert-experimental-list %}`results:experimental`{% else %}`confidence:other`{% endif %}| Displays alerts for non-provider patterns, such as private keys{% ifversion secret-scanning-ai-generic-secret-detection %}, and AI-detected generic secrets, such as passwords{% endif %}. For a list of supported non-provider patterns, see "[AUTOTITLE](/code-security/secret-scanning/introduction/supported-secret-scanning-patterns#non-provider-patterns)." {% ifversion secret-scanning-ai-generic-secret-detection %}For more information about AI-detected generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets)."{% endif %}| | {% endif %} | ## Next steps diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning.md index 8c6396a2d8a1..29e9da6a59c8 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning.md @@ -46,7 +46,7 @@ For simple tokens you will usually only need to specify a secret format. The oth ### Using the regular expression generator -{% data reusables.secret-scanning.regular-expression-generator-overview %} For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai)" and "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai)." +{% data reusables.secret-scanning.regular-expression-generator-overview %} For more information, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator)" and "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai)." {% endif %} diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai.md index b8144155c074..81fa5b401ee5 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/generating-regular-expressions-for-custom-patterns-with-ai.md @@ -44,4 +44,4 @@ redirect_from: ## Further reading -* "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai)" +* "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator)" diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/index.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/index.md index 779f371f9327..49bf9b0940a6 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/index.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/index.md @@ -14,7 +14,7 @@ topics: children: - /defining-custom-patterns-for-secret-scanning - /managing-custom-patterns - - /about-generating-regular-expressions-with-ai + - /responsible-use-ai-regex-generator - /generating-regular-expressions-for-custom-patterns-with-ai - /metrics-for-custom-patterns --- diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator.md similarity index 92% rename from content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai.md rename to content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator.md index e087bdaf2ed7..7d769deb386c 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/responsible-use-ai-regex-generator.md @@ -1,8 +1,9 @@ --- -title: About generating regular expressions with AI +title: Responsible use of AI to define regular expressions shortTitle: Generate regular expressions with AI -intro: 'You can define your own custom patterns to extend the capabilities of {% data variables.product.prodname_secret_scanning %} by generating one or more regular expressions for each pattern, using the {% data variables.secret-scanning.custom-pattern-regular-expression-generator %}.' +intro: 'Learn about the capabilities and limitations of the {% data variables.secret-scanning.custom-pattern-regular-expression-generator %} in helping you to define custom patterns to extend the capabilities of {% data variables.product.prodname_secret_scanning %}.' product: '{% data reusables.gated-features.secret-scanning %}' +allowTitleToDifferFromFilename: true versions: feature: secret-scanning-custom-pattern-ai-generated fpt: '*' @@ -14,6 +15,7 @@ topics: redirect_from: - /code-security/secret-scanning/about-the-regular-expression-generator-for-custom-patterns - /code-security/secret-scanning/about-generating-regular-expressions-with-ai + - /code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/about-generating-regular-expressions-with-ai --- diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/enabling-ai-powered-generic-secret-detection.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/enabling-ai-powered-generic-secret-detection.md index 7fb698011111..2542acdf76d6 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/enabling-ai-powered-generic-secret-detection.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/enabling-ai-powered-generic-secret-detection.md @@ -42,5 +42,5 @@ For information on how to view alerts for generic secrets that have been detecte ## Further reading -* [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning) +* [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets) * [AUTOTITLE](/code-security/secret-scanning/introduction/about-secret-scanning) diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/index.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/index.md index 7604bae5926b..73d0c0525152 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/index.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/index.md @@ -11,6 +11,6 @@ topics: - Advanced Security - Repositories children: - - /about-the-detection-of-generic-secrets-with-secret-scanning + - /responsible-ai-generic-secrets - /enabling-ai-powered-generic-secret-detection --- diff --git a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning.md b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets.md similarity index 93% rename from content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning.md rename to content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets.md index 14dfbce70698..3ba29ecca3f1 100644 --- a/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning.md +++ b/content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets.md @@ -1,7 +1,9 @@ --- -title: About the detection of generic secrets with secret scanning +title: Responsible detection of generic secrets with AI shortTitle: Generic secret detection -intro: 'Learn how {% data variables.product.prodname_secret_scanning %} uses AI to scan and create alerts for unstructured secrets, such as passwords.' +intro: 'Learn how {% data variables.product.prodname_secret_scanning %} uses AI responsibly to scan and create alerts for unstructured secrets, such as passwords.' +product: '{% data reusables.gated-features.secret-scanning %}' +allowTitleToDifferFromFilename: true versions: feature: secret-scanning-ai-generic-secret-detection fpt: '*' @@ -12,6 +14,7 @@ topics: - AI redirect_from: - /code-security/secret-scanning/about-the-detection-of-generic-secrets-with-secret-scanning + - /code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning --- diff --git a/content/code-security/securing-your-organization/enabling-security-features-in-your-organization/configuring-global-security-settings-for-your-organization.md b/content/code-security/securing-your-organization/enabling-security-features-in-your-organization/configuring-global-security-settings-for-your-organization.md index 45736c981363..75ce70c497db 100644 --- a/content/code-security/securing-your-organization/enabling-security-features-in-your-organization/configuring-global-security-settings-for-your-organization.md +++ b/content/code-security/securing-your-organization/enabling-security-features-in-your-organization/configuring-global-security-settings-for-your-organization.md @@ -81,7 +81,7 @@ You can customize several {% data variables.product.prodname_global_settings %} ### Enabling {% data variables.product.prodname_copilot_autofix_short %} for {% data variables.product.prodname_codeql %} -You can select **{% data variables.product.prodname_copilot_autofix_short %}** to enable {% data variables.product.prodname_copilot_autofix_short %} for all the repositories in your organization that use {% data variables.product.prodname_codeql %} default setup or {% data variables.product.prodname_codeql %} advanced setup. {% data variables.product.prodname_copilot_autofix_short %} is an expansion of {% data variables.product.prodname_code_scanning %} that suggests fixes for {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +You can select **{% data variables.product.prodname_copilot_autofix_short %}** to enable {% data variables.product.prodname_copilot_autofix_short %} for all the repositories in your organization that use {% data variables.product.prodname_codeql %} default setup or {% data variables.product.prodname_codeql %} advanced setup. {% data variables.product.prodname_copilot_autofix_short %} is an expansion of {% data variables.product.prodname_code_scanning %} that suggests fixes for {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." {% endif %} @@ -115,7 +115,7 @@ You can choose to scan for non-provider patterns, such as private keys, to detec ### Generic secret detection -Generic secret detection is an AI-powered expansion of {% data variables.product.prodname_secret_scanning %} that scans and creates alerts for unstructured secrets, such as passwords. To enable these scans, select **Use AI detection to find additional secrets**. Be aware that generic secrets often have a higher rate of false positives than other types of alert. To learn more about generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/about-the-detection-of-generic-secrets-with-secret-scanning)." +Generic secret detection is an AI-powered expansion of {% data variables.product.prodname_secret_scanning %} that scans and creates alerts for unstructured secrets, such as passwords. To enable these scans, select **Use AI detection to find additional secrets**. Be aware that generic secrets often have a higher rate of false positives than other types of alert. To learn more about generic secrets, see "[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/generic-secret-detection/responsible-ai-generic-secrets)." {% data reusables.secret-scanning.generic-secret-detection-ai %} diff --git a/content/code-security/security-overview/viewing-security-insights.md b/content/code-security/security-overview/viewing-security-insights.md index f67e96f1ac09..31225a10139d 100644 --- a/content/code-security/security-overview/viewing-security-insights.md +++ b/content/code-security/security-overview/viewing-security-insights.md @@ -92,7 +92,7 @@ Keep in mind that the overview page tracks changes over time for security alert * [Detection tab](#detection-tab) * [Remediation tab](#remediation-tab) * [Prevention tab](#prevention-tab) - + Some metrics in the security overview dashboard include a trend indicator, which shows the percentage gain or loss for the chosen time period relative to previous period. For example, when you select a week with 10 alerts, if the previous week had 20 alerts, the trend indicator reports that the metric has dropped by 50%. If the average age of the open alerts is 15 days, and for the previous period it was 5 days, the trend indicator reports that the metric has risen by 200%. >[!NOTE] @@ -202,7 +202,7 @@ The "Vulnerabilities fixed in pull requests" metric shows the count of pull requ #### Pull request alerts fixed with {% data variables.product.prodname_copilot_autofix_short %} suggestions -{% data variables.product.prodname_copilot_autofix %} for {% data variables.product.prodname_code_scanning %} is an expansion of {% data variables.product.prodname_code_scanning %} that provides you with targeted recommendations to help you fix {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +{% data variables.product.prodname_copilot_autofix %} for {% data variables.product.prodname_code_scanning %} is an expansion of {% data variables.product.prodname_code_scanning %} that provides you with targeted recommendations to help you fix {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." The "Pull request alerts fixed with autofix suggestions" metric shows the ratio of accepted {% data variables.product.prodname_copilot_autofix_short %} suggestions to the total number of {% data variables.product.prodname_copilot_autofix_short %} suggestions on pull request alerts detected by {% data variables.product.prodname_codeql %}. @@ -284,7 +284,7 @@ Alerts that are reopened and re-closed during the chosen time period are ignored ### {% data variables.product.prodname_copilot_autofix_short %} suggestions -{% data variables.product.prodname_copilot_autofix %} is an expansion of {% data variables.product.prodname_code_scanning %} that provides you with targeted recommendations to help you fix {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/about-autofix-for-codeql-code-scanning)." +{% data variables.product.prodname_copilot_autofix %} is an expansion of {% data variables.product.prodname_code_scanning %} that provides you with targeted recommendations to help you fix {% data variables.product.prodname_code_scanning %} alerts. For more information, see "[AUTOTITLE](/code-security/code-scanning/managing-code-scanning-alerts/responsible-use-autofix-code-scanning)." The "{% data variables.product.prodname_copilot_autofix_short %} suggestions" metric is the total number of {% data variables.product.prodname_copilot_autofix_short %} suggestions generated in open and closed pull requests during the chosen time period. From 2b410f553649a7f438dfdd61b9afbd6317264b6f Mon Sep 17 00:00:00 2001 From: Sophie <29382425+sophietheking@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:26:50 +0200 Subject: [PATCH 67/73] [Core / Unowned] Reduce usage of `{% data variables.product.prodname_dotcom_the_website %}` (#52069) Co-authored-by: Vanessa Co-authored-by: Felicity Chapman --- .../signing-in-with-a-passkey.md | 2 +- .../about-authentication-to-github.md | 4 ++-- .../switching-between-accounts.md | 2 +- ...-github-using-two-factor-authentication.md | 2 +- .../configuring-two-factor-authentication.md | 2 +- ...uthentication-for-your-personal-account.md | 2 +- ...io-subscriptions-with-github-enterprise.md | 6 +++--- ...io-subscriptions-with-github-enterprise.md | 2 +- .../about-per-user-pricing.md | 6 +++--- .../connecting-an-azure-subscription.md | 4 ++-- .../index.md | 2 +- ...n-and-usage-for-your-enterprise-account.md | 2 +- ...out-community-management-and-moderation.md | 4 ++-- ...ntributions-to-your-project-with-labels.md | 2 +- .../using-git-on-github-docs.md | 20 +++++++++---------- .../creating-a-local-environment.md | 2 +- .../troubleshooting-your-environment.md | 6 +++--- ...sing-markdown-and-liquid-in-github-docs.md | 2 +- .../using-yaml-frontmatter.md | 6 +++--- .../versioning-documentation.md | 8 ++++---- .../glossary.md | 2 +- ...-archive-of-your-personal-accounts-data.md | 4 ++-- .../contributing-to-a-project.md | 2 +- .../about-github-advanced-security.md | 2 +- .../learning-about-github/githubs-plans.md | 2 +- .../creating-an-account-on-github.md | 4 ++-- .../about-versions-of-github-docs.md | 2 +- .../migrating-from-projects-classic.md | 2 +- .../finding-your-projects.md | 2 +- ...tor-authentication-in-your-organization.md | 2 +- ...nviting-users-to-join-your-organization.md | 2 +- ...ng-a-former-member-of-your-organization.md | 4 ++-- ...saml-single-sign-on-and-scim-using-okta.md | 2 +- ...ml-single-sign-on-for-your-organization.md | 2 +- .../about-custom-domains-and-github-pages.md | 2 +- ...ng-dependency-changes-in-a-pull-request.md | 2 +- .../working-with-forks/fork-a-repo.md | 6 +++--- .../backing-up-a-repository.md | 2 +- .../repository-limits.md | 2 +- .../linking-to-releases.md | 2 +- .../about-github-code-search.md | 4 ++-- .../using-github-code-search.md | 14 ++++++------- .../searching-on-github/searching-code.md | 2 +- .../searching-github-marketplace.md | 6 +++--- ...count-from-your-github-sponsors-profile.md | 2 +- ...open-source-contributor-through-patreon.md | 8 ++++---- ...inking-your-patreon-account-from-github.md | 2 +- ...-started-with-the-github-support-portal.md | 2 +- .../about-ticket-priority.md | 4 ++-- .../accounts/unlinking-email-address.md | 2 +- .../github-community-guidelines-and-terms.md | 2 +- 51 files changed, 92 insertions(+), 92 deletions(-) diff --git a/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md b/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md index ce4375ce16a7..9a1d373ae758 100644 --- a/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md +++ b/content/authentication/authenticating-with-a-passkey/signing-in-with-a-passkey.md @@ -26,7 +26,7 @@ Some authenticators allow passkeys to be used with nearby devices. For example, ## Signing in with a passkey using a nearby device -1. Navigate to the login page for {% data variables.product.prodname_dotcom_the_website %} at {% ifversion fpt or ghec%}[https://github.com/login?passkey=true](https://github.com/login?passkey=true){% else %}`https://HOSTNAME/login?passkey=true`{% endif %}. +1. Navigate to the login page for {% data variables.product.prodname_dotcom %} at {% ifversion fpt or ghec%}[https://github.com/login?passkey=true](https://github.com/login?passkey=true){% else %}`https://HOSTNAME/login?passkey=true`{% endif %}. 1. Click **{% octicon "passkey-fill" aria-hidden="true" %} Sign in with a passkey**. 1. Follow the prompts on your browser or platform to select a passkey that is accessible as a nearby device (such as a phone or a tablet). 1. Continue to follow the prompts to start the authentication process. For example, you might choose to scan a QR code, or trigger a push notification to the nearby device. diff --git a/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md b/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md index cf9452bebd6f..16d775747322 100644 --- a/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md +++ b/content/authentication/keeping-your-account-and-data-secure/about-authentication-to-github.md @@ -30,7 +30,7 @@ You can access your resources in {% data variables.product.product_name %} in a If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you will authenticate to {% data variables.product.product_name %} in your browser using your IdP. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users#authenticating-as-a-managed-user){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %} -If you're not a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you will authenticate using your {% data variables.product.prodname_dotcom_the_website %} username and password{% ifversion passkeys %}, or a passkey{% endif %}. You may also use two-factor authentication and SAML single sign-on, which can be required by organization and enterprise owners. +If you're not a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you will authenticate using your {% data variables.product.prodname_dotcom %} username and password{% ifversion passkeys %}, or a passkey{% endif %}. You may also use two-factor authentication and SAML single sign-on, which can be required by organization and enterprise owners. {% else %} @@ -53,7 +53,7 @@ If you need to use multiple accounts on {% data variables.location.product_locat * If you have not enabled 2FA, {% data variables.product.product_name %} may ask for additional verification when you first sign in from a new or unrecognized device, such as a new browser profile, a browser where the cookies have been deleted, or a new computer. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/verifying-new-devices-when-signing-in)."{% endif %} * **Two-factor authentication (2FA)** (recommended) * If you enable 2FA, after you successfully enter your username and password, we'll also prompt you to provide a code that's generated by a time-based one time password (TOTP) application on your mobile device{% ifversion fpt or ghec %} or sent as a text message (SMS).{% endif %}{% ifversion 2fa-check-up-period %} - * After you configure 2FA, your account enters a check up period for 28 days. You can leave the check up period by successfully performing 2FA within those 28 days. If you don't perform 2FA in that timespan, you'll then be asked to perform 2FA inside one of your existing {% data variables.product.prodname_dotcom_the_website %} sessions. + * After you configure 2FA, your account enters a check up period for 28 days. You can leave the check up period by successfully performing 2FA within those 28 days. If you don't perform 2FA in that timespan, you'll then be asked to perform 2FA inside one of your existing {% data variables.product.prodname_dotcom %} sessions. * If you cannot perform 2FA to pass the 28th day checkup, you will be provided a shortcut that lets you reconfigure your 2FA settings. You must reconfigure your settings before you can access the rest of {% data variables.product.prodname_dotcom %}{% endif %}. For more information, see "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication#providing-a-2fa-code-when-signing-in-to-the-website){% ifversion 2fa-check-up-period %}" and "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication){% endif %}." * In addition to authentication with a TOTP application{% ifversion fpt or ghec %} or a text message{% endif %}, you can optionally add an alternative method of authentication with {% ifversion fpt or ghec %}{% data variables.product.prodname_mobile %} or{% endif %} a security key using WebAuthn. For more information, see {% ifversion fpt or ghec %}"[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-github-mobile)" and {% endif %}"[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)." diff --git a/content/authentication/keeping-your-account-and-data-secure/switching-between-accounts.md b/content/authentication/keeping-your-account-and-data-secure/switching-between-accounts.md index 083b35869579..aa392720ac0d 100644 --- a/content/authentication/keeping-your-account-and-data-secure/switching-between-accounts.md +++ b/content/authentication/keeping-your-account-and-data-secure/switching-between-accounts.md @@ -1,6 +1,6 @@ --- title: 'Switching between accounts' -intro: 'Learn how to switch between multiple {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %} accounts and {% data variables.enterprise.prodname_managed_users %}{% else %}accounts{% endif %}.' +intro: 'Learn how to switch between multiple {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} accounts and {% data variables.enterprise.prodname_managed_users %}{% else %}accounts{% endif %}.' allowTitleToDifferFromFilename: true versions: feature: account-switcher diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md index d8ac757b8b53..cc6270fd1509 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/accessing-github-using-two-factor-authentication.md @@ -19,7 +19,7 @@ shortTitle: Access GitHub with 2FA {% ifversion 2fa-check-up-period %} -With two-factor authentication (2FA) enabled, you'll need to use a second factor when accessing {% data variables.product.product_name %} through your browser. When you first configure 2FA, your account will enter a check up period for 28 days to ensure your account's 2FA methods are setup correctly. You can exit the check up period by successfully performing 2FA within 28 days. If you don't authenticate within 28 days, you'll be asked to perform 2FA inside one of your existing {% data variables.product.prodname_dotcom_the_website %} sessions. If you cannot perform 2FA to pass the 28th day checkup, use the provided shortcut to reconfigure your 2FA settings and retain access to {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)." +With two-factor authentication (2FA) enabled, you'll need to use a second factor when accessing {% data variables.product.product_name %} through your browser. When you first configure 2FA, your account will enter a check up period for 28 days to ensure your account's 2FA methods are setup correctly. You can exit the check up period by successfully performing 2FA within 28 days. If you don't authenticate within 28 days, you'll be asked to perform 2FA inside one of your existing {% data variables.product.prodname_dotcom %} sessions. If you cannot perform 2FA to pass the 28th day checkup, use the provided shortcut to reconfigure your 2FA settings and retain access to {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication)." If you access {% data variables.product.product_name %} using other methods, such as the API or the command line, you'll authenticate using a token, application, or SSH key. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/about-authentication-to-github)." diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md index c66d1b7a13be..9331c16cf5c7 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md @@ -27,7 +27,7 @@ We strongly recommend using a time-based one-time password (TOTP) application to {% ifversion 2fa-check-up-period %} -After you configure 2FA, your account will enter a 28-day check up period. You can leave the check up period by successfully performing 2FA in those 28 days. Otherwise, you will be prompted to perform 2FA in an existing {% data variables.product.prodname_dotcom_the_website %} session on the 28th day. If you cannot perform 2FA to pass the checkup, you must use the provided shortcut to reconfigure your 2FA settings and retain access to {% data variables.product.prodname_dotcom_the_website %}. +After you configure 2FA, your account will enter a 28-day check up period. You can leave the check up period by successfully performing 2FA in those 28 days. Otherwise, you will be prompted to perform 2FA in an existing {% data variables.product.prodname_dotcom %} session on the 28th day. If you cannot perform 2FA to pass the checkup, you must use the provided shortcut to reconfigure your 2FA settings and retain access to {% data variables.product.prodname_dotcom %}. {% ifversion fpt or ghec %} diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account.md index 318ee301f466..00bf0a6e41c6 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/disabling-two-factor-authentication-for-your-personal-account.md @@ -27,7 +27,7 @@ shortTitle: Disable 2FA We strongly recommend using two-factor authentication (2FA) to secure your account. If you need to disable 2FA, we recommend re-enabling it as soon as possible. {% ifversion mandatory-2fa-dotcom-contributors %} -If you are part of the group that {% data variables.product.prodname_dotcom %} is requiring to enroll in 2FA in 2023, you cannot disable 2FA. A banner will display in your authentication settings to remind you that you are not allowed to disable 2FA. For more information about our 2023 2FA enrollment rollout for contributors to {% data variables.product.prodname_dotcom_the_website %}, see [this blog post](https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13). +If you are part of the group that {% data variables.product.prodname_dotcom %} is requiring to enroll in 2FA in 2023, you cannot disable 2FA. A banner will display in your authentication settings to remind you that you are not allowed to disable 2FA. For more information about our 2023 2FA enrollment rollout for contributors to {% data variables.product.prodname_dotcom %}, see [this blog post](https://github.blog/2023-03-09-raising-the-bar-for-software-security-github-2fa-begins-march-13). You can modify your existing 2FA configuration instead of disabling it entirely. For more information, see "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/changing-your-two-factor-authentication-method)." {% endif %} diff --git a/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/about-visual-studio-subscriptions-with-github-enterprise.md b/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/about-visual-studio-subscriptions-with-github-enterprise.md index fde906e4add1..f0ddedea1973 100644 --- a/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/about-visual-studio-subscriptions-with-github-enterprise.md +++ b/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/about-visual-studio-subscriptions-with-github-enterprise.md @@ -24,19 +24,19 @@ shortTitle: About {% data reusables.enterprise-accounts.vss-ghe-description %} {% data variables.visual_studio.prodname_vss_ghe %} is available from Microsoft under the terms of the Microsoft Enterprise Agreement. For more information, see [{% data variables.visual_studio.prodname_vss_ghe %}](https://visualstudio.microsoft.com/subscriptions/visual-studio-github/) on the {% data variables.product.prodname_vs %} website. -To use the {% data variables.product.prodname_enterprise %} portion of the license, each subscriber's personal account on {% data variables.product.prodname_dotcom_the_website %} must be or become a member of an organization owned by your enterprise on {% data variables.product.prodname_dotcom_the_website %}. To accomplish this, organization owners can invite new members to an organization by email address. The subscriber can accept the invitation with an existing personal account on {% data variables.product.prodname_dotcom_the_website %} or create a new account. +To use the {% data variables.product.prodname_enterprise %} portion of the license, each subscriber's personal account on {% data variables.product.prodname_dotcom %} must be or become a member of an organization owned by your enterprise on {% data variables.product.prodname_dotcom %}. To accomplish this, organization owners can invite new members to an organization by email address. The subscriber can accept the invitation with an existing personal account or create a new account. For more information about the setup of {% data variables.visual_studio.prodname_vss_ghe %}, see "[AUTOTITLE](/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise)." ## About licenses for {% data variables.visual_studio.prodname_vss_ghec %} -After you assign a license for {% data variables.visual_studio.prodname_vss_ghec %} to a subscriber, the subscriber will use the {% data variables.product.prodname_enterprise %} portion of the license by joining an organization in your enterprise with a personal account on {% data variables.product.prodname_dotcom_the_website %}. If the verified email address for the personal account of an enterprise member on {% data variables.product.prodname_dotcom_the_website %} matches the User Principal Name (UPN) for a subscriber to your {% data variables.product.prodname_vs %} account, the {% data variables.product.prodname_vs %} subscriber will automatically consume one license for {% data variables.visual_studio.prodname_vss_ghec %}. +After you assign a license for {% data variables.visual_studio.prodname_vss_ghec %} to a subscriber, the subscriber will use the {% data variables.product.prodname_enterprise %} portion of the license by joining an organization in your enterprise with a personal account on {% data variables.product.prodname_dotcom %}. If the verified email address for the personal account of an enterprise member on {% data variables.product.prodname_dotcom %} matches the User Principal Name (UPN) for a subscriber to your {% data variables.product.prodname_vs %} account, the {% data variables.product.prodname_vs %} subscriber will automatically consume one license for {% data variables.visual_studio.prodname_vss_ghec %}. > [!NOTE] For {% data variables.product.prodname_emu %} only, to make sure a user account consumes a {% data variables.product.prodname_vs %} license, ensure the {% data variables.product.prodname_vs %} UPN matches the SCIM `userName` attribute or the email address from the linked identity on the {% data variables.product.prodname_dotcom %} account. The total quantity of your licenses for your enterprise on {% data variables.product.prodname_dotcom %} is the sum of any standard {% data variables.product.prodname_enterprise %} licenses and the number of {% data variables.product.prodname_vs %} subscription licenses that include access to {% data variables.product.prodname_dotcom %}. If the personal account for an enterprise member does not correspond with the email address for a {% data variables.product.prodname_vs %} subscriber, the license that the personal account consumes is unavailable for a {% data variables.product.prodname_vs %} subscriber. -For more information about {% data variables.product.prodname_enterprise %}, see "[AUTOTITLE](/get-started/learning-about-github/githubs-plans#github-enterprise)." For more information about accounts on {% data variables.product.prodname_dotcom_the_website %}, see "[AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts)." +For more information about {% data variables.product.prodname_enterprise %}, see "[AUTOTITLE](/get-started/learning-about-github/githubs-plans#github-enterprise)." For more information about accounts on {% data variables.product.prodname_dotcom %}, see "[AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts)." You can view the number of {% data variables.product.prodname_enterprise %} licenses available to your enterprise on {% data variables.location.product_location %}. The list of pending invitations includes subscribers who are not yet members of at least one organization in your enterprise. For more information, see "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account)" and "[AUTOTITLE](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-and-outside-collaborators)." diff --git a/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise.md b/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise.md index 7b1865a4771c..2654a2b9d344 100644 --- a/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise.md +++ b/content/billing/managing-billing-for-your-products/managing-licenses-for-visual-studio-subscriptions-with-github-enterprise/setting-up-visual-studio-subscriptions-with-github-enterprise.md @@ -50,7 +50,7 @@ One person may be able to complete the tasks because the person has all of the r 1. If the subscription admin has not disabled email notifications, the subscriber will receive two confirmation emails. For more information, see [{% data variables.product.prodname_vs %} subscriptions with {% data variables.product.prodname_enterprise %}](https://docs.microsoft.com/en-us/visualstudio/subscriptions/access-github#what-is-the-visual-studio-subscription-with-github-enterprise-setup-process) in Microsoft Docs. -1. An organization owner must invite the subscriber to the organization on {% data variables.location.product_location %} from step 1. The subscriber can accept the invitation with an existing personal account on {% data variables.product.prodname_dotcom_the_website %} or create a new account. After the subscriber joins the organization, the subscriber becomes an enterprise member. For more information, see "[AUTOTITLE](/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization)." +1. An organization owner must invite the subscriber to the organization on {% data variables.location.product_location %} from step 1. The subscriber can accept the invitation with an existing personal account or create a new account. After the subscriber joins the organization, the subscriber becomes an enterprise member. For more information, see "[AUTOTITLE](/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization)." {% tip %} diff --git a/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md b/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md index 9ddad8720276..41c738a435bb 100644 --- a/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md +++ b/content/billing/managing-the-plan-for-your-github-account/about-per-user-pricing.md @@ -22,7 +22,7 @@ topics: {% data reusables.billing.about-billing %} For organizations, the "plan" component of the bill is based on the number of licensed seats you choose to purchase. -New organizations on {% data variables.product.prodname_dotcom_the_website %} can build public and open-source projects with {% data variables.product.prodname_free_team %}, or upgrade to a paid plan. See "[AUTOTITLE](/get-started/learning-about-github/githubs-plans)" and "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan)." +New organizations on {% data variables.product.prodname_dotcom %} can build public and open-source projects with {% data variables.product.prodname_free_team %}, or upgrade to a paid plan. See "[AUTOTITLE](/get-started/learning-about-github/githubs-plans)" and "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan)." >[!NOTE] Organizations who upgraded to a paid plan before May 11, 2016 can choose to stay on their existing per-repository plan or switch to per-user pricing. {% data variables.product.company_short %} will notify you twelve months before any mandated change to your subscription. For more information on switching your subscription, see "[AUTOTITLE](/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan)." @@ -111,7 +111,7 @@ If your enterprise does not use {% data variables.product.prodname_emus %}, you * Anyone with a pending invitation to become a billing manager * Anyone with a pending invitation to become an outside collaborator on a public repository owned by your organization * Guest collaborators who are not organization members (see "[AUTOTITLE](/enterprise-cloud@latest/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise#guest-collaborators)") -* Users of {% data variables.visual_studio.prodname_vss_ghe %} whose accounts on {% data variables.product.prodname_dotcom_the_website %} are not linked, and who do not meet any of the other criteria for per-user pricing +* Users of {% data variables.visual_studio.prodname_vss_ghe %} whose accounts on {% data variables.product.prodname_dotcom %} are not linked, and who do not meet any of the other criteria for per-user pricing * Users who have been provisioned with a {% data variables.enterprise.prodname_managed_user %}, but are not members of any organizations in the enterprise ### Accounts that consume a license on {% data variables.product.prodname_ghe_server %} @@ -146,7 +146,7 @@ For more information about per-user pricing for {% data variables.product.prodna {% else %} -If you use an enterprise account on {% data variables.product.prodname_dotcom_the_website %} and have questions about changes to your subscription, contact {% data variables.contact.contact_enterprise_sales %}. +If you use an enterprise account and have questions about changes to your subscription, contact {% data variables.contact.contact_enterprise_sales %}. {% endif %} diff --git a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md index cd676c5f580a..e16e7c20a25c 100644 --- a/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md +++ b/content/billing/managing-the-plan-for-your-github-account/connecting-an-azure-subscription.md @@ -34,7 +34,7 @@ If you use {% data variables.product.product_name %} through a Microsoft Enterpr {% ifversion fpt or ghec %} -## About usage-based billing on {% data variables.product.prodname_dotcom_the_website %} +## About usage-based billing on {% data variables.product.prodname_dotcom %} {% data variables.product.company_short %} provides usage-based billing for the following features and situations. You can learn more about billing and spending limits. @@ -160,7 +160,7 @@ After you disconnect your Azure subscription from your enterprise account, your ## Troubleshooting connection of an Azure subscription -You can troubleshoot some common issues with connection of an Azure subscription to your account on {% data variables.product.prodname_dotcom_the_website %}. +You can troubleshoot some common issues with connection of an Azure subscription to your account on {% data variables.product.prodname_dotcom %}. ### Message: "Need admin approval" diff --git a/content/billing/managing-the-plan-for-your-github-account/index.md b/content/billing/managing-the-plan-for-your-github-account/index.md index 916e121ec044..ffc54dc60b50 100644 --- a/content/billing/managing-the-plan-for-your-github-account/index.md +++ b/content/billing/managing-the-plan-for-your-github-account/index.md @@ -1,7 +1,7 @@ --- title: Managing the plan for your GitHub account shortTitle: Manage your plan -intro: "{% ifversion fpt %}You can upgrade, downgrade, and view pending changes to your account's plan at any time.{% elsif ghec or ghes %}You can manage billing for {% data variables.product.product_name %} from your enterprise account on {% data variables.product.prodname_dotcom_the_website %}.{% endif %}" +intro: "{% ifversion fpt %}You can upgrade, downgrade, and view pending changes to your account's plan at any time.{% elsif ghec or ghes %}You can manage billing for {% data variables.product.product_name %} from your enterprise account on {% data variables.product.prodname_dotcom %}.{% endif %}" redirect_from: - /github/setting-up-and-managing-billing-and-payments-on-github/managing-billing-for-your-github-account - /categories/97/articles diff --git a/content/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md b/content/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md index c0bc38c59902..debf8ea0d416 100644 --- a/content/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md +++ b/content/billing/managing-the-plan-for-your-github-account/viewing-the-subscription-and-usage-for-your-enterprise-account.md @@ -26,7 +26,7 @@ shortTitle: View subscription & usage You can view an overview of {% ifversion ghec %}your subscription and paid{% elsif ghes %}the license{% endif %} usage for {% ifversion ghec %}your{% elsif ghes %}the{% endif %} enterprise account on {% ifversion ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.location.product_location %}{% endif %}.{% ifversion ghec %} {% data reusables.enterprise.create-an-enterprise-account %} For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/managing-your-enterprise-account/creating-an-enterprise-account)."{% endif %} -For invoiced {% data variables.product.prodname_enterprise %} customers{% ifversion ghes %} who use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}{% endif %}, each invoice includes details about billed services for all products. For example, in addition to your usage for {% ifversion ghec %}{% data variables.product.prodname_ghe_cloud %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, you may have usage for {% data variables.product.prodname_GH_advanced_security %}{% ifversion ghec %}, {% elsif ghes %}. You may also have usage on {% data variables.product.prodname_dotcom_the_website %}, like {% endif %}paid licenses in organizations outside of your enterprise account, data packs for {% data variables.large_files.product_name_long %}, or subscriptions to apps in {% data variables.product.prodname_marketplace %}. For more information about invoices, see "[Managing invoices for your enterprise]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/billing/managing-the-plan-for-your-github-account/managing-invoices-for-your-enterprise){% ifversion ghec %}."{% elsif ghes %}" in the {% data variables.product.prodname_dotcom_the_website %} documentation.{% endif %} +For invoiced {% data variables.product.prodname_enterprise %} customers{% ifversion ghes %} who use both {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}{% endif %}, each invoice includes details about billed services for all products. For example, in addition to your usage for {% ifversion ghec %}{% data variables.product.prodname_ghe_cloud %}{% elsif ghes %}{% data variables.product.product_name %}{% endif %}, you may have usage for {% data variables.product.prodname_GH_advanced_security %}{% ifversion ghec %}, {% elsif ghes %}. You may also have usage on {% data variables.product.prodname_dotcom_the_website %}, like {% endif %}paid licenses in organizations outside of your enterprise account, data packs for {% data variables.large_files.product_name_long %}, or subscriptions to apps in {% data variables.product.prodname_marketplace %}. For more information about invoices, see "[Managing invoices for your enterprise]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/billing/managing-the-plan-for-your-github-account/managing-invoices-for-your-enterprise){% ifversion ghec %}."{% elsif ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% endif %} {% ifversion ghec %} diff --git a/content/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation.md b/content/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation.md index b0d52a626c93..14e860389e8b 100644 --- a/content/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation.md +++ b/content/communities/setting-up-your-project-for-healthy-contributions/about-community-management-and-moderation.md @@ -1,6 +1,6 @@ --- title: About community management and moderation -intro: '{% data variables.product.prodname_dotcom %} offers tools that help repository maintainers establish and enforce standards of behavior in their communities on {% data variables.product.prodname_dotcom_the_website %}.' +intro: '{% data variables.product.prodname_dotcom %} offers tools that help repository maintainers establish and enforce standards of behavior in their communities on {% data variables.product.prodname_dotcom %}.' versions: fpt: '*' ghec: '*' @@ -15,7 +15,7 @@ shortTitle: Management & moderation {% data reusables.policies.github-community-guidelines-and-terms %} -{% data variables.product.prodname_dotcom %} also offers tools for repository maintainers to define and enforce higher standards of behavior in their own communities on {% data variables.product.prodname_dotcom_the_website %}. +{% data variables.product.prodname_dotcom %} also offers tools for repository maintainers to define and enforce higher standards of behavior in their own communities on {% data variables.product.prodname_dotcom %}. Organization owners can specify organization members as moderators. This gives these members access to moderation features otherwise reserved for organization owners. For more information, see "[AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/managing-moderators-in-your-organization)." diff --git a/content/communities/setting-up-your-project-for-healthy-contributions/encouraging-helpful-contributions-to-your-project-with-labels.md b/content/communities/setting-up-your-project-for-healthy-contributions/encouraging-helpful-contributions-to-your-project-with-labels.md index 8e19e2c7d55d..2c3ea0887577 100644 --- a/content/communities/setting-up-your-project-for-healthy-contributions/encouraging-helpful-contributions-to-your-project-with-labels.md +++ b/content/communities/setting-up-your-project-for-healthy-contributions/encouraging-helpful-contributions-to-your-project-with-labels.md @@ -15,7 +15,7 @@ shortTitle: Encourage contributions You can apply the `good first issue` label to issues in your public repository so that people can find them when searching by labels. For more information about searching by labels, see "[AUTOTITLE](/search-github/searching-on-github/searching-issues-and-pull-requests#search-by-label)." -{% data variables.product.prodname_dotcom %} uses an algorithm to determine the most approachable issues in each repository and surface them in various places on {% data variables.product.prodname_dotcom_the_website %}. Adding the `good first issue` label can increase the likelihood that your issues are surfaced. +{% data variables.product.prodname_dotcom %} uses an algorithm to determine the most approachable issues in each repository and surface them in various places on {% data variables.product.prodname_dotcom %}. Adding the `good first issue` label can increase the likelihood that your issues are surfaced. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-issues %} diff --git a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md index 654df4f73a7e..7ddf10da3144 100644 --- a/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md +++ b/content/contributing/collaborating-on-github-docs/using-git-on-github-docs.md @@ -8,7 +8,7 @@ versions: This article describes the process of creating a topic branch for the documentation repository, committing changes, and pushing your changes back up to the remote repository. -The article assumes you have already cloned the documentation repository locally and you will be making changes on your local computer rather than on {% data variables.product.prodname_dotcom_the_website %} or in a codespace. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository?tool=webui)." +The article assumes you have already cloned the documentation repository locally and you will be making changes on your local computer rather than on {% data variables.product.prodname_dotcom %} or in a codespace. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository?tool=webui)." ## Setting up your topic branch and making changes @@ -99,17 +99,17 @@ To keep your local branches in sync with their remotes and avoid merge conflicts ```shell git commit -m "Commit message title (max 72 characters) - - Optional fuller description of what changed (no character limit). - Note the empty line between the title and the description, + + Optional fuller description of what changed (no character limit). + Note the empty line between the title and the description, and the closing quotation mark at the end of the commit message." ``` - This commits the staged changes locally. You can now push this commit, and any other unpushed commits, to the remote repository. + This commits the staged changes locally. You can now push this commit, and any other unpushed commits, to the remote repository. To remove this commit, use `git reset --soft HEAD~1`. After running this command our changes are no longer committed but the changed files remain in the staging area. You can make further changes and then `add` and `commit` again. -1. Push your changes to the remote repository on {% data variables.product.prodname_dotcom_the_website %}. +1. Push your changes to the remote repository on {% data variables.product.prodname_dotcom %}. * The first time you push your branch you can choose to add an upstream tracking branch. This allows you to use `git pull` and `git push` on that branch without additional arguments. @@ -135,7 +135,7 @@ To keep your local branches in sync with their remotes and avoid merge conflicts {% endnote %} * Make commit messages clear, detailed, and imperative. For example: "Adds a conceptual article about 2FA," not "Add info." * Try not to leave uncommitted changes in your local branch when you finish working for the day. Get to a good stopping point and commit and push your changes so your work is backed up to the remote repository. -* Only push up to {% data variables.product.prodname_dotcom_the_website %} after you've made a few commits. Pushing after every commit adds noise to our ops channels on Slack and causes unnecessary builds to run. +* Only push up to {% data variables.product.prodname_dotcom %} after you've made a few commits. Pushing after every commit adds noise to our ops channels on Slack and causes unnecessary builds to run. ## Resolving merge conflicts @@ -143,7 +143,7 @@ When you try to merge two branches that contain different changes to the same pa There are two ways to handle merge conflicts: * Edit the file in your text editor and choose which changes to keep. Then commit the updated file to your topic branch from the command line. -* [Resolve the merge conflicts on {% data variables.product.prodname_dotcom_the_website %}](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github). +* "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github)." ### Resolving merge conflicts by editing the file and committing the changes @@ -185,7 +185,7 @@ There are two ways to handle merge conflicts: git commit -m "Resolves merge conflicts" ``` -1. Push the committed changes to the remote repository on {% data variables.product.prodname_dotcom_the_website %}. +1. Push the committed changes to the remote repository on {% data variables.product.prodname_dotcom %}. ```shell git push @@ -197,7 +197,7 @@ We recommend you open your pull request on {% data variables.product.prodname_do {% note %} -**Note**: You can quickly access pull requests you've created by clicking **Pull requests** at the top of every page on {% data variables.product.prodname_dotcom_the_website %}. +**Note**: You can quickly access pull requests you've created by clicking **Pull requests** at the top of every page on {% data variables.product.prodname_dotcom %}. {% endnote %} diff --git a/content/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment.md b/content/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment.md index dca27b24fea5..8bba1b296ef8 100644 --- a/content/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment.md +++ b/content/contributing/setting-up-your-environment-to-work-on-github-docs/creating-a-local-environment.md @@ -10,7 +10,7 @@ versions: The {% data variables.product.prodname_docs %} site was originally a Ruby on Rails web application. Some time later it was converted into a static site powered by [Jekyll](https://jekyllrb.com/). A few years after that it was migrated to [Nanoc](https://nanoc.app/), another Ruby static site generator. -Today it's a dynamic Node.js webserver powered by Express, using middleware to support proper HTTP redirects, language header detection, and dynamic content generation to support the various flavors of {% data variables.product.company_short %}'s product documentation, like {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_ghe_server %}. +Today it's a dynamic Node.js webserver powered by Express, using middleware to support proper HTTP redirects, language header detection, and dynamic content generation to support the various flavors of {% data variables.product.company_short %}'s product documentation, like Free, Pro, & Team and {% data variables.product.prodname_ghe_server %}. The tooling for this site has changed over the years, but many of the tried-and-true authoring conventions of the original Jekyll site have been preserved. diff --git a/content/contributing/setting-up-your-environment-to-work-on-github-docs/troubleshooting-your-environment.md b/content/contributing/setting-up-your-environment-to-work-on-github-docs/troubleshooting-your-environment.md index 7d4d2462f872..26ef05cfa227 100644 --- a/content/contributing/setting-up-your-environment-to-work-on-github-docs/troubleshooting-your-environment.md +++ b/content/contributing/setting-up-your-environment-to-work-on-github-docs/troubleshooting-your-environment.md @@ -16,7 +16,7 @@ For more information, see "[AUTOTITLE](/contributing/setting-up-your-environment If a staging deployment is pending for more than ten minutes, try closing your pull request (without deleting the branch) and reopening it. This will trigger a new staging deployment. It won't break anything. If that doesn't work, use the commands below to trigger a new staging deployment by pushing an empty commit on the command line. - + ```shell git commit --allow-empty -m 'empty commit to redeploy staging' git push @@ -73,8 +73,8 @@ If the error does not include the location of the broken link, you will need to When you locate the broken link, make sure the link is versioned correctly. For example, if the article only exists for GHES version 3.8+, make sure the link is versioned for 3.8+. -If an article that is available for {% data variables.product.prodname_ghe_server %} links to a {% data variables.product.prodname_dotcom_the_website %}-only article, include the version in the path to prevent the URL from automatically converting to include a {% data variables.product.prodname_ghe_server %} version number. The following example demonstrates how to link from a {% data variables.product.prodname_ghe_server %} article to a {% data variables.product.prodname_dotcom_the_website %}-only article. - +If an article that is available for {% data variables.product.prodname_ghe_server %} links to a different version of {% data variables.product.prodname_docs %}, include the version in the path to prevent the URL from automatically converting to include a {% data variables.product.prodname_ghe_server %} version number. The following example demonstrates how to link from a {% data variables.product.prodname_ghe_server %} article to a Free, Pro, & Team version of an article. + ```text [{% raw %}{{ data variables.product.prodname_github_connect }} Addendum to the {{ data variables.product.prodname_enterprise }} License Agreement{% endraw %}](/free-pro-team@latest/articles/github-connect-addendum-to-the-github-enterprise-license-agreement/)" ``` diff --git a/content/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs.md b/content/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs.md index 397a7b429738..21035b8b9fbe 100644 --- a/content/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs.md +++ b/content/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs.md @@ -376,7 +376,7 @@ For example, if you include the following link in a content file: /github/writing-on-github/creating-a-saved-reply ``` -When viewed on {% data variables.product.prodname_dotcom_the_website %} docs, the link gets rendered with the language code: +When viewed on {% data variables.product.prodname_docs %}, the link gets rendered with the language code: ```text /en/github/writing-on-github/creating-a-saved-reply diff --git a/content/contributing/writing-for-github-docs/using-yaml-frontmatter.md b/content/contributing/writing-for-github-docs/using-yaml-frontmatter.md index f835fb67c02a..e79e3bba0d32 100644 --- a/content/contributing/writing-for-github-docs/using-yaml-frontmatter.md +++ b/content/contributing/writing-for-github-docs/using-yaml-frontmatter.md @@ -53,7 +53,7 @@ For more information about the different types of versioning, see "[Versioning d This frontmatter value is used by the docs site to generate "permalinks" for each version of an article. For more information, see [Permalinks](/contributing/writing-for-github-docs/using-markdown-and-liquid-in-github-docs#permalinks). -Example that applies to {% data variables.product.prodname_dotcom_the_website %} and recent versions of {% data variables.product.prodname_ghe_server %}: +Example that applies to Free, Pro, & Team and {% data variables.product.prodname_ghe_server %} version 3.11 and later: ```yaml title: About your personal dashboard @@ -62,7 +62,7 @@ versions: ghes: '>=3.11' ``` -Example that applies to all supported versions of {% data variables.product.prodname_ghe_server %}, but not {% data variables.product.prodname_dotcom_the_website %}: +Example that applies only to {% data variables.product.prodname_ghe_server %}: ```yaml title: Downloading your license @@ -70,7 +70,7 @@ versions: ghes: '*' ``` -You can also version a page for a range of releases. This would version the page for {% data variables.product.prodname_dotcom_the_website %}, and {% data variables.product.prodname_ghe_server %} versions 3.1 and 3.2 only: +You can also version a page for a range of releases. This would version the page for Free, Pro, & Team, and {% data variables.product.prodname_ghe_server %} versions 3.1 and 3.2 only: ```yaml versions: diff --git a/content/contributing/writing-for-github-docs/versioning-documentation.md b/content/contributing/writing-for-github-docs/versioning-documentation.md index bc1e8a1b2694..347622a71fc8 100644 --- a/content/contributing/writing-for-github-docs/versioning-documentation.md +++ b/content/contributing/writing-for-github-docs/versioning-documentation.md @@ -9,7 +9,7 @@ redirect_from: On {% data variables.product.prodname_docs %}, we provide versions of our documentation that reflect the differences in UI and functionality across {% data variables.product.company_short %}'s major product offerings. Contributors can use versioning syntax to scope content to a specific product offering. -Versioning syntax allows the reader to manually choose the version of the documentation that applies to the product they're using. {% data variables.product.prodname_docs %}' URLs can also include versioning information, which allows links from {% data variables.product.prodname_dotcom_the_website %} and {% data variables.product.prodname_ghe_server %} to send the reader directly to documentation for the product they're using. +Versioning syntax allows the reader to manually choose the version of the documentation that applies to the product they're using. {% data variables.product.prodname_docs %}' URLs can also include versioning information, which allows links from one version of {% data variables.product.prodname_docs %} to another to send the reader directly to documentation for the product they're using. ## How and where to version @@ -26,7 +26,7 @@ There are two types of versioning syntax for {% data variables.product.prodname_ ... ``` - The following example shows content versioned for {% data variables.product.prodname_dotcom_the_website %}, and all versions of {% data variables.product.prodname_ghe_server %}. + The following example shows content versioned for Free, Pro, & Team, and all versions of {% data variables.product.prodname_ghe_server %}. ```yaml versions: @@ -50,7 +50,7 @@ There are two types of versioning syntax for {% data variables.product.prodname_ ## About the different versions of {% data variables.product.company_short %} -We provide versioned documentation for users of {% data variables.product.prodname_dotcom_the_website %} plans including {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. If multiple versions of a page exist on the site, readers can choose the version from the version picker at the top of the page. +We provide versioned documentation for users of {% data variables.product.prodname_dotcom %} plans including {% data variables.product.prodname_ghe_cloud %} and {% data variables.product.prodname_ghe_server %}. If multiple versions of a page exist on the site, readers can choose the version from the version picker at the top of the page. ### {% data variables.product.prodname_dotcom_the_website %} @@ -91,7 +91,7 @@ versions: ghes: '*' ``` -You can also version a page for a range of releases. The following example will version the page for {% data variables.product.prodname_dotcom_the_website %}, and {% data variables.product.prodname_ghe_server %} versions 3.1 and 3.2 only: +You can also version a page for a range of releases. The following example will version the page for Free, Pro, & Team, {% data variables.product.prodname_ghe_cloud %}, and {% data variables.product.prodname_ghe_server %} versions 3.1 and 3.2 only: ```yaml versions: diff --git a/content/education/manage-coursework-with-github-classroom/get-started-with-github-classroom/glossary.md b/content/education/manage-coursework-with-github-classroom/get-started-with-github-classroom/glossary.md index 0ed0d1f51557..f503f414e0ef 100644 --- a/content/education/manage-coursework-with-github-classroom/get-started-with-github-classroom/glossary.md +++ b/content/education/manage-coursework-with-github-classroom/get-started-with-github-classroom/glossary.md @@ -14,7 +14,7 @@ An assignment is coursework in {% data variables.product.prodname_classroom %}. ## classroom -A classroom is the basic unit of {% data variables.product.prodname_classroom %}. Teachers can use a classroom to organize and manage students, teaching assistants, and assignments for a single course. A classroom belongs to an organization on {% data variables.product.prodname_dotcom_the_website %}. To administer a classroom, you must be an organization owner for the organization on {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/education/manage-coursework-with-github-classroom/teach-with-github-classroom/manage-classrooms)." +A classroom is the basic unit of {% data variables.product.prodname_classroom %}. Teachers can use a classroom to organize and manage students, teaching assistants, and assignments for a single course. A classroom belongs to an organization on {% data variables.product.prodname_dotcom %}. To administer a classroom, you must be an organization owner for the organization. For more information, see "[AUTOTITLE](/education/manage-coursework-with-github-classroom/teach-with-github-classroom/manage-classrooms)." --- diff --git a/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md b/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md index 8b27d5b22096..aca1fc57eba2 100644 --- a/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md +++ b/content/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data.md @@ -15,11 +15,11 @@ topics: shortTitle: Request account archive --- -{% data variables.product.product_name %} stores repository and profile metadata from your personal account's activity. You can export your personal account's data through settings on {% data variables.product.prodname_dotcom_the_website %} or with the User Migration API. +{% data variables.product.product_name %} stores repository and profile metadata from your personal account's activity. You can export your personal account's data through your account settings on {% data variables.product.prodname_dotcom %} or with the User Migration API. For more information about the data {% data variables.product.product_name %} stores that is available for exporting, see "[AUTOTITLE](/rest/migrations#download-a-user-migration-archive)." -When you request an export of your personal data through settings on {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.product_name %} packages your personal data in a `tar.gz` file and sends you an email to your primary email address with a download link. +When you request an export of your personal data through your account settings on {% data variables.product.prodname_dotcom %}, {% data variables.product.product_name %} packages your personal data in a `tar.gz` file and sends you an email to your primary email address with a download link. By default, the download link expires after seven days. At any time before the download link expires, you can disable the link from your user settings. For more information, see "[AUTOTITLE](/get-started/archiving-your-github-personal-account-and-public-repositories/requesting-an-archive-of-your-personal-accounts-data#deleting-access-to-an-archive-of-your-personal-accounts-data)." diff --git a/content/get-started/exploring-projects-on-github/contributing-to-a-project.md b/content/get-started/exploring-projects-on-github/contributing-to-a-project.md index df7832fa45da..89b48c9766be 100644 --- a/content/get-started/exploring-projects-on-github/contributing-to-a-project.md +++ b/content/get-started/exploring-projects-on-github/contributing-to-a-project.md @@ -26,7 +26,7 @@ You can contribute by submitting pull requests from your fork to the upstream re ## Forking a repository -This tutorial uses [the Spoon-Knife project](https://github.com/octocat/Spoon-Knife), a test repository that's hosted on {% data variables.product.prodname_dotcom_the_website %} that lets you test the fork and pull request workflow. +This tutorial uses [the Spoon-Knife project](https://github.com/octocat/Spoon-Knife), a test repository that's hosted on {% data variables.product.prodname_dotcom %} that lets you test the fork and pull request workflow. 1. Navigate to the `Spoon-Knife` project at https://github.com/octocat/Spoon-Knife. 1. In the top-right corner of the page, click **Fork**. diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md index a73fc6c7243d..a4f5279c1c07 100644 --- a/content/get-started/learning-about-github/about-github-advanced-security.md +++ b/content/get-started/learning-about-github/about-github-advanced-security.md @@ -1,6 +1,6 @@ --- title: About GitHub Advanced Security -intro: '{% data variables.product.prodname_dotcom %} makes extra security features available to customers under an {% data variables.product.prodname_advanced_security %} license.{% ifversion fpt or ghec %} These features are also enabled for public repositories on {% data variables.product.prodname_dotcom_the_website %}.{% endif %}' +intro: '{% data variables.product.prodname_dotcom %} makes extra security features available to customers under an {% data variables.product.prodname_advanced_security %} license.{% ifversion fpt or ghec %} These features are also enabled for public repositories.{% endif %}' product: '{% data reusables.gated-features.ghas %}' versions: fpt: '*' diff --git a/content/get-started/learning-about-github/githubs-plans.md b/content/get-started/learning-about-github/githubs-plans.md index 603c8938cbff..3cde4f146be1 100644 --- a/content/get-started/learning-about-github/githubs-plans.md +++ b/content/get-started/learning-about-github/githubs-plans.md @@ -135,7 +135,7 @@ In addition to the features available with {% data variables.product.prodname_te * Included minutes can be used with standard {% data variables.product.prodname_dotcom %}-hosted runners only. For more information about billing for {% data variables.actions.hosted_runners %}, see "[AUTOTITLE](/enterprise-cloud@latest/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners#understanding-billing)." * 50 GB {% data variables.product.prodname_registry %} storage * A service level agreement for 99.9% monthly uptime -* The option to centrally manage policy and billing for multiple {% data variables.product.prodname_dotcom_the_website %} organizations with an enterprise account. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/managing-your-enterprise-account/about-enterprise-accounts)." +* The option to centrally manage policy and billing for multiple {% data variables.product.prodname_dotcom %} organizations with an enterprise account. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/managing-your-enterprise-account/about-enterprise-accounts)." * If you upgrade an existing organization to {% data variables.product.prodname_ghe_cloud %}, your enterprise account will contain your organization. For more information, see "[AUTOTITLE]({% ifversion fpt or ghes %}/enterprise-cloud@latest{% endif %}/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan#upgrading-your-organizations-plan)" and "[AUTOTITLE]({% ifversion fpt or ghes %}/enterprise-cloud@latest{% endif %}/admin/managing-your-enterprise-account/creating-an-enterprise-account#about-enterprise-account-creation){% ifversion fpt or ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %} * The option to provision and manage the user accounts for your developers, by using {% data variables.product.prodname_emus %}. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/admin/identity-and-access-management/understanding-iam-for-enterprises/about-enterprise-managed-users)." diff --git a/content/get-started/start-your-journey/creating-an-account-on-github.md b/content/get-started/start-your-journey/creating-an-account-on-github.md index f8ff4a7af9c3..91c9d17c674c 100644 --- a/content/get-started/start-your-journey/creating-an-account-on-github.md +++ b/content/get-started/start-your-journey/creating-an-account-on-github.md @@ -18,9 +18,9 @@ topics: - Accounts --- -## About your personal account on {% data variables.product.prodname_dotcom_the_website %} +## About your personal account on {% data variables.product.prodname_dotcom %} -To get started with {% data variables.product.prodname_dotcom %}, you'll need to create a free personal account on {% data variables.product.prodname_dotcom_the_website %} and verify your email address. +To get started with {% data variables.product.prodname_dotcom %}, you'll need to create a free personal account and verify your email address. {% data reusables.accounts.your-personal-account %} diff --git a/content/get-started/using-github-docs/about-versions-of-github-docs.md b/content/get-started/using-github-docs/about-versions-of-github-docs.md index ed4bdcfeb42f..38946aadfb89 100644 --- a/content/get-started/using-github-docs/about-versions-of-github-docs.md +++ b/content/get-started/using-github-docs/about-versions-of-github-docs.md @@ -43,7 +43,7 @@ In a wide browser window, there is no text that immediately follows the {% data {% endif %} -On {% data variables.product.prodname_dotcom_the_website %}, each account has its own plan. Each personal account has an associated plan that provides access to certain features, and each organization has a different associated plan. If your personal account is a member of an organization on {% data variables.product.prodname_dotcom_the_website %}, you may have access to different features when you use resources owned by that organization than when you use resources owned by your personal account. For more information, see "[AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts)." +On {% data variables.product.prodname_dotcom_the_website %}, each account has its own plan. Each personal account has an associated plan that provides access to certain features, and each organization has a different associated plan. If your personal account is a member of an organization on {% data variables.product.prodname_dotcom %}, you may have access to different features when you use resources owned by that organization than when you use resources owned by your personal account. For more information, see "[AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts)." If you don't know whether an organization uses {% data variables.product.prodname_ghe_cloud %}, ask an organization owner. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization)." diff --git a/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md b/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md index 83b2127985ff..752419ccdc72 100644 --- a/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md +++ b/content/issues/planning-and-tracking-with-projects/creating-projects/migrating-from-projects-classic.md @@ -38,7 +38,7 @@ You can migrate your {% data variables.projects.projects_v1_boards %} to the new ## Migrating a user {% data variables.projects.projects_v1_board %} -1. In the upper-right corner of {% data variables.product.prodname_dotcom_the_website %}, select your profile photo, then click **Your projects**. +1. In the upper-right corner of {% data variables.product.prodname_dotcom %}, select your profile photo, then click **Your projects**. ![Screenshot showing the profile photo menu. The "Your projects" link is highlighted with an orange outline.](/assets/images/help/projects-v2/projects-profile-menu.png) diff --git a/content/issues/planning-and-tracking-with-projects/learning-about-projects/finding-your-projects.md b/content/issues/planning-and-tracking-with-projects/learning-about-projects/finding-your-projects.md index 6448795c4c00..9a9cef27c972 100644 --- a/content/issues/planning-and-tracking-with-projects/learning-about-projects/finding-your-projects.md +++ b/content/issues/planning-and-tracking-with-projects/learning-about-projects/finding-your-projects.md @@ -38,7 +38,7 @@ You can view and filter projects that you have created under your personal accou Repositories can be linked to organization-level and user-level projects. You can browse and filter the projects that are linked to a specific repository. For more information on linking projects to a repository, see "[AUTOTITLE](/issues/planning-and-tracking-with-projects/managing-your-project/adding-your-project-to-a-repository)." -1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.product.product_name %}{% endif %}, navigate to the main page of your repository. +1. On {% data variables.product.prodname_dotcom %}, navigate to the main page of your repository. 1. Click {% octicon "table" aria-hidden="true" %} **Projects**. ![Screenshot showing a repository's tabs. The "Projects" tab is highlighted with an orange outline.](/assets/images/help/projects-v2/repo-tab.png) diff --git a/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization.md b/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization.md index 0e933168d821..d84d26eb08f4 100644 --- a/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization.md +++ b/content/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization.md @@ -30,7 +30,7 @@ You can also require two-factor authentication for organizations in an enterpris {% note %} -**Note**: Some of the users in your organization may have been selected for mandatory two-factor authentication enrollment by {% data variables.product.prodname_dotcom_the_website %}, but it has no impact on how you enable the 2FA requirement for your organization. If you enable the 2FA requirement in your organization, all users without 2FA currently enabled will be removed from your organization, including those that are required to enable it by {% data variables.product.prodname_dotcom_the_website %}. +**Note**: Some of the users in your organization may have been selected for mandatory two-factor authentication enrollment by {% data variables.product.prodname_dotcom %}, but it has no impact on how you enable the 2FA requirement for your organization. If you enable the 2FA requirement in your organization, all users without 2FA currently enabled will be removed from your organization, including those that are required to enable it by {% data variables.product.prodname_dotcom %}. {% endnote %} diff --git a/content/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization.md b/content/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization.md index cca395fe5760..849f2844913e 100644 --- a/content/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization.md +++ b/content/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization.md @@ -37,7 +37,7 @@ If your organization has a paid per-user subscription, an unused license must be If your organization requires members to use two-factor authentication, users that you invite must enable two-factor authentication before accepting the invitation. For more information, see "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-two-factor-authentication-for-your-organization/requiring-two-factor-authentication-in-your-organization)" and "[AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa)." -{% ifversion fpt %}Organizations that use {% data variables.product.prodname_ghe_cloud %}{% else %}You{% endif %} can implement SCIM to add, manage, and remove organization members' access to {% data variables.product.prodname_dotcom_the_website %} through an identity provider (IdP). For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/managing-saml-single-sign-on-for-your-organization/about-scim-for-organizations){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %} +{% ifversion fpt %}Organizations that use {% data variables.product.prodname_ghe_cloud %}{% else %}You{% endif %} can implement SCIM to add, manage, and remove organization members' access to {% data variables.product.prodname_dotcom %} through an identity provider (IdP). For more information, see "[AUTOTITLE](/enterprise-cloud@latest/organizations/managing-saml-single-sign-on-for-your-organization/about-scim-for-organizations){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %} To prevent abuse, you can only create 50 organization invitations within a 24-hour period. If your organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period. {% ifversion ghec %} This limit does not apply to invitations created via SCIM provisioning.{% endif %} diff --git a/content/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization.md b/content/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization.md index 132b7c577fb0..1c932abd314f 100644 --- a/content/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization.md +++ b/content/organizations/managing-membership-in-your-organization/reinstating-a-former-member-of-your-organization.md @@ -51,8 +51,8 @@ When you reinstate a former organization member, the following items can be rest The correct way to reinstate a former member depends on your organization's identity and access management configuration. -* If the user was removed via SCIM because they were unassigned from the {% data variables.product.product_name %} application in your IdP, re-invite the user via SCIM by re-assigning them to the application. The user's organization membership will be reinstated after they sign into {% data variables.product.prodname_dotcom_the_website %} and accept the invitation. -* If your organization uses SAML but not SCIM, ask the user to authenticate via SAML single sign-on, via your IP or by signing into {% data variables.product.prodname_dotcom_the_website %}, navigating to the organization, and clicking the banner to authenticate via SAML single sign-on. The user's organization membership will be reinstated after they successfully authenticate. +* If the user was removed via SCIM because they were unassigned from the {% data variables.product.product_name %} application in your IdP, re-invite the user via SCIM by re-assigning them to the application. The user's organization membership will be reinstated after they sign into {% data variables.product.prodname_dotcom %} and accept the invitation. +* If your organization uses SAML but not SCIM, ask the user to authenticate via SAML single sign-on, via your IP or by signing into {% data variables.product.prodname_dotcom %}, navigating to the organization, and clicking the banner to authenticate via SAML single sign-on. The user's organization membership will be reinstated after they successfully authenticate. * Otherwise, invite the user to rejoin your organization on {% data variables.product.prodname_dotcom %}, following the steps below. {% endif %} diff --git a/content/organizations/managing-saml-single-sign-on-for-your-organization/configuring-saml-single-sign-on-and-scim-using-okta.md b/content/organizations/managing-saml-single-sign-on-for-your-organization/configuring-saml-single-sign-on-and-scim-using-okta.md index 2fc4edda84ca..c356a4b4bae6 100644 --- a/content/organizations/managing-saml-single-sign-on-for-your-organization/configuring-saml-single-sign-on-and-scim-using-okta.md +++ b/content/organizations/managing-saml-single-sign-on-for-your-organization/configuring-saml-single-sign-on-and-scim-using-okta.md @@ -46,7 +46,7 @@ Alternatively, you can configure SAML SSO for an enterprise using Okta. SCIM for {% data reusables.scim.dedicated-configuration-account %} -1. Sign into {% data variables.product.prodname_dotcom_the_website %} using an account that is an organization owner and is ideally used only for SCIM configuration. +1. Sign into {% data variables.product.prodname_dotcom %} using an account that is an organization owner and is ideally used only for SCIM configuration. 1. To create an active SAML session for your organization, navigate to `https://github.com/orgs/ORGANIZATION-NAME/sso`. For more information, see "[AUTOTITLE](/authentication/authenticating-with-saml-single-sign-on/about-authentication-with-saml-single-sign-on#about-oauth-apps-github-apps-and-saml-sso)." 1. Navigate to Okta. {% data reusables.saml.okta-dashboard-click-applications %} diff --git a/content/organizations/managing-saml-single-sign-on-for-your-organization/enforcing-saml-single-sign-on-for-your-organization.md b/content/organizations/managing-saml-single-sign-on-for-your-organization/enforcing-saml-single-sign-on-for-your-organization.md index 6c6c32290f6f..5b3dad2f022e 100644 --- a/content/organizations/managing-saml-single-sign-on-for-your-organization/enforcing-saml-single-sign-on-for-your-organization.md +++ b/content/organizations/managing-saml-single-sign-on-for-your-organization/enforcing-saml-single-sign-on-for-your-organization.md @@ -14,7 +14,7 @@ shortTitle: Enforce SAML single sign-on ## About enforcement of SAML SSO for your organization -When you enable SAML SSO, {% data variables.product.prodname_dotcom %} will prompt members who visit the organization's resources on {% data variables.product.prodname_dotcom_the_website %} to authenticate on your IdP, which links the member's personal account to an identity on the IdP. Members can still access the organization's resources before authentication with your IdP. +When you enable SAML SSO, {% data variables.product.prodname_dotcom %} will prompt members who visit the organization's resources on {% data variables.product.prodname_dotcom %} to authenticate on your IdP, which links the member's personal account to an identity on the IdP. Members can still access the organization's resources before authentication with your IdP. You can also enforce SAML SSO for your organization. {% data reusables.saml.when-you-enforce %} Enforcement removes any members and administrators who have not authenticated via your IdP from the organization. {% data variables.product.company_short %} sends an email notification to each removed user. diff --git a/content/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages.md b/content/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages.md index 83be6ce74886..484d498cdb0f 100644 --- a/content/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages.md +++ b/content/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages.md @@ -20,7 +20,7 @@ shortTitle: Custom domains in GitHub Pages {% data reusables.pages.custom-domain-warning %} -On {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.prodname_pages %} works with two types of domains: subdomains and apex domains. For a list of unsupported custom domains, see "[AUTOTITLE](/pages/configuring-a-custom-domain-for-your-github-pages-site/troubleshooting-custom-domains-and-github-pages#custom-domain-names-that-are-unsupported)." +{% data variables.product.prodname_pages %} works with two types of domains: subdomains and apex domains. For a list of unsupported custom domains, see "[AUTOTITLE](/pages/configuring-a-custom-domain-for-your-github-pages-site/troubleshooting-custom-domains-and-github-pages#custom-domain-names-that-are-unsupported)." | Supported custom domain type | Example | |---|---| diff --git a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md index baced2b2888c..8b233d2176e5 100644 --- a/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md +++ b/content/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-dependency-changes-in-a-pull-request.md @@ -27,7 +27,7 @@ shortTitle: Review dependency changes {% ifversion ghec %}Before you can use dependency review in a private repository, you must enable the dependency graph. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository#enabling-and-disabling-the-dependency-graph-for-a-private-repository)."{% endif %} -{% ifversion ghes %} Before you can use dependency review, you must enable the dependency graph and connect {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)."{% endif %} +{% ifversion ghes %}Before you can use dependency review, you must enable the dependency graph and connect {% data variables.location.product_location %} to {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise)."{% endif %} Dependency review allows you to "shift left". You can use the provided predictive information to catch vulnerable dependencies before they hit production. For more information, see "[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review)." diff --git a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md index 5e90c58ddba2..a7c7939de73e 100644 --- a/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md +++ b/content/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo.md @@ -52,7 +52,7 @@ If you haven't yet, first set up Git and authentication with {% data variables.l You might fork a project to propose changes to the upstream repository. In this case, it's good practice to regularly sync your fork with the upstream repository. To do this, you'll need to use Git on the command line. You can practice setting the upstream repository using the same [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository you just forked. -1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. +1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. 1. In the top-right corner of the page, click **Fork**. ![Screenshot of the main page of repository. A button, labeled with a fork icon and "Fork 59.3k," is outlined in dark orange.](/assets/images/help/repository/fork-button.png) @@ -102,7 +102,7 @@ Right now, you have a fork of the Spoon-Knife repository, but you do not have th {% webui %} -1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to **your fork** of the Spoon-Knife repository. +1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to **your fork** of the Spoon-Knife repository. {% data reusables.repositories.copy-clone-url %} {% data reusables.command_line.open_the_multi_os_terminal %} {% data reusables.command_line.change-current-directory-clone %} @@ -153,7 +153,7 @@ When you fork a project in order to propose changes to the upstream repository, {% webui %} -1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. +1. On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %}{% else %}{% data variables.location.product_location %}{% endif %}, navigate to the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. {% data reusables.repositories.copy-clone-url %} {% data reusables.command_line.open_the_multi_os_terminal %} 1. Change directories to the location of the fork you cloned. diff --git a/content/repositories/archiving-a-github-repository/backing-up-a-repository.md b/content/repositories/archiving-a-github-repository/backing-up-a-repository.md index 2712d7691fad..eb4b2df0b583 100644 --- a/content/repositories/archiving-a-github-repository/backing-up-a-repository.md +++ b/content/repositories/archiving-a-github-repository/backing-up-a-repository.md @@ -73,7 +73,7 @@ Migration archives can be restored to your {% data variables.product.prodname_gh {% endwarning %} {% else %} -There is no supported, documented way to restore migration archives on {% data variables.product.prodname_dotcom_the_website %}, so these backups are only suitable for archiving purposes. +There is no supported, documented way to restore migration archives on {% data variables.product.prodname_dotcom %}, so these backups are only suitable for archiving purposes. {% endif %} {% ifversion fpt or ghec %} diff --git a/content/repositories/creating-and-managing-repositories/repository-limits.md b/content/repositories/creating-and-managing-repositories/repository-limits.md index 8cad689046a5..3379b9069d45 100644 --- a/content/repositories/creating-and-managing-repositories/repository-limits.md +++ b/content/repositories/creating-and-managing-repositories/repository-limits.md @@ -32,7 +32,7 @@ Some portions of a limited diff may be displayed, but anything exceeding the lim The compare view and pull requests pages display a list of commits between the `base` and `head` revisions. These lists are limited to **250** commits. If they exceed that limit, a note indicates that additional commits are present (but they're not shown). -The maximum count of commits displayed on the Commits tab of {% data variables.product.prodname_dotcom_the_website %} is **10,000**. Use other tools such as `git rev-list --count mybranch` to count and enumerate a high volume of commits when needed. +The maximum count of commits displayed on the Commits tab is **10,000**. Use other tools such as `git rev-list --count mybranch` to count and enumerate a high volume of commits when needed. ## Organization Limits diff --git a/content/repositories/releasing-projects-on-github/linking-to-releases.md b/content/repositories/releasing-projects-on-github/linking-to-releases.md index d0cc66b77d07..17ec3df2c7bb 100644 --- a/content/repositories/releasing-projects-on-github/linking-to-releases.md +++ b/content/repositories/releasing-projects-on-github/linking-to-releases.md @@ -15,7 +15,7 @@ topics: ## Linking to the latest release -You can share a link to the latest release for a repository by adding `releases/latest` to the end of a repository's URL. For example, the URL for the latest release of `octo-org/octo-repo` on {% data variables.product.prodname_dotcom_the_website %} is `https://github.com/octo-org/octo-repo/releases/latest`. +You can share a link to the latest release for a repository by adding `releases/latest` to the end of a repository's URL. For example, the URL for the latest release of `octo-org/octo-repo` is `https://{% data variables.product.product_url %}/octo-org/octo-repo/releases/latest`. To link directly to a download of your latest release asset that was manually uploaded, the suffix is `/releases/latest/download/asset-name.zip`. diff --git a/content/search-github/github-code-search/about-github-code-search.md b/content/search-github/github-code-search/about-github-code-search.md index 7cc94c5d8e54..dbe3dcc75bd9 100644 --- a/content/search-github/github-code-search/about-github-code-search.md +++ b/content/search-github/github-code-search/about-github-code-search.md @@ -12,7 +12,7 @@ topics: {% data variables.product.prodname_dotcom %} code search lets you rapidly search, navigate and understand your code, your team's code, and the code of the open source community. This search engine is designed to be scalable, code-aware, and support searching code across {% data variables.product.prodname_dotcom %} using regular expressions, boolean operations, specialized qualifiers, and symbol search. For more information on the syntax of code search, see "[AUTOTITLE](/search-github/github-code-search/understanding-github-code-search-syntax)." -Code search is integrated with features in the search interface on {% data variables.product.prodname_dotcom_the_website %}, such as suggestions and completions. Your searches will be saved automatically and can be deleted at any time. On {% data variables.product.prodname_mobile %}, you can use the same methods to search through code {% ifversion global-code-search-mobile %}directly from the home screen{% else %} in a specific repository{% endif %}. For more information, see "[AUTOTITLE](/search-github/github-code-search/using-github-code-search)." +Code search is integrated with features in the search interface on {% data variables.product.prodname_dotcom %}, such as suggestions and completions. Your searches will be saved automatically and can be deleted at any time. On {% data variables.product.prodname_mobile %}, you can use the same methods to search through code {% ifversion global-code-search-mobile %}directly from the home screen{% else %} in a specific repository{% endif %}. For more information, see "[AUTOTITLE](/search-github/github-code-search/using-github-code-search)." {% data reusables.search.code-search-login-requirement %} @@ -28,7 +28,7 @@ Supported languages for code navigation include: ## Limitations -We have indexed many public repositories for code search, and continue to index more. Additionally, the private repositories of {% data variables.product.prodname_dotcom%} users are indexed and searchable by those that already have access to those private repositories on {% data variables.product.prodname_dotcom_the_website %}. However, very large repositories may not be indexed at this time, and not all code is indexed. +We have indexed many public repositories for code search, and continue to index more. Additionally, the private repositories of {% data variables.product.prodname_dotcom%} users are indexed and searchable by those that already have access to those private repositories on {% data variables.product.prodname_dotcom %}. However, very large repositories may not be indexed at this time, and not all code is indexed. The current limitations on indexed code are: diff --git a/content/search-github/github-code-search/using-github-code-search.md b/content/search-github/github-code-search/using-github-code-search.md index 3b53cdc8df6c..e19bdda5349d 100644 --- a/content/search-github/github-code-search/using-github-code-search.md +++ b/content/search-github/github-code-search/using-github-code-search.md @@ -1,6 +1,6 @@ --- title: Using GitHub Code Search -intro: "You can use suggestions, completions and saved searches in the upgraded search interface to quickly find what you are looking for across {% data variables.product.prodname_dotcom_the_website %}." +intro: "You can use suggestions, completions and saved searches in the upgraded search interface to quickly find what you are looking for across {% data variables.product.prodname_dotcom %}." allowTitleToDifferFromFilename: true versions: feature: code-search-upgrade @@ -10,7 +10,7 @@ topics: ## About using {% data variables.product.prodname_dotcom%} code search -{% data variables.product.prodname_dotcom %} indexes repositories you own and repositories in organizations you are a member of, whether public, private, or internal. This means that you can search across all of your repositories, in addition to the public repositories on {% data variables.product.prodname_dotcom_the_website %} that have already been indexed. Only users with permission to view your code on {% data variables.product.prodname_dotcom_the_website %} will be able to see your code in search results. Forks are indexed and searchable in the same way as other repositories. +{% data variables.product.prodname_dotcom %} indexes repositories you own and repositories in organizations you are a member of, whether public, private, or internal. This means that you can search across all of your repositories, in addition to the public repositories on {% data variables.product.prodname_dotcom %} that have already been indexed. Only users with permission to view your code will be able to see your code in search results. Forks are indexed and searchable in the same way as other repositories. Not all code is indexed, and you can currently only search the default branches of repositories. For more information on known limitations, see "[AUTOTITLE](/search-github/github-code-search/about-github-code-search#limitations)." @@ -18,13 +18,13 @@ Not all code is indexed, and you can currently only search the default branches ## Using the search bar -You can search using the search interface on {% data variables.product.prodname_dotcom_the_website %}. Using suggestions, completions, and saved searches, you can quickly find what you are looking for, often without having to fully type a query or view the search results page. +You can search using the search interface on {% data variables.product.prodname_dotcom %}. Using suggestions, completions, and saved searches, you can quickly find what you are looking for, often without having to fully type a query or view the search results page. For more information about the search syntax of code search, see "[AUTOTITLE](/search-github/github-code-search/understanding-github-code-search-syntax)." {% data reusables.search.non-code-search-explanation %} -1. In the top navigation of {% data variables.product.prodname_dotcom_the_website %}, click the search bar. +1. In the top navigation of {% data variables.product.prodname_dotcom %}, click the search bar. 1. Under the search bar, you will see a list of suggestions organized by category, including recent searches and suggested repositories, teams, and projects that you have access to. You can also see a list of saved searches that you have created. For more information on saved searches, see "[Creating and managing saved searches](#creating-and-managing-saved-searches)." ![Screenshot of the {% data variables.product.prodname_dotcom %} search bar. There is a list of search suggestions by category below the search bar.](/assets/images/help/search/code-search-beta-search-bar.png) @@ -39,7 +39,7 @@ For more information about the search syntax of code search, see "[AUTOTITLE](/s ## Creating and managing saved searches -1. In the top navigation of {% data variables.product.prodname_dotcom_the_website %}, click the search bar and type `saved:`. +1. In the top navigation of {% data variables.product.prodname_dotcom %}, click the search bar and type `saved:`. 1. Under the search bar, in the "Saved queries" section, click {% octicon "plus-circle" aria-hidden="true" %} **Manage saved searches**. 1. In the pop-up window, type both the name you want for your saved search and the query you want to save. 1. To finish creating your saved search, click **Create saved search**. @@ -54,9 +54,9 @@ To construct a search query, as well as view and filter results, using a visual On the search results view, you can navigate between different types of search results, including code, issues, pull request, repositories, and more. You can also view and use filters. -## Using {% data variables.product.prodname_dotcom%} code search on {% data variables.product.prodname_mobile %} +## Using {% data variables.product.prodname_dotcom %} code search on {% data variables.product.prodname_mobile %} -{% ifversion global-code-search-mobile %}On {% data variables.product.prodname_mobile %}, you can use code search directly from the search bar in the home screen.{% else %} On {% data variables.product.prodname_mobile %}, you can navigate to a repository and use code search on the code in that repository.{% endif %} Code search on {% data variables.product.prodname_mobile %} uses the same syntax as code search on {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/search-github/github-code-search/about-github-code-search#limitations)." +{% ifversion global-code-search-mobile %}On {% data variables.product.prodname_mobile %}, you can use code search directly from the search bar in the home screen.{% else %} On {% data variables.product.prodname_mobile %}, you can navigate to a repository and use code search on the code in that repository.{% endif %} Code search on {% data variables.product.prodname_mobile %} uses the same syntax as code search on {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/search-github/github-code-search/about-github-code-search#limitations)." {% ifversion global-code-search-mobile %} diff --git a/content/search-github/searching-on-github/searching-code.md b/content/search-github/searching-on-github/searching-code.md index 3c1f94dc5867..dcdcc5a687e9 100644 --- a/content/search-github/searching-on-github/searching-code.md +++ b/content/search-github/searching-on-github/searching-code.md @@ -20,7 +20,7 @@ topics: **Note:** This article covers the syntax for legacy code search, which you should only need to use for the [REST API endpoint for searching code](/rest/search/search#search-code). -For information on the code search syntax that you can use on {% data variables.product.prodname_dotcom_the_website %}, see "[AUTOTITLE](/search-github/github-code-search/understanding-github-code-search-syntax)." +For information on the code search syntax that you can use on {% data variables.product.prodname_dotcom %}, see "[AUTOTITLE](/search-github/github-code-search/understanding-github-code-search-syntax)." {% endnote %} {% endif %} diff --git a/content/search-github/searching-on-github/searching-github-marketplace.md b/content/search-github/searching-on-github/searching-github-marketplace.md index 74bc51a7dad7..a1f72c36b952 100644 --- a/content/search-github/searching-on-github/searching-github-marketplace.md +++ b/content/search-github/searching-on-github/searching-github-marketplace.md @@ -17,7 +17,7 @@ shortTitle: Search GitHub Marketplace You can find apps and actions on {% data variables.product.prodname_marketplace %} in two ways: * Search from in {% data variables.product.prodname_marketplace %}. -* Search across all of {% data variables.product.prodname_dotcom_the_website %} and then filter the results. +* Search across all of {% data variables.product.prodname_dotcom %} and then filter the results. ## Searching in {% data variables.product.prodname_marketplace %} @@ -25,9 +25,9 @@ You can find apps and actions on {% data variables.product.prodname_marketplace 1. Type any keywords and press **Enter**. 1. Optionally, filter your results by clicking one or more options in the left sidebar. -## Searching across {% data variables.product.prodname_dotcom_the_website %} +## Searching across {% data variables.product.prodname_dotcom %} -Anytime you search across all of {% data variables.product.prodname_dotcom_the_website %}, you can filter the results to see matching apps and actions from {% data variables.product.prodname_marketplace %}. +Anytime you search across all of {% data variables.product.prodname_dotcom %}, you can filter the results to see matching apps and actions from {% data variables.product.prodname_marketplace %}. 1. Navigate to https://github.com/search. 1. Type any keywords and press **Enter**. diff --git a/content/sponsors/receiving-sponsorships-through-github-sponsors/unlinking-your-patreon-account-from-your-github-sponsors-profile.md b/content/sponsors/receiving-sponsorships-through-github-sponsors/unlinking-your-patreon-account-from-your-github-sponsors-profile.md index 1cda6a000ebb..b48e7e44a238 100644 --- a/content/sponsors/receiving-sponsorships-through-github-sponsors/unlinking-your-patreon-account-from-your-github-sponsors-profile.md +++ b/content/sponsors/receiving-sponsorships-through-github-sponsors/unlinking-your-patreon-account-from-your-github-sponsors-profile.md @@ -13,7 +13,7 @@ shortTitle: Unlink Patreon {% note %} -**Note:** Unlinking your Patreon account from your {% data variables.product.prodname_sponsors %} profile will prevent new sponsors from sponsoring you through Patreon, but it **will not** cancel existing sponsorships through Patreon. Instead, they will appear as cancelled on {% data variables.product.prodname_dotcom_the_website %} and your sponsors will have to cancel those sponsorships themselves on Patreon. For more information, see [How do I cancel?](https://support.patreon.com/hc/en-us/articles/360005502572-How-do-I-cancel-) in the Patreon documentation. +**Note:** Unlinking your Patreon account from your {% data variables.product.prodname_sponsors %} profile will prevent new sponsors from sponsoring you through Patreon, but it **will not** cancel existing sponsorships through Patreon. Instead, they will appear as cancelled on {% data variables.product.prodname_dotcom %} and your sponsors will have to cancel those sponsorships themselves on Patreon. For more information, see [How do I cancel?](https://support.patreon.com/hc/en-us/articles/360005502572-How-do-I-cancel-) in the Patreon documentation. {% endnote %} diff --git a/content/sponsors/sponsoring-open-source-contributors/sponsoring-an-open-source-contributor-through-patreon.md b/content/sponsors/sponsoring-open-source-contributors/sponsoring-an-open-source-contributor-through-patreon.md index ecbc43411103..7a891162b406 100644 --- a/content/sponsors/sponsoring-open-source-contributors/sponsoring-an-open-source-contributor-through-patreon.md +++ b/content/sponsors/sponsoring-open-source-contributors/sponsoring-an-open-source-contributor-through-patreon.md @@ -1,6 +1,6 @@ --- title: Sponsoring an open source contributor through Patreon -intro: 'You can make payments through Patreon on {% data variables.product.prodname_dotcom_the_website %} to a developer or organization who designs, creates, or maintains open source projects you depend on.' +intro: 'You can make payments through Patreon on {% data variables.product.prodname_dotcom %} to a developer or organization who designs, creates, or maintains open source projects you depend on.' versions: fpt: '*' ghec: '*' @@ -14,11 +14,11 @@ shortTitle: Sponsor through Patreon ## About sponsoring through Patreon -Rather than paying through {% data variables.product.prodname_dotcom %}, you can choose to sponsor eligible maintainers through Patreon on {% data variables.product.prodname_dotcom_the_website %}. +Rather than paying through {% data variables.product.prodname_dotcom %}, you can choose to sponsor eligible maintainers through Patreon on {% data variables.product.prodname_dotcom %}. -To sponsor through Patreon on {% data variables.product.prodname_dotcom_the_website %}, both you and the selected maintainer must link your Patreon accounts to your {% data variables.product.prodname_dotcom %} accounts. You can then choose to sponsor maintainers through Patreon on {% data variables.product.prodname_dotcom_the_website %}, or you can sponsor the maintainer directly through the Patreon website while receiving recognition on {% data variables.product.prodname_dotcom %}. For more information on sponsoring through the Patreon website, see [Become a patron of a creator](https://support.patreon.com/hc/en-us/articles/203913709-Become-a-patron-of-a-creator) in the Patreon documentation. +To sponsor through Patreon on {% data variables.product.prodname_dotcom %}, both you and the selected maintainer must link your Patreon accounts to your {% data variables.product.prodname_dotcom %} accounts. You can then choose to sponsor maintainers through Patreon on {% data variables.product.prodname_dotcom %}, or you can sponsor the maintainer directly through the Patreon website while receiving recognition on {% data variables.product.prodname_dotcom %}. For more information on sponsoring through the Patreon website, see [Become a patron of a creator](https://support.patreon.com/hc/en-us/articles/203913709-Become-a-patron-of-a-creator) in the Patreon documentation. -{% data variables.product.prodname_dotcom_the_website %} displays all published Patreon sponsorship tiers. Only Patreon sponsorships that respect the maintainer's minimum amount on {% data variables.product.company_short %} will be recognized. If you sponsor a maintainer both on {% data variables.product.company_short %} and Patreon, the higher value sponsorship will be prioritized when describing the relationship between a sponsor and a maintainer. +{% data variables.product.prodname_dotcom %} displays all published Patreon sponsorship tiers. Only Patreon sponsorships that respect the maintainer's minimum amount on {% data variables.product.company_short %} will be recognized. If you sponsor a maintainer both on {% data variables.product.company_short %} and Patreon, the higher value sponsorship will be prioritized when describing the relationship between a sponsor and a maintainer. ## Linking your Patreon account to your {% data variables.product.prodname_dotcom %} account diff --git a/content/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-github.md b/content/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-github.md index b1c82461891d..007fddff0a95 100644 --- a/content/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-github.md +++ b/content/sponsors/sponsoring-open-source-contributors/unlinking-your-patreon-account-from-github.md @@ -15,7 +15,7 @@ redirect_from: {% note %} -**Note:** Unlinking your Patreon account from {% data variables.product.company_short %} will not cancel any existing sponsorships you have created through Patreon. They will only appear as cancelled on {% data variables.product.prodname_dotcom_the_website %}. To stop sponsoring maintainers through Patreon, see [How do I cancel?](https://support.patreon.com/hc/en-us/articles/360005502572-How-do-I-cancel-) in the Patreon documentation. +**Note:** Unlinking your Patreon account from {% data variables.product.company_short %} will not cancel any existing sponsorships you have created through Patreon. They will only appear as cancelled on {% data variables.product.prodname_dotcom %}. To stop sponsoring maintainers through Patreon, see [How do I cancel?](https://support.patreon.com/hc/en-us/articles/360005502572-How-do-I-cancel-) in the Patreon documentation. {% endnote %} diff --git a/content/support/contacting-github-support/getting-your-enterprise-started-with-the-github-support-portal.md b/content/support/contacting-github-support/getting-your-enterprise-started-with-the-github-support-portal.md index ddaae1a068ba..da23b6cef66f 100644 --- a/content/support/contacting-github-support/getting-your-enterprise-started-with-the-github-support-portal.md +++ b/content/support/contacting-github-support/getting-your-enterprise-started-with-the-github-support-portal.md @@ -18,7 +18,7 @@ redirect_from: Anyone can use the {% data variables.contact.contact_landing_page_portal %} to view and manage support tickets about {% data variables.product.prodname_dotcom %}, but there are special steps to follow before using the {% data variables.contact.contact_landing_page_portal %} to create tickets about an enterprise account. -The {% data variables.contact.enterprise_portal %} offers single sign-on (SSO) connected to your {% data variables.product.prodname_dotcom_the_website %} account. +The {% data variables.contact.enterprise_portal %} offers single sign-on (SSO) connected to your {% data variables.product.prodname_dotcom %} account. {% else %} diff --git a/content/support/learning-about-github-support/about-ticket-priority.md b/content/support/learning-about-github-support/about-ticket-priority.md index ea718dcdc44c..bf9e749603b0 100644 --- a/content/support/learning-about-github-support/about-ticket-priority.md +++ b/content/support/learning-about-github-support/about-ticket-priority.md @@ -30,9 +30,9 @@ Ticket priority helps to ensure that support requests are handled in order, and | Priority | Description | Examples | | :---: | --- | --- | -| {% data variables.product.support_ticket_priority_urgent %}

    ([{% data variables.contact.premium_support %}](/support/learning-about-github-support/about-github-premium-support) only) | Production workflows for your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} are failing due to critical service errors or outages, and the failure directly impacts the operation of your business. |
    • Errors or outages on {% data variables.product.prodname_dotcom_the_website %} affect core Git or web application functionality for all members of your organization or enterprise
    | +| {% data variables.product.support_ticket_priority_urgent %}

    ([{% data variables.contact.premium_support %}](/support/learning-about-github-support/about-github-premium-support) only) | Production workflows for your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} are failing due to critical service errors or outages, and the failure directly impacts the operation of your business. |
    • Errors or outages on {% data variables.product.prodname_ghe_cloud %} affect core Git or web application functionality for all members of your organization or enterprise
    | | {% data variables.product.support_ticket_priority_high %} | Account or security issues with your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} are causing limited impact to your business. |
    • An organization or enterprise owner has unintentionally deleted an organization
    • An organization or enterprise member has uploaded sensitive data in a commit, issue, pull request, or issue attachment
    | -| {% data variables.product.support_ticket_priority_normal %} | Members of your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} are experiencing limited or moderate issues with {% data variables.product.prodname_dotcom_the_website %}, or you have general concerns or questions about your organization or enterprise. |
    • Questions about using APIs and features for your organization or enterprise, including rate limits
    • API request failures due to rate limits
    • Issues with tools for organization data migration that {% data variables.product.company_short %} provides
    • Features related to your organization or enterprise not working as expected
    • General security questions about your organization or enterprise
    | +| {% data variables.product.support_ticket_priority_normal %} | Members of your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} are experiencing limited or moderate issues with {% data variables.product.prodname_ghe_cloud %}, or you have general concerns or questions about your organization or enterprise. |
    • Questions about using APIs and features for your organization or enterprise, including rate limits
    • API request failures due to rate limits
    • Issues with tools for organization data migration that {% data variables.product.company_short %} provides
    • Features related to your organization or enterprise not working as expected
    • General security questions about your organization or enterprise
    | | {% data variables.product.support_ticket_priority_low %} | You have a question or suggestion about your organization or enterprise on {% data variables.product.prodname_ghe_cloud %} that is not time-sensitive, or does not otherwise block the productivity of your team. |
    • Excessive resource usage for your organization or enterprise
    • Requests for health checks
    • Help with using Gists, notifications, wikis, {% data variables.product.prodname_pages %}, {% data variables.product.prodname_desktop %}, or other peripheral services or features with your organization or enterprise
    • Feature requests
    • Product feedback
    | {% endif %} diff --git a/data/reusables/accounts/unlinking-email-address.md b/data/reusables/accounts/unlinking-email-address.md index 522ee82a8868..4c5dc7c18391 100644 --- a/data/reusables/accounts/unlinking-email-address.md +++ b/data/reusables/accounts/unlinking-email-address.md @@ -7,5 +7,5 @@ ![Screenshot of an email from {% data variables.product.prodname_dotcom %} to unlink an email address from a {% data variables.product.prodname_dotcom %} account. A link with the text "Unlink this email" is outlined in orange.](/assets/images/help/2fa/unlink-this-email.png) -1. To finish unlinking your email, on {% data variables.product.prodname_dotcom_the_website %}, click **Unlink**. +1. To finish unlinking your email, in your account settings on {% data variables.product.prodname_dotcom %}, click **Unlink**. 1. Optionally, to create a new account and link your newly unlinked email, click **Create a new account**. diff --git a/data/reusables/policies/github-community-guidelines-and-terms.md b/data/reusables/policies/github-community-guidelines-and-terms.md index 37edc58942d2..81923e5b4e60 100644 --- a/data/reusables/policies/github-community-guidelines-and-terms.md +++ b/data/reusables/policies/github-community-guidelines-and-terms.md @@ -1 +1 @@ -{% data variables.product.company_short %} provides a baseline code of conduct for everyone who uses {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service)" and "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-community-guidelines)." +{% data variables.product.company_short %} provides a baseline code of conduct for everyone who uses {% data variables.product.prodname_dotcom %}. For more information, see "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service)" and "[AUTOTITLE](/free-pro-team@latest/site-policy/github-terms/github-community-guidelines)." From e8ea2fd822ee0c66ceb70f70a3b09ad248149308 Mon Sep 17 00:00:00 2001 From: Taylor Reis Date: Mon, 7 Oct 2024 02:55:37 -0600 Subject: [PATCH 68/73] Update ghes-beta-note.md (#52447) Co-authored-by: Joe Clark <31087804+jc-clark@users.noreply.github.com> --- data/reusables/scim/ghes-beta-note.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/reusables/scim/ghes-beta-note.md b/data/reusables/scim/ghes-beta-note.md index 1b464c8dd3c1..a93e819a7a94 100644 --- a/data/reusables/scim/ghes-beta-note.md +++ b/data/reusables/scim/ghes-beta-note.md @@ -4,7 +4,7 @@ {% elsif ghes < 3.14 %} ->[!NOTE] SCIM for {% data variables.product.product_name %} is currently in {% data variables.release-phases.private_preview %} and is subject to change. For access to the {% data variables.release-phases.public_preview %}, contact your account manager on {% data variables.contact.contact_enterprise_sales %}. Please provide feedback in the [{% data variables.product.prodname_github_community %} discussion](https://github.com/orgs/community/discussions/36825). +>[!NOTE] This is an outdated, {% data variables.release-phases.private_preview %} version of SCIM for {% data variables.product.product_name %}. Customers must upgrade to 3.14 or newer and use the {% data variables.product.product_name %} SCIM {% data variables.release-phases.public_preview %} in order for their SCIM feedback or bug reports to be considered. >[!WARNING] The {% data variables.release-phases.public_preview %} is exclusively for testing and feedback, and no support is available. {% data variables.product.company_short %} recommends testing with a staging instance. For more information, see "[AUTOTITLE](/admin/installation/setting-up-a-github-enterprise-server-instance/setting-up-a-staging-instance)." From dc64a188c07690179a7d273bf4ad8be784e5c071 Mon Sep 17 00:00:00 2001 From: docs-bot <77750099+docs-bot@users.noreply.github.com> Date: Mon, 7 Oct 2024 05:13:46 -0400 Subject: [PATCH 69/73] Delete orphaned features (2024-09-30-16-28) (#52480) --- data/features/GH-advisory-db-erlang-support.yml | 6 ------ data/features/copilot-on-dotcom.yml | 2 -- data/features/dependency-graph-dart-support.yml | 5 ----- data/features/dependency-graph-rust-support.yml | 5 ----- data/features/github-actions-in-dependency-graph.yml | 6 ------ 5 files changed, 24 deletions(-) delete mode 100644 data/features/GH-advisory-db-erlang-support.yml delete mode 100644 data/features/copilot-on-dotcom.yml delete mode 100644 data/features/dependency-graph-dart-support.yml delete mode 100644 data/features/dependency-graph-rust-support.yml delete mode 100644 data/features/github-actions-in-dependency-graph.yml diff --git a/data/features/GH-advisory-db-erlang-support.yml b/data/features/GH-advisory-db-erlang-support.yml deleted file mode 100644 index 2194c32b8908..000000000000 --- a/data/features/GH-advisory-db-erlang-support.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Reference: Issue #6207. -# We have added support for Elixir advisories to the Advisory Database. -versions: - fpt: '*' - ghec: '*' - ghes: '>=3.10' diff --git a/data/features/copilot-on-dotcom.yml b/data/features/copilot-on-dotcom.yml deleted file mode 100644 index 1a45eecc8073..000000000000 --- a/data/features/copilot-on-dotcom.yml +++ /dev/null @@ -1,2 +0,0 @@ -versions: - ghec: '*' diff --git a/data/features/dependency-graph-dart-support.yml b/data/features/dependency-graph-dart-support.yml deleted file mode 100644 index 8abe977b6197..000000000000 --- a/data/features/dependency-graph-dart-support.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Reference: Issue #7738 Dependency graph supports Dart (pub) - [GA] -versions: - fpt: '*' - ghec: '*' - ghes: '>= 3.8' diff --git a/data/features/dependency-graph-rust-support.yml b/data/features/dependency-graph-rust-support.yml deleted file mode 100644 index e4c500725a53..000000000000 --- a/data/features/dependency-graph-rust-support.yml +++ /dev/null @@ -1,5 +0,0 @@ -# Reference: Issue #6964 Support for Rust manifest parsing in Dependency graph -versions: - fpt: '*' - ghec: '*' - ghes: '>3.5' diff --git a/data/features/github-actions-in-dependency-graph.yml b/data/features/github-actions-in-dependency-graph.yml deleted file mode 100644 index 6b0710f92c5c..000000000000 --- a/data/features/github-actions-in-dependency-graph.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Reference: #5813. -# Documentation for GitHub Actions workflow dependencies appearing in the dependency graph -versions: - fpt: '*' - ghes: '>3.4' - ghec: '*' From cd63ed54d4c7fb6bc47f12d06cef222c548d70fc Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:45:04 +0100 Subject: [PATCH 70/73] Remove variables that reference github.com in Copilot docs (#52454) Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> --- .../github-copilot-features.md | 2 +- .../what-is-github-copilot.md | 2 +- ...ring-github-copilot-in-your-environment.md | 6 ++--- .../configure-personal-settings/index.md | 2 +- ...ot-policies-as-an-individual-subscriber.md | 6 ++--- ...features-for-copilot-in-your-enterprise.md | 4 ++-- ...scribing-to-copilot-for-your-enterprise.md | 2 +- ...ating-a-custom-model-for-github-copilot.md | 2 +- .../indexing-repositories-for-copilot-chat.md | 4 ++-- .../excluding-content-from-github-copilot.md | 2 +- content/copilot/quickstart.md | 12 +++++----- ...of-github-copilot-chat-in-github-mobile.md | 2 +- ...use-of-github-copilot-chat-in-githubcom.md | 10 ++++---- ...-use-of-github-copilot-chat-in-your-ide.md | 4 ++-- ...thub-copilot-questions-in-github-mobile.md | 2 +- ...g-github-copilot-questions-in-githubcom.md | 24 +++++++++---------- ...ull-request-summary-with-github-copilot.md | 4 ++-- .../using-copilot-text-completion.md | 4 ++-- .../copilot/chat-procedural-intro.md | 8 +------ data/reusables/copilot/click-copilot-icon.md | 2 +- .../copilot/copilot-enterprise-features.md | 6 ++--- data/reusables/copilot/go-to-copilot-page.md | 2 +- .../rai/copilot/about-copilot-chat-ide.md | 2 +- 23 files changed, 54 insertions(+), 60 deletions(-) diff --git a/content/copilot/about-github-copilot/github-copilot-features.md b/content/copilot/about-github-copilot/github-copilot-features.md index 08016913a097..b1380791fbc9 100644 --- a/content/copilot/about-github-copilot/github-copilot-features.md +++ b/content/copilot/about-github-copilot/github-copilot-features.md @@ -20,7 +20,7 @@ Autocomplete-style suggestions from {% data variables.product.prodname_copilot_s ### {% data variables.product.prodname_copilot_chat_short %} -A chat interface that lets you ask coding-related questions. {% data variables.product.prodname_copilot_chat %} is available in {% data variables.product.prodname_dotcom_the_website %}, in {% data variables.product.prodname_mobile %}, and in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs)_. Users can also use skills with {% data variables.product.prodname_copilot_chat_short %}. +A chat interface that lets you ask coding-related questions. {% data variables.product.prodname_copilot_chat %} is available on the {% data variables.product.github %} website, in {% data variables.product.prodname_mobile %}, and in supported IDEs _({% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and JetBrains IDEs)_. Users can also use skills with {% data variables.product.prodname_copilot_chat_short %}. ### {% data variables.product.prodname_copilot_cli_short %} diff --git a/content/copilot/about-github-copilot/what-is-github-copilot.md b/content/copilot/about-github-copilot/what-is-github-copilot.md index 7e386d57d72d..d16123708370 100644 --- a/content/copilot/about-github-copilot/what-is-github-copilot.md +++ b/content/copilot/about-github-copilot/what-is-github-copilot.md @@ -44,7 +44,7 @@ redirect_from: * In your IDE * In {% data variables.product.prodname_mobile %}, as a chat interface * On the command line, through the {% data variables.product.prodname_cli %} -* On {% data variables.product.prodname_dotcom_the_website %} +* On the {% data variables.product.github %} website For more information, see "[AUTOTITLE](/copilot/about-github-copilot/github-copilot-features)." diff --git a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md index 87c975bd948b..eef04e7a09ab 100644 --- a/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md +++ b/content/copilot/managing-copilot/configure-personal-settings/configuring-github-copilot-in-your-environment.md @@ -19,7 +19,7 @@ versions: ## About {% data variables.product.prodname_copilot %} in JetBrains IDEs -If you use a JetBrains IDE, {% data variables.product.prodname_copilot %} can autocomplete code as you type. After installation, you can enable or disable {% data variables.product.prodname_copilot %}, and you can configure advanced settings within your IDE or on {% data variables.product.prodname_dotcom_the_website %}. This article describes how to configure {% data variables.product.prodname_copilot %} in the IntelliJ IDE, but the user interfaces of other JetBrains IDEs may differ. +If you use a JetBrains IDE, {% data variables.product.prodname_copilot %} can autocomplete code as you type. After installation, you can enable or disable {% data variables.product.prodname_copilot %}, and you can configure advanced settings within your IDE or on {% data variables.product.github %}. This article describes how to configure {% data variables.product.prodname_copilot %} in the IntelliJ IDE, but the user interfaces of other JetBrains IDEs may differ. ## Prerequisites @@ -197,7 +197,7 @@ You can also add a configuration to make the `languageAllowList` readonly in the ## About {% data variables.product.prodname_copilot %} in {% data variables.product.prodname_vs %} -If you use {% data variables.product.prodname_vs %}, {% data variables.product.prodname_copilot %} can autocomplete code as you type. After installation, you can enable or disable {% data variables.product.prodname_copilot %}, and you can configure advanced settings within {% data variables.product.prodname_vs %} or on {% data variables.product.prodname_dotcom_the_website %}. +If you use {% data variables.product.prodname_vs %}, {% data variables.product.prodname_copilot %} can autocomplete code as you type. After installation, you can enable or disable {% data variables.product.prodname_copilot %}, and you can configure advanced settings within {% data variables.product.prodname_vs %} or on {% data variables.product.github %}. ## Prerequisites @@ -260,7 +260,7 @@ If you use {% data variables.product.prodname_vscode %}, you can use {% data var You can learn more about scenarios and setup in the [VS Code documentation](https://code.visualstudio.com/docs/copilot/overview#_use-cases-for-github-copilot-in-vs-code). -After you install the {% data variables.product.prodname_copilot %} extension, you can enable or disable it, and you can configure advanced settings within {% data variables.product.prodname_vscode %} or on {% data variables.product.prodname_dotcom_the_website %}. +After you install the {% data variables.product.prodname_copilot %} extension, you can enable or disable it, and you can configure advanced settings within {% data variables.product.prodname_vscode %} or on {% data variables.product.github %}. ## Prerequisites diff --git a/content/copilot/managing-copilot/configure-personal-settings/index.md b/content/copilot/managing-copilot/configure-personal-settings/index.md index fdc849251d84..200b56efaea0 100644 --- a/content/copilot/managing-copilot/configure-personal-settings/index.md +++ b/content/copilot/managing-copilot/configure-personal-settings/index.md @@ -1,7 +1,7 @@ --- title: Configuring personal settings shortTitle: Configure personal settings -intro: 'You can manage the configuration of {% data variables.product.prodname_copilot %} in a supported IDE, in your organization, or on {% data variables.product.prodname_dotcom_the_website %}.' +intro: 'You can manage the configuration of {% data variables.product.prodname_copilot %} in a supported IDE or on {% data variables.product.github %}.' versions: feature: copilot topics: 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 94cf3d82f89d..4c5b5bba16bc 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 @@ -1,7 +1,7 @@ --- title: Managing Copilot policies as an individual subscriber shortTitle: Manage policies -intro: 'Find out how to change your personal settings on {% data variables.product.prodname_dotcom_the_website %} to configure {% data variables.product.prodname_copilot %}''s behavior.' +intro: 'Find out how to change your personal settings on {% data variables.product.github %} to configure {% data variables.product.prodname_copilot %}''s behavior.' product: '{% data variables.product.prodname_copilot_for_individuals %}' topics: - Copilot @@ -14,9 +14,9 @@ redirect_from: - /copilot/configuring-github-copilot/configuring-your-personal-github-copilot-settings-on-githubcom --- -## About {% data variables.product.prodname_copilot %} settings on {% data variables.product.prodname_dotcom_the_website %} +## About {% data variables.product.prodname_copilot %} settings on {% data variables.product.github %} -In addition to the configuration for the {% data variables.product.prodname_copilot %} plugin in your supported IDE, you can configure settings for {% data variables.product.prodname_copilot %} on {% data variables.product.prodname_dotcom_the_website %}. The settings apply wherever you use {% data variables.product.prodname_copilot %}. +In addition to the configuration for the {% data variables.product.prodname_copilot %} plugin in your supported IDE, you can configure settings for {% data variables.product.prodname_copilot %} on {% data variables.product.github %}. The settings apply wherever you use {% data variables.product.prodname_copilot %}. ## Enabling or disabling suggestions matching public code diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md index 9311c1654cae..e22f43dc3b46 100644 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise.md @@ -36,8 +36,8 @@ You can configure any of the following policies for your enterprise: ### {% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %} -With a {% data variables.product.prodname_copilot_enterprise_short %} license, you can enable "{% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %}" to provide members of your enterprise access to AI features on {% data variables.product.prodname_dotcom_the_website %}, including: -* **{% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_dotcom_the_website %}** - You can ask {% data variables.product.prodname_copilot %} coding-related questions within a chat interface on {% data variables.product.prodname_dotcom_the_website %}. You can ask general questions or questions within a specific context such as a repository, issue, file, or symbol. +With a {% data variables.product.prodname_copilot_enterprise_short %} license, you can enable "{% data variables.product.prodname_copilot_short %} in {% data variables.product.prodname_dotcom_the_website %}" to provide members of your enterprise access to AI features on the {% data variables.product.github %} website, including: +* **{% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_dotcom_the_website %}** - You can ask {% data variables.product.prodname_copilot %} coding-related questions within a chat interface on {% data variables.product.github %}. You can ask general questions or questions within a specific context such as a repository, issue, file, or symbol. * **{% data variables.product.prodname_copilot_short %} pull request summaries** - {% data variables.product.prodname_copilot_short %} can generate a summary of the changes made in a pull request, as well as a list of impacted files, using natural language. This overview helps reviewers quickly understand the proposed changes. * **{% data variables.product.prodname_copilot_short %} knowledge bases** - Organization owners can create knowledge bases consisting of Markdown documentation across one or more repositories, allowing organization members to use that documentation as context when they ask questions in {% data variables.product.prodname_copilot_chat_dotcom_short %}, {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vscode %}, and {% data variables.product.prodname_copilot_chat_short %} in {% data variables.product.prodname_vs %}. diff --git a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-the-copilot-subscription-for-your-enterprise/subscribing-to-copilot-for-your-enterprise.md b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-the-copilot-subscription-for-your-enterprise/subscribing-to-copilot-for-your-enterprise.md index 94424bed00c5..e84417058dd6 100644 --- a/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-the-copilot-subscription-for-your-enterprise/subscribing-to-copilot-for-your-enterprise.md +++ b/content/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-the-copilot-subscription-for-your-enterprise/subscribing-to-copilot-for-your-enterprise.md @@ -16,7 +16,7 @@ redirect_from: >[!NOTE] > {% data reusables.copilot.signup-procedure-enterprise-msft-ea %} -1. Ensure you are signed in as an enterprise admin on {% data variables.product.prodname_dotcom_the_website %}. +1. Ensure you are signed in as an enterprise admin on {% data variables.product.github %}. 1. Navigate to the {% data variables.product.prodname_copilot_short %} signup page: * For **{% data variables.product.prodname_copilot_business_short %}**, go to the [signup page for {% data variables.product.prodname_copilot_business_short %}](https://github.com/github-copilot/business_signup/choose_business_type). * For **{% data variables.product.prodname_copilot_enterprise_short %}**, go to the [signup page for {% data variables.product.prodname_copilot_enterprise_short %}](https://github.com/github-copilot/enterprise_signup/choose_enterprise). diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md index 08e4a0645d89..b6c835205cd9 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/creating-a-custom-model-for-github-copilot.md @@ -16,7 +16,7 @@ redirect_from: ## Prerequisite -The code on which you want to train a custom model must be hosted in repositories owned by your organization on {% data variables.product.prodname_dotcom_the_website %}. +The code on which you want to train a custom model must be hosted in repositories owned by your organization on {% data variables.product.github %}. ## Limitations diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md index 366c10a81068..0269b8e41181 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/customizing-copilot-for-your-organization/indexing-repositories-for-copilot-chat.md @@ -18,7 +18,7 @@ redirect_from: Indexing repositories is not a requirement and will not affect responses to questions about information in knowledge bases, pull requests, issues, discussions, or commits. However, indexing can help {% data variables.product.prodname_copilot_chat_short %} answer questions that relate directly to the code within a repository. -The indexing status of a repository is displayed on {% data variables.product.prodname_dotcom_the_website %} when you start a conversation that has a repository context. You can index the repository if it has not been indexed yet. +The indexing status of a repository is displayed on {% data variables.product.github %} when you start a conversation that has a repository context. You can index the repository if it has not been indexed yet. After you index a repository it is automatically re-indexed every time a change is pushed to the repository. @@ -34,7 +34,7 @@ After you index a repository it is automatically re-indexed every time a change ## Indexing a repository -1. On {% data variables.product.prodname_dotcom_the_website %}, browse to the repository you want to index. +1. On {% data variables.product.github %}, browse to the repository you want to index. 1. On any page, click the **{% octicon "copilot" aria-hidden="true" %} {% data variables.product.prodname_copilot_short %}** icon in the bottom right corner. If the repository has been indexed, this is shown near top of the {% data variables.product.prodname_copilot_short %} Chat panel. diff --git a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/excluding-content-from-github-copilot.md b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/excluding-content-from-github-copilot.md index 6c88bc291761..5e2dbfa083af 100644 --- a/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/excluding-content-from-github-copilot.md +++ b/content/copilot/managing-copilot/managing-github-copilot-in-your-organization/setting-policies-for-copilot-in-your-organization/excluding-content-from-github-copilot.md @@ -42,7 +42,7 @@ You can use content exclusions to configure {% data variables.product.prodname_c | JetBrains IDEs | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | | Vim/Neovim | {% octicon "check" aria-label="Supported" %} | Not applicable | | Azure Data Studio | {% octicon "x" aria-label="Not supported" %} | Not applicable | -| {% data variables.product.prodname_dotcom_the_website %} | Not applicable | {% octicon "x" aria-label="Not supported" %} | +| The {% data variables.product.github %} website | Not applicable | {% octicon "x" aria-label="Not supported" %} | ### Limitations of content exclusions diff --git a/content/copilot/quickstart.md b/content/copilot/quickstart.md index 4469b0b99bb3..4378b611bd10 100644 --- a/content/copilot/quickstart.md +++ b/content/copilot/quickstart.md @@ -1,6 +1,6 @@ --- title: Quickstart for GitHub Copilot -intro: 'Quickly learn how to use {% data variables.product.prodname_copilot %} in your editor{% ifversion ghec %} or on {% data variables.product.prodname_dotcom_the_website %}{% endif %}.' +intro: 'Quickly learn how to use {% data variables.product.prodname_copilot %} in your editor{% ifversion ghec %} or on {% data variables.product.github %}{% endif %}.' allowTitleToDifferFromFilename: true versions: feature: copilot @@ -16,7 +16,7 @@ topics: You can use {% data variables.product.prodname_copilot_chat_dotcom %} to get answers to coding-related questions, such as how best to code something, how to fix a bug, or how someone else's code works. For full details of what {% data variables.product.prodname_copilot_short %} can do, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)." -Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on whether you are in an editor or on {% data variables.product.prodname_dotcom_the_website %}. This version of the quickstart is for {% data variables.product.prodname_dotcom_the_website %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in an editor. +Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on whether you are in an editor or on the {% data variables.product.github %} website. This version of the quickstart is for {% data variables.product.github %}. Click the tabs above for instructions on using {% data variables.product.prodname_copilot_short %} in an editor. ## Prerequisites @@ -24,7 +24,7 @@ Instructions for using {% data variables.product.prodname_copilot_short %} diffe ## Asking your first question -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a repository and open a file. +1. On {% data variables.product.github %}, navigate to a repository and open a file. 1. Click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" %}) at the top right of the file view. ![Screenshot of the {% data variables.product.prodname_copilot_short %} button, highlighted with a dark orange outline, at the top of the file view.](/assets/images/help/copilot/copilot-button-for-file.png) @@ -68,7 +68,7 @@ For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat {% data reusables.copilot.quickstart-intro %} -Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vscode %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} and for {% data variables.product.prodname_dotcom_the_website %}{% endif %}. +Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vscode %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}. {% ifversion fpt %} {% data reusables.copilot.quickstart-signup %} @@ -125,7 +125,7 @@ The following example uses JavaScript, however other languages will work similar {% data reusables.copilot.quickstart-intro %} -Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vs %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} and for {% data variables.product.prodname_dotcom_the_website %}{% endif %}. +Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for {% data variables.product.prodname_vs %}. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}. {% ifversion fpt %} {% data reusables.copilot.quickstart-signup %} @@ -175,7 +175,7 @@ The following example uses JavaScript, however other languages will work similar {% data reusables.copilot.quickstart-intro %} -Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for JetBrains IDEs. Click the tabs above to see instructions for other editors{% ifversion ghec %} and for {% data variables.product.prodname_dotcom_the_website %}{% endif %}. +Instructions for using {% data variables.product.prodname_copilot_short %} differ depending on the editor you use. This version of the quickstart is for JetBrains IDEs. Click the tabs above to see instructions for other editors{% ifversion ghec %} or for the {% data variables.product.github %} website{% endif %}. {% ifversion fpt %} {% data reusables.copilot.quickstart-signup %} diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github-mobile.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github-mobile.md index df2956793d23..26a01dd44c5f 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github-mobile.md +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-github-mobile.md @@ -16,7 +16,7 @@ type: rai ## About {% data variables.product.prodname_copilot_mobile %} -{% data variables.product.prodname_copilot_mobile %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within {% data variables.product.prodname_mobile %}. The chat interface provides access to coding information and support without requiring you to navigate documentation or search online forums. In addition to {% data variables.product.prodname_mobile %}, {% data variables.product.prodname_copilot_chat_short %} is currently supported in {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and the JetBrains suite of IDEs. For more information about {% data variables.product.prodname_copilot %}, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)." +{% data variables.product.prodname_copilot_mobile %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within {% data variables.product.prodname_mobile %}. The chat interface provides access to coding information and support without requiring you to navigate documentation or search online forums. In addition to {% data variables.product.prodname_mobile %}, {% data variables.product.prodname_copilot_chat_short %} is currently supported in the {% data variables.product.github %} website, {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and the JetBrains suite of IDEs. For more information about {% data variables.product.prodname_copilot %}, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)." {% data variables.product.prodname_copilot_chat %} can answer a wide range of coding-related questions on topics including syntax, programming concepts, test cases, debugging, and more. {% data variables.product.prodname_copilot_chat %} is not designed to answer non-coding questions or provide general information on topics outside of coding. diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md index 0a7c7c1aeeb5..2a37d11d36c6 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-githubcom.md @@ -19,15 +19,15 @@ redirect_from: ## About {% data variables.product.prodname_copilot_chat_dotcom %} -{% data variables.product.prodname_copilot_chat_dotcom %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within {% data variables.product.prodname_dotcom_the_website %}. +{% data variables.product.prodname_copilot_chat_dotcom %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within {% data variables.product.github %}. The chat interface provides access to coding information and support without requiring you to navigate documentation or search online forums. -> [!NOTE] {% data variables.product.prodname_copilot_chat_short %} is also available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and the JetBrains suite of IDEs. However, features available in these IDEs differ from features available on {% data variables.product.prodname_dotcom_the_website %}. +> [!NOTE] {% data variables.product.prodname_copilot_chat_short %} is also available in {% data variables.product.prodname_vscode %}, {% data variables.product.prodname_vs %}, and the JetBrains suite of IDEs. However, features available in these IDEs differ from features available on {% data variables.product.github %}. {% data variables.product.prodname_copilot_chat %} can answer a wide range of coding-related questions on topics including syntax, programming concepts, test cases, debugging, and more. {% data variables.product.prodname_copilot_chat %} is not designed to answer non-coding questions or provide general information on topics outside of coding. -The primary supported language for {% data variables.product.prodname_copilot_chat %} on {% data variables.product.prodname_dotcom_the_website %} is English. +The primary supported language for {% data variables.product.prodname_copilot_chat_dotcom_short %} is English. {% data variables.product.prodname_copilot_chat %} works by using a combination of natural language processing and machine learning to understand your question and provide you with an answer. This process can be broken down into a number of steps. @@ -85,7 +85,7 @@ However, it's important to note that {% data variables.product.prodname_copilot_ ### Finding out about releases, discussions, and commits -{% data variables.product.prodname_copilot_chat_short %} can help you find out what changed in a specific release, it can summarize the information in a discussion on {% data variables.product.prodname_dotcom_the_website %}, and it can explain the changes in a specific commit. This can be useful if, for example, you are new to a project, you want to quickly get the gist of a discussion, or you need to work on code that someone else wrote. However, it's important to note that {% data variables.product.prodname_copilot_chat_short %}'s summaries of releases, discussions, and commits may not always be accurate or complete. +{% data variables.product.prodname_copilot_chat_short %} can help you find out what changed in a specific release, it can summarize the information in a discussion, and it can explain the changes in a specific commit. This can be useful if, for example, you are new to a project, you want to quickly get the gist of a discussion, or you need to work on code that someone else wrote. However, it's important to note that {% data variables.product.prodname_copilot_chat_short %}'s summaries of releases, discussions, and commits may not always be accurate or complete. ## Improving performance for {% data variables.product.prodname_copilot_chat_short %} @@ -143,7 +143,7 @@ One of the limitations of {% data variables.product.prodname_copilot_chat_short ### Leveraging a web search to answer a question -Depending on the question you ask, {% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_dotcom_the_website %} can optionally use a Bing search to help answer your question. {% data variables.product.prodname_copilot_short %} will use Bing for queries about recent events, new trends or technologies, highly specific subjects, or when a web search is explicitly requested by the user. Your {% data variables.product.prodname_enterprise %} administrator can enable Bing for your whole enterprise, or can delegate this decision to the organizational administrator. For more information, see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)." +Depending on the question you ask, {% data variables.product.prodname_copilot_chat %} can optionally use a Bing search to help answer your question. {% data variables.product.prodname_copilot_short %} will use Bing for queries about recent events, new trends or technologies, highly specific subjects, or when a web search is explicitly requested by the user. Your {% data variables.product.prodname_enterprise %} administrator can enable Bing for your whole enterprise, or can delegate this decision to the organizational administrator. For more information, see "[AUTOTITLE](/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise)." When leveraging Bing, {% data variables.product.prodname_copilot_short %} will use the content of your prompt, as well as additional available context, to generate a Bing search query on your behalf that is sent to the Bing Search API. {% data variables.product.prodname_copilot_short %} will provide a link to the search results with its response. The search query sent to Bing is governed by [Microsoft's Privacy Statement](https://privacy.microsoft.com/en-us/privacystatement). diff --git a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md index 3dd0c483518d..c2441a097519 100644 --- a/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md +++ b/content/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-chat-in-your-ide.md @@ -25,7 +25,7 @@ type: rai {% data reusables.rai.copilot.copilot-chat-ide-response-generation %} -When you use the `@github` chat participant, {% data variables.product.prodname_copilot_chat_short %} will be able to gather context from your code stored on {% data variables.product.prodname_dotcom_the_website %} and search results from Bing (if enabled by your administrator). +When you use the `@github` chat participant, {% data variables.product.prodname_copilot_chat_short %} will be able to gather context from your code stored on {% data variables.product.github %} and search results from Bing (if enabled by your administrator). {% data reusables.rai.copilot.copilot-chat-ide-output-formatting %} @@ -61,7 +61,7 @@ This can be a useful tool for programmers, as it can provide guidance and suppor {% data reusables.rai.copilot.copilot-chat-ide-response-generation %} -When you use the `@github` chat participant, {% data variables.product.prodname_copilot_chat_short %} will be able to gather context from your code stored on {% data variables.product.prodname_dotcom_the_website %} and search results from Bing (if enabled by your administrator). +When you use the `@github` chat participant, {% data variables.product.prodname_copilot_chat_short %} will be able to gather context from your code stored on {% data variables.product.github %} and search results from Bing (if enabled by your administrator). {% data reusables.rai.copilot.copilot-chat-ide-output-formatting %} diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile.md index 50696ea1a830..f2a4892c43ea 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-github-mobile.md @@ -15,7 +15,7 @@ redirect_from: ## Overview -{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you ask and receive answers to coding-related questions in {% data variables.product.prodname_mobile %}. You can also use {% data variables.product.prodname_copilot_chat %} on either {% data variables.product.prodname_dotcom_the_website %} or within a supported IDE. For information on using {% data variables.product.prodname_copilot_chat %} in an IDE, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide)." +{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you ask and receive answers to coding-related questions in {% data variables.product.prodname_mobile %}. You can also use {% data variables.product.prodname_copilot_chat %} on either {% data variables.product.github %} or within a supported IDE. For information on using {% data variables.product.prodname_copilot_chat %} in an IDE, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/using-github-copilot-chat-in-your-ide)." {% data variables.product.prodname_copilot_mobile_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github-mobile/about-github-copilot-chat-in-github-mobile)." diff --git a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md index ccaafc78cde2..bdabd753f4d1 100644 --- a/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md +++ b/content/copilot/using-github-copilot/asking-github-copilot-questions-in-githubcom.md @@ -17,11 +17,11 @@ redirect_from: ## Overview -{% data variables.product.prodname_copilot_chat_dotcom %} is a chat interface that lets you ask and receive answers to coding-related questions on {% data variables.product.prodname_dotcom_the_website %}. +{% data variables.product.prodname_copilot_chat_dotcom %} is a chat interface that lets you ask and receive answers to coding-related questions on the {% data variables.product.github %} website. {% data variables.product.prodname_copilot_chat_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github/about-github-copilot-chat-in-githubcom)." -On {% data variables.product.prodname_dotcom_the_website %}, you can use {% data variables.product.prodname_copilot_chat_short %} to ask: +On {% data variables.product.github %}, you can use {% data variables.product.prodname_copilot_chat_short %} to ask: * General software-related questions, without a particular context. For more information, see "[Asking a general question about software development](#asking-a-general-question-about-software-development)." * Exploratory questions asked in the context of a specific repository. For more information, see "[Asking exploratory questions about a repository](#asking-exploratory-questions-about-a-repository)." @@ -85,7 +85,7 @@ The skills you can use in {% data variables.product.prodname_copilot_chat_dotcom ### Changing your AI model > [!NOTE] -> * The `o1-preview` and `o1-mini` models do not have access to skills {% ifversion ghec %}or knowledge bases {% endif %}in {% data variables.product.prodname_copilot_chat_dotcom %}. If you want to use skills {% ifversion ghec %}or knowledge bases {% endif %}on {% data variables.product.prodname_dotcom_the_website %}, you must use the `gpt-4o` model. +> * The `o1-preview` and `o1-mini` models do not have access to skills {% ifversion ghec %}or knowledge bases {% endif %}in {% data variables.product.prodname_copilot_chat_dotcom %}. If you want to use skills {% ifversion ghec %}or knowledge bases {% endif %}on {% data variables.product.github %}, you must use the `gpt-4o` model. > * If you use {% data variables.product.prodname_copilot_extensions_short %}, they may override the model you select. > * Experimental pre-release versions of the models may not interact with all filters correctly, including the duplication detection filter. @@ -252,7 +252,7 @@ When you enter a query, {% data variables.product.prodname_copilot_short %} sear You can chat with {% data variables.product.prodname_copilot_short %} about a file in your repository, or about specific lines of code within a file. -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a repository and open a file. +1. On {% data variables.product.github %}, navigate to a repository and open a file. 1. Do one of the following: * To ask a question about the entire file, click the {% data variables.product.prodname_copilot_short %} icon ({% octicon "copilot" aria-hidden="true" %}) at the top right of the file view. @@ -331,7 +331,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize a p ### Get a summary of a pull request -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a pull request in a repository. +1. On {% data variables.product.github %}, navigate to a pull request in a repository. {% data reusables.copilot.open-copilot %} @@ -347,7 +347,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize a p ### Ask about changes to a specific file in a pull request -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a pull request in a repository. +1. On {% data variables.product.github %}, navigate to a pull request in a repository. 1. Click the **Files changed** tab. 1. Click {% octicon "kebab-horizontal" aria-label="Show options" %} at the top right of the file, then click **Ask {% data variables.product.prodname_copilot_short %} about this diff**. 1. Type a question in the "Ask {% data variables.product.prodname_copilot_short %}" box at the bottom of the chat panel and press Enter. @@ -361,7 +361,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize a p ### Ask about specific lines within a file in a pull request -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a pull request in a repository. +1. On {% data variables.product.github %}, navigate to a pull request in a repository. 1. Click the **Files changed** tab. 1. Click the line number for the first line you want to select, then hold down Shift and click the line number for the last line you want to select. 1. Ask {% data variables.product.prodname_copilot_short %} a question, or choose from a list of predefined questions. @@ -381,7 +381,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize a p > [!NOTE]This feature is currently in {% data variables.release-phases.public_preview %} and subject to change. -1. On {% data variables.product.prodname_dotcom_the_website %}, navigate to a pull request in a repository. +1. On {% data variables.product.github %}, navigate to a pull request in a repository. 1. Scroll to the bottom of the page, then, next to one of the failing checks, click **Details**. {% data reusables.copilot.open-copilot %} @@ -404,7 +404,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize or > [!NOTE] The quality of {% data variables.product.prodname_copilot_chat_short %}'s responses may be degraded when working with issues or discussions that have very long bodies or a large number of comments. For example, this may occur if you ask {% data variables.product.prodname_copilot_short %} to summarize a long-running discussion. Where this happens, {% data variables.product.prodname_copilot_short %} will warn you so you can double check its output. -1. Navigate to an issue or discussion on {% data variables.product.prodname_dotcom_the_website %}. +1. Navigate to an issue or discussion on {% data variables.product.github %}. {% data reusables.copilot.open-copilot %} @@ -426,7 +426,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to summarize or You can ask {% data variables.product.prodname_copilot_short %} to explain the changes in a commit. -1. Navigate to a commit on {% data variables.product.prodname_dotcom_the_website %}. +1. Navigate to a commit on {% data variables.product.github %}. {% data reusables.copilot.open-copilot %} @@ -437,7 +437,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to explain the c * When was this commit made? > [!TIP] - > If you know the SHA for a commit, instead of navigating to the commit, you can ask {% data variables.product.prodname_copilot_short %} about the commit from any page in the repository on {% data variables.product.prodname_dotcom_the_website %} by including the SHA in your message. For example, `What changed in commit a778e0eab?` + > If you know the SHA for a commit, instead of navigating to the commit, you can ask {% data variables.product.prodname_copilot_short %} about the commit from any page in the repository on {% data variables.product.github %} by including the SHA in your message. For example, `What changed in commit a778e0eab?` {% data reusables.copilot.stop-response-generation %} @@ -445,7 +445,7 @@ You can ask {% data variables.product.prodname_copilot_short %} to explain the c You can ask {% data variables.product.prodname_copilot_short %} a question about an entire repository by typing your question in the main search box of the repository. -1. Navigate to a repository on {% data variables.product.prodname_dotcom_the_website %}. +1. Navigate to a repository on {% data variables.product.github %}. 1. Press /, or click in the main search box at the top of the page. 1. In the search box, after `repo:OWNER/REPO`, type the question you want to ask {% data variables.product.prodname_copilot_short %}. diff --git a/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md b/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md index 66099ab95772..d1274749a655 100644 --- a/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md +++ b/content/copilot/using-github-copilot/creating-a-pull-request-summary-with-github-copilot.md @@ -14,7 +14,7 @@ redirect_from: ## About {% data variables.product.prodname_copilot_for_prs %} -You can use {% data variables.product.prodname_copilot %} to generate a summary of a pull request on {% data variables.product.prodname_dotcom_the_website %}. You can use the summary to help reviewers understand your changes, or to quickly understand the changes in a pull request you're reviewing. +You can use {% data variables.product.prodname_copilot %} to generate a summary of a pull request on {% data variables.product.github %}. You can use the summary to help reviewers understand your changes, or to quickly understand the changes in a pull request you're reviewing. {% data variables.product.prodname_copilot %} will scan through the pull request and provide an overview of the changes made in prose, as well as a bulleted list of changes with the files that they impact. You can generate a summary in the following places. @@ -26,7 +26,7 @@ To learn more about {% data variables.product.prodname_copilot_for_prs %} and ho ## Creating a summary for a pull request -1. On {% data variables.product.prodname_dotcom_the_website %}, create a pull request or navigate to an existing pull request. +1. On {% data variables.product.github %}, create a pull request or navigate to an existing pull request. > [!NOTE] {% data variables.product.prodname_copilot %} does not take into account any existing content in the pull request description, so it is best to start with a blank description. diff --git a/content/copilot/using-github-copilot/using-copilot-text-completion.md b/content/copilot/using-github-copilot/using-copilot-text-completion.md index f620d97fa167..f8c85a422e60 100644 --- a/content/copilot/using-github-copilot/using-copilot-text-completion.md +++ b/content/copilot/using-github-copilot/using-copilot-text-completion.md @@ -22,7 +22,7 @@ When you are creating a new pull request, {% data variables.product.prodname_cop You can use {% data variables.product.prodname_copilot_autocomplete_pr %} in the description of a new pull request you're creating. -1. On {% data variables.product.prodname_dotcom_the_website %}, create a pull request. +1. On {% data variables.product.github %}, create a pull request. 1. In the description field, start typing your description. 1. As you type, {% data variables.product.prodname_copilot_short %} will provide in-line suggestions based on the context of the pull request. 1. Review the suggestions, which will be shown in grey. @@ -34,5 +34,5 @@ You can use {% data variables.product.prodname_copilot_autocomplete_pr %} in the You can disable or enable {% data variables.product.prodname_copilot_autocomplete_pr %} for your pull request descriptions. Your preference will be saved for future pull requests. -1. On {% data variables.product.prodname_dotcom_the_website %}, create a pull request. +1. On {% data variables.product.github %}, create a pull request. 1. At the top of the description field, select {% octicon "copilot" aria-hidden="true" %} then hover over **Autocomplete (Beta)**, and click **Disabled** or **Enabled**. diff --git a/data/reusables/copilot/chat-procedural-intro.md b/data/reusables/copilot/chat-procedural-intro.md index fbefbdc8ade1..0e5fa97f9d63 100644 --- a/data/reusables/copilot/chat-procedural-intro.md +++ b/data/reusables/copilot/chat-procedural-intro.md @@ -1,7 +1 @@ -{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you ask and receive answers to coding-related questions directly within a supported IDE. {% data variables.product.prodname_copilot_chat_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/about-github-copilot-chat-in-your-ide)." - -{% ifversion ghec %} - -If you have a {% data variables.product.prodname_copilot_enterprise %} subscription you may also be able to use {% data variables.product.prodname_copilot_chat %} on {% data variables.product.prodname_dotcom_the_website %}, depending on your organization or enterprise settings. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom)." - -{% endif %} +{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you ask and receive answers to coding-related questions directly within a supported IDE. {% data variables.product.prodname_copilot_chat_short %} can help you with a variety of coding-related tasks, like offering you code suggestions, providing natural language descriptions of a piece of code's functionality and purpose, generating unit tests for your code, and proposing fixes for bugs in your code. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-ides/about-github-copilot-chat-in-your-ide) and "[AUTOTITLE](/enterprise-cloud@latest/copilot/github-copilot-chat/copilot-chat-in-github/using-github-copilot-chat-in-githubcom)." diff --git a/data/reusables/copilot/click-copilot-icon.md b/data/reusables/copilot/click-copilot-icon.md index cf60ee590cbe..5f399f670a06 100644 --- a/data/reusables/copilot/click-copilot-icon.md +++ b/data/reusables/copilot/click-copilot-icon.md @@ -1 +1 @@ -1. On any page on {% data variables.product.prodname_dotcom_the_website %}, click the **{% octicon "copilot" aria-hidden="true" %}** {% data variables.product.prodname_copilot %} icon at the top right of the page. +1. On any page on {% data variables.product.github %}, click the **{% octicon "copilot" aria-hidden="true" %}** {% data variables.product.prodname_copilot %} icon at the top right of the page. diff --git a/data/reusables/copilot/copilot-enterprise-features.md b/data/reusables/copilot/copilot-enterprise-features.md index 89203fb6c108..21227a289e7a 100644 --- a/data/reusables/copilot/copilot-enterprise-features.md +++ b/data/reusables/copilot/copilot-enterprise-features.md @@ -1,6 +1,6 @@ -### {% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_dotcom_the_website %} +### {% data variables.product.prodname_copilot_chat_dotcom %} -{% data variables.product.prodname_copilot_chat %} in {% data variables.product.prodname_dotcom_the_website %} is a chat interface that lets you ask and receive answers to coding-related questions within {% data variables.product.prodname_dotcom_the_website %}. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github/about-github-copilot-chat-in-githubcom)." +{% data variables.product.prodname_copilot_chat_dotcom %} is a chat interface that lets you ask and receive answers to coding-related questions within {% data variables.product.github %}. For more information, see "[AUTOTITLE](/copilot/github-copilot-chat/copilot-chat-in-github/about-github-copilot-chat-in-githubcom)." ### {% data variables.product.prodname_copilot_for_prs %} @@ -12,4 +12,4 @@ ### {% data variables.product.prodname_copilot_short %} knowledge bases -Knowledge bases are collections of Markdown documentation from one or more repositories. When you ask {% data variables.product.prodname_copilot_chat_short %} a question in {% data variables.product.prodname_dotcom_the_website %}, {% data variables.product.prodname_vscode_shortname %}, and {% data variables.product.prodname_vs %} you can specify a knowledge base as the context for your question. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-copilot-knowledge-bases)." +Knowledge bases are collections of Markdown documentation from one or more repositories. When you ask {% data variables.product.prodname_copilot_chat_short %} a question in the {% data variables.product.github %} website, {% data variables.product.prodname_vscode_shortname %}, or {% data variables.product.prodname_vs %}, you can specify a knowledge base as the context for your question. For more information, see "[AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-github-copilot-features-in-your-organization/managing-copilot-knowledge-bases)." diff --git a/data/reusables/copilot/go-to-copilot-page.md b/data/reusables/copilot/go-to-copilot-page.md index e4abd542e1ff..a7596014ea32 100644 --- a/data/reusables/copilot/go-to-copilot-page.md +++ b/data/reusables/copilot/go-to-copilot-page.md @@ -1,4 +1,4 @@ -1. On any page on {% data variables.product.prodname_dotcom_the_website %}, click the **{% octicon "copilot" aria-hidden="true" %}** {% data variables.product.prodname_copilot %} icon at the bottom right of the page. +1. On any page on {% data variables.product.github %}, click the **{% octicon "copilot" aria-hidden="true" %}** {% data variables.product.prodname_copilot %} icon at the bottom right of the page. The {% data variables.product.prodname_copilot_chat %} panel is displayed. To resize the panel, click and drag the top or left edge. diff --git a/data/reusables/rai/copilot/about-copilot-chat-ide.md b/data/reusables/rai/copilot/about-copilot-chat-ide.md index 9c7508bf52bc..adf40ef551e0 100644 --- a/data/reusables/rai/copilot/about-copilot-chat-ide.md +++ b/data/reusables/rai/copilot/about-copilot-chat-ide.md @@ -1,6 +1,6 @@ ## About {% data variables.product.prodname_copilot_chat %} -{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within {% data variables.product.prodname_dotcom_the_website %} and supported IDEs. The chat interface provides access to coding information and support without requiring you to navigate documentation or search online forums. For more information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)." +{% data variables.product.prodname_copilot_chat %} is a chat interface that lets you interact with {% data variables.product.prodname_copilot %}, to ask and receive answers to coding-related questions within the {% data variables.product.github %} website and supported IDEs. The chat interface provides access to coding information and support without requiring you to navigate documentation or search online forums. For more information, see "[AUTOTITLE](/copilot/about-github-copilot/what-is-github-copilot)." {% data variables.product.prodname_copilot_chat %} can answer a wide range of coding-related questions on topics including syntax, programming concepts, test cases, debugging, and more. {% data variables.product.prodname_copilot_chat %} is not designed to answer non-coding questions or provide general information on topics outside of coding. From 31849c744aab1775168edc27d87b022a1f84d7ff Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Mon, 7 Oct 2024 10:41:05 +0100 Subject: [PATCH 71/73] Reduce usage of "github.com" variables in account-and-profile (#52457) Co-authored-by: Felicity Chapman --- .../setting-your-commit-email-address.md | 18 +++++++++--------- .../verifying-your-email-address.md | 6 +++--- .../changing-your-github-username.md | 2 +- .../managing-accessibility-settings.md | 6 +++--- ...efault-branch-name-for-your-repositories.md | 4 ++-- .../deleting-your-personal-account.md | 4 ++-- .../managing-your-personal-account/index.md | 2 +- .../managing-multiple-accounts.md | 12 ++++++------ 8 files changed, 27 insertions(+), 27 deletions(-) diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md index 3b8eccf725dd..39536ca6a096 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md @@ -1,6 +1,6 @@ --- title: Setting your commit email address -intro: 'You can set the email address that is used to author commits on {% data variables.location.product_location %} and on your computer.' +intro: 'You can set the email address that is used to author commits on {% data variables.product.github %} and on your computer.' redirect_from: - /articles/keeping-your-email-address-private - /articles/setting-your-commit-email-address-on-github @@ -24,9 +24,9 @@ shortTitle: Set commit email address --- ## About commit email addresses -{% data variables.product.prodname_dotcom %} uses your commit email address to associate commits with your account on {% data variables.location.product_location %}. You can choose the email address that will be associated with the commits you push from the command line as well as web-based Git operations you make. +{% data variables.product.github %} uses your commit email address to associate commits with your account on {% data variables.product.github %}. You can choose the email address that will be associated with the commits you push from the command line as well as web-based Git operations you make. -For web-based Git operations, you can set your commit email address on {% data variables.location.product_location %}. For commits you push from the command line, you can set your commit email address in Git. +For web-based Git operations, you can set your commit email address on {% data variables.product.github %}. For commits you push from the command line, you can set your commit email address in Git. {% ifversion fpt or ghec %}Any commits you made prior to changing your commit email address are still associated with your previous email address.{% else %}After changing your commit email address on {% data variables.product.product_name %}, the new email address will be visible in all of your future web-based Git operations by default. Any commits you made prior to changing your commit email address are still associated with your previous email address.{% endif %} @@ -44,19 +44,19 @@ For web-based Git operations, you can set your commit email address on {% data v You can also choose to block commits you push from the command line that expose your personal email address. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address)."{% endif %} -To ensure that commits are attributed to you and appear in your contributions graph, use an email address that is connected to your account on {% data variables.location.product_location %}{% ifversion fpt or ghec %}, or the `noreply` email address provided to you in your email settings{% endif %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)." +To ensure that commits are attributed to you and appear in your contributions graph, use an email address that is connected to your account on {% data variables.product.github %}{% ifversion fpt or ghec %}, or the `noreply` email address provided to you in your email settings{% endif %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account)." {% ifversion fpt or ghec %} {% note %} -**Note:** If you created your account on {% data variables.location.product_location %} _after_ July 18, 2017, your `noreply` email address for {% data variables.product.product_name %} is an ID number and your username in the form of ID+USERNAME@users.noreply.github.com. If you created your account on {% data variables.location.product_location %} _prior to_ July 18, 2017, and enabled **Keep my email address private** prior to that date, your `noreply` email address from {% data variables.product.product_name %} is USERNAME@users.noreply.github.com. You can get an ID-based `noreply` email address for {% data variables.product.product_name %} by selecting (or deselecting and reselecting) **Keep my email address private** in your email settings. +**Note:** If you created your account _after_ July 18, 2017, your `noreply` email address for is an ID number and your username in the form of ID+USERNAME@users.noreply.github.com. If you created your account _prior to_ July 18, 2017, and enabled **Keep my email address private** prior to that date, your `noreply` email address is USERNAME@users.noreply.github.com. You can get an ID-based `noreply` email address by selecting (or deselecting and reselecting) **Keep my email address private** in your email settings. {% endnote %} -If you use your `noreply` email address for {% data variables.product.product_name %} to make commits and then [change your username](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username), those commits will not be associated with your account on {% data variables.location.product_location %}. This does not apply if you're using the ID-based `noreply` address from {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username)."{% endif %} +If you use your `noreply` email address for {% data variables.product.github %} to make commits and then change your username, those commits will not be associated with your account. This does not apply if you're using the ID-based `noreply` address from {% data variables.product.github %}. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username)."{% endif %} -## Setting your commit email address on {% data variables.product.prodname_dotcom %} +## Setting your commit email address on {% data variables.product.github %} {% data reusables.files.commit-author-email-options %} @@ -68,7 +68,7 @@ If you use your `noreply` email address for {% data variables.product.product_na ## Setting your commit email address in Git -You can use the `git config` command to change the email address you associate with your Git commits. The new email address you set will be visible in any future commits you push to {% data variables.location.product_location %} from the command line. Any commits you made prior to changing your commit email address are still associated with your previous email address. +You can use the `git config` command to change the email address you associate with your Git commits. The new email address you set will be visible in any future commits you push to {% data variables.product.github %} from the command line. Any commits you made prior to changing your commit email address are still associated with your previous email address. ### Setting your email address for every repository on your computer @@ -91,7 +91,7 @@ You can use the `git config` command to change the email address you associate w ### Setting your email address for a single repository -{% data variables.product.product_name %} uses the email address set in your local Git configuration to associate commits pushed from the command line with your account on {% data variables.location.product_location %}. +{% data variables.product.github %} uses the email address set in your local Git configuration to associate commits pushed from the command line with your account on {% data variables.product.github %}. You can change the email address associated with commits you make in a single repository. This will override your global Git configuration settings in this one repository, but will not affect any other repositories. diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md index e5b2cf292a51..81b99bcc4a84 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md @@ -72,11 +72,11 @@ Having an unverified email address does not affect most actions you can take on The verification link expires after 24 hours. If you don't verify your email within 24 hours, you can request another email verification link. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address#verifying-your-email-address)." -If you click on the link in the confirmation email within 24 hours and you are directed to an error page, you should ensure that you're signed into the correct account on {% data variables.location.product_location %}. +If you click on the link in the confirmation email within 24 hours and you are directed to an error page, you should ensure that you're signed into the correct account on {% data variables.product.github %}. -1. Sign out of your personal account on {% data variables.location.product_location %}. +1. Sign out of your account. 1. Quit and restart your browser. -1. Sign in to your personal account on {% data variables.location.product_location %}. +1. Sign in to your account. 1. Click on the verification link in the email we sent you. {% ifversion ghec %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md index 53d8f0d94cdd..fdcd2e9af8f0 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md @@ -76,7 +76,7 @@ If the new owner of your old username creates a repository with the same name as ## Links to your previous profile page -After changing your username, links to your previous profile page, such as `https://{% data variables.product.product_url %}/previoususername`, will return a 404 error. We recommend updating any links to your account on {% data variables.location.product_location %} from elsewhere{% ifversion fpt or ghec %}, such as your LinkedIn or Twitter profile{% endif %}. +After changing your username, links to your previous profile page, such as `https://{% data variables.product.product_url %}/previoususername`, will return a 404 error. We recommend updating any links to your profile from elsewhere{% ifversion fpt or ghec %}, such as your LinkedIn or Twitter profile{% endif %}. ## Accounts logged in on GitHub Mobile diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md index 0ea45fd698b5..9a82d9c05f52 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md @@ -12,15 +12,15 @@ type: how_to ## About accessibility settings -To create an experience on {% data variables.location.product_location %} that fits your needs, you can customize the user interface. Accessibility settings can be essential for people with disabilities, but can be useful to anyone. For example, customization of keyboard shortcuts is essential to people who navigate using voice control, but can be useful to anyone when a keyboard shortcut for {% data variables.product.product_name %} clashes with another application shortcut. +To create an experience on {% data variables.product.github %} that fits your needs, you can customize the user interface. Accessibility settings can be essential for people with disabilities, but can be useful to anyone. For example, customization of keyboard shortcuts is essential to people who navigate using voice control, but can be useful to anyone when a keyboard shortcut for {% data variables.product.github %} clashes with another application shortcut. -You can decide whether you want to use some or all keyboard shortcuts on {% ifversion fpt or ghec %}{% data variables.location.product_location %}{% elsif ghes %}the website for {% data variables.location.product_location %}{% endif %} and you can also control the display of animated images{% ifversion link-underlines %} and how links are displayed{% endif %}. +You can decide whether you want to use some or all keyboard shortcuts, and control the display of animated images{% ifversion link-underlines %} and how links are displayed{% endif %}. {% ifversion link-underlines %} ## Managing the appearance of links -You can control whether links in text blocks on {% data variables.location.product_location %} are underlined and therefore more distinguishable. +You can control whether links in text blocks are underlined and therefore more distinguishable. {% data reusables.user-settings.access_settings %} {% data reusables.user-settings.accessibility_settings %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md index bbf3758269b1..d9f0c925d674 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md @@ -1,6 +1,6 @@ --- title: Managing the default branch name for your repositories -intro: 'You can set the default branch name for new repositories that you create on {% data variables.location.product_location %}.' +intro: 'You can set the default branch name for new repositories that you create on {% data variables.product.github %}.' versions: fpt: '*' ghes: '*' @@ -16,7 +16,7 @@ shortTitle: Manage default branch name --- ## About management of the default branch name -When you create a new repository on {% data variables.location.product_location %}, the repository contains one branch, which is the default branch. You can change the name that {% data variables.product.product_name %} uses for the default branch in new repositories you create. For more information about the default branch, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#about-the-default-branch)." +When you create a new repository on {% data variables.product.github %}, the repository contains one branch, which is the default branch. You can change the name that {% data variables.product.github %} uses for the default branch in new repositories you create. For more information about the default branch, see "[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#about-the-default-branch)." {% data reusables.branches.change-default-branch %} diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md index 5c44dd271807..c8942c35eef3 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md @@ -33,13 +33,13 @@ Deleting your personal account removes all repositories, forks of private reposi {% note %} -**Note**: If your enterprise manages your account and you sign into {% data variables.location.product_location %} through your company's identity provider (IdP), you cannot delete your account. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)." +**Note**: If your enterprise manages your account and you sign into {% data variables.product.github %} through your company's identity provider (IdP), you cannot delete your account. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users)." {% endnote %} {% endif %} -{% ifversion fpt or ghec %}When you delete your account we stop billing you. The email address associated with the account becomes available for use with a different account on {% data variables.location.product_location %}. After 90 days, the account name also becomes available to anyone else to use on a new account. {% endif %} +{% ifversion fpt or ghec %}When you delete your account we stop billing you. The email address associated with the account becomes available for use with a different account. After 90 days, the account name also becomes available to anyone else to use on a new account.{% endif %} If you're the only owner of an organization, you must transfer ownership to another person or delete the organization before you can delete your personal account. If there are other owners in the organization, you must remove yourself from the organization before you can delete your personal account. diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md index 633cc0111028..9cdc2ce522d3 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md @@ -1,6 +1,6 @@ --- title: Managing your personal account -intro: 'You can manage your personal account on {% data variables.location.product_location %}. For example, you can {% ifversion fpt or ghec %}manage multiple accounts, {% endif %}convert an account to an organization, or delete an account.' +intro: 'You can manage your personal account on {% data variables.product.github %}. For example, you can {% ifversion fpt or ghec %}manage multiple accounts, {% endif %}convert an account to an organization, or delete an account.' shortTitle: Manage personal account versions: fpt: '*' diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md index 044bdc2e389e..29a0aaa291e4 100644 --- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md +++ b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md @@ -1,6 +1,6 @@ --- title: Managing multiple accounts -intro: 'If you use one workstation to contribute to projects for more than one account on {% data variables.location.product_location %}, you can modify your Git configuration to simplify the contribution process.' +intro: 'If you use one workstation to contribute to projects for more than one account, you can modify your Git configuration to simplify the contribution process.' versions: feature: multiple-accounts-one-workstation topics: @@ -12,13 +12,13 @@ shortTitle: Manage multiple accounts ## About management of multiple accounts -In some cases, you may need to use multiple accounts on {% data variables.location.product_location %}. For example, you may have a personal account for open source contributions, and your employer may also create and manage a user account for you within an enterprise. +In some cases, you may need to use multiple accounts on {% data variables.product.github %}. For example, you may have a personal account for open source contributions, and your employer may also create and manage a user account for you within an enterprise. -You cannot use your {% data variables.enterprise.prodname_managed_user %} to contribute to public projects on {% data variables.location.product_location %}, so you must contribute to those resources using your personal account. For more information, see "[About {% data variables.product.prodname_emus %}]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users#abilities-and-restrictions-of-managed-user-accounts){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% elsif ghec %}."{% endif %} +You cannot use a {% data variables.enterprise.prodname_managed_user %} to contribute to public projects on {% data variables.location.product_location %}, so you must contribute to those resources using your personal account. For more information, see "[About {% data variables.product.prodname_emus %}]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users#abilities-and-restrictions-of-managed-user-accounts){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% elsif ghec %}."{% endif %} {% ifversion account-switcher %} -If you need to use multiple accounts on {% data variables.location.product_location %}, you can stay signed in to your accounts and switch between them. For example, switching between a personal account and a service account. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/switching-between-accounts)." +If you need to use multiple accounts, you can stay signed in to your accounts and switch between them. For example, switching between a personal account and a service account. For more information, see "[AUTOTITLE](/authentication/keeping-your-account-and-data-secure/switching-between-accounts)." {% endif %} @@ -36,9 +36,9 @@ If you aren't required to use a {% data variables.enterprise.prodname_managed_us If you contribute with two accounts from one workstation, you can access repositories by using a different protocol and credentials for each account. -Git can use either the HTTPS or SSH protocol to access and update data in repositories on {% data variables.location.product_location %}. The protocol you use to clone a repository determines which credentials your workstation will use to authenticate when you access the repository. With this approach to account management, you store the credentials for one account to use for HTTPS connections and upload an SSH key to the other account to use for SSH connections. +Git can use either the HTTPS or SSH protocol to access and update data in repositories on {% data variables.product.github %}. The protocol you use to clone a repository determines which credentials your workstation will use to authenticate when you access the repository. With this approach to account management, you store the credentials for one account to use for HTTPS connections and upload an SSH key to the other account to use for SSH connections. -You can find both the HTTPS or an SSH URLs for cloning a repository on {% data variables.product.product_name %}. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository)." +You can find both the HTTPS or an SSH URLs for cloning a repository on the repository's page. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository)." For more information about the use of SSH to access repositories on {% data variables.product.product_name %}, see "[AUTOTITLE](/authentication/connecting-to-github-with-ssh)." From 9d5df4e71f29cae868d260b6193fe4a8d106ac7d Mon Sep 17 00:00:00 2001 From: Isaac Brown <101839405+isaacmbrown@users.noreply.github.com> Date: Mon, 7 Oct 2024 11:56:15 +0100 Subject: [PATCH 72/73] Add release note for Dependabot directories key (#52548) --- data/release-notes/enterprise-server/3-14/0.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/data/release-notes/enterprise-server/3-14/0.yml b/data/release-notes/enterprise-server/3-14/0.yml index 656dba44baf7..88083677c9be 100644 --- a/data/release-notes/enterprise-server/3-14/0.yml +++ b/data/release-notes/enterprise-server/3-14/0.yml @@ -106,6 +106,9 @@ sections: # https://github.com/github/releases/issues/3850 - | Dependabot uses private registry configurations specified in the `dependabot.yml` file as expected, even if there is a configuration with `target-branch`. This ensures that security updates are applied correctly, regardless of your repository's configuration settings. See "[AUTOTITLE](/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot)." + # https://github.com/github/releases/issues/4118 + - | + In the `dependabot.yml` file, users can apply the same configuration to manifest files from multiple directories using the `directories` key. Direct strings, glob syntax, and wildcards (`*`) are all supported for targeting directories. See "[AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#directories)." [Updated: 2024-10-07] - heading: Code security notes: @@ -225,4 +228,6 @@ sections: errata: - | These release notes previously indicated as a known issue that on GitHub Enterprise Server 3.14.0 when log forwarding is enabled, some forwarded log entries may be duplicated. - The fix for this problem was already included prior to the release of GitHub Enterprise Server 3.14.0. [Updated: 2024-09-16] \ No newline at end of file + The fix for this problem was already included prior to the release of GitHub Enterprise Server 3.14.0. [Updated: 2024-09-16] + - | + These release notes did not include a note for support of the `directories` key in `dependabot.yml` files. [Updated: 2024-10-07] \ No newline at end of file From c25b90b9a3a26b14d395c88c7074c1a403275edd Mon Sep 17 00:00:00 2001 From: Loymdayddaud <145969603+TheGiraffe3@users.noreply.github.com> Date: Mon, 7 Oct 2024 17:44:12 +0300 Subject: [PATCH 73/73] Fix for 34805 (#34814) Co-authored-by: Alex Nguyen <150945400+nguyenalex836@users.noreply.github.com> --- .../customizing-your-repository/about-code-owners.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md index 4b2d9dbaca3a..d20368c31219 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners.md @@ -58,9 +58,9 @@ To reduce the size of your CODEOWNERS file, consider using wildcard patterns to {% warning %} **Warning:** There are some syntax rules for gitignore files that _do not work_ in CODEOWNERS files: -* Escaping a pattern starting with `#` using `\` so it is treated as a pattern and not a comment -* Using `!` to negate a pattern -* Using `[ ]` to define a character range +* Escaping a pattern starting with `#` using `\` so it is treated as a pattern and not a comment doesn't work +* Using `!` to negate a pattern doesn't work +* Using `[ ]` to define a character range doesn't work {% endwarning %}