Skip to content

Commit e914152

Browse files
authored
Merge branch 'main' into patch-1
2 parents fd21065 + e26f59b commit e914152

File tree

189 files changed

+1997
-2137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

189 files changed

+1997
-2137
lines changed

components/guides/ProductGuides.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,28 @@ export const ProductGuides = () => {
1717
<GuidesHero />
1818
</LandingSection>
1919

20-
{learningTracks && learningTracks.length > 0 && (
21-
<LandingSection
22-
title={`${title} learning paths`}
23-
className="border-top py-6"
24-
sectionLink="learning-paths"
25-
description={t('learning_paths_desc')}
26-
>
27-
<LearningTracks />
28-
</LandingSection>
29-
)}
20+
<div data-search="article-body">
21+
{learningTracks && learningTracks.length > 0 && (
22+
<LandingSection
23+
title={`${title} learning paths`}
24+
className="border-top py-6"
25+
sectionLink="learning-paths"
26+
description={t('learning_paths_desc')}
27+
>
28+
<LearningTracks />
29+
</LandingSection>
30+
)}
3031

31-
{includeGuides && (
32-
<LandingSection
33-
title={`All ${title} guides`}
34-
className="border-top py-6 color-border-default"
35-
sectionLink="all-guides"
36-
>
37-
<ArticleCards />
38-
</LandingSection>
39-
)}
32+
{includeGuides && (
33+
<LandingSection
34+
title={`All ${title} guides`}
35+
className="border-top py-6 color-border-default"
36+
sectionLink="all-guides"
37+
>
38+
<ArticleCards />
39+
</LandingSection>
40+
)}
41+
</div>
4042
</DefaultLayout>
4143
)
4244
}

components/landing/ProductLanding.tsx

Lines changed: 41 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -28,53 +28,55 @@ export const ProductLanding = () => {
2828

2929
return (
3030
<DefaultLayout>
31-
<LandingSection className="pt-3">
32-
<LandingHero />
33-
</LandingSection>
34-
35-
<LandingSection>
36-
<FeaturedArticles />
37-
</LandingSection>
38-
39-
{productCodeExamples.length > 0 && (
40-
<LandingSection
41-
title={t('code_examples')}
42-
sectionLink="code-examples"
43-
className="my-6 pb-6"
44-
>
45-
<CodeExamples />
31+
<div data-search="article-body">
32+
<LandingSection className="pt-3">
33+
<LandingHero />
4634
</LandingSection>
47-
)}
4835

49-
{productCommunityExamples.length > 0 && (
50-
<LandingSection title={t('communities_using_discussions')} className="my-6 pb-6">
51-
<CommunityExamples />
36+
<LandingSection>
37+
<FeaturedArticles />
5238
</LandingSection>
53-
)}
5439

55-
{productUserExamples.length > 0 && (
56-
<LandingSection title={t('sponsor_community')} className="my-6 pb-6">
57-
<SponsorsExamples />
58-
</LandingSection>
59-
)}
40+
{productCodeExamples.length > 0 && (
41+
<LandingSection
42+
title={t('code_examples')}
43+
sectionLink="code-examples"
44+
className="my-6 pb-6"
45+
>
46+
<CodeExamples />
47+
</LandingSection>
48+
)}
6049

61-
{router.query.productId === 'admin' && isEnterpriseServer && (
62-
<LandingSection title={t('supported_releases')} className="my-6 pb-6">
63-
<ProductReleases />
64-
</LandingSection>
65-
)}
50+
{productCommunityExamples.length > 0 && (
51+
<LandingSection title={t('communities_using_discussions')} className="my-6 pb-6">
52+
<CommunityExamples />
53+
</LandingSection>
54+
)}
55+
56+
{productUserExamples.length > 0 && (
57+
<LandingSection title={t('sponsor_community')} className="my-6 pb-6">
58+
<SponsorsExamples />
59+
</LandingSection>
60+
)}
6661

67-
{featuredLinks.guideCards?.length > 0 && (
68-
<div className="color-bg-subtle py-6">
69-
<LandingSection title={t('guides')} sectionLink="guides-2" className="my-6">
70-
<GuideCards />
62+
{router.query.productId === 'admin' && isEnterpriseServer && (
63+
<LandingSection title={t('supported_releases')} className="my-6 pb-6">
64+
<ProductReleases />
7165
</LandingSection>
72-
</div>
73-
)}
66+
)}
7467

75-
<LandingSection title={`All ${shortTitle} docs`} sectionLink="all-docs" className="pt-9">
76-
<ProductArticlesList />
77-
</LandingSection>
68+
{featuredLinks.guideCards?.length > 0 && (
69+
<div className="color-bg-subtle py-6">
70+
<LandingSection title={t('guides')} sectionLink="guides-2" className="my-6">
71+
<GuideCards />
72+
</LandingSection>
73+
</div>
74+
)}
75+
76+
<LandingSection title={`All ${shortTitle} docs`} sectionLink="all-docs" className="pt-9">
77+
<ProductArticlesList />
78+
</LandingSection>
79+
</div>
7880
</DefaultLayout>
7981
)
8082
}

content/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ When you use external authentication, {% data variables.product.product_location
3636

3737
If you use an enterprise with {% data variables.product.prodname_emus %}, members of your enterprise authenticate to access {% data variables.product.prodname_dotcom %} through your SAML identity provider (IdP). For more information, see "[About {% data variables.product.prodname_emus %}](/admin/identity-and-access-management/using-enterprise-managed-users-and-saml-for-iam/about-enterprise-managed-users)" and "[About authentication for your enterprise](/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise#authentication-methods-for-github-enterprise-server)."
3838

39-
{% data variables.product.product_name %} automatically creates a username for each person when their user account is provisioned via SCIM, by normalizing an identifier provided by your IdP. If multiple identifiers are normalized into the same username, a username conflict occurs, and only the first user account is created. You can resolve username conflicts by making a change in your IdP so that the normalized usernames will be unique.
39+
{% data variables.product.product_name %} automatically creates a username for each person when their user account is provisioned via SCIM, by normalizing an identifier provided by your IdP. If multiple identifiers are normalized into the same username, a username conflict occurs, and only the first user account is created. {% data reusables.enterprise-accounts.emu-only-emails-within-the-enterprise-can-conflict %} You can resolve username conflicts by making a change in your IdP so that the normalized usernames will be unique.
4040

4141
{% elsif ghae %}
4242

content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ By default, when an unauthenticated user attempts to access an enterprise that u
135135

136136
{% data variables.product.product_name %} automatically creates a username for each person by normalizing an identifier provided by your IdP. For more information, see "[Username considerations for external authentication](/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication)."
137137

138-
A conflict may occur when provisioning users if the unique parts of the identifier provided by your IdP are removed during normalization. If you're unable to provision a user due to a username conflict, you should modify the username provided by your IdP. For more information, see "[Resolving username conflicts](/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication#resolving-username-conflicts)."
138+
A conflict may occur when provisioning users if the unique parts of the identifier provided by your IdP are removed during normalization. {% data reusables.enterprise-accounts.emu-only-emails-within-the-enterprise-can-conflict %} If you're unable to provision a user due to a username conflict, you should modify the username provided by your IdP. For more information, see "[Resolving username conflicts](/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication#resolving-username-conflicts)."
139139

140140
The profile name and email address of a {% data variables.product.prodname_managed_user %} is also provided by the IdP. {% data variables.product.prodname_managed_users_caps %} cannot change their profile name or email address on {% data variables.product.prodname_dotcom %}, and the IdP can only provide a single email address.
141141

content/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-the-codeql-workflow-for-compiled-languages.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ For general information about configuring {% data variables.product.prodname_cod
4040

4141
## About autobuild for {% data variables.product.prodname_codeql %}
4242

43-
Code scanning works by running queries against one or more databases. Each database contains a representation of all of the code in a single language in your repository. For the compiled languages C/C++, C#, and Java, the process of populating this database involves building the code and extracting data. {% data reusables.code-scanning.analyze-go %}
43+
{% data variables.product.prodname_code_scanning_capc %} works by running queries against one or more databases. Each database contains a representation of all of the code in a single language in your repository.
44+
For the compiled languages C/C++, C#, and Java, the process of populating this database involves building the code and extracting data. {% data reusables.code-scanning.analyze-go %}
4445

4546
{% data reusables.code-scanning.autobuild-compiled-languages %}
4647

content/code-security/dependabot/dependabot-alerts/browsing-security-advisories-in-the-github-advisory-database.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ Generally, we name our supported ecosystems after the software programming langu
5757
- Maven (registry: https://repo.maven.apache.org/maven2)
5858
- npm (registry: https://www.npmjs.com/)
5959
- NuGet (registry: https://www.nuget.org/)
60-
- pip (registry: https://pypi.org/)
60+
- pip (registry: https://pypi.org/){% ifversion dependency-graph-dart-support %}
61+
- pub (registry: https://pub.dev/packages/registry){% endif %}
6162
- RubyGems (registry: https://rubygems.org/)
6263
- Rust (registry: https://crates.io/)
6364

content/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file.md

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -784,15 +784,7 @@ registries:
784784

785785
### `docker-registry`
786786

787-
{% data variables.product.prodname_dependabot %} works with container registries that implement the OCI container registry. For more information, see [https://github.com/opencontainers/distribution-spec/blob/main/spec.md](https://github.com/opencontainers/distribution-spec/blob/main/spec.md). {% data variables.product.prodname_dependabot %} supports authentication to private registries via a central service. For further details, see [Token Authentication Specification](https://docs.docker.com/registry/spec/auth/token/) in the Docker documentation.
788-
789-
We currently support the container registries listed here:
790-
791-
* Docker Hub
792-
* {% data variables.product.company_short %} {% data variables.product.prodname_container_registry %}
793-
* GCR (Google Cloud)
794-
* Private ECR (AWS) - public ECR support is tracked in [https://github.com/dependabot/dependabot-core/issues/4212](https://github.com/dependabot/dependabot-core/issues/4212).
795-
787+
{% data variables.product.prodname_dependabot %} works with any container registries that implement the OCI container registry spec. For more information, see [https://github.com/opencontainers/distribution-spec/blob/main/spec.md](https://github.com/opencontainers/distribution-spec/blob/main/spec.md). {% data variables.product.prodname_dependabot %} supports authentication to private registries via a central token service or HTTP Basic Auth. For further details, see [Token Authentication Specification](https://docs.docker.com/registry/spec/auth/token/) in the Docker documentation and [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) on Wikipedia.
796788

797789
The `docker-registry` type supports username and password.
798790

content/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jobs:
6161
go-version: ">=1.18.0"
6262

6363
- name: Run snapshot action
64-
uses: @actions/go-dependency-submission@v1
64+
uses: actions/go-dependency-submission@v1
6565
with:
6666
# Required: Define the repo path to the go.mod file used by the
6767
# build target

content/developers/overview/secret-scanning-partner-program.md

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,26 +59,25 @@ Send this information to <a href="mailto:secret-scanning@github.com">secret-scan
5959

6060
Create a public, internet accessible HTTP endpoint at the URL you provided to us. When a match of your regular expression is found in a public repository, {% data variables.product.prodname_dotcom %} will send an HTTP `POST` message to your endpoint.
6161

62-
#### Example POST sent to your endpoint
62+
#### Example request body
6363

64-
```http
65-
POST / HTTP/2
66-
Host: HOST
67-
Accept: */*
68-
Content-Type: application/json
69-
GITHUB-PUBLIC-KEY-IDENTIFIER: f9525bf080f75b3506ca1ead061add62b8633a346606dc5fe544e29231c6ee0d
70-
GITHUB-PUBLIC-KEY-SIGNATURE: MEUCIQDfLvT8/zM8F1aB3cM0ZwyeWF1m5YR6IhcUIv1OKQYL0wIgBZ5lVXB3gHK+dT8+xt0WgRVLqvsTPFiDO9QP/7eJ4yE=
71-
Content-Length: 187
72-
73-
[{"token":"NMIfyYncKcRALEXAMPLE","type":"mycompany_api_token","url":"https://github.com/octocat/Hello-World/blob/12345600b9cbe38a219f39a9941c9319b600c002/foo/bar.txt","source":"content"}]
64+
```json
65+
[
66+
{
67+
"token":"NMIfyYncKcRALEXAMPLE",
68+
"type":"mycompany_api_token",
69+
"url":"https://github.com/octocat/Hello-World/blob/12345600b9cbe38a219f39a9941c9319b600c002/foo/bar.txt",
70+
"source":"content"
71+
}
72+
]
7473
```
7574

76-
The message body is a JSON array that contains one or more objects with the following contents. When multiple matches are found, {% data variables.product.prodname_dotcom %} may send a single message with more than one secret match. Your endpoint should be able to handle requests with a large number of matches without timing out.
75+
The message body is a JSON array that contains one or more objects, with each object representing a single secret match. Your endpoint should be able to handle requests with a large number of matches without timing out. The keys for each secret match are:
7776

7877
* **token**: The value of the secret match.
7978
* **type**: The unique name you provided to identify your regular expression.
8079
* **url**: The public URL where the match was found (may be empty)
81-
* **source**: Where the token was found on GitHub.
80+
* **source**: Where the token was found on {% data variables.product.prodname_dotcom %}.
8281

8382
The list of valid values for `source` are:
8483

@@ -97,26 +96,32 @@ The list of valid values for `source` are:
9796

9897
### Implement signature verification in your secret alert service
9998

100-
We strongly recommend you implement signature validation in your secret alert service to ensure that the messages you receive are genuinely from {% data variables.product.prodname_dotcom %} and not malicious.
99+
The HTTP request to your service will also contain headers that we strongly recommend using
100+
to validate the messages you receive are genuinely from {% data variables.product.prodname_dotcom %}, and are not malicious.
101+
102+
The two HTTP headers to look for are:
103+
104+
* `GITHUB-PUBLIC-KEY-IDENTIFIER`: Which `key_identifier` to use from our API
105+
* `GITHUB-PUBLIC-KEY-SIGNATURE`: Signature of the payload
101106

102-
You can retrieve the {% data variables.product.prodname_dotcom %} secret scanning public key from https://api.github.com/meta/public_keys/secret_scanning and validate the message using the `ECDSA-NIST-P256V1-SHA256` algorithm.
107+
You can retrieve the {% data variables.product.prodname_dotcom %} secret scanning public key from https://api.github.com/meta/public_keys/secret_scanning and validate the message using the `ECDSA-NIST-P256V1-SHA256` algorithm. The endpoint
108+
will provide several `key_identifier` and public keys. You can determine which public
109+
key to use based on the value of `GITHUB-PUBLIC-KEY-IDENTIFIER`.
103110

104111
{% note %}
105112

106113
**Note**: When you send a request to the public key endpoint above, you may hit rate limits. To avoid hitting rate limits, you can use a personal access token (no scopes required) as suggested in the samples below, or use a conditional request. For more information, see "[Getting started with the REST API](/rest/guides/getting-started-with-the-rest-api#conditional-requests)."
107114

108115
{% endnote %}
109116

110-
Assuming you receive the following message, the code snippets below demonstrate how you could perform signature validation.
111-
The code snippets assume you've set an environment variable called `GITHUB_PRODUCTION_TOKEN` with a generated PAT (https://github.com/settings/tokens) to avoid hitting rate limits. The PAT does not need any scopes/permissions.
112-
113117
{% note %}
114118

115119
**Note**: The signature was generated using the raw message body. So it's important you also use the raw message body for signature validation, instead of parsing and stringifying the JSON, to avoid rearranging the message or changing spacing.
116120

117121
{% endnote %}
118122

119-
**Sample message sent to verify endpoint**
123+
**Sample HTTP POST sent to verify endpoint**
124+
120125
```http
121126
POST / HTTP/2
122127
Host: HOST
@@ -129,6 +134,23 @@ Content-Length: 83
129134
[{"token":"some_token","type":"some_type","url":"some_url","source":"some_source"}]
130135
```
131136

137+
{% note %}
138+
139+
**Note**: The key id and signature from the example payload is derived from a test key.
140+
The public key for them is:
141+
142+
```
143+
-----BEGIN PUBLIC KEY-----
144+
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEsz9ugWDj5jK5ELBK42ynytbo38gP
145+
HzZFI03Exwz8Lh/tCfL3YxwMdLjB+bMznsanlhK0RwcGP3IDb34kQDIo3Q==
146+
-----END PUBLIC KEY-----
147+
```
148+
149+
{% endnote %}
150+
151+
The following code snippets demonstrate how you could perform signature validation.
152+
The code examples assume you've set an environment variable called `GITHUB_PRODUCTION_TOKEN` with a generated [personal access token](https://github.com/settings/tokens) (PAT) to avoid hitting rate limits. The PAT does not need any scopes/permissions.
153+
132154
**Validation sample in Go**
133155
```golang
134156
package main

content/get-started/writing-on-github/working-with-saved-replies/about-saved-replies.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ versions:
1515

1616
Saved replies allow you to create a reusable response to issues and pull requests. Save time by creating a saved reply for the responses you use most frequently.
1717

18-
Once you've added a saved reply, it can be used in both issues and pull requests. Saved replies are tied to your personal account. Once they're created, you'll be able to use them across repositories and organizations.
18+
Once you've added a saved reply, it can be used in issues, pull requests, and discussions. Saved replies are tied to your personal account. Once they're created, you'll be able to use them across repositories and organizations.
1919

2020
You can create a maximum of 100 saved replies. If you've reached the maximum limit, you can delete saved replies that you no longer use or edit existing saved replies.
2121

content/issues/planning-and-tracking-with-projects/automating-your-project/using-the-api-to-manage-projects.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ You can also find the node ID of all projects in your organization. The followin
9595
curl --request POST \
9696
--url https://api.github.com/graphql \
9797
--header 'Authorization: Bearer TOKEN' \
98-
--data '{"query":"{organization(login: \"ORGANIZATION") {projectsV2(first: 20) {nodes {id title}}}}"}'
98+
--data '{"query":"{organization(login: \"ORGANIZATION\") {projectsV2(first: 20) {nodes {id title}}}}"}'
9999
```
100100
{% endcurl %}
101101

@@ -566,7 +566,7 @@ The following example will update the value of a text field for an item. Replace
566566
curl --request POST \
567567
--url https://api.github.com/graphql \
568568
--header 'Authorization: Bearer TOKEN' \
569-
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: "PROJECT_ID" itemId: "ITEM_ID" fieldId: "FIELD_ID" value: { text: "Updated text" }}) { projectV2Item { id }}}"}'
569+
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: \"PROJECT_ID\" itemId: \"ITEM_ID\" fieldId: \"FIELD_ID\" value: { text: \"Updated text\" }}) { projectV2Item { id }}}"}'
570570
```
571571
{% endcurl %}
572572

@@ -620,7 +620,7 @@ The following example will update the value of a single select field for an item
620620
curl --request POST \
621621
--url https://api.github.com/graphql \
622622
--header 'Authorization: Bearer TOKEN' \
623-
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: "PROJECT_ID" itemId: "ITEM_ID" fieldId: "FIELD_ID" value: { singleSelectOptionId: "OPTION_ID" }}) { projectV2Item { id }}}"}'
623+
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: \"PROJECT_ID\" itemId: \"ITEM_ID\" fieldId: \"FIELD_ID\" value: { singleSelectOptionId: \"OPTION_ID\" }}) { projectV2Item { id }}}"}'
624624
```
625625
{% endcurl %}
626626

@@ -660,7 +660,7 @@ The following example will update the value of an iteration field for an item.
660660
curl --request POST \
661661
--url https://api.github.com/graphql \
662662
--header 'Authorization: Bearer TOKEN' \
663-
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: "PROJECT_ID" itemId: "ITEM_ID" fieldId: "FIELD_ID" value: { singleSelectOptionId: "OPTION_ID" }}) { projectV2Item { id }}}"}'
663+
--data '{"query":"mutation {updateProjectV2ItemFieldValue( input: { projectId: \"PROJECT_ID\" itemId: \"ITEM_ID\" fieldId: \"FIELD_ID\" value: { singleSelectOptionId: \"OPTION_ID\" }}) { projectV2Item { id }}}"}'
664664
```
665665
{% endcurl %}
666666

0 commit comments

Comments
 (0)