1
0
mirror of synced 2026-01-07 18:01:41 -05:00

Merge branch 'main' into lowercase-personal-data

This commit is contained in:
Sophie
2022-07-14 08:49:41 +02:00
committed by GitHub
533 changed files with 5557 additions and 7054 deletions

View File

@@ -0,0 +1,73 @@
name: Dry run Elasticsearch indexing
# **What it does**: Tests to index records into a local Elasticsearch
# **Why we have it**: To make sure the indexing code works.
# **Who does it impact**: Docs engineering.
on:
push:
branches:
- gh-readonly-queue/main/**
pull_request:
paths:
- script/search/index-elasticsearch.mjs
- 'package*.json'
- .github/workflows/dry-run-elasticsearch-indexing.yml
permissions:
contents: read
jobs:
dry-run-elasticsearch-indexing:
# Avoid github/docs and forks of it
if: github.repository == 'github/docs-internal'
runs-on: ubuntu-latest
steps:
- uses: getong/elasticsearch-action@95b501ab0c83dee0aac7c39b7cea3723bef14954
with:
elasticsearch version: '8.2.0'
host port: 9200
container port: 9200
host node port: 9300
node port: 9300
discovery type: 'single-node'
- name: Checkout
uses: actions/checkout@dcd71f646680f2efd8db4afa5ad64fdcba30e748
with:
lfs: 'true'
- name: Check out LFS objects
run: git lfs checkout
- name: Setup node
uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
with:
node-version: 16.15.x
cache: npm
- name: Install
run: npm ci
# Serves two purposes;
# 1. Be confident that the Elasticsearch server start-up worked at all
# 2. Sometimes Elasticsearch will bind to the port but still not
# technically be ready. By using `curl --retry` we can know it's
# also genuinely ready to use.
- name: Ping Elasticsearch
run: curl --retry-connrefused --retry 5 -I http://localhost:9200/
- name: Index some
env:
ELASTICSEARCH_URL: 'http://localhost:9200'
run: |
./script/search/index-elasticsearch.mjs --verbose \
-l en -l ja \
-V dotcom -V ghes-3.5
- name: Show created indexes and aliases
run: |
curl http://localhost:9200/_cat/indices?v
curl http://localhost:9200/_cat/aliases?v

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -4,6 +4,7 @@ import useSWR from 'swr'
import cx from 'classnames'
import { Flash, Label, ActionList, ActionMenu } from '@primer/react'
import { ItemInput } from '@primer/react/lib/deprecated/ActionList/List'
import { InfoIcon } from '@primer/octicons-react'
import { useTranslation } from 'components/hooks/useTranslation'
import { sendEvent, EventType } from 'components/lib/events'
@@ -323,12 +324,13 @@ function ShowSearchResults({
debug: boolean
query: string
}) {
const { t } = useTranslation('search')
const { t } = useTranslation(['pages', 'search'])
const router = useRouter()
const { currentVersion } = useVersion()
const { allVersions } = useMainContext()
const searchVersion = allVersions[currentVersion].versionTitle
const [selectedVersion, setSelectedVersion] = useState<ItemInput | undefined>()
const currentVersionPathSegment = currentVersion === DEFAULT_VERSION ? '' : `/${currentVersion}`
const latestVersions = new Set(
Object.keys(allVersions)
@@ -413,6 +415,13 @@ function ShowSearchResults({
</ActionList.Item>
)
})}
<ActionList.LinkItem
className="f6"
href={`/${router.locale}${currentVersionPathSegment}/get-started/learning-about-github/about-versions-of-github-docs`}
>
{t('about_versions')} <InfoIcon />
</ActionList.LinkItem>
</ActionList>
</ActionMenu.Overlay>
</ActionMenu>
@@ -432,12 +441,12 @@ function ShowSearchResults({
{t('matches_displayed')}: {results.length === 0 ? t('no_results') : results.length}
</p>
<ActionList as="div" variant="full">
<ActionList variant="full">
{results.map(({ url, breadcrumbs, title, content, score, popularity }) => {
return (
<ActionList.Item className="width-full" key={url} as="div">
<ActionList.Item className="width-full" key={url}>
<Link href={url} className="no-underline color-fg-default">
<li
<div
data-testid="search-result"
className={cx('list-style-none', styles.resultsContainer)}
>
@@ -483,7 +492,7 @@ function ShowSearchResults({
}
/>
</div>
</li>
</div>
</Link>
</ActionList.Item>
)

View File

@@ -53,7 +53,7 @@ const article: PlaygroundArticleT = {
To set up your repository to use a custom dev container, you will need to create one or more \`devcontainer.json\` files. You can add these either from a template, in Visual Studio Code, or you can write your own. For more information on dev container configurations, see "[Introduction to dev containers](/codespaces/setting-up-your-codespace/configuring-codespaces-for-your-project)".
1. Access the Command Palette (\`Shift + Command + P\` / \`Ctrl + Shift + P\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
1. Access the Command Palette (\`<kbd>Shift</kbd>+<kbd>Command</kbd>+<kbd>P</kbd>\` / \`<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>\`), then start typing "dev container". Select **Codespaces: Add Development Container Configuration Files...**.
!["Codespaces: Add Development Container Configuration Files..." in the command palette](/assets/images/help/codespaces/add-prebuilt-container-command.png)
2. For this example, click **Python 3**. If you need additional features you can select any container thats specific to Python or a combination of tools such as Python 3 and PostgreSQL.
![Select Python option from the list](/assets/images/help/codespaces/add-python-prebuilt-container.png)
@@ -62,7 +62,7 @@ const article: PlaygroundArticleT = {
4. Accept the default option to add Node.js to your customization.
![Add Node.js selection](/assets/images/help/codespaces/add-nodejs-selection.png)
5. Select any additional features to install and click **OK**.
6. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
6. Access the command palette (\`<kbd>Shift</kbd>+<kbd>Command</kbd>+<kbd>P</kbd>\`/ \`<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
![Rebuild container option](/assets/images/help/codespaces/codespaces-rebuild.png)
`,
},
@@ -197,7 +197,7 @@ const article: PlaygroundArticleT = {
"postCreateCommand": "pip3 install --user -r requirements.txt",
\`\`\`
4. Access the command palette (\`Shift + Command + P\`/ \`Ctrl + Shift + P\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
4. Access the command palette (\`<kbd>Shift</kbd>+<kbd>Command</kbd>+<kbd>P</kbd>\`/ \`<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd>\`), then start typing "rebuild". Select **Codespaces: Rebuild Container**.
![Rebuild container option](/assets/images/help/codespaces/codespaces-rebuild.png)

View File

@@ -12,3 +12,7 @@
.statusTable {
table-layout: fixed !important;
}
.codeBlock code {
word-break: break-all;
}

View File

@@ -46,7 +46,10 @@ export function RestOperation({ operation }: Props) {
)}
<div className={cx(styles.restOperation, 'd-flex flex-wrap gutter mt-4')}>
<div className="col-md-12 col-lg-6">
<div dangerouslySetInnerHTML={{ __html: operation.descriptionHTML }} />
<div
className={cx(styles.codeBlock)}
dangerouslySetInnerHTML={{ __html: operation.descriptionHTML }}
/>
{hasParameters && (
<RestParameterTable

View File

@@ -111,6 +111,7 @@ For more information, see "[Viewing workflow run history](/actions/managing-work
For the overall list of included tools for each runner operating system, see the links below:
* [Ubuntu 22.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2204-Readme.md)
* [Ubuntu 20.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu2004-Readme.md)
* [Ubuntu 18.04 LTS](https://github.com/actions/virtual-environments/blob/main/images/linux/Ubuntu1804-Readme.md)
* [Windows Server 2022](https://github.com/actions/virtual-environments/blob/main/images/win/Windows2022-Readme.md)

View File

@@ -50,9 +50,9 @@ To use {% data variables.product.prodname_copilot %}, you must first install the
{% data reusables.copilot.supported-languages %} The following samples are in C#, but other languages will work similarly.
{% data reusables.copilot.create-c-file %}
1. In the C# file, type the following function header. {% data variables.product.prodname_copilot %} will automatically suggest an entire function body in grayed text, as shown below. The exact suggestion may vary.
1. In the C# file, type the following function signature. {% data variables.product.prodname_copilot %} will automatically suggest an entire function body in grayed text, as shown below. The exact suggestion may vary.
```csharp{:copy}
function calculateDaysBetweenDates(begin, end) {
int CalculateDaysBetweenDates(
```
![Screenshot of a first suggestion Visual Studio Code](/assets/images/help/copilot/first-suggestion-visual-studio.png)
{% data reusables.copilot.accept-suggestion %}
@@ -60,10 +60,10 @@ To use {% data variables.product.prodname_copilot %}, you must first install the
## Seeing alternative suggestions
{% data reusables.copilot.alternative-suggestions %}
{% data reusables.copilot.create-c-file %}
1. In the C# file, type the following function header. {% data variables.product.prodname_copilot %} will show you a suggestion.
1. In the C# file, type the following function signature. {% data variables.product.prodname_copilot %} will show you a suggestion.
```csharp{:copy}
function calculateDaysBetweenDates(begin, end) {
int CalculateDaysBetweenDates(
```
1. If alternative suggestions are available, you can see these alternatives by pressing <kbd>Alt</kbd>+<kbd>]</kbd> (or <kbd>Alt</kbd>+<kbd>[</kbd>).
1. Optionally, you can hover over the suggestion to see the {% data variables.product.prodname_copilot %} command palette for choosing suggestions.

View File

@@ -27,7 +27,7 @@ In this guide, you'll create a {% data variables.product.prodname_actions %} wor
3. Create an `index.js` file and add a basic alert to say "Hello world!"
{% raw %}
```javascript{:copy}
alert("Hello, World!");
console.log("Hello, World!");
```
{% endraw %}
4. Initialize an npm package with `npm init`. In the package initialization wizard, enter your package with the name: _`@YOUR-USERNAME/YOUR-REPOSITORY`_, and set the test script to `exit 0`. This will generate a `package.json` file with information about your package.

View File

@@ -123,7 +123,8 @@ request would look like this:
``` shell
curl -H 'Accept: application/vnd.github.text-match+json' \
'{% data variables.product.api_url_pre %}/search/issues?q=windows+label:bug+language:python+state:open&sort=created&order=asc'
'{% data variables.product.api_url_pre %}/search/issues?q=windows+label:bug \
+language:python+state:open&sort=created&order=asc'
```
The response will include a `text_matches` array for each search result. In the JSON below, we have two objects in the `text_matches` array.
@@ -139,7 +140,9 @@ The second text match occurred in the `body` property of one of the issue's comm
"object_url": "https://api.github.com/repositories/215335/issues/132",
"object_type": "Issue",
"property": "body",
"fragment": "comprehensive windows font I know of).\n\nIf we can find a commonly distributed windows font that supports them then no problem (we can use html font tags) but otherwise the '(21)' style is probably better.\n",
"fragment": "comprehensive windows font I know of).\n\nIf we can find a commonly
distributed windows font that supports them then no problem (we can use html
font tags) but otherwise the '(21)' style is probably better.\n",
"matches": [
{
"text": "windows",
@@ -161,7 +164,9 @@ The second text match occurred in the `body` property of one of the issue's comm
"object_url": "https://api.github.com/repositories/215335/issues/comments/25688",
"object_type": "IssueComment",
"property": "body",
"fragment": " right after that are a bit broken IMHO :). I suppose we could have some hack that maxes out at whatever the font does...\n\nI'll check what the state of play is on Windows.\n",
"fragment": " right after that are a bit broken IMHO :). I suppose we could
have some hack that maxes out at whatever the font does...\n\nI'll check
what the state of play is on Windows.\n",
"matches": [
{
"text": "Windows",

View File

@@ -1,10 +1,42 @@
content | emoji
-----------|------
`+1` | :+1:
`-1` | :-1:
`laugh` | :smile:
`confused` | :confused:
`heart` | :heart:
`hooray` | :tada:
`rocket` | :rocket:
`eyes` | :eyes:
<table style="width:20%">
<thead>
<tr>
<th style="text-align:left">content</th>
<th style="text-align:left">emoji</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:left"><code>+1</code></td>
<td style="text-align:left">👍</td>
</tr>
<tr>
<td style="text-align:left"><code>-1</code></td>
<td style="text-align:left">👎</td>
</tr>
<tr>
<td style="text-align:left"><code>laugh</code></td>
<td style="text-align:left">😄</td>
</tr>
<tr>
<td style="text-align:left"><code>confused</code></td>
<td style="text-align:left">😕</td>
</tr>
<tr>
<td style="text-align:left"><code>heart</code></td>
<td style="text-align:left">❤️</td>
</tr>
<tr>
<td style="text-align:left"><code>hooray</code></td>
<td style="text-align:left">🎉</td>
</tr>
<tr>
<td style="text-align:left"><code>rocket</code></td>
<td style="text-align:left">🚀</td>
</tr>
<tr>
<td style="text-align:left"><code>eyes</code></td>
<td style="text-align:left">👀</td>
</tr>
</tbody>
</table>

View File

@@ -175275,7 +175275,7 @@
},
{
"name": "state",
"description": "<p>Set to <code>open</code>, <code>closed</code>, <code>fixed</code>, or <code>dismissed</code> to list code scanning alerts in a specific state.</p>",
"description": "<p>If specified, only code scanning alerts with this state will be returned.</p>",
"in": "query",
"required": false,
"schema": {
@@ -176565,7 +176565,7 @@
}
],
"previews": [],
"descriptionHTML": "<p>Lists all code scanning alerts for the default branch (usually <code>main</code>\nor <code>master</code>) for all eligible repositories in an organization.\nTo use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the <code>repo</code> scope or <code>security_events</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read permission to use this endpoint.</p>",
"descriptionHTML": "<p>Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see \"<a href=\"https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization\">Managing security managers in your organization</a>.\"</p>\n<p>To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the <code>repo</code> scope or <code>security_events</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read permission to use this endpoint.</p>",
"statusCodes": [
{
"httpStatusCode": "200",
@@ -176692,7 +176692,7 @@
},
{
"name": "state",
"description": "<p>Set to <code>open</code>, <code>closed</code>, <code>fixed</code>, or <code>dismissed</code> to list code scanning alerts in a specific state.</p>",
"description": "<p>If specified, only code scanning alerts with this state will be returned.</p>",
"in": "query",
"required": false,
"schema": {
@@ -177268,7 +177268,7 @@
}
],
"previews": [],
"descriptionHTML": "<p>Lists all open code scanning alerts for the default branch (usually <code>main</code>\nor <code>master</code>). You must use an access token with the <code>security_events</code> scope to use\nthis endpoint with private repos, the <code>public_repo</code> scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used <code>ref</code> in the request).</p>",
"descriptionHTML": "<p>Lists code scanning alerts.</p>\n<p>To use this endpoint, you must use an access token with the <code>security_events</code> scope or, for alerts from public repositories only, an access token with the <code>public_repo</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used <code>ref</code> in the request).</p>",
"statusCodes": [
{
"httpStatusCode": "200",

View File

@@ -161539,7 +161539,7 @@
},
{
"name": "state",
"description": "<p>Set to <code>open</code>, <code>closed</code>, <code>fixed</code>, or <code>dismissed</code> to list code scanning alerts in a specific state.</p>",
"description": "<p>If specified, only code scanning alerts with this state will be returned.</p>",
"in": "query",
"required": false,
"schema": {
@@ -162105,7 +162105,7 @@
}
],
"previews": [],
"descriptionHTML": "<p>Lists all open code scanning alerts for the default branch (usually <code>main</code>\nor <code>master</code>). You must use an access token with the <code>security_events</code> scope to use\nthis endpoint with private repos, the <code>public_repo</code> scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used <code>ref</code> in the request).</p>",
"descriptionHTML": "<p>Lists code scanning alerts.</p>\n<p>To use this endpoint, you must use an access token with the <code>security_events</code> scope or, for alerts from public repositories only, an access token with the <code>public_repo</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used <code>ref</code> in the request).</p>",
"statusCodes": [
{
"httpStatusCode": "200",

View File

@@ -170064,7 +170064,7 @@
},
{
"name": "state",
"description": "<p>Set to <code>open</code>, <code>closed</code>, <code>fixed</code>, or <code>dismissed</code> to list code scanning alerts in a specific state.</p>",
"description": "<p>If specified, only code scanning alerts with this state will be returned.</p>",
"in": "query",
"required": false,
"schema": {
@@ -171344,7 +171344,7 @@
}
],
"previews": [],
"descriptionHTML": "<p>Lists all code scanning alerts for the default branch (usually <code>main</code>\nor <code>master</code>) for all eligible repositories in an organization.\nTo use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the <code>repo</code> scope or <code>security_events</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read permission to use this endpoint.</p>",
"descriptionHTML": "<p>Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see \"<a href=\"https://docs.github.com/enterprise-server@3.5/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization\">Managing security managers in your organization</a>.\"</p>\n<p>To use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the <code>repo</code> scope or <code>security_events</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read permission to use this endpoint.</p>",
"statusCodes": [
{
"httpStatusCode": "200",
@@ -171471,7 +171471,7 @@
},
{
"name": "state",
"description": "<p>Set to <code>open</code>, <code>closed</code>, <code>fixed</code>, or <code>dismissed</code> to list code scanning alerts in a specific state.</p>",
"description": "<p>If specified, only code scanning alerts with this state will be returned.</p>",
"in": "query",
"required": false,
"schema": {
@@ -172037,7 +172037,7 @@
}
],
"previews": [],
"descriptionHTML": "<p>Lists all open code scanning alerts for the default branch (usually <code>main</code>\nor <code>master</code>). You must use an access token with the <code>security_events</code> scope to use\nthis endpoint with private repos, the <code>public_repo</code> scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used <code>ref</code> in the request).</p>",
"descriptionHTML": "<p>Lists code scanning alerts.</p>\n<p>To use this endpoint, you must use an access token with the <code>security_events</code> scope or, for alerts from public repositories only, an access token with the <code>public_repo</code> scope.</p>\n<p>GitHub Apps must have the <code>security_events</code> read\npermission to use this endpoint.</p>\n<p>The response includes a <code>most_recent_instance</code> object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used <code>ref</code> in the request).</p>",
"statusCodes": [
{
"httpStatusCode": "200",

View File

@@ -80939,7 +80939,7 @@
"/orgs/{org}/code-scanning/alerts": {
"get": {
"summary": "List code scanning alerts for an organization",
"description": "Lists all code scanning alerts for the default branch (usually `main`\nor `master`) for all eligible repositories in an organization.\nTo use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `security_events` read permission to use this endpoint.",
"description": "Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see \"[Managing security managers in your organization](https://docs.github.com/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).\"\n\nTo use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `security_events` read permission to use this endpoint.",
"tags": [
"code-scanning"
],
@@ -81033,7 +81033,7 @@
},
{
"name": "state",
"description": "Set to `open`, `closed`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.",
"description": "If specified, only code scanning alerts with this state will be returned.",
"in": "query",
"required": false,
"schema": {
@@ -241476,7 +241476,7 @@
"/repos/{owner}/{repo}/code-scanning/alerts": {
"get": {
"summary": "List code scanning alerts for a repository",
"description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint with private repos, the `public_repo` scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).",
"description": "Lists code scanning alerts.\n\nTo use this endpoint, you must use an access token with the `security_events` scope or, for alerts from public repositories only, an access token with the `public_repo` scope.\n\nGitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used `ref` in the request).",
"tags": [
"code-scanning"
],
@@ -241585,7 +241585,7 @@
},
{
"name": "state",
"description": "Set to `open`, `closed`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.",
"description": "If specified, only code scanning alerts with this state will be returned.",
"in": "query",
"required": false,
"schema": {

View File

@@ -213746,7 +213746,7 @@
"/repos/{owner}/{repo}/code-scanning/alerts": {
"get": {
"summary": "List code scanning alerts for a repository",
"description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint with private repos, the `public_repo` scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).",
"description": "Lists code scanning alerts.\n\nTo use this endpoint, you must use an access token with the `security_events` scope or, for alerts from public repositories only, an access token with the `public_repo` scope.\n\nGitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used `ref` in the request).",
"tags": [
"code-scanning"
],
@@ -213855,7 +213855,7 @@
},
{
"name": "state",
"description": "Set to `open`, `closed`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.",
"description": "If specified, only code scanning alerts with this state will be returned.",
"in": "query",
"required": false,
"schema": {

View File

@@ -84441,7 +84441,7 @@
"/orgs/{org}/code-scanning/alerts": {
"get": {
"summary": "List code scanning alerts for an organization",
"description": "Lists all code scanning alerts for the default branch (usually `main`\nor `master`) for all eligible repositories in an organization.\nTo use this endpoint, you must be an administrator or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `security_events` read permission to use this endpoint.",
"description": "Lists code scanning alerts for the default branch for all eligible repositories in an organization. Eligible repositories are repositories that are owned by organizations that you own or for which you are a security manager. For more information, see \"[Managing security managers in your organization](https://docs.github.com/enterprise-server@3.5/organizations/managing-peoples-access-to-your-organization-with-roles/managing-security-managers-in-your-organization).\"\n\nTo use this endpoint, you must be an owner or security manager for the organization, and you must use an access token with the `repo` scope or `security_events` scope.\n\nGitHub Apps must have the `security_events` read permission to use this endpoint.",
"tags": [
"code-scanning"
],
@@ -84535,7 +84535,7 @@
},
{
"name": "state",
"description": "Set to `open`, `closed`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.",
"description": "If specified, only code scanning alerts with this state will be returned.",
"in": "query",
"required": false,
"schema": {
@@ -223653,7 +223653,7 @@
"/repos/{owner}/{repo}/code-scanning/alerts": {
"get": {
"summary": "List code scanning alerts for a repository",
"description": "Lists all open code scanning alerts for the default branch (usually `main`\nor `master`). You must use an access token with the `security_events` scope to use\nthis endpoint with private repos, the `public_repo` scope also grants permission to read\nsecurity events on public repos only. GitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch or for the specified Git reference\n(if you used `ref` in the request).",
"description": "Lists code scanning alerts.\n\nTo use this endpoint, you must use an access token with the `security_events` scope or, for alerts from public repositories only, an access token with the `public_repo` scope.\n\nGitHub Apps must have the `security_events` read\npermission to use this endpoint.\n\nThe response includes a `most_recent_instance` object.\nThis provides details of the most recent instance of this alert\nfor the default branch (or for the specified Git reference if you used `ref` in the request).",
"tags": [
"code-scanning"
],
@@ -223762,7 +223762,7 @@
},
{
"name": "state",
"description": "Set to `open`, `closed`, `fixed`, or `dismissed` to list code scanning alerts in a specific state.",
"description": "If specified, only code scanning alerts with this state will be returned.",
"in": "query",
"required": false,
"schema": {

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e290ccd3586718c59e8362d2198029b63be9469da7a4eb5e2f9f1665a9852991
size 766155
oid sha256:e3a3f0417193343b56b59683ccd44259422b06080ac40fb5819ebb3690b0735d
size 786450

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4627ba28f9e93dd94908aa3b8a2470be8c0b82e0160e91eeb9a6e481682edddc
size 1599546
oid sha256:6b14594af2b2cfe7f1c87e38d841dd9e84e2b3895cb3e7749cb10ad65bbbaf67
size 1590857

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9eb1d17950df0a9026420c0d1aa4075a88bd6ddd92d9c533cdde4d2fef993b55
size 1039808
oid sha256:916035553d595a48090142c099e8aaa6e1b889ace7fa1facbb1fbc3e510e4231
size 1089463

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4f8edaa92f8253c8ac4d750fe3891d2d6137b59c2581298449a65d8d0c4b42a4
size 4178705
oid sha256:36c753df354a9ad038e8d3f7729f8b438909aac8a88315a137068a18a45c3a1e
size 4388511

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df48196f3c4748217af74064021a1c6a9ad19ad4ca69bb95a8e2c16048f8f02a
size 705559
oid sha256:22037ef7c2a97dd45c7501b6efb09b65daa9756ab20401fc7a48be7b49af7e75
size 725562

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a482d5c628d4c6c1ac1e538944018175ededccfba9fe8f4b2a72dc26dee9b80c
size 3065418
oid sha256:26a0a4b47aa4d79b2754d3ab9d46c0b41afa45229013ba99824ff38bbfacdd1c
size 3079897

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:84a324c0172005423682680f45d722e63fa5622af5d1c1e7d47fccd327c2b1a1
size 776716
oid sha256:cd692020cb2ccb99c6edb4d03f2f64b30473bd8c1c1f68841aa868b3b61839d7
size 798456

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4c27ca2d5fe36e4c74d2f3f0d9755e42134e1291ec4c91999274c935ca7b6578
size 4260676
oid sha256:a7c0000d5ed54de7c2ea34bb73b5a35e6169fe2b174e4bfa2f567bfa8dc7672c
size 4382020

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6a0595099c4b7616465bea7f4dc6a645a953767b9a909813d05647fa5f38ec51
size 695172
oid sha256:0ec77ade036878d0987b864c2883aaa992390de7bd990298d15246d6de753b40
size 714283

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d7cbecc24ef642dc2980353d96d01d78a18edf71c48d2f9742a61811d1ba7177
size 2961118
oid sha256:50d739323599e7dc518718a4fc57fdedc6dee6ab8703781351795b12c9867713
size 2971852

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8885afc7ccf0effc5318027f954ade5083f1c2a8c93ac3ec21efe8489b2c360f
size 789819
oid sha256:52fd1860fdc44fae351bf3f1d186d8c2e1dc973842f8163191a48b499212d0d2
size 811570

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:61561d9afcfbc0c645fc38b0b68b4e56b1a23fdbc51089af0773142bbfc23692
size 1640009
oid sha256:595c901d3602fabb5d6cb247838a97824a122dfacfd8efa15448f29b75f21eb0
size 1639854

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7f16ca06aa4ec347866ceb8bd5cd1ccb1402bebb9e7ddac1a0a801be39ca160e
size 1074821
oid sha256:1000be5bae8bfde31b830ca0f4b5c79aacea7dbb9447fa5b89ac04494c1c64c2
size 1125098

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1a0fc1013613a61901c45114972baf5f99e3cb20a6f74e6c2551bd9fdb7795bf
size 4275228
oid sha256:1bdd44a22b2a37293bc57b274ec7634df604b994f85739cfdfb81d05e804cf4f
size 4495941

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d3384821b55285853c7fb39b98e9267bb468bbd018f4c4e2fd3a292ef14fabf
size 725300
oid sha256:ca6c89108e101b2031b242c6ace54974f5899fc95f6832b5117279b6ef1fa0e7
size 746724

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b35de3c957143ae8160549891aafb96ebe9e6b889faba07c4e37a5fbc4d3862
size 3145931
oid sha256:de26b6a693b0cc712b5fa31c7d9c02d12f7d7b09ac914714149e9761d035907d
size 3166452

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f7c56cb63daa44bcb04df9754bc0ddbb19922e4a2260ca31c638a68d00f9ef69
size 800228
oid sha256:7fa485851d9e6066b6846ab6ae40941be4cf186b0cb2a17094678008f75a2f77
size 823422

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d4c619aa65a45b4e342ee1b27d5ed15247bb94293ea481057ba15d02ac3c68cb
size 4382959
oid sha256:8c39fda21c4e7819d7d22ab0bb8ea86333b581c3f88a43ce9a4aeae938206802
size 4516326

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b0856168ec11ffa81950aefea69f9d2bd94dafa4f2c6fd9c391b190de22ca387
size 714693
oid sha256:f7f5ec9fc002a8a20666c8212e20e194e0eba3751bff1695105da8ca52d329ae
size 735627

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:523436b9eb70a948d03dccc93986c08ce5135483093d1fc57507d82cab5c8147
size 3038620
oid sha256:15ec0166de52946de4c17845862a96408c1c61d0cf1a2047017c78d67233710a
size 3058356

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5114ca13346e0236eab0826ba915e3495148b17f7823b831c7cec4a6cdf97aef
size 791928
oid sha256:75790eeeb3627554f6e3bd1390f5dd75bd62417071baa44c42723ccc53f4804d
size 813701

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:32f17e401b1ea8c565a4bda0b87ba2e6a9d3f755be2f5ee9fdb311f4c3e83384
size 1651465
oid sha256:02dc7ecceae0c22a79103748ee578ccb05478ff929af1fd7fec34087fc9dd33e
size 1650706

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d6e9e4a19107c0fe9aee6c90ea477f3c357f54580e228aee7cd70abe77a22320
size 1083585
oid sha256:87aa2fb1637b46d649438f0cd1dfe6f29159f15d2c8cbe89941a997aacab0887
size 1135173

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:88bd72fb35bb0b83a0c2601da6b622369ff22e460cedc76edd5aeb69f23893a6
size 4314911
oid sha256:28a009072f0abd44f28719a67e0577ca8f2092b84ef5d8a8cf57110368375946
size 4548839

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9fbbc254c6a77f06c3681a5411b41fb108fd01ac3322ca8e9a1511b67af452e9
size 728856
oid sha256:d876dfa02cecc78ca93448930b441bd1712c91e11cbb09a6535aceb1eef45525
size 750397

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:118052d41441d99ed71c9d4178b214d74298f73b246dd9a56ff61c06d1fde4b3
size 3164713
oid sha256:5c730e38311057ebf0aab213095d9d92a9df86624daf874c8aa11b44ae4df220
size 3185128

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8e2007d36d3ffce0e05341480b752e9f11e2ca824b35012c9f6f387e4fc433bb
size 803752
oid sha256:b395df8da420ffc90b99c25a4bb699c1b451386e6286adbbd818282084f5263d
size 826593

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:54ead17b9b8451619ba8c26f737e09ed08416dc4020cec07956d03a1109458c2
size 4412019
oid sha256:b704af22a7f8d3e779bda2a319760b958ae5e7022e116d45f1301391ec999429
size 4546604

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c3f2e6c344a1f53000134acc3319cfb43b4a1cda79676401812f8eea71db85e2
size 718036
oid sha256:7926d0b1c86e6e37358359451a3daf26e7ce0886871f2b7f638f66a36837b7c7
size 739468

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c6e6662abe3fd24335bc7c492a352a4b77c26ae4cc66b898ff13810f7a3a5a07
size 3057493
oid sha256:2a20122b14f9059f9c22e936446d7bd4992ab9b3bb6499f056400843626c327e
size 3080183

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:baa20cc80a1cf44314615f1768c26438d14dded420afd613f06d70cac2ca66d0
size 820914
oid sha256:d15f0805d4c7c76b67ff71fc60839057e3c1d93b7ff048f2280e6b7ed738072e
size 843122

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8c075dc0186d1ee3612e60b65bc5bdeacea710a8bcb2ce8fbfd2413755c37cab
size 1714767
oid sha256:4a616dc03431d5efae4e34bcf19d46cb945508ff20eaaad9546275bedb70264e
size 1712712

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0f2e0feea315b9bd92b5e9be52b2f249da4af923ac72da85ad53e66e4d710c23
size 1122458
oid sha256:4fe04f9a5ab7ffc9b8e642da3371cb1fe7580b98421fadee48b2d5dacc38a05a
size 1173352

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8bb016c2198e226eb6c868f57b2aa6e5ef3083cd4622fe673ece255d14c597bb
size 4477454
oid sha256:d30f81012e8ca132f0e7ea1ffa66059770f5f3420d9dcafee7f29b8a0d5a21a1
size 4707056

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2a8fdc6a092c695191692f3b9453a5498d1634757b81e26c96c8599975b8ea9b
size 751619
oid sha256:2cf75d18f0cf39e5b8564c9089d38882e4ef652ea72e4e786abdf48bb99c6ce5
size 774316

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4684ce32b3175ddfa7a5cf70f50fd9cca6cb35558e7445750bf8d67db1c89ef6
size 3279126
oid sha256:7dc9d08324b3f0fd0ffa859fa59c0c53fba0f73340bdde45c0039976cb4476d0
size 3300893

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:dc9b8f49369519a28370ad7f93507bcf9825aee40479f777b4cf289c0e927c7a
size 830636
oid sha256:6320c771817f4fe6314727a28855170b324c81587ecec8359ed8edbc8b6b4198
size 853767

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b18937de7553ca90c885152cba003a037f4ccdc481b2db695ecf26ecd8bc7411
size 4576704
oid sha256:a11fa86e22da20fae25b234d1a015eca0cf0fc7e268e113c914a5429b4d1f8b4
size 4714636

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a5ed2709266f59bab790202e168c0ecde47f52d9d2e18456baeb304365d82050
size 740016
oid sha256:dae683e7b6bb89bb6d75fbe97d0fe54565d5f6287eeef0347fb231d328f592f2
size 763062

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:12b4a2a48d22637088b6302c8725e2a4daf8459770b82b6a127826d76ab7ef68
size 3164166
oid sha256:4072a23014a04ed888a4f2f839d03cfd1a1ca7680057ae059fda207a70b4fd57
size 3189709

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7012f974e4658e1823a9896cb3617c070e7d40bea3e734a8df2ca600020d207f
size 1001092
oid sha256:55b11b71ebd662ccac76fab5944396aef6b95e12491971a1b474c1668b9ad2a5
size 1023636

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:21296b3b66570d8259c8954a4eb55148ce7b811225cb661663ffafb40962f094
size 1753013
oid sha256:d7cf6291456bea7c9405c303634912176be190ff9013488051053f31bbded155
size 1746872

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e25057094c2ed3c70cd8734c2f1785f06ecd7980d0977a9705da151f1400f51c
size 1376716
oid sha256:152063a51ea3d7289d4d51aa261197471ad8ab069d64f90d17a1c430e9ca2fcd
size 1437724

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1e49e39ce8691aebd88c816905dfc35f78c97414876b2c50881b750f4dd1a128
size 5247862
oid sha256:3e895c90d4a87fd0517ee7a71eb636d46f7669e0346401dac5487b65df9a4359
size 5500139

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:960a884a76c0f5045950e41028db7db1e8290362e75eee6336d45b8acfc1a989
size 900452
oid sha256:af3039965d7aa53f1166363c7874feccafcf0b982c69cf80abb9ebe03cd7ccd8
size 922981

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cdddc041674f0b095136d493aec931ed5c7aa537a3251832da3b8762c1bd65a7
size 3762834
oid sha256:4466536249964f9bc47f340ac57fcfa1a7e8df25a79f6dd7b3adc7e7dbcce5ed
size 3797229

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:986c68b28dab23a46fa0e4bb5a91712aabcd4b5068820e4bf9cecfec53c70949
size 1005088
oid sha256:a64196553f517168c03958921aa4eb9a14a70d6def4ed68cf74c5bc9a15a94ac
size 1029997

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d6dd233bd623e6b028d47f415ea74bf11746addba8ab015974f14081c16682a
size 5352567
oid sha256:19db7c2c9d9cc830bc84d0120152654e79756c7a41a0a3e76b5af4b36341de7b
size 5501301

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c3bfed9d682b54c81dda1b88aa4f46986d67afa4937d9e35183364c9cf59df41
size 890012
oid sha256:b6577e8162e2c89b2059391b9e625de68bdba231fe895681b952db9ebabd1965
size 911745

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ac11c1850ec5f15c49653c4403f091c4b133960ced8137b101f399bc672ca791
size 3657141
oid sha256:b9d0b81cdfc10ae714aa320d65fe46606132145ed0e8e2f2c59df8aed6b20357
size 3687145

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2fb9a0d73989454c444ce47e8f251da62cf998c3afbec8295373383a935c88b1
size 626347
oid sha256:1c1a8a0a02b4b69a81fee41d5f7e82f318d18249deaa512225e38d8b011fe1e8
size 645300

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:687d6c276edbdfb2f0bbb2c13974d3865e463bfa61d4a71ad381302d0d1d54c1
size 1263927
oid sha256:78ba79932aed75a2cd75b0bc7895d4a4270061a865b0c9c3359a5eb068c58640
size 1263083

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7a395a9a9be03db12c1b80d53d02be03cb7062655f0bd096a216b32599775dcb
size 871952
oid sha256:c1de65cb28f54a887eba5641dd86ac4697083fc956fa1f7f32f94d59844c7052
size 919390

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:db72b3c7c49e78dbf96fb8d64351439c696d57d482c7bafb37ae0f4370e0757d
size 3426974
oid sha256:7188cc8e045c83aebef5c592e91b88bb2e0d9c60580d56a06cb77dceb91d62ad
size 3639119

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a132dc386fe304599651d9900a7c84ce1d7461e14da26b8819bd7f1026686534
size 583161
oid sha256:b216a7a4efbb266c380328b5e6b78e5e69b18a5b9e624af9b4c5632d63ca89bc
size 601292

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f7d4784d238763ee50dc85593cf1d6d85f001f60ec8cc977452484cafa67ea3a
size 2461195
oid sha256:2e1d41bd4e1f25a75165b24b3ca6aeeea3a40ffebbb86c3040c593ce8537386f
size 2472940

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:74a32775d9291b4b89f2bc04e4bc0be9d371cfd7ab7b696b84571f3101872728
size 638480
oid sha256:87b9ab6a7dc19fe3df1a3ff2be26c16a8cbfcbf76708e93badfe361a75226c8d
size 658845

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:bd790b75437d96ee8659708895adc618abcbea92494df51ef10373fdac56291c
size 3385895
oid sha256:fffa79136aa5a92d6db717b560035a40287e85c0d55867feab975e5068821291
size 3522585

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:98e97a9f4ca2c13ed0e6fcc8b29ba7ad86bb8158a3a87710c2b08ebff6019148
size 575103
oid sha256:b825c2225f64082b5db7ff6f15c1e2efb8c30eb99c9ccd0577d5565865d75bfa
size 592386

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b372fc260d7f2a24979a3f7c8d00fd6f98449a9caa52e2f47b9e7d24a18091b
size 2355199
oid sha256:d8e8cc40992efbbfd2562b9bf25371b8078b37377978b4be6b679c97ed3735bd
size 2369002

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a3cb971a3188b8c0addc1a1aef0230d292c0d43f9c0ed79ebf91c617076a0ade
size 967801
oid sha256:00883b352cfc27c6487110ccbffc737f899b4012fb3b37b85869d469dead0526
size 989856

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:db9c864e9074f5a0e38595dfa66c11b45302f61d1bb805f82768faae36a82fc8
size 1873856
oid sha256:f33a1ebc2bf0d9209f98cddc1e3ebeb7593b85611e7e89976789900ad5ff87bf
size 1870922

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3115bc20d644991737805831ca004762eda8061efea8e1db0bb1d0b3ed2a2aa0
size 1311527
oid sha256:d038715aa0c38170693fc32d810648b9b8e4dac171aacdfb4643f09ee255ac1c
size 1370887

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1d8ad0ad94a04bcb084d64827d83ae27a58701a03a3202289a598935c3c7d060
size 5254484
oid sha256:53cb34bd761834c4b29ade055f23dff91081f07b8989e18a50ead19e44a468c5
size 5509320

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4d7dd46859c9ed2dd71ea609148d95cea6afe59df371a27c9266c0bc547dfcab
size 891090
oid sha256:c542ebac9ae8f7e8fa5338640e2e94e78481dd2707d635a63d6fa85f7bcfd2a8
size 914002

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5e14f3eadd09b3c9521af91c255f9d2f4319b3ced2a06dbddb30a82362b5c155
size 3876252
oid sha256:321a61b1de98ab2cb05c9fda204158624ab765f209748280331214de855fcb95
size 3911721

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d907f8599df8f49a7444859eee65581ebc7c76cb710743e6813a752847897b81
size 976533
oid sha256:3a3f3a26f67596ea05462c699b5ab159ffd56a79de0cd7540b325932c7d81364
size 1000796

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1dbe1fe322562f85266aa0133d33e142a44afc8cad37c5553557ed80794f63c5
size 5414384
oid sha256:bf99ea18bfbc541845ca516ec6eaec9a37bc31fde4bb4d971a5591aa125add7b
size 5569830

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8970f1ca207e5db425220d775855d75b574c4ee09292f804e7b5bad8a4160bde
size 880199
oid sha256:c86c98a0dadb8dde548bfe703898c8bf40f8b8b3f452981af8692999ee5d4730
size 903663

View File

@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f9b08813a563837d76c12294786af79f17dfca9a46a62ac3849cc9759d714c5b
size 3756991
oid sha256:523f9952155e544d5fc8b57a8a9f200d12a4b505c30d62b20b97c0cf5b4b659e
size 3799592

7061
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,6 +9,7 @@
".next/cache"
],
"dependencies": {
"@elastic/elasticsearch": "8.2.1",
"@github/failbot": "0.8.0",
"@primer/css": "^19.8.2",
"@primer/octicons": "17.3.0",
@@ -176,7 +177,6 @@
"esm": "^3.2.25",
"image-size": "^1.0.1",
"jest-puppeteer": "^5.0.4",
"jimp": "^0.16.1",
"puppeteer": "^9.1.1",
"website-scraper": "^5.0.0"
},

View File

@@ -1,72 +0,0 @@
#!/usr/bin/env node
import fs from 'fs/promises'
import path from 'path'
import walk from 'walk-sync'
import jimp from 'jimp' // this is an optional dependency, install with `npm i --include=optional`
// iterate through enterprise images from most recent to oldest
// check if the image in the /assets/enterprise/... directory
// is an exact match to the assets/images in relative path and content
// if exact match, delete the /assets/enterprise/... version
const enterpriseAssetDirectories = [
'/assets/enterprise/3.0',
'/assets/enterprise/github-ae',
'/assets/enterprise/2.22',
'/assets/enterprise/2.21',
'/assets/enterprise/2.20',
]
async function main() {
for (const directory of enterpriseAssetDirectories) {
const fullDirectoryPath = path.join(process.cwd(), directory)
const files = walk(fullDirectoryPath, {
includeBasePath: true,
directories: false,
})
for (const file of files) {
// get the /assets/images file that currently exists, which
// would be the equivalent to the enterprise asset
const enterpriseRegex = /\/assets\/enterprise\/(2\.20|2\.21|2\.22|3\.0|github-ae)/
const existingFileToCompare = file.replace(enterpriseRegex, '')
const fileExt = path.extname(file)
// if the file in the enterprise directory is an exact copy of
// the image in the local /assets/images directory, then we can
// delete the enterprise image and the reference in the Markdown
// will just work
if (await fs.readFile(existingFileToCompare)) {
// Buffer.compare and Jimp both return 0 if files match
let compareResult = 1
try {
// Jimp gives slightly better results comparing image files
// over using a buffer compare. Of the assets we have,
// Jimp only supports png and gif
if (fileExt === '.png' || fileExt === '.gif') {
const existingImageToCompare = await jimp.read(existingFileToCompare)
const enterpriseImage = await jimp.read(file)
// if the diff.percent value is 0, images are identical
const diff = await jimp.diff(existingImageToCompare, enterpriseImage)
compareResult = diff.percent
} else {
const existingImageToCompare = await fs.readFile(existingFileToCompare)
const enterpriseImage = await fs.readFile(file)
compareResult = Buffer.compare(
Buffer.from(existingImageToCompare),
Buffer.from(enterpriseImage)
)
}
} catch (err) {
console.log(file)
console.log(err)
}
if (compareResult === 0) await fs.unlink(file)
}
}
}
}
main()
.catch(console.error)
.finally(() => console.log('Done!'))

View File

@@ -0,0 +1,287 @@
#!/usr/bin/env node
// [start-readme]
//
// Creates Elasticsearch index, populates from records,
// moves the index alias, deletes old indexes.
//
// [end-readme]
import fs from 'fs/promises'
import path from 'path'
import { Client } from '@elastic/elasticsearch'
import { program, Option } from 'commander'
import chalk from 'chalk'
import { languageKeys } from '../../lib/languages.js'
import { allVersions } from '../../lib/all-versions.js'
import { decompress } from '../../lib/search/compress.js'
// Create an object that maps the "short name" of a version to
// all information about it. E.g
//
// {
// 'ghes-3.5': {
// hasNumberedReleases: true,
// currentRelease: '3.5',
// version: 'enterprise-server@3.5',
// miscBaseName: 'ghes-'
// ...
// },
// ...
//
// We need this later to be able to map CLI arguments to what the
// records are called when found on disk.
const shortNames = Object.fromEntries(
Object.values(allVersions).map((info) => {
const shortName = info.hasNumberedReleases
? info.miscBaseName + info.currentRelease
: info.miscBaseName
return [shortName, info]
})
)
console.log({ shortNames })
const allVersionKeys = Object.keys(shortNames)
program
.description('Creates Elasticsearch index from records')
.option('-v, --verbose', 'Verbose outputs')
.addOption(new Option('-V, --version <VERSION...>', 'Specific versions').choices(allVersionKeys))
.addOption(
new Option('-l, --language <LANGUAGE...>', 'Which languages to focus on').choices(languageKeys)
)
.addOption(
new Option('--not-language <LANGUAGE...>', 'Specific language to omit').choices(languageKeys)
)
.option('-u, --elasticsearch-url <url>', 'If different from $ELASTICSEARCH_URL')
.parse(process.argv)
main(program.opts())
async function main(opts) {
if (!opts.elasticsearchUrl && !process.env.ELASTICSEARCH_URL) {
throw new Error(
'Must passed the elasticsearch URL option or ' +
'set the environment variable ELASTICSEARCH_URL'
)
}
let node = opts.elasticsearchUrl || process.env.ELASTICSEARCH_URL
// Allow the user to lazily set it to `localhost:9200` for example.
if (!node.startsWith('http') && !node.startsWith('://') && node.split(':').length === 2) {
node = `http://${node}`
}
try {
const parsed = new URL(node)
if (!parsed.hostname) throw new Error('no valid hostname')
} catch (err) {
console.error(chalk.bold('URL for Elasticsearch not a valid URL', err))
}
const { verbose, language, notLanguage } = opts
// The notLanguage is useful you want to, for example, index all languages
// *except* English.
if (language && notLanguage) {
throw new Error("Can't combine --language and --not-language")
}
if (verbose) {
console.log(`Connecting to ${chalk.bold(safeUrlDisplay(node))}`)
}
const client = new Client({
node,
sniffOnStart: true,
})
// This will throw if it can't ping
await client.ping()
const versionKeys = opts.version || allVersionKeys
const languages =
opts.language || languageKeys.filter((lang) => !notLanguage || !notLanguage.includes(lang))
if (verbose) {
console.log(`Indexing on languages ${chalk.bold(languages.join(', '))}`)
}
for (const language of languages) {
for (const versionKey of versionKeys) {
console.log(chalk.yellow(`Indexing ${chalk.bold(versionKey)} in ${chalk.bold(language)}`))
const indexName = `github-docs-${versionKey}-${language}`
console.time(`Indexing ${indexName}`)
await indexVersion(client, indexName, versionKey, language, verbose)
console.timeEnd(`Indexing ${indexName}`)
if (verbose) {
console.log(`To view index: ${safeUrlDisplay(node + `/${indexName}`)}`)
console.log(`To search index: ${safeUrlDisplay(node + `/${indexName}/_search`)}`)
}
}
}
}
function safeUrlDisplay(url) {
const parsed = new URL(url)
if (parsed.password) {
parsed.password = '***'
}
if (parsed.username) {
parsed.username = parsed.username.slice(0, 4) + '***'
}
return parsed.toString()
}
function utcTimestamp() {
const d = new Date()
return [
d.getUTCFullYear(),
d.getUTCMonth(),
d.getUTCDate(),
d.getUTCHours(),
d.getUTCMinutes(),
d.getUTCSeconds(),
]
.map((x) => x.toString())
.join('')
}
// Consider moving this to lib
async function indexVersion(client, indexName, version, language, verbose = false) {
// Note, it's a bit "weird" that numbered releases versions are
// called the number but that's how the lib/search/indexes
// files are named at the moment.
const indexVersion = shortNames[version].hasNumberedReleases
? shortNames[version].currentRelease
: shortNames[version].miscBaseName
const recordsName = `github-docs-${indexVersion}-${language}`
const records = await loadRecords(recordsName)
const thisAlias = `${indexName}__${utcTimestamp()}`
// CREATE INDEX
const settings = {
analysis: {
analyzer: {
text_analyzer: {
filter: ['lowercase', 'stop', 'asciifolding'],
tokenizer: 'standard',
type: 'custom',
},
},
filter: {
// Will later, conditionally, put the snowball configuration here.
},
},
}
const snowballLanguage = getSnowballLanguage(language)
if (snowballLanguage) {
settings.analysis.analyzer.text_analyzer.filter.push('languaged_snowball')
settings.analysis.filter.languaged_snowball = {
type: 'snowball',
language: snowballLanguage,
}
} else {
if (verbose) {
console.warn(`No snowball language for '${language}'`)
}
}
await client.indices.create({
index: thisAlias,
mappings: {
properties: {
url: { type: 'keyword' },
title: { type: 'text', analyzer: 'text_analyzer', norms: false },
title_autocomplete: {
type: 'search_as_you_type',
doc_values: false,
max_shingle_size: 3,
},
content: { type: 'text', analyzer: 'text_analyzer' },
headings: { type: 'text' },
breadcrumbs: { type: 'text' },
topics: { type: 'text' },
popularity: { type: 'float' },
},
},
settings,
})
// POPULATE
const operations = Object.values(records).flatMap((doc) => {
const { title, objectID, content, breadcrumbs, headings, topics } = doc
const record = {
url: objectID,
title,
title_autocomplete: title,
content,
breadcrumbs,
headings,
topics: topics.filter(Boolean),
// This makes sure the popularities are always greater than 1.
// Generally the 'popularity' is a ratio where the most popular
// one of all is 1.0.
// By making it >=1.0 when we multiply a relevance score,
// you never get a product of 0.0.
popularity: doc.popularity + 1,
}
return [{ index: { _index: thisAlias } }, record]
})
const bulkResponse = await client.bulk({ refresh: true, operations })
if (bulkResponse.errors) {
// Some day, when we're more confident how and why this might happen
// we can rewrite this code to "massage" the errors better.
// For now, if it fails, it's "OK". It means we won't be proceeding,
// an error is thrown in Actions and we don't have to worry about
// an incompletion index.
console.error(bulkResponse.errors)
throw new Error('Bulk errors happened.')
}
const { count } = await client.count({ index: thisAlias })
console.log(`Documents now in ${chalk.bold(thisAlias)}: ${chalk.bold(count.toLocaleString())}`)
// POINT THE ALIAS
await client.indices.putAlias({
index: thisAlias,
name: indexName,
})
console.log(`Alias ${indexName} -> ${thisAlias}`)
// DELETE ALL OTHER OLDER INDEXES
const indices = await client.cat.indices({ format: 'json' })
for (const index of indices) {
if (index.index !== thisAlias && index.index.startsWith(indexName)) {
await client.indices.delete({ index: index.index })
console.log('Deleted', index.index)
}
}
}
async function loadRecords(indexName) {
const filePath = path.join('lib', 'search', 'indexes', `${indexName}-records.json.br`)
// Do not set to 'utf8' on file reads
return fs.readFile(filePath).then(decompress).then(JSON.parse)
}
function getSnowballLanguage(language) {
// Based on https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-snowball-tokenfilter.html
// Note, not all languages are supported. So this function might return
// undefined. That implies that you can't use snowballing.
return {
en: 'English',
fr: 'French',
es: 'Spanish',
ru: 'Russian',
it: 'Italian',
de: 'German',
pt: 'Portuguese',
}[language]
}

View File

@@ -59,13 +59,16 @@ export default function parsePageSectionsIntoRecords(page) {
// pages that yields some decent content to be searched on, because
// when you view these pages in a browser, there's clearly text there.
if ($root.length > 0) {
body = getAllText($, $root)
body = getAllText($root)
}
if (!body && !intro) {
console.warn(`${objectID} has no body and no intro.`)
}
// These below lines can be deleted (along with the `maxContentLength`
// config) once we've stopped generating Lunr indexes on disk that
// we store as Git LFS.
if (languageCode !== 'en' && body.length > maxContentLength) {
body = body.slice(0, maxContentLength)
}
@@ -82,55 +85,42 @@ export default function parsePageSectionsIntoRecords(page) {
}
}
function getAllText($, $root) {
let text = ''
function getAllText($root) {
const inlineElements = new Set(
`a,abbr,acronym,audio,b,bdi,bdo,big,br,button,canvas,cite,code,data,
datalist,del,dfn,em,embed,i,iframe,img,input,ins,kbd,label,map,mark,
meter,noscript,object,output,picture,progress,q,ruby,s,samp,script,
select,slot,small,span,strong,sub,sup,svg,template,textarea,time,
tt,u,var,video,wbr`
.split(',')
.map((s) => s.trim())
)
// We need this so we can know if we processed, for example,
// a <td> followed by a <p> because if that's the case, don't use
// a ' ' to concatenate the texts together but a '\n' instead.
// That means, given this input:
//
// <p>Bla</p><table><tr><td>Foo</td><td>Bar</td></table><p>Hi again</p>
//
// we can produce this outcome:
//
// 'Bla\nFoo Bar\nHi again'
//
let previousTagName = ''
const walkTree = (node, callback, index = 0, level = 0) => {
callback(node, index, level)
for (let i = 0; i < (node.children || []).length; i++) {
walkTree(node.children[i], callback, i, ++level)
level--
}
}
$('p, h2, h3, td, pre, li', $root).each((i, element) => {
const $element = $(element)
if (previousTagName === 'td' && element.tagName !== 'td') {
text += '\n'
const fragments = []
walkTree($root[0], (element) => {
if (element.name === 'body') return
if (element.type === 'text') {
const parentElement = element.parent || {}
const previousElement = element.prev || {}
let { data } = element
if (data.trim()) {
if (!inlineElements.has(parentElement.name) && !inlineElements.has(previousElement.name)) {
data = `\n${data}`
}
fragments.push(data)
}
}
// Because our cheerio selector is all the block level tags,
// what you might end up with is, from:
//
// <li><p>Text</p></li>
// <li><pre>Code</pre></li>
//
// ['Text', 'Text', 'Code', 'Code']
//
// because it will spot both the <li> and the <p>.
// If all HTML was exactly like that, you could omit the <li> selector,
// but a lot of HTML is like this:
//
// <li>Bare text<li>
//
// So we need to bail if we're inside a block level element whose parent
// already was a <li>.
if ((element.tagName === 'p' || element.tagName === 'pre') && element.parent.tagName === 'li') {
return
}
text += $element.text()
if (element.tagName === 'td') {
text += ' '
} else {
text += '\n'
}
previousTagName = element.tagName
})
text = text.trim().replace(/\s*[\r\n]+/g, '\n')
return text
return fragments.join('').trim()
}

View File

@@ -0,0 +1,23 @@
<div data-search="breadcrumbs">
<nav class="breadcrumbs">
<a href="#">GitHub Actions</a>
<a href="#">actions learning path</a>
<a href="#">I am the page title</a>
</nav>
</div>
<h1>I am the page title</h1>
<div data-search="lead">
<p>This is an introduction to the article.</p>
</div>
<div data-search="article-body">
<h1>Heading</h1>
<!-- Deliberately no whitespace between tags -->
<div><ul><ul><li><div><span><div><a href="foo"><h2>Adding an email address to your GitHub account</h2><p>GitHub, see "<a href="/en/articles/setting-your-commit-email-address">Setting your commit email address</a>."</p></a></div></span></div></li>
<li><div><div><a href="/"><h2>Changing your primary email address</h2><p>You can change the email address associated with your personal account at any time.</p></a></div></span></div></li>
</ul></ul></div>
</div>

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,10 @@
import { fileURLToPath } from 'url'
import path from 'path'
import fs from 'fs/promises'
import cheerio from 'cheerio'
import { expect, test } from '@jest/globals'
import parsePageSectionsIntoRecords from '../../../script/search/parse-page-sections-into-records.js'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
@@ -22,6 +25,10 @@ const fixtures = {
path.join(__dirname, 'fixtures/page-with-multiple-h1s.html'),
'utf8'
),
pageHeadingParagraphNoWhitespace: await fs.readFile(
path.join(__dirname, 'fixtures/page-with-heading-and-paragraph-no-whitespace.html'),
'utf8'
),
}
describe('search parsePageSectionsIntoRecords module', () => {
@@ -40,7 +47,7 @@ describe('search parsePageSectionsIntoRecords module', () => {
"In this article\nThis won't be ignored.\nFirst heading\n" +
"Here's a paragraph.\nAnd another.\nSecond heading\n" +
"Here's a paragraph in the second section.\nAnd another.\n" +
'Table heading\nPeter Human\n' +
'Table heading\nPeter\nHuman\n' +
'Bullet\nPoint\nNumbered\nList\n' +
"Further reading\nThis won't be ignored.",
topics: ['topic1', 'topic2', 'GitHub Actions', 'Actions'],
@@ -90,4 +97,27 @@ describe('search parsePageSectionsIntoRecords module', () => {
const record = parsePageSectionsIntoRecords({ href, $, languageCode: 'en' })
expect(record.title).toEqual('I am the page title')
})
test("content doesn't lump headings with paragraphs together", () => {
const html = fixtures.pageHeadingParagraphNoWhitespace
const $ = cheerio.load(html)
const href = '/example/href'
const record = parsePageSectionsIntoRecords({ href, $, languageCode: 'en' })
// This is a <h2> inside the page but it should only appear once.
// We had a bug where the heading would be injected twice.
// E.g.
//
// <h2>Heading</h2><p>Text here</p>
//
// would become:
//
// Heading\nHeadingText here
//
// So now we make sure it only appears exactly once.
expect(record.content.match(/Changing your primary email address/g).length).toBe(1)
// But note also that it would also concatenate the text of the heading
// with the text of the paragraph without a whitespace in between.
expect(record.content.includes('email addressYou can set')).toBeFalsy()
})
})

View File

@@ -126,7 +126,6 @@ includeGuides:
- /admin/monitoring-activity-in-your-enterprise/exploring-user-activity/log-forwarding
- /admin/monitoring-activity-in-your-enterprise/exploring-user-activity/managing-global-webhooks
- /admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise
- /admin/user-management/managing-organizations-in-your-enterprise/managing-unowned-organizations-in-your-enterprise
- /admin/user-management/managing-projects-using-jira
- /admin/user-management/managing-users-in-your-enterprise/inviting-people-to-manage-your-enterprise
- /admin/user-management/managing-users-in-your-enterprise/managing-support-entitlements-for-your-enterprise

View File

@@ -30,6 +30,7 @@ children:
- /username-considerations-for-external-authentication
- /changing-authentication-methods
- /allowing-built-in-authentication-for-users-outside-your-provider
- /troubleshooting-identity-and-access-management-for-your-enterprise
shortTitle: Manage IAM for your enterprise
---

View File

@@ -0,0 +1,44 @@
---
title: Troubleshooting identity and access management for your enterprise
shortTitle: Troubleshoot IAM
intro: Review common issues and solutions for identity and access management for your enterprise.
versions:
ghec: '*'
ghes: '*'
type: how_to
topics:
- Accounts
- Authentication
- Enterprise
- Identity
- Security
- SSO
- Troubleshooting
---
## Username conflicts
{% ifversion ghec %}If your enterprise uses {% data variables.product.prodname_emus %}, {% endif %}{% data variables.product.product_name %} normalizes an identifier provided by your identity provider (IdP) to create each person's username on {% data variables.product.prodname_dotcom %}. If multiple accounts are normalized into the same {% data variables.product.prodname_dotcom %} username, a username conflict occurs, and only the first user account is created. For more information, see "[Username considerations for external authentication](/admin/identity-and-access-management/managing-iam-for-your-enterprise/username-considerations-for-external-authentication)."
{% ifversion ghec %}
## Errors when switching authentication configurations
If you're experiencing problems while switching between different authentication configurations, such as changing your SAML SSO configuration from an organization to an enterprise account or migrating from SAML to OIDC for {% data variables.product.prodname_emus %}, ensure you're following our best practices for the change.
- "[Switching your SAML configuration from an organization to an enterprise account](/admin/identity-and-access-management/using-saml-for-enterprise-iam/switching-your-saml-configuration-from-an-organization-to-an-enterprise-account)"
- "[Migrating from SAML to OIDC](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/migrating-from-saml-to-oidc)"
## Accessing your enterprise when SSO is not available
When a configuration error or an issue with your identity provider IdP prevents you from using SSO, you can use a recovery code to access your enterprise. For more information, see "[Accessing your enterprise account if your identity provider is unavailable](/admin/identity-and-access-management/managing-recovery-codes-for-your-enterprise/accessing-your-enterprise-account-if-your-identity-provider-is-unavailable)."
{% endif %}
## SAML authentication errors
If users are experiencing errors when attempting to authenticate with SAML, see "[Troubleshooting SAML authentication](/admin/identity-and-access-management/using-saml-for-enterprise-iam/troubleshooting-saml-authentication)."
{% ifversion ghec %}
## 参考リンク
- "[Troubleshooting identity and access management for your organization](/organizations/managing-saml-single-sign-on-for-your-organization/troubleshooting-identity-and-access-management-for-your-organization)"
{% endif %}

View File

@@ -51,9 +51,3 @@ Alternatively, you can also configure SAML SSO using Okta for an organization th
1. [**Save**] をクリックします。
{% data reusables.saml.okta-view-setup-instructions %}
1. 設定手順の情報を使用して、Enterprise アカウントの SAML を有効にします。 詳しい情報については、「[Enterprise 向けのSAML シングルサインオンを設定する](/admin/authentication/managing-identity-and-access-for-your-enterprise/configuring-saml-single-sign-on-for-your-enterprise)」を参照してください。
## Okta でグループを作成する
1. Okta で、Enterprise アカウントが所有する各 Organization に合わせてグループを作成します。 各グループの名前は、Organization のアカウント名 (Organization の表示名ではく) に一致する必要があります。 たとえば、Organization の URL が `https://github.com/octo-org` の場合は、グループに `octo-org` という名前をつけます。
1. Enterprise アカウントに作成したアプリケーションを各グループに割り当てます。 {% data variables.product.prodname_dotcom %} が、ユーザごとに `groups` データをすべて受け取ります。
1. ユーザを所属させたい Organization に基づいて、ユーザをグループに追加します。

View File

@@ -136,6 +136,10 @@ To prevent a person from authenticating with your IdP and staying authorized ind
To customize the session duration, you may be able to define the value of the `SessionNotOnOrAfter` attribute on your IdP. If you define a value less than 24 hours, {% data variables.product.product_name %} may prompt people to authenticate every time {% data variables.product.product_name %} initiates a redirect.
{% ifversion ghec %}
To prevent authentication errors, we recommend a minimum session duration of 4 hours. For more information, see "[Troubleshooting SAML authentication](/admin/identity-and-access-management/using-saml-for-enterprise-iam/troubleshooting-saml-authentication#users-are-repeatedly-redirected-to-authenticate)."
{% endif %}
{% note %}
**Notes**:

Some files were not shown because too many files have changed in this diff Show More