)}
diff --git a/components/rest/types.ts b/components/rest/types.ts
index c2ed3737b7..01bd2a96d7 100644
--- a/components/rest/types.ts
+++ b/components/rest/types.ts
@@ -73,9 +73,9 @@ export interface ChildParameter {
export type ExampleT = {
description: string
- curl: string
- javascript: string
- ghcli?: string
+ [CodeSampleKeys.curl]?: string
+ [CodeSampleKeys.javascript]?: string
+ [CodeSampleKeys.ghcli]?: string
response: {
statusCode: string
contentType?: string
@@ -85,7 +85,13 @@ export type ExampleT = {
}
}
-export type LanguageOptionT = {
- key: keyof ExampleT
- text: string
+export enum ResponseKeys {
+ example = 'example',
+ schema = 'schema',
+}
+
+export enum CodeSampleKeys {
+ curl = 'curl',
+ javascript = 'javascript',
+ ghcli = 'ghcli',
}
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile.md
index 65f341d069..66af0c9540 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile.md
@@ -33,6 +33,7 @@ People who visit your profile can also see the following information.
- Repositories you've starred{% ifversion fpt or ghec %} and organized into lists{% endif %}. For more information, see "[AUTOTITLE](/get-started/exploring-projects-on-github/saving-repositories-with-stars)."
- An overview of your activity in organizations, repositories, and teams you're most active in. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-an-overview-of-your-activity-on-your-profile)."{% ifversion fpt or ghec %}
- Badges and Achievements that highlight your activity and show if you use {% data variables.product.prodname_pro %} or participate in programs like the {% data variables.product.prodname_arctic_vault %}, {% data variables.product.prodname_sponsors %}, or the {% data variables.product.company_short %} Developer Program. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#displaying-badges-on-your-profile)."{% endif %}
+- Your pronouns if you've set them. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#adding-pronouns-to-your-profile).
You can also set a status on your profile to provide information about your availability. For more information, see "[AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#setting-a-status)."
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md
index 349c1baf13..20fb8ba748 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md
@@ -96,6 +96,23 @@ For a longer-form and more prominent way of displaying customized information ab
{% data reusables.profile.update-profile %}
+## Adding pronouns to your profile
+
+Add pronouns to your public user profile to share information about yourself with other {% data variables.product.product_name %} users. Your pronouns will only be visible to users that are signed in to {% data variables.product.product_name %}.
+
+{% note %}
+
+**Note:**
+ Your pronouns will be visible to {% data variables.product.product_name %} users, including in regions where local laws restrict using pronouns other than those assigned at birth.
+
+{% endnote %}
+
+{% data reusables.user-settings.access_settings %}
+1. Under **Pronouns**, add the pronouns that you want displayed on your profile. You may add custom pronouns.
+ 
+
+{% data reusables.profile.update-profile %}
+
{% ifversion profile-time-zone %}
## Setting your location and time zone
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/setting-your-profile-to-private.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/setting-your-profile-to-private.md
index 9ef85f8450..c4b1145b96 100644
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/setting-your-profile-to-private.md
+++ b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/setting-your-profile-to-private.md
@@ -26,6 +26,7 @@ When your profile is private, the following content is hidden from your profile
- Follow and Sponsor buttons.
- Organization memberships.
- Stars, projects, packages, and sponsoring tabs.
+- Your pronouns.
{% note %}
diff --git a/content/actions/deployment/targeting-different-environments/using-environments-for-deployment.md b/content/actions/deployment/targeting-different-environments/using-environments-for-deployment.md
index 77948fbfb5..f57615c219 100644
--- a/content/actions/deployment/targeting-different-environments/using-environments-for-deployment.md
+++ b/content/actions/deployment/targeting-different-environments/using-environments-for-deployment.md
@@ -21,6 +21,8 @@ Environments are used to describe a general deployment target like `production`,
You can configure environments with protection rules and secrets. When a workflow job references an environment, the job won't start until all of the environment's protection rules pass. A job also cannot access secrets that are defined in an environment until all the environment protection rules pass.
+{% ifversion actions-break-glass %}Optionally, you can bypass an environment's protection rules and force all pending jobs referencing the environment to proceed. For more information, see "[AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments#bypassing-environment-protection-rules)."{% endif %}
+
{% ifversion fpt %}
{% note %}
@@ -45,6 +47,12 @@ For more information on reviewing jobs that reference an environment with requir
Use a wait timer to delay a job for a specific amount of time after the job is initially triggered. The time (in minutes) must be an integer between 0 and 43,200 (30 days).
+{% ifversion actions-break-glass %}
+### Do not let admins bypass protection rules
+
+Prevent admins from being able to bypass the configured environment protection rules.
+{% endif %}
+
### Deployment branches
Use deployment branches to restrict which branches can deploy to the environment. Below are the options for deployment branches for an environment:
@@ -95,22 +103,28 @@ Variables stored in an environment are only available to workflow jobs that refe
1. Select **Wait timer**.
1. Enter the number of minutes to wait.
1. Click **Save protection rules**.
-3. Optionally, specify what branches can deploy to this environment. For more information about the possible values, see "[Deployment branches](#deployment-branches)."
+{%- ifversion actions-break-glass %}
+3. Optionally, prevent admins from bypassing environment protection rules. For more information about bypassing environment protection rules, see "[AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments)."
+ 1. Select **Do not let admins bypass protection rules**.
+ 1. Click **Save protection rules**.
+{%- endif %}
+4. Optionally, specify what branches can deploy to this environment. For more information about the possible values, see "[Deployment branches](#deployment-branches)."
1. Select the desired option in the **Deployment branches** dropdown.
1. If you chose **Selected branches**, enter the branch name patterns that you want to allow.
-4. Optionally, add environment secrets. These secrets are only available to workflow jobs that use the environment. Additionally, workflow jobs that use this environment can only access these secrets after any configured rules (for example, required reviewers) pass. For more information about secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets)."
+5. Optionally, add environment secrets. These secrets are only available to workflow jobs that use the environment. Additionally, workflow jobs that use this environment can only access these secrets after any configured rules (for example, required reviewers) pass. For more information about secrets, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets)."
1. Under **Environment secrets**, click **Add Secret**.
1. Enter the secret name.
1. Enter the secret value.
1. Click **Add secret**.
{%- ifversion actions-configuration-variables %}
-5. Optionally, add environment variables. These variables are only available to workflow jobs that use the environment, and are only accessible using the [`vars`](/actions/learn-github-actions/contexts#vars-context) context. For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables)."
+6. Optionally, add environment variables. These variables are only available to workflow jobs that use the environment, and are only accessible using the [`vars`](/actions/learn-github-actions/contexts#vars-context) context. For more information, see "[AUTOTITLE](/actions/learn-github-actions/variables)."
1. Under **Environment variables**, click **Add Variable**.
1. Enter the variable name.
1. Enter the variable value.
1. Click **Add variable**.
{%- endif %}
+
You can also create and configure environments through the REST API. For more information, see "[AUTOTITLE](/rest/deployments/environments)," "[AUTOTITLE](/rest/actions/secrets),"{% ifversion actions-configuration-variables %} "[AUTOTITLE](/rest/actions/variables),"{% endif %} and "[AUTOTITLE](/rest/deployments/branch-policies)."
Running a workflow that references an environment that does not exist will create an environment with the referenced name. The newly created environment will not have any protection rules or secrets configured. Anyone that can edit workflows in the repository can create environments via a workflow file, but only repository admins can configure the environment.
diff --git a/content/actions/managing-workflow-runs/reviewing-deployments.md b/content/actions/managing-workflow-runs/reviewing-deployments.md
index ae6415205c..092f5b0338 100644
--- a/content/actions/managing-workflow-runs/reviewing-deployments.md
+++ b/content/actions/managing-workflow-runs/reviewing-deployments.md
@@ -25,3 +25,25 @@ For more information about environments and required approvals, see "[AUTOTITLE]
4. Approve or reject:
- To approve the job, click **Approve and deploy**. Once a job is approved (and any other environment protection rules have passed), the job will proceed. At this point, the job can access any secrets stored in the environment.
- To reject the job, click **Reject**. If a job is rejected, the workflow will fail.
+
+{% ifversion actions-break-glass %}
+## Bypassing environment protection rules
+
+If you have configured environment protection rules that control whether software can be deployed to an environment, you can bypass these rules and force all pending jobs referencing the environment to proceed.
+
+{% note %}
+
+**Notes:**
+
+- You cannot bypass environment protection rules if the environment has been configured to prevent admins from bypassing configured protection rules. For more information, see "[AUTOTITLE](/actions/deployment/targeting-different-environments/using-environments-for-deployment#creating-an-environment)."
+- You can only bypass environment protection rules during workflow execution when a job referencing the environment is in a "Pending" state.
+
+{% endnote %}
+
+1. Navigate to the workflow run. For more information about navigating to a workflow run, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)."
+1. To the right of **Deployment protection rules**, click **Start all waiting jobs**.
+ 
+1. In the pop-up window, select the environments for which you want to bypass environment protection rules.
+1. Under **Leave a comment**, enter a description for bypassing the environment protection rules.
+1. Click **I understand the consequences, start deploying**.
+{% endif %}
diff --git a/content/actions/migrating-to-github-actions/automating-migration-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/automated-migrations/automating-migration-with-github-actions-importer.md
similarity index 78%
rename from content/actions/migrating-to-github-actions/automating-migration-with-github-actions-importer.md
rename to content/actions/migrating-to-github-actions/automated-migrations/automating-migration-with-github-actions-importer.md
index 6289b2a39f..1b6b3d0026 100644
--- a/content/actions/migrating-to-github-actions/automating-migration-with-github-actions-importer.md
+++ b/content/actions/migrating-to-github-actions/automated-migrations/automating-migration-with-github-actions-importer.md
@@ -1,6 +1,8 @@
---
title: Automating migration with GitHub Actions Importer
intro: 'Use {% data variables.product.prodname_actions_importer %} to plan and automate your migration to {% data variables.product.prodname_actions %}.'
+redirect_from:
+ - /actions/migrating-to-github-actions/automating-migration-with-github-actions-importer
versions:
fpt: '*'
ghec: '*'
@@ -19,12 +21,6 @@ shortTitle: 'Automate migration with {% data variables.product.prodname_actions_
[Legal notice](#legal-notice)
-{% note %}
-
-**Note**: {% data variables.product.prodname_actions_importer %} is currently available as a public preview. Visit the [sign up page](https://github.com/features/actions-importer/signup) to request access to the preview. Once you are granted access you'll be able to use the `gh-actions-importer` CLI extension
-
-{% endnote %}
-
## About {% data variables.product.prodname_actions_importer %}
You can use {% data variables.product.prodname_actions_importer %} to plan and automatically migrate your CI/CD pipelines to {% data variables.product.prodname_actions %} from Azure DevOps, CircleCI, GitLab, Jenkins, and Travis CI.
@@ -43,13 +39,10 @@ You can use {% data variables.product.prodname_actions_importer %} to migrate fr
- Jenkins
- Travis CI
-Once you are granted access to the preview, you will be able to access further reference documentation for each of the supported platforms.
-
## Prerequisites
{% data variables.product.prodname_actions_importer %} has the following requirements:
-- You must have been granted access to the public preview for the {% data variables.product.prodname_actions_importer %}.
{%- ifversion ghes < 3.5 or ghae %}
- Use a {% data variables.product.pat_generic %} with the `read:packages` scope enabled.
{%- else %}
@@ -111,8 +104,6 @@ You must configure credentials that allow {% data variables.product.prodname_act
$ gh actions-importer configure
```
-Once you are granted access to the preview, you will be able to access further reference documentation about using environment variables.
-
## Using the {% data variables.product.prodname_actions_importer %} CLI
Use the subcommands of `gh actions-importer` to begin your migration to {% data variables.product.prodname_actions %}, including `audit`, `forecast`, `dry-run`, and `migrate`.
@@ -138,8 +129,6 @@ Commands:
travis-ci An audit will output a list of data used in a Travis CI instance.
```
-Once you are granted access to the preview, you will be able to access further reference documentation about running an audit.
-
### Forecasting usage
The `forecast` subcommand reviews historical pipeline usage to create a forecast of {% data variables.product.prodname_actions %} usage.
@@ -162,8 +151,6 @@ Commands:
github Forecasts GitHub Actions usage from historical GitHub pipeline utilization.
```
-Once you are granted access to the preview, you will be able to access further reference documentation about running a forecast.
-
### Testing the migration process
The `dry-run` subcommand can be used to convert a pipeline to its {% data variables.product.prodname_actions %} equivalent, and then write the workflow to your local filesystem.
@@ -185,8 +172,6 @@ Commands:
travis-ci Convert a Travis CI pipeline to a GitHub Actions workflow and output its yaml file.
```
-Once you are granted access to the preview, you will be able to access further reference documentation about performing a dry run.
-
### Migrating a pipeline to {% data variables.product.prodname_actions %}
The `migrate` subcommand can be used to convert a pipeline to its GitHub Actions equivalent and then create a pull request with the contents.
@@ -208,32 +193,18 @@ Commands:
travis-ci Convert a Travis CI pipeline to a GitHub Actions workflow and and open a pull request with the changes.
```
-Once you are granted access to the preview, you will be able to access further reference documentation about running a migration.
+## Performing self-serve migrations using IssueOps
+
+You can use {% data variables.product.prodname_actions %} and {% data variables.product.prodname_github_issues %} to run CLI commands for {% data variables.product.prodname_actions_importer %}. This allows you to migrate your CI/CD workflows without installing software on your local machine. This approach is especially useful for organizations that want to enable self-service migrations to {% data variables.product.prodname_actions %}. Once IssueOps is configured, users can open an issue with the relevant template to migrate pipelines to {% data variables.product.prodname_actions %}.
+
+For more information about setting up self-serve migrations with IssueOps, see the [`actions/importer-issue-ops`](https://github.com/actions/importer-issue-ops) template repository.
+
+## Using the {% data variables.product.prodname_actions_importer %} labs repository
+
+The {% data variables.product.prodname_actions_importer %} labs repository contains platform-specific learning paths that teach you how to use {% data variables.product.prodname_actions_importer %} and how to approach migrations to {% data variables.product.prodname_actions %}. You can use this repository to learn how to use {% data variables.product.prodname_actions_importer %} to help plan, forecast, and automate your migration to {% data variables.product.prodname_actions %}.
+
+To learn more, see the [GitHub Actions Importer labs repository](https://github.com/actions/importer-labs/tree/main#readme).
## Legal notice
-Portions have been adapted from https://github.com/github/gh-actions-importer/ under the MIT license:
-
-```
-MIT License
-
-Copyright (c) 2022 GitHub
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-```
+{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/automated-migrations/extending-github-actions-importer-with-custom-transformers.md b/content/actions/migrating-to-github-actions/automated-migrations/extending-github-actions-importer-with-custom-transformers.md
new file mode 100644
index 0000000000..ad30e68e74
--- /dev/null
+++ b/content/actions/migrating-to-github-actions/automated-migrations/extending-github-actions-importer-with-custom-transformers.md
@@ -0,0 +1,181 @@
+---
+title: Extending GitHub Actions Importer with custom transformers
+intro: '{% data variables.product.prodname_actions_importer %} offers the ability to extend its built-in mapping.'
+versions:
+ fpt: '*'
+ ghec: '*'
+ ghes: '*'
+ ghae: '*'
+type: how_to
+topics:
+ - Migration
+ - CI
+ - CD
+shortTitle: 'Extending GitHub Actions Importer'
+---
+
+[Legal notice](#legal-notice)
+
+## About custom transformers
+
+{% data variables.product.prodname_actions_importer %} offers the ability to extend its built-in mapping by creating custom transformers. Custom transformers can be used to:
+
+- Convert items that {% data variables.product.prodname_actions_importer %} does not automatically convert, or modify how items are converted. For more information, see "[Creating custom transformers for items](#creating-custom-transformers-for-items)."
+- Convert references to runners to use different runner labels. For more information, see "[Creating custom transformers for runners](#creating-custom-transformers-for-runners)."
+- Convert environment variable values from your existing pipelines to {% data variables.product.prodname_actions %} workflows. For more information, see "[Creating custom transformers for environment variables](#creating-custom-transformers-for-environment-variables)."
+
+## Using custom transformers with {% data variables.product.prodname_actions_importer %}
+
+A custom transformer contains mapping logic that {% data variables.product.prodname_actions_importer %} can use to transform your plugins, tasks, runner labels, or environment variables to work with {% data variables.product.prodname_actions %}. Custom transformers are written with a domain-specific language (DSL) built on top of Ruby, and are defined within a file with the `.rb` file extension.
+
+You can use the `--custom-transformers` CLI option to specify which custom transformer files to use with the `audit`, `dry-run`, and `migrate` commands.
+
+For example, if custom transformers are defined in a file named `transformers.rb`, you can use the following command to use them with {% data variables.product.prodname_actions_importer %}:
+
+```
+gh actions-importer ... --custom-transformers transformers.rb
+```
+
+Alternatively, you can use the glob pattern syntax to specify multiple custom transformer files. For example, if multiple custom transformer files are within a directory named `transformers`, you can provide them all to {% data variables.product.prodname_actions_importer %} with the following command:
+
+```
+gh actions-importer ... --custom-transformers transformers/*.rb
+```
+
+{% note %}
+
+**Note:** When you use custom transformers, the custom transformer files must reside in the same directory, or in subdirectores, from where the `gh actions-importer` command is run.
+
+{% endnote %}
+
+## Creating custom transformers for items
+
+You can create custom transformers that {% data variables.product.prodname_actions_importer %} will use when converting existing build steps or triggers to their equivalent in {% data variables.product.prodname_actions %}. This is especially useful when:
+
+- {% data variables.product.prodname_actions_importer %} doesn't automatically convert an item.
+- You want to change how an item is converted by {% data variables.product.prodname_actions_importer %}.
+- Your existing pipelines use custom or proprietary extensions, such as shared libraries in Jenkins, and you need to define how these steps should function in {% data variables.product.prodname_actions %}.
+
+{% data variables.product.prodname_actions_importer %} uses custom transformers that are defined using a DSL built on top of Ruby. In order to create custom transformers for build steps and triggers:
+
+- Each custom transformer file must contain at least one `transform` method.
+- Each `transform` method must return a `Hash`, an array of `Hash`'s, or `nil`. This returned value will correspond to an action defined in YAML. For more information about actions, see "[AUTOTITLE](/actions/learn-github-actions/understanding-github-actions)."
+
+### Example custom transformer for a build step
+
+The following example converts a build step that uses the "buildJavascriptApp" identifier to run various `npm` commands:
+
+```ruby{:copy}
+transform "buildJavascriptApp" do |item|
+ command = ["build", "package", "deploy"].map do |script|
+ "npm run #{script}"
+ end
+
+ {
+ name: "build javascript app",
+ run: command.join("\n")
+ }
+end
+```
+
+The above example results in the following {% data variables.product.prodname_actions %} workflow step. It is comprised of converted build steps that had a `buildJavascriptApp` identifier:
+
+```yaml
+- name: build javascript app
+ run: |
+ npm run build
+ npm run package
+ npm run deploy
+```
+
+The `transform` method uses the identifier of the build step from your source CI/CD instance in an argument. In this example, the identifier is `buildJavascriptLibrary`. You can also use comma-separated values to pass multiple identifiers to the `transform` method. For example, `transform "buildJavascriptApp", "buildTypescriptApp" { |item| ... }`.
+
+{% note %}
+
+**Note**: The data structure of `item` will be different depending on the CI/CD platform and the type of item being converted.
+
+{% endnote %}
+
+## Creating custom transformers for runners
+
+You can customize the mapping between runners in your source CI/CD instance and their equivalent {% data variables.product.prodname_actions %} runners.
+
+{% data variables.product.prodname_actions_importer %} uses custom transformers that are defined using a DSL built on top of Ruby. To create custom transformers for runners:
+
+- The custom transformer file must have at least one `runner` method.
+- The `runner` method accepts two parameters. The first parameter is the source CI/CD instance's runner label, and the second parameter is the corresponding {% data variables.product.prodname_actions %} runner label. {% ifversion not ghae %}For more information on {% data variables.product.prodname_actions %} runners, see "[AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources)."{% endif %}
+
+### Example custom transformers for runners
+
+The following example shows a `runner` method that converts one runner label to one {% data variables.product.prodname_actions %} runner label in the resulting workflow.
+
+```ruby{:copy}
+runner "linux", "ubuntu-latest"
+```
+
+You can also use the `runner` method to convert one runner label to multiple {% data variables.product.prodname_actions %} runner labels in the resulting workflow.
+
+```ruby{:copy}
+runner "big-agent", ["self-hosted", "xl", "linux"]
+```
+
+{% data variables.product.prodname_actions_importer %} attempts to map the runner label as best it can. In cases where it cannot do this, the `ubuntu-latest` runner label is used as a default. You can use a special keyword with the `runner` method to control this default value. For example, the following custom transformer instructs {% data variables.product.prodname_actions_importer %} to use `macos-latest` as the default runner instead of `ubuntu-latest`.
+
+```ruby{:copy}
+runner :default, "macos-latest"
+```
+
+## Creating custom transformers for environment variables
+
+You can customize the mapping between environment variables in your source CI/CD pipelines to their values in {% data variables.product.prodname_actions %}.
+
+{% data variables.product.prodname_actions_importer %} uses custom transformers that are defined using a DSL built on top of Ruby. To create custom transformers for environment variables:
+
+- The custom transformer file must have at least one `env` method.
+- The `env` method accepts two parameters. The first parameter is the name of the environment variable in the original pipeline, and the second parameter is the updated value for the environment variable for {% data variables.product.prodname_actions %}. For more information about {% data variables.product.prodname_actions %} environment variables, see "[AUTOTITLE](/actions/learn-github-actions/variables)."
+
+### Example custom transformers for environment variables
+
+There are several ways you can set up custom transformers to map your environment variables.
+
+- The following example sets the value of any existing environment variables named `OCTO`, to `CAT` when transforming a pipeline.
+
+ ```ruby{:copy}
+ env "OCTO", "CAT"
+ ```
+
+ You can also remove all instances of a specific environment variable so they are not transformed to an {% data variables.product.prodname_actions %} workflow. The following example removes all environment variables with the name `MONA_LISA`.
+
+ ```ruby{:copy}
+ env "MONA_LISA", nil
+ ```
+
+- You can also map your existing environment variables to secrets. For example, the following `env` method maps an environment variable named `MONALISA` to a secret named `OCTOCAT`.
+
+ ```ruby{:copy}
+ env "MONALISA", secret("OCTOCAT")
+ ```
+
+ This will set up a reference to a secret named `OCTOCAT` in the transformed workflow. For the secret to work, you will need to create the secret in your GitHub repository. For more information, see "[AUTOTITLE](/actions/security-guides/encrypted-secrets#creating-encrypted-secrets-for-a-repository)."
+
+- You can also use regular expressions to update the values of multiple environment variables at once. For example, the following custom transformer removes all environment variables from the converted workflow:
+
+ ```ruby{:copy}
+ env /.*/, nil
+ ```
+
+ The following example uses a regular expression match group to transform environment variable values to dynamically generated secrets.
+
+ ```ruby{:copy}
+ env /^(.+)_SSH_KEY/, secret("%s_SSH_KEY)
+ ```
+
+ {% note %}
+
+ **Note**: The order in which `env` methods are defined matters when using regular expressions. The first `env` transformer that matches an environment variable name takes precedence over subsequent `env` methods. You should define your most specific environment variable transformers first.
+
+ {% endnote %}
+
+## Legal notice
+
+{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/automated-migrations/index.md b/content/actions/migrating-to-github-actions/automated-migrations/index.md
new file mode 100644
index 0000000000..74333dda9c
--- /dev/null
+++ b/content/actions/migrating-to-github-actions/automated-migrations/index.md
@@ -0,0 +1,15 @@
+---
+title: 'Using {% data variables.product.prodname_actions_importer %} to automate migrations'
+shortTitle: Automated migrations
+intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to migrate your CI/CD workflows to {% data variables.product.prodname_actions %}.'
+versions:
+ fpt: '*'
+ ghes: '*'
+ ghae: '*'
+ ghec: '*'
+children:
+ - /automating-migration-with-github-actions-importer
+ - /extending-github-actions-importer-with-custom-transformers
+ - /supplemental-arguments-and-settings
+---
+
diff --git a/content/actions/migrating-to-github-actions/automated-migrations/supplemental-arguments-and-settings.md b/content/actions/migrating-to-github-actions/automated-migrations/supplemental-arguments-and-settings.md
new file mode 100644
index 0000000000..55b2373f65
--- /dev/null
+++ b/content/actions/migrating-to-github-actions/automated-migrations/supplemental-arguments-and-settings.md
@@ -0,0 +1,148 @@
+---
+title: Supplemental arguments and settings
+intro: '{% data variables.product.prodname_actions_importer %} has several supplemental arguments and settings to tailor the migration process to your needs.'
+versions:
+ fpt: '*'
+ ghec: '*'
+ ghes: '*'
+ ghae: '*'
+type: reference
+topics:
+ - Migration
+ - CI
+ - CD
+---
+
+[Legal notice](#legal-notice)
+
+This article provides general information for configuring {% data variables.product.prodname_actions_importer %}'s supplemental arguments and settings, such as optional parameters, path arguments, and network settings.
+
+## Optional parameters
+
+{% data variables.product.prodname_actions_importer %} has several optional parameters that you can use to customize the migration process.
+
+### Limiting allowed actions
+
+The following options can be used to limit which actions are allowed in converted workflows. When used in combination, these options expand the list of allowed actions. If none of these options are supplied, then all actions are allowed.
+
+- `--allowed-actions` specifies a list of actions to allow in converted workflows. Wildcards are supported. Any other actions other than those provided will be disallowed.
+
+ For example:
+
+ ```shell
+ --allowed-actions {% data reusables.actions.action-checkout %} actions/upload-artifact@* my-org/*
+ ```
+
+ You can provide an empty list to disallow all actions. For example, `--allowed-actions=`.
+
+- `--allow-verified-actions` specifies that all actions from verified creators are allowed.
+
+- `--allow-github-created-actions` specifies that actions published from the `github` or `actions` organizations are allowed.
+
+ For example, such actions include `github/super-linter` and `actions/checkout`.
+
+ This option is equivalent to `--allowed-actions actions/* github/*`.
+
+### Using a credentials file for authentication
+
+The `--credentials-file` parameter specifies the path to a file containing credentials for different servers that {% data variables.product.prodname_actions_importer %} can authenticate to. This is useful when build scripts (such as `.travis.yml` or `jenkinsfile`) are stored in multiple {% data variables.product.prodname_ghe_server %} instances.
+
+A credentials file must be a YAML file containing a list of server and access token combinations. {% data variables.product.prodname_actions_importer %} uses the credentials for the URL that most closely matches the network request being made.
+
+For example:
+
+```yml
+- url: https://github.com
+ access_token: ghp_mygeneraltoken
+- url: https://github.com/specific_org/
+ access_token: ghp_myorgspecifictoken
+- url: https://jenkins.org
+ access_token: abc123
+ username: marty_mcfly
+```
+
+For the above credentials file, {% data variables.product.prodname_actions_importer %} uses the access token `ghp_mygeneraltoken` to authenticate all network requests to `https://github.com`, _unless_ the network request is for a repository in the `specific_org` organization. In that case, the `ghp_myorgspecifictoken` token is used to authenticate instead.
+
+#### Alternative source code providers
+
+{% data variables.product.prodname_actions_importer %} can automatically fetch source code from non-{% data variables.product.prodname_dotcom %} repositories. A credentials file can specify the `provider`, the provider URL, and the credentials needed to retrieve the source code.
+
+For example:
+
+```yml
+- url: https://gitlab.com
+ access_token: super_secret_token
+ provider: gitlab
+```
+
+For the above example, {% data variables.product.prodname_actions_importer %} uses the token `super_secret_token` to retrieve any source code that is hosted on `https://gitlab.com`.
+
+Supported values for `provider` are:
+
+- `github` (default)
+- `gitlab`
+- `bitbucket_server`
+- `azure_devops`
+
+### Restricting {% data variables.product.prodname_actions %} features to include in workflows
+
+You can use the `--features` option to limit the features used in workflows that {% data variables.product.prodname_actions_importer %} creates. This is useful for excluding newer {% data variables.product.prodname_actions %} syntax from workflows when migrating to an older {% data variables.product.prodname_ghe_server %} instance. When using the `--features` option, you must specify the version of {% data variables.product.prodname_ghe_server %} that you are migrating to.
+
+For example:
+
+```bash
+gh actions-importer dry-run ... --features ghes-3.3
+```
+
+The supported values for `--features` are:
+
+- `all` (default value)
+- `ghes-latest`
+- `ghes-`, where `` is the version of {% data variables.product.prodname_ghe_server %}, `3.0` or later. For example, `ghes-3.3`.
+
+### Disabling network response caching
+
+By default, {% data variables.product.prodname_actions_importer %} caches responses from network requests to reduce network load and reduce run time. You can use the `--no-http-cache` option to disable the network cache. For example:
+
+```bash
+gh actions-importer forecast ... --no-http-cache
+```
+
+## Path arguments
+
+When running {% data variables.product.prodname_actions_importer %}, path arguments are relative to the container's disk, so absolute paths relative to the container's host machine are not supported. When {% data variables.product.prodname_actions_importer %} is run, the container's `/data` directory is mounted to the directory where {% data variables.product.prodname_actions_importer %} is run.
+
+For example, the following command outputs the {% data variables.product.prodname_actions_importer %} audit summary to the `/Users/mona/out` directory:
+
+```console
+# Current directory: /Users/mona
+$ gh actions-importer audit --output-dir /data/out
+```
+
+## Using a proxy
+
+To access servers that are configured with a HTTP proxy, you must set the following environment variables with the proxy's URL:
+
+- `OCTOKIT_PROXY`: for any {% data variables.product.prodname_dotcom %} server.
+- `HTTP_PROXY` (or `HTTPS_PROXY`): for any other servers.
+
+For example:
+
+```sh
+export OCTOKIT_PROXY=https://proxy.example.com:8443
+export HTTPS_PROXY=$OCTOKIT_PROXY
+```
+
+If the proxy requires authentication, a username and password must be included in the proxy URL. For example, `https://username:password@proxy.url:port`.
+
+## Disabling SSL certificate verification
+
+By default, {% data variables.product.prodname_actions_importer %} verifies SSL certificates when making network requests. You can disable SSL certificate verification with the `--no-ssl-verify` option. For example:
+
+```bash
+gh actions-importer audit --output-dir ./output --no-ssl-verify
+```
+
+## Legal notice
+
+{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/index.md b/content/actions/migrating-to-github-actions/index.md
index 05e4e9f359..dcccc48055 100644
--- a/content/actions/migrating-to-github-actions/index.md
+++ b/content/actions/migrating-to-github-actions/index.md
@@ -10,10 +10,6 @@ versions:
redirect_from:
- /articles/migrating-github-actions-from-hcl-syntax-to-yaml-syntax
children:
- - /automating-migration-with-github-actions-importer
- - /migrating-from-azure-pipelines-to-github-actions
- - /migrating-from-circleci-to-github-actions
- - /migrating-from-gitlab-cicd-to-github-actions
- - /migrating-from-jenkins-to-github-actions
- - /migrating-from-travis-ci-to-github-actions
----
+ - /automated-migrations
+ - /manual-migrations
+---
\ No newline at end of file
diff --git a/content/actions/migrating-to-github-actions/manual-migrations/index.md b/content/actions/migrating-to-github-actions/manual-migrations/index.md
new file mode 100644
index 0000000000..6474e5cb61
--- /dev/null
+++ b/content/actions/migrating-to-github-actions/manual-migrations/index.md
@@ -0,0 +1,17 @@
+---
+title: Manually migrating to GitHub Actions
+shortTitle: Manual migrations
+intro: 'Learn how to manually migrate your existing CI/CD workflows to {% data variables.product.prodname_actions %}.'
+versions:
+ fpt: '*'
+ ghes: '*'
+ ghae: '*'
+ ghec: '*'
+children:
+ - /migrating-from-azure-pipelines-to-github-actions
+ - /migrating-from-circleci-to-github-actions
+ - /migrating-from-gitlab-cicd-to-github-actions
+ - /migrating-from-jenkins-to-github-actions
+ - /migrating-from-travis-ci-to-github-actions
+---
+
diff --git a/content/actions/migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-azure-pipelines-to-github-actions.md
similarity index 99%
rename from content/actions/migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md
rename to content/actions/migrating-to-github-actions/manual-migrations/migrating-from-azure-pipelines-to-github-actions.md
index 5bc7b3f70f..2dc7fe1f40 100644
--- a/content/actions/migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md
+++ b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-azure-pipelines-to-github-actions.md
@@ -3,6 +3,7 @@ title: Migrating from Azure Pipelines to GitHub Actions
intro: '{% data variables.product.prodname_actions %} and Azure Pipelines share several configuration similarities, which makes migrating to {% data variables.product.prodname_actions %} relatively straightforward.'
redirect_from:
- /actions/learn-github-actions/migrating-from-azure-pipelines-to-github-actions
+ - /actions/migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions
versions:
fpt: '*'
ghes: '*'
diff --git a/content/actions/migrating-to-github-actions/migrating-from-circleci-to-github-actions.md b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-circleci-to-github-actions.md
similarity index 99%
rename from content/actions/migrating-to-github-actions/migrating-from-circleci-to-github-actions.md
rename to content/actions/migrating-to-github-actions/manual-migrations/migrating-from-circleci-to-github-actions.md
index be7a0d12f9..82b61fbf7f 100644
--- a/content/actions/migrating-to-github-actions/migrating-from-circleci-to-github-actions.md
+++ b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-circleci-to-github-actions.md
@@ -3,6 +3,7 @@ title: Migrating from CircleCI to GitHub Actions
intro: 'GitHub Actions and CircleCI share several similarities in configuration, which makes migration to GitHub Actions relatively straightforward.'
redirect_from:
- /actions/learn-github-actions/migrating-from-circleci-to-github-actions
+ - /actions/migrating-to-github-actions/migrating-from-circleci-to-github-actions
versions:
fpt: '*'
ghes: '*'
diff --git a/content/actions/migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-gitlab-cicd-to-github-actions.md
similarity index 99%
rename from content/actions/migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md
rename to content/actions/migrating-to-github-actions/manual-migrations/migrating-from-gitlab-cicd-to-github-actions.md
index a21d12b396..52cfa30a3b 100644
--- a/content/actions/migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md
+++ b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-gitlab-cicd-to-github-actions.md
@@ -3,6 +3,7 @@ title: Migrating from GitLab CI/CD to GitHub Actions
intro: '{% data variables.product.prodname_actions %} and GitLab CI/CD share several configuration similarities, which makes migrating to {% data variables.product.prodname_actions %} relatively straightforward.'
redirect_from:
- /actions/learn-github-actions/migrating-from-gitlab-cicd-to-github-actions
+ - /actions/migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions
versions:
fpt: '*'
ghes: '*'
diff --git a/content/actions/migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-jenkins-to-github-actions.md
similarity index 99%
rename from content/actions/migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md
rename to content/actions/migrating-to-github-actions/manual-migrations/migrating-from-jenkins-to-github-actions.md
index 5a351755bf..db97acf6ba 100644
--- a/content/actions/migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md
+++ b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-jenkins-to-github-actions.md
@@ -3,6 +3,7 @@ title: Migrating from Jenkins to GitHub Actions
intro: '{% data variables.product.prodname_actions %} and Jenkins share multiple similarities, which makes migration to {% data variables.product.prodname_actions %} relatively straightforward.'
redirect_from:
- /actions/learn-github-actions/migrating-from-jenkins-to-github-actions
+ - /actions/migrating-to-github-actions/migrating-from-jenkins-to-github-actions
versions:
fpt: '*'
ghes: '*'
diff --git a/content/actions/migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-travis-ci-to-github-actions.md
similarity index 99%
rename from content/actions/migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md
rename to content/actions/migrating-to-github-actions/manual-migrations/migrating-from-travis-ci-to-github-actions.md
index 6f7ff2b370..16bec8d0f8 100644
--- a/content/actions/migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md
+++ b/content/actions/migrating-to-github-actions/manual-migrations/migrating-from-travis-ci-to-github-actions.md
@@ -3,6 +3,7 @@ title: Migrating from Travis CI to GitHub Actions
intro: '{% data variables.product.prodname_actions %} and Travis CI share multiple similarities, which helps make it relatively straightforward to migrate to {% data variables.product.prodname_actions %}.'
redirect_from:
- /actions/learn-github-actions/migrating-from-travis-ci-to-github-actions
+ - /actions/migrating-to-github-actions/migrating-from-travis-ci-to-github-actions
versions:
fpt: '*'
ghes: '*'
diff --git a/content/actions/using-workflows/events-that-trigger-workflows.md b/content/actions/using-workflows/events-that-trigger-workflows.md
index 3ff88804ec..aed53bc6fb 100644
--- a/content/actions/using-workflows/events-that-trigger-workflows.md
+++ b/content/actions/using-workflows/events-that-trigger-workflows.md
@@ -19,11 +19,15 @@ shortTitle: Events that trigger workflows
Workflow triggers are events that cause a workflow to run. For more information about how to use workflow triggers, see "[AUTOTITLE](/actions/using-workflows/triggering-a-workflow)."
-## Available events
+Some events have multiple activity types. For these events, you can specify which activity types will trigger a workflow run. For more information about what each activity type means, see "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads)."
-Some events have multiple activity types. For these events, you can specify which activity types will trigger a workflow run. For more information about what each activity type means, see "[AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads)." Note that not all webhook events trigger workflows.
+{% note %}
-### `branch_protection_rule`
+**Note:** Not all webhook events trigger workflows.
+
+{% endnote %}
+
+## `branch_protection_rule`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -47,7 +51,7 @@ on:
types: [created, deleted]
```
-### `check_run`
+## `check_run`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -71,7 +75,7 @@ on:
types: [rerequested, completed]
```
-### `check_suite`
+## `check_suite`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -101,7 +105,7 @@ on:
types: [completed]
```
-### `create`
+## `create`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -122,7 +126,7 @@ on:
create
```
-### `delete`
+## `delete`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -145,7 +149,7 @@ on:
delete
```
-### `deployment`
+## `deployment`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -160,7 +164,7 @@ on:
deployment
```
-### `deployment_status`
+## `deployment_status`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -182,7 +186,7 @@ on:
```
{% ifversion discussions %}
-### `discussion`
+## `discussion`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -208,7 +212,7 @@ on:
types: [created, edited, answered]
```
-### `discussion_comment`
+## `discussion_comment`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -236,7 +240,7 @@ on:
{% endif %}
-### `fork`
+## `fork`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -253,7 +257,7 @@ on:
fork
```
-### `gollum`
+## `gollum`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -270,7 +274,7 @@ on:
gollum
```
-### `issue_comment`
+## `issue_comment`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -294,7 +298,7 @@ on:
types: [created, deleted]
```
-#### `issue_comment` on issues only or pull requests only
+### `issue_comment` on issues only or pull requests only
The `issue_comment` event occurs for comments on both issues and pull requests. You can use the `github.event.issue.pull_request` property in a conditional to take different action depending on whether the triggering object was an issue or pull request.
@@ -327,7 +331,7 @@ jobs:
NUMBER: {% raw %}${{ github.event.issue.number }}{% endraw %}
```
-### `issues`
+## `issues`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -351,7 +355,7 @@ on:
types: [opened, edited, milestoned]
```
-### `label`
+## `label`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -379,7 +383,7 @@ on:
{% ifversion fpt or ghec %}
-### `merge_group`
+## `merge_group`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -405,7 +409,7 @@ on:
```
{% endif %}
-### `milestone`
+## `milestone`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -431,7 +435,7 @@ on:
types: [opened, deleted]
```
-### `page_build`
+## `page_build`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -448,7 +452,7 @@ on:
page_build
```
-### `project`
+## `project`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -486,7 +490,7 @@ on:
types: [created, deleted]
```
-### `project_card`
+## `project_card`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -524,7 +528,7 @@ on:
types: [created, deleted]
```
-### `project_column`
+## `project_column`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -562,7 +566,7 @@ on:
types: [created, deleted]
```
-### `public`
+## `public`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -579,7 +583,7 @@ on:
public
```
-### `pull_request`
+## `pull_request`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -625,7 +629,7 @@ jobs:
- run: echo 'A review from octo-team was requested'
```
-#### Running your `pull_request` workflow based on the head or base branch of a pull request
+### Running your `pull_request` workflow based on the head or base branch of a pull request
You can use the `branches` or `branches-ignore` filter to configure your workflow to only run on pull requests that target specific branches. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore)."
@@ -672,7 +676,7 @@ jobs:
- run: echo "The head of this PR starts with 'releases/'"
```
-#### Running your `pull_request` workflow based on files changed in a pull request
+### Running your `pull_request` workflow based on files changed in a pull request
You can also configure your workflow to run when a pull request changes specific files. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore)."
@@ -702,7 +706,7 @@ on:
{% endnote %}
-#### Running your `pull_request` workflow when a pull request merges
+### Running your `pull_request` workflow when a pull request merges
When a pull request merges, the pull request is automatically closed. To run a workflow when a pull request merges, use the `pull_request` `closed` event type along with a conditional that checks the `merged` value of the event. For example, the following workflow will run whenever a pull request closes. The `if_merged` job will only run if the pull request was also merged.
@@ -723,11 +727,11 @@ jobs:
{% data reusables.developer-site.pull_request_forked_repos_link %}
-### `pull_request_comment` (use `issue_comment`)
+## `pull_request_comment` (use `issue_comment`)
To run your workflow when a comment on a pull request (not on a pull request's diff) is created, edited, or deleted, use the [`issue_comment`](#issue_comment) event. For activity related to pull request reviews or pull request review comments, use the [`pull_request_review`](#pull_request_review) or [`pull_request_review_comment`](#pull_request_review_comment) events.
-### `pull_request_review`
+## `pull_request_review`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -749,7 +753,7 @@ on:
types: [edited, dismissed]
```
-#### Running a workflow when a pull request is approved
+### Running a workflow when a pull request is approved
To run your workflow when a pull request has been approved, you can trigger your workflow with the `submitted` type of `pull_request_review` event, then check the review state with the `github.event.review.state` property. For example, this workflow will run whenever a pull request review is submitted, but the `approved` job will only run if the submitted review is an approving review:
@@ -768,7 +772,7 @@ jobs:
{% data reusables.developer-site.pull_request_forked_repos_link %}
-### `pull_request_review_comment`
+## `pull_request_review_comment`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -792,7 +796,7 @@ on:
{% data reusables.developer-site.pull_request_forked_repos_link %}
-### `pull_request_target`
+## `pull_request_target`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -824,7 +828,7 @@ on:
types: [assigned, opened, synchronize, reopened]
```
-#### Running your `pull_request_target` workflow based on the head or base branch of a pull request
+### Running your `pull_request_target` workflow based on the head or base branch of a pull request
You can use the `branches` or `branches-ignore` filter to configure your workflow to only run on pull requests that target specific branches. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore)."
@@ -871,7 +875,7 @@ jobs:
- run: echo "The head of this PR starts with 'releases/'"
```
-#### Running your `pull_request_target` workflow based on files changed in a pull request
+### Running your `pull_request_target` workflow based on files changed in a pull request
You can use the `paths` or `paths-ignore` filter to configure your workflow to run when a pull request changes specific files. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore)."
@@ -901,7 +905,7 @@ on:
{% endnote %}
-#### Running your `pull_request_target` workflow when a pull request merges
+### Running your `pull_request_target` workflow when a pull request merges
When a pull request merges, the pull request is automatically closed. To run a workflow when a pull request merges, use the `pull_request_target` `closed` event type along with a conditional that checks the `merged` value of the event. For example, the following workflow will run whenever a pull request closes. The `if_merged` job will only run if the pull request was also merged.
@@ -920,7 +924,7 @@ jobs:
echo The PR was merged
```
-### `push`
+## `push`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -953,7 +957,7 @@ on:
{% endnote %}
-#### Running your workflow only when a push to specific branches occurs
+### Running your workflow only when a push to specific branches occurs
You can use the `branches` or `branches-ignore` filter to configure your workflow to only run when specific branches are pushed. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore)."
@@ -982,7 +986,7 @@ on:
{% endnote %}
-#### Running your workflow only when a push of specific tags occurs
+### Running your workflow only when a push of specific tags occurs
You can use the `tags` or `tags-ignore` filter to configure your workflow to only run when specific tags are pushed. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore)."
@@ -995,7 +999,7 @@ on:
- v1.**
```
-#### Running your workflow only when a push affects specific files
+### Running your workflow only when a push affects specific files
You can use the `paths` or `paths-ignore` filter to configure your workflow to run when a push to specific files occurs. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore)."
@@ -1023,7 +1027,7 @@ on:
{% endnote %}
-### `registry_package`
+## `registry_package`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1047,7 +1051,7 @@ on:
types: [published]
```
-### `release`
+## `release`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1081,7 +1085,7 @@ on:
types: [published]
```
-### `repository_dispatch`
+## `repository_dispatch`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| ------------------ | ------------ | ------------ | ------------------|
@@ -1134,7 +1138,7 @@ jobs:
run: echo $MESSAGE
```
-### `schedule`
+## `schedule`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1179,7 +1183,7 @@ You can use [crontab guru](https://crontab.guru/) to help generate your cron syn
Notifications for scheduled workflows are sent to the user who last modified the cron syntax in the workflow file. For more information, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs)."
-### `status`
+## `status`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1214,7 +1218,7 @@ jobs:
echo The status is error or failed: $DESCRIPTION
```
-### `watch`
+## `watch`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1238,7 +1242,7 @@ on:
types: [started]
```
-### `workflow_call`
+## `workflow_call`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| ------------------ | ------------ | ------------ | ------------------|
@@ -1252,7 +1256,7 @@ The example below only runs the workflow when it's called from another workflow:
on: workflow_call
```
-### `workflow_dispatch`
+## `workflow_dispatch`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| ------------------ | ------------ | ------------ | ------------------|
@@ -1264,7 +1268,7 @@ To manually trigger a workflow, use the `workflow_dispatch` event. You can manua
on: workflow_dispatch
```
-#### Providing inputs
+### Providing inputs
You can configure custom-defined input properties, default input values, and required inputs for the event directly in your workflow. When you trigger the event, you can provide the `ref` and any `inputs`. When the workflow runs, you can access the input values in the {% ifversion actions-unified-inputs %}`inputs`{% else %}`github.event.inputs`{% endif %} context. For more information, see "[AUTOTITLE](/actions/learn-github-actions/contexts)."
@@ -1320,7 +1324,7 @@ gh workflow run run-tests.yml -f logLevel=warning -f tags=false -f environment=s
For more information, see the {% data variables.product.prodname_cli %} information in "[AUTOTITLE](/actions/managing-workflow-runs/manually-running-a-workflow)."
-### `workflow_run`
+## `workflow_run`
| Webhook event payload | Activity types | `GITHUB_SHA` | `GITHUB_REF` |
| --------------------- | -------------- | ------------ | -------------|
@@ -1362,7 +1366,7 @@ on:
- completed
```
-#### Running a workflow based on the conclusion of another workflow
+### Running a workflow based on the conclusion of another workflow
A workflow run is triggered regardless of the conclusion of the previous workflow. If you want to run a job or step based on the result of the triggering workflow, you can use a conditional with the `github.event.workflow_run.conclusion` property. For example, this workflow will run whenever a workflow named "Build" completes, but the `on-success` job will only run if the "Build" workflow succeeded, and the `on-failure` job will only run if the "Build" workflow failed:
@@ -1385,7 +1389,7 @@ jobs:
- run: echo 'The triggering workflow failed'
```
-#### Limiting your workflow to run based on branches
+### Limiting your workflow to run based on branches
You can use the `branches` or `branches-ignore` filter to specify what branches the triggering workflow must run on in order to trigger your workflow. For more information, see "[AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_runbranchesbranches-ignore)." For example, a workflow with the following trigger will only run when the workflow named `Build` runs on a branch named `canary`.
@@ -1397,7 +1401,7 @@ on:
branches: [canary]
```
-#### Using data from the triggering workflow
+### Using data from the triggering workflow
You can access the [`workflow_run` event payload](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_run) that corresponds to the workflow that triggered your workflow. For example, if your triggering workflow generates artifacts, a workflow triggered with the `workflow_run` event can access these artifacts.
diff --git a/content/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-code-scanning-for-your-appliance.md b/content/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-code-scanning-for-your-appliance.md
index df0c518d07..a2db122781 100644
--- a/content/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-code-scanning-for-your-appliance.md
+++ b/content/admin/code-security/managing-github-advanced-security-for-your-enterprise/configuring-code-scanning-for-your-appliance.md
@@ -42,10 +42,11 @@ You can configure {% data variables.product.prodname_code_scanning %} to run {%
- A VM or container for {% data variables.product.prodname_code_scanning %} analysis to run in.
-## Running {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_actions %}
+
-
+
+
+## Running {% data variables.product.prodname_code_scanning %} using {% data variables.product.prodname_actions %}
### Setting up a self-hosted runner
diff --git a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions.md b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions.md
index cef0ffd48e..5f8fff4eff 100644
--- a/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions.md
+++ b/content/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/migrating-your-enterprise-to-github-actions.md
@@ -48,7 +48,7 @@ Identify the gates and checks in your existing system and verify that you can im
### Identifying and validating migration tools
-Automated migration tools can translate your enterprise's workflows from the existing system's syntax to the syntax required by {% data variables.product.prodname_actions %}. Identify third-party tooling or contact your dedicated representative or {% data variables.contact.contact_enterprise_sales %} to ask about tools that {% data variables.product.company_short %} can provide. For example, you can use the {% data variables.product.prodname_actions_importer %} to plan, scope, and migrate your CI pipelines to {% data variables.product.prodname_actions %} from various supported services. For more information, see "[AUTOTITLE](/actions/migrating-to-github-actions/automating-migration-with-github-actions-importer)."
+Automated migration tools can translate your enterprise's workflows from the existing system's syntax to the syntax required by {% data variables.product.prodname_actions %}. Identify third-party tooling or contact your dedicated representative or {% data variables.contact.contact_enterprise_sales %} to ask about tools that {% data variables.product.company_short %} can provide. For example, you can use the {% data variables.product.prodname_actions_importer %} to plan, scope, and migrate your CI pipelines to {% data variables.product.prodname_actions %} from various supported services. For more information, see "[AUTOTITLE](/actions/migrating-to-github-actions/automated-migrations/automating-migration-with-github-actions-importer)."
After you've identified a tool to automate your migrations, validate the tool by running the tool on some test workflows and verifying that the results are as expected.
diff --git a/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise.md b/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise.md
index 7232f8f65d..b100934f84 100644
--- a/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise.md
+++ b/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-authentication-for-your-enterprise.md
@@ -137,6 +137,8 @@ If you use an external directory or identity provider (IdP) to centralize access
- "[AUTOTITLE](/admin/identity-and-access-management/using-ldap-for-enterprise-iam)"
- "[AUTOTITLE](/admin/identity-and-access-management/using-saml-for-enterprise-iam)"
+{% data reusables.enterprise.saml-or-ldap %}
+
If you choose to use external authentication, you can also configure fallback authentication for people who don't have an account on your external authentication provider. For example, you may want to grant access to a contractor or machine user. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise/allowing-built-in-authentication-for-users-outside-your-provider)."
{% ifversion scim-for-ghes %}
diff --git a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups.md b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups.md
index 23aa406ccb..70ba89132b 100644
--- a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups.md
+++ b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/managing-team-memberships-with-identity-provider-groups.md
@@ -20,7 +20,7 @@ topics:
## About team management with {% data variables.product.prodname_emus %}
-With {% data variables.product.prodname_emus %}, you can manage team and organization membership within your enterprise through your IdP by connecting {% data variables.product.prodname_dotcom %} teams with IdP groups. When you connect a team in one of your enterprise's organizations to an IdP group, changes to membership from the IdP group are reflected in your enterprise automatically, reducing the need for manual updates and custom scripts.
+With {% data variables.product.prodname_emus %}, you can manage team and organization membership within your enterprise through your IdP by connecting {% data variables.product.prodname_dotcom %} teams with IdP groups. When you connect a team in one of your enterprise's organizations to an IdP group, changes to membership from the IdP group are reflected in your enterprise automatically, reducing the need for manual updates and custom scripts.
When a change to an IdP group or a new team connection results in a {% data variables.enterprise.prodname_managed_user %} joining a team in an organization they were not already a member of, the {% data variables.enterprise.prodname_managed_user %} will automatically be added to the organization. When you disconnect a group from a team, users who became members of the organization via team membership are removed from the organization if they are not assigned membership in the organization by any other means.
@@ -44,9 +44,11 @@ You can connect a team in your enterprise to one IdP group. You can assign the s
If you are connecting an existing team to an IdP group, you must first remove any members that were added manually. After you connect a team in your enterprise to an IdP group, your IdP administrator must make team membership changes through the identity provider. You cannot manage team membership on {% data variables.product.prodname_dotcom_the_website %}.
+If you use Azure AD as your IdP, you can only connect a team to a security group. Nested group memberships and Microsoft 365 groups are not supported.
+
## Creating a new team connected to an IdP group
-Any member of an organization can create a new team and connect the team to an IdP group.
+Any member of an organization can create a new team and connect the team to an IdP group.
{% data reusables.profile.access_org %}
{% data reusables.user-settings.access_org %}
@@ -73,7 +75,7 @@ Organization owners and team maintainers can manage the existing connection betw
{% data reusables.profile.access_org %}
{% data reusables.organizations.specific_team %}
{% data reusables.organizations.team_settings %}
-1. Optionally, under "Identity Provider Group", to the right of the IdP group you want to disconnect, click {% octicon "x" aria-label="X symbol" %}.
+1. Optionally, under "Identity Provider Group", to the right of the IdP group you want to disconnect, click {% octicon "x" aria-label="X symbol" %}.

1. To connect an IdP group, under "Identity Provider Group", select the drop-down menu, and click an identity provider group from the list.

@@ -88,5 +90,5 @@ You can review a list of IdP groups, see any teams connected to an IdP group, an

2. To see the members and teams connected to an IdP group, click the group's name.

-4. To view the teams connected to the IdP group, click **Teams**.
+4. To view the teams connected to the IdP group, click **Teams**.

diff --git a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/migrating-from-saml-to-oidc.md b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/migrating-from-saml-to-oidc.md
index 317d57f1b5..4eb35942fe 100644
--- a/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/migrating-from-saml-to-oidc.md
+++ b/content/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/migrating-from-saml-to-oidc.md
@@ -32,13 +32,19 @@ If you're new to {% data variables.product.prodname_emus %} and haven't yet conf
1. Before you begin the migration, sign in to Azure and disable provisioning in the existing {% data variables.product.prodname_emu_idp_application %} application.
1. If you use [Conditional Access (CA) network location policies](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition) in Azure AD, and you're currently using an IP allow list with your enterprise account or any of the organizations owned by the enterprise account on {% data variables.product.prodname_dotcom_the_website %}, disable the IP allow lists. For more information, see "[AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise#managing-allowed-ip-addresses-for-organizations-in-your-enterprise)" and "[AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/managing-allowed-ip-addresses-for-your-organization)."
-1. Sign into {% data variables.product.prodname_dotcom_the_website %} as the setup user for your enterprise with the username **@SHORT-CODE_admin**.
+1. Sign into {% data variables.product.prodname_dotcom_the_website %} as the setup user for your enterprise with the username **@SHORT-CODE_admin**.
1. When prompted to continue to your identity provider, click **Use a recovery code** and sign in using one of your enterprise's recovery codes.
+
+ {% note %}
+
+ **Note:** You must use a recovery code for your enterprise, not your user account. For more information, see "[Downloading your enterprise account's single sign-on recovery codes](/admin/identity-and-access-management/managing-recovery-codes-for-your-enterprise/downloading-your-enterprise-accounts-single-sign-on-recovery-codes)."
+
+ {% endnote %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.settings-tab %}
{% data reusables.enterprise-accounts.security-tab %}
-1. At the bottom of the page, next to "Migrate to OpenID Connect single sign-on", click **Configure with Azure**.
- {% warning %}
+1. At the bottom of the page, next to "Migrate to OpenID Connect single sign-on", click **Configure with Azure**.
+ {% warning %}
**Warning:** The migration can take up to an hour, and it is important that no users are provisioned during the migration. You can confirm if the migration is still in progress by returning to your enterprise's security settings page; if "Require SAML authentication" is still checked, the migration is still in progress.
@@ -48,8 +54,8 @@ If you're new to {% data variables.product.prodname_emus %} and haven't yet conf
1. Read both warnings and click to continue.
{% data reusables.enterprise-accounts.emu-azure-admin-consent %}
1. In a new tab or window, while signed in as the setup user on {% data variables.product.prodname_dotcom_the_website %}, create a {% data variables.product.pat_v1 %} with the **admin:enterprise** scope and **no expiration** and copy it to your clipboard. For more information about creating a new token, see "[AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/configuring-scim-provisioning-for-enterprise-managed-users#creating-a-personal-access-token)."
-1. In the settings for the {% data variables.product.prodname_emu_idp_oidc_application %} application in Azure Portal, under "Tenant URL", type `https://api.github.com/scim/v2/enterprises/YOUR_ENTERPRISE`, replacing YOUR_ENTERPRISE with the name of your enterprise account.
-
+1. In the settings for the {% data variables.product.prodname_emu_idp_oidc_application %} application in Azure Portal, under "Tenant URL", type `https://api.github.com/scim/v2/enterprises/YOUR_ENTERPRISE`, replacing YOUR_ENTERPRISE with the name of your enterprise account.
+
For example, if your enterprise account's URL is `https://github.com/enterprises/octo-corp`, the name of the enterprise account is `octo-corp`.
1. Under "Secret token", paste the {% data variables.product.pat_v1 %} with the **admin:enterprise** scope that you created earlier.
1. To test the configuration, click **Test Connection**.
diff --git a/content/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap.md b/content/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap.md
index 25245b7e83..da0342142c 100644
--- a/content/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap.md
+++ b/content/admin/identity-and-access-management/using-ldap-for-enterprise-iam/using-ldap.md
@@ -28,6 +28,8 @@ LDAP is a popular application protocol for access and maintenance of directory i
If you use an LDAP directory for centralized authentication, you can configure LDAP authentication for the people who use {% data variables.location.product_location %}.
+{% data reusables.enterprise.saml-or-ldap %}
+
{% data reusables.enterprise_user_management.built-in-authentication %}
## Supported LDAP services
diff --git a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/about-saml-for-enterprise-iam.md b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/about-saml-for-enterprise-iam.md
index ff2b14033e..ed1e9be2d9 100644
--- a/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/about-saml-for-enterprise-iam.md
+++ b/content/admin/identity-and-access-management/using-saml-for-enterprise-iam/about-saml-for-enterprise-iam.md
@@ -56,6 +56,8 @@ SAML SSO allows people to authenticate and access {% data variables.location.pro
SAML is an XML-based standard for authentication and authorization. When you configure SAML for {% data variables.location.product_location %}, the external system for authentication is called an identity provider (IdP). Your instance acts as a SAML service provider (SP). For more information about the SAML standard, see [Security Assertion Markup Language](https://en.wikipedia.org/wiki/Security_Assertion_Markup_Language) on Wikipedia.
+{% data reusables.enterprise.saml-or-ldap %}
+
{% elsif ghae %}
{% data reusables.saml.ae-uses-saml-sso %} {% data reusables.saml.ae-enable-saml-sso-during-bootstrapping %}
diff --git a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md
index 53beaca203..0c46ce1a0b 100644
--- a/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md
+++ b/content/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise.md
@@ -446,14 +446,6 @@ Action | Description
| `external_identity.update` | An Okta user's settings were updated. For more information, see "[AUTOTITLE](/admin/identity-and-access-management/using-saml-for-enterprise-iam/mapping-okta-groups-to-teams)."
{%- endif %}
-## `gist` category actions
-
-| Action | Description
-|--------|-------------
-| `gist.create` | A gist is created.
-| `gist.destroy` | A gist is deleted.
-| `gist.visibility_change` | The visibility of a gist is changed.
-
{% ifversion git-events-audit-log %}
## `git` category actions
diff --git a/content/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise.md b/content/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise.md
index c3b262f4de..06f0502d6a 100644
--- a/content/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise.md
+++ b/content/admin/user-management/managing-organizations-in-your-enterprise/adding-organizations-to-your-enterprise.md
@@ -56,7 +56,9 @@ Enterprise owners who create an organization owned by the enterprise account aut
## Inviting an organization to join your enterprise account
-Enterprise owners can invite existing organizations to join their enterprise account. If the organization you want to invite is already owned by another enterprise account, you must be an owner of both enterprise accounts, or the previous enterprise must give up ownership of the organization first. For more information, see "[AUTOTITLE](/admin/user-management/managing-organizations-in-your-enterprise/removing-organizations-from-your-enterprise)."
+Enterprise owners can invite existing organizations to join their enterprise account.
+
+If the organization you want to invite is already owned by another enterprise account, you must be an owner of both enterprise accounts. If you're not, you can ask an owner of the enterprise account that currently owns the organization to transfer the organization to your enterprise account instead. For more information, see "[Transferring an organization between enterprise accounts](#transferring-an-organization-between-enterprise-accounts)."
When you invite an organization to join your enterprise account, at least one owner needs to accept the invitation. Then, you must give a final approval for the transfer.
diff --git a/content/admin/user-management/managing-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md b/content/admin/user-management/managing-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md
index 8d33c01175..f6ab6eb5ac 100644
--- a/content/admin/user-management/managing-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md
+++ b/content/admin/user-management/managing-users-in-your-enterprise/customizing-user-messages-for-your-enterprise.md
@@ -91,7 +91,7 @@ Each time a user sees a mandatory message, an audit log event is created. The ev
{% ifversion display-mandatory-message-again %} {% else %}
{% note %}
-**Note:** If you change the mandatory message for {% data variables.location.product_location %}, users who have already acknowledged the message will not see the new message.
+**Note:** If you change the mandatory message for {% data variables.location.product_location %}, users who have already acknowledged the message will not see the new message.
{% endnote %}
{% endif %}
@@ -103,7 +103,7 @@ Each time a user sees a mandatory message, an audit log event is created. The ev

1. Under "Mandatory message", in the text box, type your message.

-{%- ifversion display-mandatory-message-again %}
+{%- ifversion display-mandatory-message-again %}
1. Optionally, select **Show updated message to all users even if they dismissed the previous one**.

{% endif %}
@@ -132,12 +132,13 @@ You can also set an announcement banner{% ifversion ghes %} in the administrativ

2. Optionally, under "Expires on", select the calendar drop-down menu and click an expiration date.
-
+ {% ifversion ghe-announce-dismiss %}
{% note %}
**Note:** Announcements must either have an expiration date, be user dismissible, or both.
{% endnote %}
+ {% endif %}
{% ifversion ghe-announce-dismiss %}
3. Optionally, to allow each user to dismiss the announcement, select **User dismissible**.
diff --git a/content/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app.md b/content/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app.md
new file mode 100644
index 0000000000..81e50a9bd2
--- /dev/null
+++ b/content/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app.md
@@ -0,0 +1,67 @@
+---
+title: Authenticating as a GitHub App
+intro: You can authenticate as a {% data variables.product.prodname_github_app %} in order to generate an installation access token or manage your app.
+versions:
+ fpt: '*'
+ ghes: '*'
+ ghae: '*'
+ ghec: '*'
+topics:
+ - GitHub Apps
+shortTitle: Authenticate as an app
+---
+
+## About authentication as a {% data variables.product.prodname_github_app %}
+
+You must authenticate as a {% data variables.product.prodname_github_app %} in order to make REST API requests as the application. For example, if you want to use the API to generate an installation access token for accessing organization resources, list installations across organizations for your app, or suspend an app installation, you must authenticate as an app.
+
+If a REST API endpoint requires you to authenticate as an app, the documentation for that endpoint will indicate that you must use a JWT to access the endpoint. The GraphQL API does not support any queries or mutations that require you to authenticate as an app.
+
+## Using a JSON Web Token (JWT) to authenticate as a {% data variables.product.prodname_github_app %}
+
+1. Generate a JSON Web Token (JWT) for your app. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-json-web-token-jwt-for-a-github-app)."
+1. Include the JWT in the `Authorization` header of your request. In the following example, replace `YOUR_JWT` with your JWT.
+
+ ```shell
+ curl --request POST \
+ --url "{% data variables.product.api_url_pre %}/app/installations" \
+ --header "Accept: application/vnd.github+json" \
+ --header "Authorization: Bearer YOUR_JWT"{% ifversion api-date-versioning %}\
+ --header "X-GitHub-Api-Version: {{ allVersions[currentVersion].latestApiVersion }}"{% endif %}
+ ```
+
+## Using the Octokit.js SDK to authenticate as a {% data variables.product.prodname_github_app %}
+
+You can use {% data variables.product.company_short %}'s Octokit.js SDK to authenticate as a {% data variables.product.prodname_github_app %}. One advantage of using the SDK to authenticate is that you do not need to generate a JSON web token (JWT) yourself. Additionally, the SDK will take care of regenerating the JWT when it expires.
+
+{% note %}
+
+**Note**: You must install and import `octokit` in order to use the Octokit.js library. The following example uses import statements in accordance with ES6. For more information about different installation and import methods, see [Usage](https://github.com/octokit/octokit.js/#usage) in the octokit/octokit repository.
+
+{% endnote %}
+
+1. On the settings page for your app, get the app's ID.
+ - For user-owned apps, the settings page is `https://github.com/settings/apps/APP-SLUG`.
+ - For organization-owned apps, the settings page is `https://github.com/organizations/ORGANIZATION/settings/apps/APP-SLUG`.
+
+ Replace `APP-SLUG` with the sluggified name of your app and `ORGANIZATION` with the sluggified name of your organization. For example, `https://github.com/organizations/octo-org/settings/apps/octo-app`.
+1. Generate a private key. For more information, see "[AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/managing-private-keys-for-github-apps)."
+1. Import `App` from `octokit`.
+
+ ```javascript{:copy}
+ import { App } from "octokit";
+ ```
+1. Create a new instance of `App`. In the following example, replace `APP_ID` with a reference to your app's ID. Replace `PRIVATE_KEY` with a reference to the value of your app's private key.
+
+ ```javascript{:copy}
+ const app = new App({
+ appId: APP_ID,
+ privateKey: PRIVATE_KEY,
+ });
+ ```
+
+1. Use an `octokit` method to make a request to a REST API endpoint that requires a JWT. For example:
+
+ ```javascript{:copy}
+ await app.octokit.request("/app")
+ ```
diff --git a/content/apps/creating-github-apps/authenticating-with-a-github-app/index.md b/content/apps/creating-github-apps/authenticating-with-a-github-app/index.md
index a6dfafeace..19a0e0ef50 100644
--- a/content/apps/creating-github-apps/authenticating-with-a-github-app/index.md
+++ b/content/apps/creating-github-apps/authenticating-with-a-github-app/index.md
@@ -9,9 +9,10 @@ versions:
topics:
- GitHub Apps
children:
- - /generating-a-json-web-token-jwt-for-a-github-app
- /authenticating-with-github-apps
- /identifying-and-authorizing-users-for-github-apps
- /refreshing-user-to-server-access-tokens
+ - /authenticating-as-a-github-app
- /managing-private-keys-for-github-apps
+ - /generating-a-json-web-token-jwt-for-a-github-app
---
diff --git a/content/apps/maintaining-github-apps/modifying-a-github-app.md b/content/apps/maintaining-github-apps/modifying-a-github-app.md
index 7076113205..d8eed75209 100644
--- a/content/apps/maintaining-github-apps/modifying-a-github-app.md
+++ b/content/apps/maintaining-github-apps/modifying-a-github-app.md
@@ -18,6 +18,6 @@ topics:
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.github_apps %}
{% data reusables.user-settings.modify_github_app %}
-5. In "Basic information", modify the GitHub App information that you'd like to change.{% ifversion device-flow-is-opt-in %}
+1. In "Basic information", modify the GitHub App information that you'd like to change.{% ifversion device-flow-is-opt-in %}
1. If your GitHub App will use the device flow to identify and authorize users, click **Enable device flow**. For more information about the device flow, see "[AUTOTITLE](/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#device-flow)."{% endif %}
-6. Click **Save changes**.
+1. Click **Save changes**.
diff --git a/content/apps/oauth-apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md b/content/apps/oauth-apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md
index 852f84c57d..ad5f739638 100644
--- a/content/apps/oauth-apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md
+++ b/content/apps/oauth-apps/building-oauth-apps/creating-a-custom-badge-for-your-oauth-app.md
@@ -36,11 +36,8 @@ To create a custom badge:
{% data reusables.user-settings.oauth_apps %}
{% data reusables.user-settings.modify_oauth_app %}
1. In "Application logo", drag-and-drop an image from a local folder or click **Upload new logo** to select an image from your computer.
-
-6. Crop your picture. When you're done, click **Set new application logo**.
-
-7. In "Badge background color", type the [hexadecimal color code](http://www.color-hex.com/) of the background color for your badge. {% ifversion fpt or ghec %}**Note:** The "Badge background color" input field will be visible after an application logo has been uploaded.{% endif %}
-
+1. Crop your picture. When you're done, click **Set new application logo**.
+1. In "Badge background color", type the [hexadecimal color code](http://www.color-hex.com/) of the background color for your badge. {% ifversion fpt or ghec %}**Note:** The "Badge background color" input field will be visible after an application logo has been uploaded.{% endif %}
{% data reusables.user-settings.update_oauth_app %}
{% ifversion fpt or ghec %}
diff --git a/content/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app.md b/content/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app.md
index a5903fa1f7..2dd45596e5 100644
--- a/content/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app.md
+++ b/content/apps/oauth-apps/building-oauth-apps/creating-an-oauth-app.md
@@ -25,16 +25,14 @@ topics:
{% data reusables.user-settings.access_settings %}
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.oauth_apps %}
-4. Click **New OAuth App**.
-
+1. Click **New OAuth App**.
{% note %}
**Note:** If you haven't created an app before, this button will say, **Register a new application**.
{% endnote %}
-6. In "Application name", type the name of your app.
-
+1. In "Application name", type the name of your app.
{% warning %}
@@ -42,12 +40,9 @@ topics:
{% endwarning %}
-7. In "Homepage URL", type the full URL to your app's website.
-
-8. Optionally, in "Application description", type a description of your app that users will see.
-
-9. In "Authorization callback URL", type the callback URL of your app.
-
+1. In "Homepage URL", type the full URL to your app's website.
+1. Optionally, in "Application description", type a description of your app that users will see.
+1. In "Authorization callback URL", type the callback URL of your app.
{% ifversion fpt or ghes or ghec %}
{% note %}
@@ -56,5 +51,4 @@ topics:
{% endnote %}
{% endif %}{% ifversion device-flow-is-opt-in %}
1. If your OAuth App will use the device flow to identify and authorize users, click **Enable Device Flow**. For more information about the device flow, see "[AUTOTITLE](/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#device-flow)."{% endif %}
-2. Click **Register application**.
-
+1. Click **Register application**.
diff --git a/content/apps/oauth-apps/maintaining-oauth-apps/deleting-an-oauth-app.md b/content/apps/oauth-apps/maintaining-oauth-apps/deleting-an-oauth-app.md
index 243999c083..665496aeb3 100644
--- a/content/apps/oauth-apps/maintaining-oauth-apps/deleting-an-oauth-app.md
+++ b/content/apps/oauth-apps/maintaining-oauth-apps/deleting-an-oauth-app.md
@@ -18,10 +18,6 @@ topics:
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.oauth_apps %}
4. Select the {% data variables.product.prodname_oauth_app %} you want to modify.
-
5. In the left sidebar, click **Advanced**.
-
6. Click **Delete application**.
-
7. Click **Delete this OAuth Application**.
-
diff --git a/content/apps/oauth-apps/maintaining-oauth-apps/transferring-ownership-of-an-oauth-app.md b/content/apps/oauth-apps/maintaining-oauth-apps/transferring-ownership-of-an-oauth-app.md
index 0611663a93..fd7036b9b7 100644
--- a/content/apps/oauth-apps/maintaining-oauth-apps/transferring-ownership-of-an-oauth-app.md
+++ b/content/apps/oauth-apps/maintaining-oauth-apps/transferring-ownership-of-an-oauth-app.md
@@ -19,12 +19,7 @@ shortTitle: Transfer ownership
{% data reusables.user-settings.developer_settings %}
{% data reusables.user-settings.oauth_apps %}
4. Select the {% data variables.product.prodname_oauth_app %} you want to modify.
-
5. Click **Transfer ownership**.
-
-6. Type the name of the {% data variables.product.prodname_oauth_app %} you want to transfer.
-
-7. Type the name of the user or organization you want to transfer the {% data variables.product.prodname_oauth_app %} to.
-
+6. To confirm the transfer, in the text field, type the name of the {% data variables.product.prodname_oauth_app %} you want to transfer.
+7. Under "New owner's {% data variables.product.prodname_dotcom %} username or organization name," type the name of the user or organization you want to transfer the {% data variables.product.prodname_oauth_app %} to.
8. Click **Transfer this application**.
-
diff --git a/content/apps/using-github-apps/installing-an-app-in-your-organization.md b/content/apps/using-github-apps/installing-an-app-in-your-organization.md
index db81c287b1..ef515c51bd 100644
--- a/content/apps/using-github-apps/installing-an-app-in-your-organization.md
+++ b/content/apps/using-github-apps/installing-an-app-in-your-organization.md
@@ -28,8 +28,7 @@ If you choose a paid plan, you'll pay for your app subscription on your organiza
{% data reusables.marketplace.confirm-install-account-org %}
{% data reusables.marketplace.add-payment-method-org %}
{% data reusables.marketplace.complete-order-begin-installation %}
-8. If the app requires access to repositories, decide whether to give the app access to all of your repositories or to certain repositories, then select **All repositories** or **Only select repositories**.
- 
+1. If the app requires access to repositories, select **All repositories** or **Only select repositories**.
{% data reusables.marketplace.select-installation-repos %}
{% data reusables.marketplace.review-app-perms-install %}
diff --git a/content/apps/using-github-apps/installing-an-app-in-your-personal-account.md b/content/apps/using-github-apps/installing-an-app-in-your-personal-account.md
index ab66c84e76..2b71440fdc 100644
--- a/content/apps/using-github-apps/installing-an-app-in-your-personal-account.md
+++ b/content/apps/using-github-apps/installing-an-app-in-your-personal-account.md
@@ -27,7 +27,6 @@ If you choose a paid plan, you'll pay for your app subscription on your personal
{% data reusables.marketplace.add-payment-method-personal %}
{% data reusables.marketplace.complete-order-begin-installation %}
8. Decide whether to give the app access to all of your repositories, or to certain repositories, then select **All repositories** or **Only select repositories**.
- 
{% data reusables.marketplace.select-installation-repos %}
{% data reusables.marketplace.review-app-perms-install %}
diff --git a/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md b/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md
index b4e2ba6714..85c91f89bd 100644
--- a/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md
+++ b/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md
@@ -23,7 +23,7 @@ shortTitle: Advanced Security billing
{% ifversion fpt %}
-If you want to use {% data variables.product.prodname_GH_advanced_security %} features on any repository apart from a public repository on {% data variables.product.prodname_dotcom_the_website %}, you will need a {% data variables.product.prodname_GH_advanced_security %} license, available with {% data variables.product.prodname_ghe_cloud %} or {% data variables.product.prodname_ghe_server %}.
+If you want to use {% data variables.product.prodname_GH_advanced_security %} features on any repository apart from a public repository on {% data variables.product.prodname_dotcom_the_website %}, you will need a {% data variables.product.prodname_GH_advanced_security %} license, available with {% data variables.product.prodname_ghe_cloud %} or {% data variables.product.prodname_ghe_server %}.
For information about billing for {% data variables.product.prodname_GH_advanced_security %}, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security).
@@ -56,7 +56,11 @@ You can determine how many licenses you'll need for {% data variables.product.pr
{% endif %}
{% ifversion ghec %}
-Enterprise account customers on GitHub Enterprise Cloud who pay with a credit card can purchase a GitHub Advanced Security license from their enterprise account settings. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security)." For customers who pay by invoice, contact {% data variables.contact.contact_enterprise_sales %} to discuss licensing {% data variables.product.prodname_GH_advanced_security %} for your enterprise.
+If you use {% data variables.product.prodname_ghe_cloud %} with an enterprise account and pay with a credit card, you can purchase a {% data variables.product.prodname_GH_advanced_security %} license from your enterprise account settings. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security)."
+
+If you pay by invoice, contact {% data variables.contact.contact_enterprise_sales %} to discuss licensing {% data variables.product.prodname_GH_advanced_security %} for your enterprise.
+
+For other billing-related questions, contact {% data variables.contact.github_support %}.
{% endif %}
## About committer numbers for {% data variables.product.prodname_GH_advanced_security %}
@@ -88,7 +92,7 @@ As soon as you free up some {% ifversion ghas-billing-UI-update %}licenses{% els
You can enforce policies to allow or disallow the use of {% data variables.product.prodname_advanced_security %} by organizations owned by your enterprise account. For more information, see "[Enforcing policies for {% data variables.product.prodname_advanced_security %} in your enterprise]({% ifversion fpt %}/enterprise-cloud@latest/{% endif %}/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-advanced-security-in-your-enterprise){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
{% ifversion fpt or ghes or ghec %}
-For more information on viewing license usage, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage)."
+For more information on viewing license usage, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/viewing-your-github-advanced-security-usage)."
{% endif %}
{% ifversion ghec %}
@@ -99,12 +103,12 @@ For more information on managing the number of committers, see "[AUTOTITLE](/bil
The following example timeline demonstrates how active committer count for {% data variables.product.prodname_GH_advanced_security %} could change over time in an enterprise. For each month, you will find events, along with the resulting committer count.
-| Date | Events during the month | Total committers |
-| :- | :- | -: |
-| April 15 | A member of your enterprise enables {% data variables.product.prodname_GH_advanced_security %} for repository **X**. Repository **X** has 50 committers over the past 90 days. | **50** |
+| Date | Events during the month | Total committers |
+| :- | :- | -: |
+| April 15 | A member of your enterprise enables {% data variables.product.prodname_GH_advanced_security %} for repository **X**. Repository **X** has 50 committers over the past 90 days. | **50** |
| May 1 | Developer **A** leaves the team working on repository **X**. Developer **A**'s contributions continue to count for 90 days. | **50** | **50** |
-| August 1 | Developer **A**'s contributions no longer count towards the licenses required, because 90 days have passed. | _50 - 1_**49** |
-| August 15 | A member of your enterprise enables {% data variables.product.prodname_GH_advanced_security %} for a second repository, repository **Y**. In the last 90 days, a total of 20 developers contributed to that repository. Of those 20 developers, 10 also recently worked on repo **X** and do not require additional licenses. | _49 + 10_ **59** |
+| August 1 | Developer **A**'s contributions no longer count towards the licenses required, because 90 days have passed. | _50 - 1_**49** |
+| August 15 | A member of your enterprise enables {% data variables.product.prodname_GH_advanced_security %} for a second repository, repository **Y**. In the last 90 days, a total of 20 developers contributed to that repository. Of those 20 developers, 10 also recently worked on repo **X** and do not require additional licenses. | _49 + 10_ **59** |
| August 16 | A member of your enterprise disables {% data variables.product.prodname_GH_advanced_security %} for repository **X**. Of the 49 developers who were working on repository **X**, 10 still also work on repository **Y**, which has a total of 20 developers contributing in the last 90 days. | _49 - 29_ **20** |
{% note %}
diff --git a/content/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/customizing-code-scanning.md b/content/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/customizing-code-scanning.md
index f9e88bbaf1..5dbacf0bcb 100644
--- a/content/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/customizing-code-scanning.md
+++ b/content/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/customizing-code-scanning.md
@@ -402,12 +402,14 @@ In the following example, the `+` symbol ensures that the specified additional {
packs: +scope/pack1,scope/pack2@1.2.3,scope/pack3@4.5.6:path/to/queries
{%- endif %}
```
+
+
+
+
+
## Using a custom configuration file
-
-
A custom configuration file is an alternative way to specify additional {% ifversion codeql-packs %}packs and {% endif %}queries to run. You can also use the file to disable the default queries{% ifversion code-scanning-exclude-queries-from-analysis %}, exclude or include specific queries,{% endif %} and to specify which directories to scan during analysis.
In the workflow file, use the `config-file` parameter of the `init` action to specify the path to the configuration file you want to use. This example loads the configuration file _./.github/codeql/codeql-config.yml_.
@@ -554,9 +556,6 @@ You can quickly analyze small portions of a monorepo when you modify code in spe
### Example configuration files
-
-
{% data reusables.code-scanning.example-configuration-files %}
## Configuring {% data variables.product.prodname_code_scanning %} for compiled languages
diff --git a/content/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases.md b/content/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases.md
index 0022efaf7f..cbd6746cbc 100644
--- a/content/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases.md
+++ b/content/code-security/codeql-cli/using-the-codeql-cli/creating-codeql-databases.md
@@ -241,10 +241,11 @@ The following examples are designed to give you an idea of some of the build com
This command runs a custom script that contains all of the commands required to build the project.
-### Using indirect build tracing
+
-
+
+
+### Using indirect build tracing
If the {% data variables.product.prodname_codeql_cli %} autobuilders for compiled languages do not work with your CI workflow and you cannot wrap invocations of build commands with `codeql database trace-command`, you can use indirect build tracing to create a {% data variables.product.prodname_codeql %} database. To use indirect build tracing, your CI system must be able to set custom environment variables for each build action.
diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
index bc789e4766..c5214ea0dd 100644
--- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
+++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
@@ -16,7 +16,6 @@ topics:
- Repositories
shortTitle: Dependency graph
---
-
## About the dependency graph
diff --git a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md
index 8271d041dd..d86f150fc4 100644
--- a/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md
+++ b/content/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository.md
@@ -21,7 +21,6 @@ topics:
- Repositories
shortTitle: Explore dependencies
---
-
## Viewing the dependency graph
diff --git a/content/codespaces/guides.md b/content/codespaces/guides.md
index 4b777c6785..3951707c75 100644
--- a/content/codespaces/guides.md
+++ b/content/codespaces/guides.md
@@ -50,7 +50,7 @@ includeGuides:
- /codespaces/managing-codespaces-for-your-organization/managing-billing-for-codespaces-in-your-organization
- /codespaces/managing-codespaces-for-your-organization/managing-encrypted-secrets-for-your-repository-and-organization-for-codespaces
- /codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types
- - /codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces.md
+ - /codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces
- /codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period
- /codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces
- /codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports
diff --git a/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md b/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
index 447a2066d6..2f6df72cae 100644
--- a/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
+++ b/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
@@ -32,32 +32,33 @@ Users in India can contact GitHub's Grievance Officer for India [here](https://s
## Reporting an issue or pull request
1. Navigate to the issue or pull request you'd like to report.
-2. In the upper-right corner of the issue or pull request, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**.
+1. In the upper-right corner of the issue or pull request, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**.

{% data reusables.community.report-content %}
## Reporting a comment
1. Navigate to the comment you'd like to report.
-2. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**.
+1. In the upper-right corner of the comment, click {% octicon "kebab-horizontal" aria-label="The horizontal kebab octicon" %}, then click **Report content**.

{% data reusables.community.report-content %}
## Reporting an app in {% data variables.product.prodname_marketplace %}
{% data reusables.marketplace.visit-marketplace %}
-2. Browse to the app you'd like to report.
-3. In the left sidebar, under the "Developer links" section, click {% octicon "report" aria-label="The report symbol" %} **Report abuse**.
- 
-4. Complete the contact form to tell {% data variables.contact.contact_support %} about the app's behavior, then click **Send request**.
+1. Browse to the app you'd like to report.
+1. In the left sidebar, under the "Developer links" section, click **Report abuse**.
+
+ 
+1. Complete the contact form to tell {% data variables.contact.contact_support %} about the app's behavior, then click **Send request**.
## Reporting contact link abuse in the template chooser
1. Navigate to the repository that contains the contact link you'd like to report.
-2. Under the repository name, click {% octicon "issue-opened" aria-label="The issues icon" %} **Issues**.
-3. In the lower-right corner of the template chooser, click **Report abuse**.
+1. Under the repository name, click {% octicon "issue-opened" aria-label="The issues icon" %} **Issues**.
+1. In the lower-right corner of the template chooser, click **Report abuse**.

-4. Complete the contact form to tell {% data variables.contact.contact_support %} about the contact link's behavior, then click **Send request**.
+1. Complete the contact form to tell {% data variables.contact.contact_support %} about the contact link's behavior, then click **Send request**.
## Further reading
diff --git a/content/discussions/index.md b/content/discussions/index.md
index 58e449560e..11efd3310d 100644
--- a/content/discussions/index.md
+++ b/content/discussions/index.md
@@ -24,7 +24,6 @@ featuredLinks:
changelog:
label: discussions
examples_source: data/product-examples/discussions/community-examples.yml
-product_video: 'https://www.youtube-nocookie.com/embed/IpBw2SJkFyk'
layout: product-landing
versions:
feature: discussions
@@ -37,4 +36,3 @@ children:
- /collaborating-with-your-community-using-discussions
- /managing-discussions-for-your-community
---
-
diff --git a/content/get-started/quickstart/git-and-github-learning-resources.md b/content/get-started/quickstart/git-and-github-learning-resources.md
index cc3cce6c2f..574d3fecec 100644
--- a/content/get-started/quickstart/git-and-github-learning-resources.md
+++ b/content/get-started/quickstart/git-and-github-learning-resources.md
@@ -36,10 +36,6 @@ Become better acquainted with {% data variables.product.product_name %} through
Learn about [Git branching](http://learngitbranching.js.org/) using an interactive tool. Read about [forks](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) and [pull requests](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests) as well as [how we use pull requests](https://github.com/blog/1124-how-we-use-pull-requests-to-build-github) at {% data variables.product.prodname_dotcom %}. Access references about using {% data variables.product.prodname_dotcom %} from the [command line](https://cli.github.com/).
-### Tune in
-
-Our {% data variables.product.prodname_dotcom %} [YouTube Training and Guides channel](https://youtube.com/githubguides) offers tutorials about [pull requests](https://www.youtube.com/watch?v=d5wpJ5VimSU&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=19), [forking](https://www.youtube.com/watch?v=5oJHRbqEofs), [rebase](https://www.youtube.com/watch?v=SxzjZtJwOgo&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=22), and [reset](https://www.youtube.com/watch?v=BKPjPMVB81g) functions. Each topic is covered in 5 minutes or less.
-
## Training
### Free courses
diff --git a/content/get-started/using-git/about-git.md b/content/get-started/using-git/about-git.md
index d47ec5e759..55b44cb031 100644
--- a/content/get-started/using-git/about-git.md
+++ b/content/get-started/using-git/about-git.md
@@ -168,11 +168,4 @@ For an open source project, or for projects to which anyone can contribute, mana
The {% data variables.product.product_name %} team has created a library of educational videos and guides to help users continue to develop their skills and build better software.
- [Beginner projects to explore](https://github.com/showcases/great-for-new-contributors)
-- [{% data variables.product.product_name %} video guides](https://youtube.com/githubguides)
-
-For a detailed look at Git practices, the videos below show how to get the most out of some Git commands.
-
-- [Working locally](https://www.youtube.com/watch?v=rBbbOouhI-s&index=2&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4)
-- [`git status`](https://www.youtube.com/watch?v=SxmveNrZb5k&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4&index=3)
-- [Two-step commits](https://www.youtube.com/watch?v=Vb0Ghkkc2hk&index=4&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4)
-- [`git pull` and `git push`](https://www.youtube.com/watch?v=-uQHV9GOA0w&index=5&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4)
+- [{% data variables.product.product_name %} video guides](https://youtube.com/githubguides)
\ No newline at end of file
diff --git a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md
index b8903f4499..a0f364ccf5 100644
--- a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md
+++ b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md
@@ -70,14 +70,10 @@ Alternatively, you can drag and drop a text file from your desktop directly into
1. Sign in to {% data variables.product.product_name %}.
2. Navigate to your {% data variables.gists.gist_homepage %}.
-3. Type an optional description and name for your gist.
-
+3. Optionally, in the "Gist description" field, type a description for your gist.
+4. In the "Filename including extension" field, type a file name for your gist, including the file extensions.
+5. In the file contents field, type the text of your gist.
+6. Optionally, to create {% ifversion ghae %}an internal{% else %}a public{% endif %} gist, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %}, then click **Create {% ifversion ghae %}internal{% else %}public{% endif %} gist**.
-4. Type the text of your gist into the gist text box.
-
-
-5. Optionally, to create {% ifversion ghae %}an internal{% else %}a public{% endif %} gist, click {% octicon "triangle-down" aria-label="The downwards triangle icon" %}, then click **Create {% ifversion ghae %}internal{% else %}public{% endif %} gist**.
-![Drop-down menu to select gist visibility]{% ifversion ghae %}(/assets/images/help/gist/gist-visibility-drop-down-ae.png){% else %}(/assets/images/help/gist/gist-visibility-drop-down.png){% endif %}
-
-6. Click **Create secret Gist** or **Create {% ifversion ghae %}internal{% else %}public{% endif %} gist**.
- 
+ ![Screenshot of the visibility dropdown menu for a new gist. Next to a button labeled "Create secret gist", a dropdown icon is outlined in dark orange.]{% ifversion ghae %}(/assets/images/help/gist/gist-visibility-drop-down-ae.png){% else %}(/assets/images/help/gist/gist-visibility-drop-down.png){% endif %}
+7. Click **Create secret Gist** or **Create {% ifversion ghae %}internal{% else %}public{% endif %} gist**.
diff --git a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists.md b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists.md
index c63b174254..8066400be5 100644
--- a/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists.md
+++ b/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/forking-and-cloning-gists.md
@@ -12,24 +12,23 @@ versions:
ghae: '*'
ghec: '*'
---
+
## Forking gists
Each gist indicates which forks have activity, making it easy to find interesting changes from others.
-
-
## Cloning gists
If you want to make local changes to a gist and push them up to the web, you can clone a gist and make commits the same as you would with any Git repository. For more information, see "[AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository)."
-
+To clone a gist, select the Embed dropdown menu, then click Clone via HTTPS or Clone via SSH.
+
+
## Viewing gist commit history
To view a gist's full commit history, click the "Revisions" tab at the top of the gist.
-
-
You will see a full commit history for the gist with diffs.
-
+
diff --git a/content/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators.md b/content/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators.md
index 43c2116721..3062057b7a 100644
--- a/content/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators.md
+++ b/content/organizations/managing-organization-settings/setting-permissions-for-adding-outside-collaborators.md
@@ -15,6 +15,8 @@ topics:
shortTitle: Set collaborator policy
---
+{% data reusables.organizations.about-outside-collaborators %} For more information, see "[Adding outside collaborators to repositories in your organization](/organizations/managing-user-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization)."
+
By default, anyone with admin access to a repository can invite outside collaborators to work on the repository. You can choose to restrict the ability to add outside collaborators to organization owners only.
{% ifversion ghec %}
diff --git a/content/organizations/managing-saml-single-sign-on-for-your-organization/about-identity-and-access-management-with-saml-single-sign-on.md b/content/organizations/managing-saml-single-sign-on-for-your-organization/about-identity-and-access-management-with-saml-single-sign-on.md
index 0896615ab4..67155da5b4 100644
--- a/content/organizations/managing-saml-single-sign-on-for-your-organization/about-identity-and-access-management-with-saml-single-sign-on.md
+++ b/content/organizations/managing-saml-single-sign-on-for-your-organization/about-identity-and-access-management-with-saml-single-sign-on.md
@@ -48,7 +48,7 @@ Organization members must also have an active SAML session to authorize an {% da
Some IdPs support provisioning access to a {% data variables.product.prodname_dotcom %} organization via SCIM. For more information, see "[AUTOTITLE](/organizations/managing-saml-single-sign-on-for-your-organization/about-scim-for-organizations)."
-{% data reusables.scim.enterprise-account-scim %}
+{% data reusables.scim.enterprise-account-scim %}
## Adding members to an organization using SAML SSO
@@ -66,8 +66,6 @@ If your IdP supports SCIM, {% data variables.product.prodname_dotcom %} can auto
{% data reusables.organizations.team-synchronization %}
-{% data reusables.saml.saml-single-logout-not-supported %}
-
## Further reading
- "[AUTOTITLE](/admin/identity-and-access-management/using-saml-for-enterprise-iam/saml-configuration-reference)"
diff --git a/content/organizations/managing-user-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md b/content/organizations/managing-user-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
index c44f561ab9..0d1c626df3 100644
--- a/content/organizations/managing-user-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
+++ b/content/organizations/managing-user-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
@@ -19,7 +19,7 @@ permissions: People with admin access to a repository can add an outside collabo
## About outside collaborators
-An outside collaborator is a person who is not a member of your organization, but has access to one or more of your organization's repositories. You can choose the level of access to grant for each outside collaborator. {% data reusables.organizations.outside_collaborator_forks %}
+{% data reusables.organizations.about-outside-collaborators %} You can choose the level of access to grant for each outside collaborator. {% data reusables.organizations.outside_collaborator_forks %}
{% data reusables.organizations.outside-collaborators-use-seats %}
diff --git a/content/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md b/content/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md
index 34ea242e85..c883e8b8fe 100644
--- a/content/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md
+++ b/content/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site.md
@@ -31,27 +31,39 @@ shortTitle: Configure publishing source
{% data reusables.pages.sidebar-pages %}
{% ifversion pages-custom-workflow %}
1. Under "Build and deployment", under "Source", select **Deploy from a branch**.
-1. Under "Build and deployment", under "Branch", use the **None** or **Branch** drop-down menu and select a publishing source.
+1. Under "Build and deployment", under "Branch", use the **None** or **Branch** dropdown menu and select a publishing source.
+
+ 
- 
{% else %}
3. Under "{% data variables.product.prodname_pages %}", use the **None** or **Branch** drop-down menu and select a publishing source.
- 
+
+ 
+
{% endif %}
-4. Optionally, use the drop-down menu to select a folder for your publishing source.
- 
-5. Click **Save**.
- 
+1. Optionally, use the drop-down menu to select a folder for your publishing source.
+
+ 
+
+1. Click **Save**.
+
+ 
### Troubleshooting publishing from a branch
+{% ifversion pages-disable-symlinks-on-legacy-pages %}
+
+{% data reusables.pages.symlink-removal %}
+
+{% endif %}
+
{% data reusables.pages.admin-must-push %}
If you choose the `docs` folder on any branch as your publishing source, then later remove the `/docs` folder from that branch in your repository, your site won't build and you'll get a page build error message for a missing `/docs` folder. For more information, see "[AUTOTITLE](/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites#missing-docs-folder)."
{% ifversion build-pages-with-actions %}
-Your {% data variables.product.prodname_pages %} site will always be deployed with a {% data variables.product.prodname_actions %} workflow run, even if you've configured your {% data variables.product.prodname_pages %} site to be built using a different CI tool. Most external CI workflows "deploy" to GitHub Pages by committing the build output to the `gh-pages` branch of the repository, and typically include a `.nojekyll` file. When this happens, the {% data variables.product.prodname_actions %} workflow will detect the state that the branch does not need a build step, and will execute only the steps necessary to deploy the site to {% data variables.product.prodname_pages %} servers.
+Your {% data variables.product.prodname_pages %} site will always be deployed with a {% data variables.product.prodname_actions %} workflow run, even if you've configured your {% data variables.product.prodname_pages %} site to be built using a different CI tool. Most external CI workflows "deploy" to {% data variables.product.prodname_pages %} by committing the build output to the `gh-pages` branch of the repository, and typically include a `.nojekyll` file. When this happens, the {% data variables.product.prodname_actions %} workflow will detect the state that the branch does not need a build step, and will execute only the steps necessary to deploy the site to {% data variables.product.prodname_pages %} servers.
To find potential errors with either the build or deployment, you can check the workflow run for your {% data variables.product.prodname_pages %} site by reviewing your repository's workflow runs. For more information, see "[AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)." For more information about how to re-run the workflow in case of an error, see "[AUTOTITLE](/actions/managing-workflow-runs/re-running-workflows-and-jobs)."
@@ -68,7 +80,7 @@ To configure your site to publish with {% data variables.product.prodname_action
{% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
-1. Under "Build and deployment", under "Source", select **GitHub Actions**.
+1. Under "Build and deployment", under "Source", select **{% data variables.product.prodname_actions %}**.
1. {% data variables.product.product_name %} will suggest several starter workflows. If you already have a workflow to publish your site, you can skip this step. Otherwise, choose one of the options to create a {% data variables.product.prodname_actions %} workflow. For more information about creating your custom workflow, see "[Creating a custom {% data variables.product.prodname_actions %} workflow to publish your site](#creating-a-custom-github-actions-workflow-to-publish-your-site)."
{% data variables.product.prodname_pages %} does not associate a specific workflow to the {% data variables.product.prodname_pages %} settings. However, the {% data variables.product.prodname_pages %} settings will link to the workflow run that most recently deployed your site.
@@ -90,6 +102,7 @@ The starter workflows use a deployment environment called `github-pages`. If you
{% ifversion fpt or ghec %}
{% note %}
+
**Note**: A `CNAME` file in your repository file does not automatically add or remove a custom domain. Instead, you must configure the custom domain through your repository settings or through the API. For more information, see "[AUTOTITLE](/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain)" and the [Pages API reference documentation](/rest/pages#update-information-about-a-github-pages-site).
{% endnote %}
diff --git a/content/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites.md b/content/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites.md
index e463a2443c..37f55b1c6d 100644
--- a/content/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites.md
+++ b/content/pages/setting-up-a-github-pages-site-with-jekyll/troubleshooting-jekyll-build-errors-for-github-pages-sites.md
@@ -60,6 +60,12 @@ To troubleshoot, make sure that your *_config.yml* file follows these rules:
{% data reusables.pages.yaml-linter %}
+{% ifversion pages-disable-symlinks-on-legacy-pages %}
+
+{% data reusables.pages.symlink-removal %}
+
+{% endif %}
+
## Date is not a valid datetime
This error means that one of the pages on your site includes an invalid datetime.
@@ -72,11 +78,13 @@ This error means that your code references a file that doesn't exist in your *_i
{% data reusables.pages.search-for-includes %} If any of the files you've referenced aren't in the *_includes* directory, copy or move the files into the *_includes* directory.
+{% ifversion ghes < 3.9 %}
## File is a symlink
This error means that your code references a symlinked file that does not exist in the published files for your site.
{% data reusables.pages.search-for-includes %} If any of the files you've referenced are symlinked, copy or move the files into the *_includes* directory.
+{% endif %}
## File is not properly UTF-8 encoded
@@ -160,11 +168,13 @@ Permalinks are permanent URLs that reference a particular page on your site. Abs
To troubleshoot, remove the `relative_permalinks` line from your *_config.yml* file and reformat any relative permalinks in your site with absolute permalinks. For more information, see "[AUTOTITLE](/repositories/working-with-files/managing-files/editing-files)."
+{% ifversion ghes < 3.9 %}
## Symlink does not exist within your site's repository
This error means that your site includes a symbolic link (symlink) that does not exist in the published files for your site. For more information about symlinks, see "[Symbolic link](https://en.wikipedia.org/wiki/Symbolic_link)" on Wikipedia.
To troubleshoot, determine if the file in the error message is used to build your site. If not, or if you don't want the file to be a symlink, delete the file. If the symlinked file is necessary to build your site, make sure the file or directory the symlink references is in the published files for your site. To include external assets, consider using {% ifversion fpt or ghec %}`git submodule` or {% endif %}a third-party package manager such as [Bower](https://bower.io/).{% ifversion fpt or ghec %} For more information, see "[AUTOTITLE](/pages/getting-started-with-github-pages/using-submodules-with-github-pages)."{% endif %}
+{% endif %}
## Syntax error in 'for' loop
diff --git a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository.md b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository.md
index aa2ded745b..dc32dc7918 100644
--- a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository.md
+++ b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository.md
@@ -8,8 +8,8 @@ redirect_from:
- /github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/licensing-a-repository
versions:
fpt: '*'
- ghes: '*'
ghec: '*'
+ ghes: '*'
topics:
- Repositories
---
@@ -84,9 +84,13 @@ If your repository is using a license that is listed on the Choose a License web
## Applying a license to a repository with an existing license
-The license picker is only available when you create a new project on GitHub. You can manually add a license using the browser. For more information on adding a license to a repository, see "[AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/adding-a-license-to-a-repository)."
+{% ifversion fpt or ghec %}
+The license picker is only available when you create a new project on GitHub.

+{% endif %}
+
+You can manually add a license using the browser. For more information on adding a license to a repository, see "[AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/adding-a-license-to-a-repository)."
## Disclaimer
diff --git a/content/rest/actions/artifacts.md b/content/rest/actions/artifacts.md
index b3a8cdb39f..e678ae9841 100644
--- a/content/rest/actions/artifacts.md
+++ b/content/rest/actions/artifacts.md
@@ -2,14 +2,16 @@
title: GitHub Actions Artifacts
allowTitleToDifferFromFilename: true
shortTitle: Artifacts
-intro: 'Use the REST API to interact with artifacts in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with artifacts in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/cache.md b/content/rest/actions/cache.md
index 575a934272..43aac35efa 100644
--- a/content/rest/actions/cache.md
+++ b/content/rest/actions/cache.md
@@ -2,13 +2,15 @@
title: GitHub Actions Cache
allowTitleToDifferFromFilename: true
shortTitle: Cache
-intro: 'Use the REST API to interact with the cache for repositories in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with the cache for repositories in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
ghec: '*'
- ghes: '>3.4'
+ ghes: '>=3.5'
autogenerated: rest
---
diff --git a/content/rest/actions/oidc.md b/content/rest/actions/oidc.md
index a9fc032cc3..3230aafb89 100644
--- a/content/rest/actions/oidc.md
+++ b/content/rest/actions/oidc.md
@@ -2,7 +2,9 @@
title: GitHub Actions OIDC
allowTitleToDifferFromFilename: true
shortTitle: OIDC
-intro: 'Use the REST API to interact with JWTs for OIDC subject claims in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with JWTs for OIDC subject claims in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
diff --git a/content/rest/actions/permissions.md b/content/rest/actions/permissions.md
index bc827ffe72..b9c26c6733 100644
--- a/content/rest/actions/permissions.md
+++ b/content/rest/actions/permissions.md
@@ -2,14 +2,16 @@
title: GitHub Actions Permissions
allowTitleToDifferFromFilename: true
shortTitle: Permissions
-intro: 'Use the REST API to interact with permissions for {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with permissions for {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/required-workflows.md b/content/rest/actions/required-workflows.md
index 3640686213..370273c002 100644
--- a/content/rest/actions/required-workflows.md
+++ b/content/rest/actions/required-workflows.md
@@ -2,7 +2,9 @@
title: GitHub Actions Required Workflows
allowTitleToDifferFromFilename: true
shortTitle: Required Workflows
-intro: 'Use the REST API to access and configure required workflows in an organization in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to access and configure required workflows in an organization
+ in {% data variables.product.prodname_actions %}.
topics:
- API
versions:
diff --git a/content/rest/actions/secrets.md b/content/rest/actions/secrets.md
index e638ec3174..24942b8f04 100644
--- a/content/rest/actions/secrets.md
+++ b/content/rest/actions/secrets.md
@@ -2,14 +2,16 @@
title: GitHub Actions Secrets
allowTitleToDifferFromFilename: true
shortTitle: Secrets
-intro: 'Use the REST API to interact with secrets in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with secrets in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/self-hosted-runner-groups.md b/content/rest/actions/self-hosted-runner-groups.md
index 4cc3031b75..234e219d31 100644
--- a/content/rest/actions/self-hosted-runner-groups.md
+++ b/content/rest/actions/self-hosted-runner-groups.md
@@ -1,12 +1,14 @@
---
title: Self-hosted runner groups
-intro: 'Use the REST API to interact with self-hosted runner groups for {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with self-hosted runner groups for {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/self-hosted-runners.md b/content/rest/actions/self-hosted-runners.md
index e0f3694d53..2e6f8b5d57 100644
--- a/content/rest/actions/self-hosted-runners.md
+++ b/content/rest/actions/self-hosted-runners.md
@@ -1,13 +1,15 @@
---
title: Self-hosted runners
-intro: 'Use the REST API to interact with self-hosted runners in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with self-hosted runners in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/variables.md b/content/rest/actions/variables.md
index 6636f586e2..30f864dd85 100644
--- a/content/rest/actions/variables.md
+++ b/content/rest/actions/variables.md
@@ -2,13 +2,15 @@
title: GitHub Actions Variables
allowTitleToDifferFromFilename: true
shortTitle: Variables
-intro: 'Use the REST API to interact with variables in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with variables in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '>=3.8'
ghec: '*'
+ ghes: '>=3.8'
autogenerated: rest
---
diff --git a/content/rest/actions/workflow-jobs.md b/content/rest/actions/workflow-jobs.md
index 9d99b7a5bb..37e6d0f495 100644
--- a/content/rest/actions/workflow-jobs.md
+++ b/content/rest/actions/workflow-jobs.md
@@ -1,13 +1,15 @@
---
title: Workflow jobs
-intro: 'Use the REST API to interact with workflow jobs in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with workflow jobs in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/workflow-runs.md b/content/rest/actions/workflow-runs.md
index bc459dd715..b0dd87c65f 100644
--- a/content/rest/actions/workflow-runs.md
+++ b/content/rest/actions/workflow-runs.md
@@ -1,13 +1,15 @@
---
title: Workflow runs
-intro: 'Use the REST API to interact with workflow runs in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with workflow runs in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/actions/workflows.md b/content/rest/actions/workflows.md
index 53c2b8760b..2df113a8bb 100644
--- a/content/rest/actions/workflows.md
+++ b/content/rest/actions/workflows.md
@@ -1,13 +1,15 @@
---
title: Workflows
-intro: 'Use the REST API to interact with workflows in {% data variables.product.prodname_actions %}.'
+intro: >-
+ Use the REST API to interact with workflows in {% data
+ variables.product.prodname_actions %}.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/activity/events.md b/content/rest/activity/events.md
index 0163d2efcf..cc6f6f3f71 100644
--- a/content/rest/activity/events.md
+++ b/content/rest/activity/events.md
@@ -1,11 +1,13 @@
---
title: Events
-intro: 'Use the REST API to interact with {% data variables.product.prodname_dotcom %} events.'
+intro: >-
+ Use the REST API to interact with {% data variables.product.prodname_dotcom %}
+ events.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/activity/feeds.md b/content/rest/activity/feeds.md
index d6bf3ea1af..aba7f3595a 100644
--- a/content/rest/activity/feeds.md
+++ b/content/rest/activity/feeds.md
@@ -1,11 +1,13 @@
---
title: Feeds
-intro: 'Use the REST API to interact with {% data variables.product.prodname_dotcom %} feeds.'
+intro: >-
+ Use the REST API to interact with {% data variables.product.prodname_dotcom %}
+ feeds.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/activity/notifications.md b/content/rest/activity/notifications.md
index 9f2d981279..306fb21baf 100644
--- a/content/rest/activity/notifications.md
+++ b/content/rest/activity/notifications.md
@@ -1,11 +1,13 @@
---
title: Notifications
-intro: 'Use the REST API to manage {% data variables.product.product_name %} notifications.'
+intro: >-
+ Use the REST API to manage {% data variables.product.product_name %}
+ notifications.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/activity/starring.md b/content/rest/activity/starring.md
index 71c7c28062..e9444955bb 100644
--- a/content/rest/activity/starring.md
+++ b/content/rest/activity/starring.md
@@ -3,9 +3,9 @@ title: Starring
intro: Use the REST API to bookmark a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/activity/watching.md b/content/rest/activity/watching.md
index eb4e23ffb1..09e5138cc0 100644
--- a/content/rest/activity/watching.md
+++ b/content/rest/activity/watching.md
@@ -3,9 +3,9 @@ title: Watching
intro: Use the REST API to subscribe to notifications for activity in a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/announcement-banners/enterprises.md b/content/rest/announcement-banners/enterprises.md
index 19ebf01857..d0f70d3408 100644
--- a/content/rest/announcement-banners/enterprises.md
+++ b/content/rest/announcement-banners/enterprises.md
@@ -1,7 +1,9 @@
---
title: Enterprise announcement banners
shortTitle: Enterprise
-intro: 'The Enterprise Announcement Banners API allows you to get, set, and remove the announcement banner for your enterprise.'
+intro: >-
+ The Enterprise Announcement Banners API allows you to get, set, and remove the
+ announcement banner for your enterprise.
versions:
ghec: '*'
allowTitleToDifferFromFilename: true
diff --git a/content/rest/announcement-banners/organizations.md b/content/rest/announcement-banners/organizations.md
index 1ec06128ce..89283d5e53 100644
--- a/content/rest/announcement-banners/organizations.md
+++ b/content/rest/announcement-banners/organizations.md
@@ -1,11 +1,12 @@
---
title: Organization announcement banners
shortTitle: Organization
-intro: 'The Organization Announcement Banners API allows you to get, set, and remove the announcement banner for your organization.'
+intro: >-
+ The Organization Announcement Banners API allows you to get, set, and remove
+ the announcement banner for your organization.
versions:
ghec: '*'
ghes: '>=3.8'
- ghae: '>=3.8'
allowTitleToDifferFromFilename: true
autogenerated: rest
---
diff --git a/content/rest/apps/apps.md b/content/rest/apps/apps.md
index b6637e25c2..4ac3ec1a21 100644
--- a/content/rest/apps/apps.md
+++ b/content/rest/apps/apps.md
@@ -1,14 +1,16 @@
---
title: GitHub Apps
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with {% data variables.product.prodname_github_apps %}'
+intro: >-
+ Use the REST API to interact with {% data
+ variables.product.prodname_github_apps %}
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/apps/installations.md b/content/rest/apps/installations.md
index e43804b3fc..a10adbc08e 100644
--- a/content/rest/apps/installations.md
+++ b/content/rest/apps/installations.md
@@ -2,14 +2,17 @@
title: GitHub App installations
allowTitleToDifferFromFilename: true
shortTitle: Installations
-intro: 'Use the REST API to get information about {% data variables.product.prodname_github_app %} installations and perform actions within those installations.'
+intro: >-
+ Use the REST API to get information about {% data
+ variables.product.prodname_github_app %} installations and perform actions
+ within those installations.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/apps/marketplace.md b/content/rest/apps/marketplace.md
index 434469274e..29d9d2c06c 100644
--- a/content/rest/apps/marketplace.md
+++ b/content/rest/apps/marketplace.md
@@ -2,7 +2,9 @@
title: GitHub Marketplace
allowTitleToDifferFromFilename: true
shortTitle: Marketplace
-intro: 'Use the REST API to interact with {% data variables.product.prodname_marketplace %}'
+intro: >-
+ Use the REST API to interact with {% data
+ variables.product.prodname_marketplace %}
topics:
- API
versions:
diff --git a/content/rest/apps/oauth-applications.md b/content/rest/apps/oauth-applications.md
index f2f8a46891..b748b05d9a 100644
--- a/content/rest/apps/oauth-applications.md
+++ b/content/rest/apps/oauth-applications.md
@@ -1,20 +1,21 @@
---
-title: OAuth Apps
+title: OAuth Authorizations
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with {% data variables.product.prodname_oauth_apps %}'
+intro: 'Use the REST API to interact with {% data variables.product.prodname_oauth_apps %} and OAuth authorizations of {% data variables.product.prodname_github_apps %}'
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
-## About {% data variables.product.prodname_oauth_apps %}
+## About {% data variables.product.prodname_oauth_apps %} and OAuth authorizations of {% data variables.product.prodname_github_apps %}
-You can use these endpoints to manage the OAuth tokens that {% data variables.product.prodname_oauth_app %} uses to access people's accounts on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}.
+You can use these endpoints to manage the OAuth tokens that {% data variables.product.prodname_oauth_apps %} or {% data variables.product.prodname_github_apps %} use to access people's accounts on {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.location.product_location %}{% endif %}.
+Tokens for {% data variables.product.prodname_oauth_apps %} have the prefix `gho_`, while OAuth tokens for {% data variables.product.prodname_github_apps %}, used for authenticating on behalf of the user, have the prefix `ghu_`. You can use the following endpoints for both types of OAuth tokens.
-
+
\ No newline at end of file
diff --git a/content/rest/apps/webhooks.md b/content/rest/apps/webhooks.md
index ac286c9089..57128c6ece 100644
--- a/content/rest/apps/webhooks.md
+++ b/content/rest/apps/webhooks.md
@@ -2,14 +2,16 @@
title: GitHub App webhooks
allowTitleToDifferFromFilename: true
shortTitle: Webhooks
-intro: 'Use the REST API to interact with webhooks for {% data variables.product.prodname_oauth_apps %}'
+intro: >-
+ Use the REST API to interact with webhooks for {% data
+ variables.product.prodname_oauth_apps %}
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
autogenerated: rest
---
diff --git a/content/rest/branches/branch-protection.md b/content/rest/branches/branch-protection.md
index 9dae914da2..6b133cf188 100644
--- a/content/rest/branches/branch-protection.md
+++ b/content/rest/branches/branch-protection.md
@@ -3,9 +3,9 @@ title: Protected branches
intro: Use the REST API to manage protected branches.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/branches/branches.md b/content/rest/branches/branches.md
index 97a71d0ba0..74ea1cf8b6 100644
--- a/content/rest/branches/branches.md
+++ b/content/rest/branches/branches.md
@@ -3,9 +3,9 @@ title: Branches
intro: Use the REST API to modify branches and their protection settings.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/checks/runs.md b/content/rest/checks/runs.md
index 262de60737..0cbf31e850 100644
--- a/content/rest/checks/runs.md
+++ b/content/rest/checks/runs.md
@@ -3,9 +3,9 @@ title: Check Runs
intro: Use the REST API to manage check runs.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/checks/suites.md b/content/rest/checks/suites.md
index a9851ed2d4..09576de92f 100644
--- a/content/rest/checks/suites.md
+++ b/content/rest/checks/suites.md
@@ -3,9 +3,9 @@ title: Check Suites
intro: Use the REST API to manage check suites.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/code-scanning.md b/content/rest/code-scanning.md
index c5ae264c7e..9c766aff56 100644
--- a/content/rest/code-scanning.md
+++ b/content/rest/code-scanning.md
@@ -1,11 +1,13 @@
---
title: Code Scanning
-intro: 'Use the REST API to retrieve and update {% data variables.product.prodname_code_scanning %} alerts from a repository.'
+intro: >-
+ Use the REST API to retrieve and update {% data
+ variables.product.prodname_code_scanning %} alerts from a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
- Code scanning
diff --git a/content/rest/codes-of-conduct.md b/content/rest/codes-of-conduct.md
index 5dffc88d71..d4c811c92e 100644
--- a/content/rest/codes-of-conduct.md
+++ b/content/rest/codes-of-conduct.md
@@ -3,9 +3,9 @@ title: Codes of conduct
intro: Use the REST API to get information about codes of conduct.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/codespaces/codespaces.md b/content/rest/codespaces/codespaces.md
index 53d83daf77..e4ce5ab9f1 100644
--- a/content/rest/codespaces/codespaces.md
+++ b/content/rest/codespaces/codespaces.md
@@ -1,6 +1,8 @@
---
title: Codespaces
-intro: 'Use the REST API to manage {% data variables.product.prodname_github_codespaces %}.'
+intro: >-
+ Use the REST API to manage {% data
+ variables.product.prodname_github_codespaces %}.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/codespaces/organization-secrets.md b/content/rest/codespaces/organization-secrets.md
index 0a628614c7..de2410575e 100644
--- a/content/rest/codespaces/organization-secrets.md
+++ b/content/rest/codespaces/organization-secrets.md
@@ -2,7 +2,9 @@
title: Codespaces organization secrets
allowTitleToDifferFromFilename: true
shortTitle: Organization secrets
-intro: 'Use the REST API to manage your organization-level {% data variables.product.prodname_codespaces %} secrets.'
+intro: >-
+ Use the REST API to manage your organization-level {% data
+ variables.product.prodname_codespaces %} secrets.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/codespaces/repository-secrets.md b/content/rest/codespaces/repository-secrets.md
index 625efea659..fe18ba4f9d 100644
--- a/content/rest/codespaces/repository-secrets.md
+++ b/content/rest/codespaces/repository-secrets.md
@@ -2,8 +2,12 @@
title: Codespaces repository secrets
allowTitleToDifferFromFilename: true
shortTitle: Repository secrets
-intro: Use the REST API to manage secrets for repositories that the user has access to in a codespace.
-permissions: 'Users with write access to a repository can manage {% data variables.product.prodname_codespaces %} repository secrets.'
+intro: >-
+ Use the REST API to manage secrets for repositories that the user has access
+ to in a codespace.
+permissions: >-
+ Users with write access to a repository can manage {% data
+ variables.product.prodname_codespaces %} repository secrets.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/collaborators/collaborators.md b/content/rest/collaborators/collaborators.md
index 7145079420..4852509b16 100644
--- a/content/rest/collaborators/collaborators.md
+++ b/content/rest/collaborators/collaborators.md
@@ -3,9 +3,9 @@ title: Collaborators
intro: Use the REST API to manage collaborators for a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/collaborators/invitations.md b/content/rest/collaborators/invitations.md
index 1fad5d102f..21846de153 100644
--- a/content/rest/collaborators/invitations.md
+++ b/content/rest/collaborators/invitations.md
@@ -2,12 +2,14 @@
title: Repository invitations
allowTitleToDifferFromFilename: true
shortTitle: Invitations
-intro: Use the REST API to view and manage invitations to collaborate on a repository.
+intro: >-
+ Use the REST API to view and manage invitations to collaborate on a
+ repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/commits/comments.md b/content/rest/commits/comments.md
index e0e5a545e5..c8e43f01f7 100644
--- a/content/rest/commits/comments.md
+++ b/content/rest/commits/comments.md
@@ -3,9 +3,9 @@ title: Commit comments
intro: Use the REST API to interact with commit comments.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/commits/commits.md b/content/rest/commits/commits.md
index 49b7c10527..e1ba8c9553 100644
--- a/content/rest/commits/commits.md
+++ b/content/rest/commits/commits.md
@@ -3,9 +3,9 @@ title: Commits
intro: Use the REST API to interact with commits.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/commits/statuses.md b/content/rest/commits/statuses.md
index 6b72a52d66..890cc3a774 100644
--- a/content/rest/commits/statuses.md
+++ b/content/rest/commits/statuses.md
@@ -3,9 +3,9 @@ title: Commit statuses
intro: Use the REST API to interact with commit statuses.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/dependabot/alerts.md b/content/rest/dependabot/alerts.md
index e8eda3c2ec..146cfdb1ab 100644
--- a/content/rest/dependabot/alerts.md
+++ b/content/rest/dependabot/alerts.md
@@ -2,9 +2,13 @@
title: '{% data variables.product.prodname_dependabot_alerts %}'
allowTitleToDifferFromFilename: true
shortTitle: Alerts
-intro: 'Use the REST API to interact with {% data variables.product.prodname_dependabot %} alerts for a repository.'
+intro: >-
+ Use the REST API to interact with {% data
+ variables.product.prodname_dependabot %} alerts for a repository.
versions:
- feature: dependabot-alerts-rest-api
+ fpt: '*'
+ ghec: '*'
+ ghes: '>=3.8'
topics:
- API
autogenerated: rest
diff --git a/content/rest/dependabot/secrets.md b/content/rest/dependabot/secrets.md
index fa214ed8bb..34270cea1e 100644
--- a/content/rest/dependabot/secrets.md
+++ b/content/rest/dependabot/secrets.md
@@ -1,13 +1,15 @@
---
title: Dependabot secrets
shortTitle: Secrets
-intro: 'Use the REST API to manage {% data variables.product.prodname_dependabot %} secrets for an organization or repository.'
+intro: >-
+ Use the REST API to manage {% data variables.product.prodname_dependabot %}
+ secrets for an organization or repository.
topics:
- API
versions:
fpt: '*'
- ghes: '*'
ghec: '*'
+ ghes: '*'
allowTitleToDifferFromFilename: true
autogenerated: rest
---
diff --git a/content/rest/dependency-graph/dependency-review.md b/content/rest/dependency-graph/dependency-review.md
index 042d817f0a..655ed6b99b 100644
--- a/content/rest/dependency-graph/dependency-review.md
+++ b/content/rest/dependency-graph/dependency-review.md
@@ -3,9 +3,8 @@ title: Dependency review
intro: Use the REST API to interact with dependency changes.
versions:
fpt: '*'
- ghes: '>=3.6'
ghec: '*'
- ghae: '>= 3.6'
+ ghes: '>=3.6'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/dependency-graph/dependency-submission.md b/content/rest/dependency-graph/dependency-submission.md
index 8f1856f819..668f51f8f7 100644
--- a/content/rest/dependency-graph/dependency-submission.md
+++ b/content/rest/dependency-graph/dependency-submission.md
@@ -2,7 +2,9 @@
title: Dependency submission
intro: Use the REST API to submit dependencies.
versions:
- feature: dependency-submission-api
+ fpt: '*'
+ ghec: '*'
+ ghes: '>=3.7'
autogenerated: rest
---
diff --git a/content/rest/deploy-keys.md b/content/rest/deploy-keys.md
index 7eed2e9a03..7aed83828d 100644
--- a/content/rest/deploy-keys.md
+++ b/content/rest/deploy-keys.md
@@ -3,9 +3,9 @@ title: Deploy keys
intro: Use the REST API to create and manage deploy keys.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/deployments/branch-policies.md b/content/rest/deployments/branch-policies.md
index f86e162b5d..659d9f91eb 100644
--- a/content/rest/deployments/branch-policies.md
+++ b/content/rest/deployments/branch-policies.md
@@ -5,9 +5,9 @@ shortTitle: Deployment branch policies
intro: Use the REST API to manage custom deployment branch policies.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/deployments/deployments.md b/content/rest/deployments/deployments.md
index 8aa4ce36df..44600d3c91 100644
--- a/content/rest/deployments/deployments.md
+++ b/content/rest/deployments/deployments.md
@@ -3,9 +3,9 @@ title: Deployments
intro: Use the REST API to create and delete deployments and deployment environments.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/deployments/environments.md b/content/rest/deployments/environments.md
index c5507058ae..34755f102b 100644
--- a/content/rest/deployments/environments.md
+++ b/content/rest/deployments/environments.md
@@ -5,9 +5,9 @@ shortTitle: Environments
intro: 'Use the REST API to create, configure, and delete deployment environments.'
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/deployments/statuses.md b/content/rest/deployments/statuses.md
index fe5eaa409b..6dc3f06ebb 100644
--- a/content/rest/deployments/statuses.md
+++ b/content/rest/deployments/statuses.md
@@ -3,9 +3,9 @@ title: Deployment statuses
intro: Use the REST API to manage deployment statuses.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/emojis.md b/content/rest/emojis.md
index 3f44ca83a1..97c4266167 100644
--- a/content/rest/emojis.md
+++ b/content/rest/emojis.md
@@ -1,11 +1,13 @@
---
title: Emojis
-intro: 'Use the REST API to list and view all the available emojis to use on {% data variables.product.product_name %}.'
+intro: >-
+ Use the REST API to list and view all the available emojis to use on {% data
+ variables.product.product_name %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/enterprise-admin/admin-stats.md b/content/rest/enterprise-admin/admin-stats.md
index aeb071062f..03fe3f3e34 100644
--- a/content/rest/enterprise-admin/admin-stats.md
+++ b/content/rest/enterprise-admin/admin-stats.md
@@ -2,9 +2,9 @@
title: Admin stats
intro: Use the REST API to retrieve a variety of metrics about your installation.
versions:
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/announcement.md b/content/rest/enterprise-admin/announcement.md
index b624a2a145..a116716287 100644
--- a/content/rest/enterprise-admin/announcement.md
+++ b/content/rest/enterprise-admin/announcement.md
@@ -2,8 +2,8 @@
title: Announcement
intro: Use the REST API to manage the global announcement banner in your enterprise.
versions:
- ghes: '*'
ghae: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/audit-log.md b/content/rest/enterprise-admin/audit-log.md
index d45c7793ac..438c0edc0b 100644
--- a/content/rest/enterprise-admin/audit-log.md
+++ b/content/rest/enterprise-admin/audit-log.md
@@ -2,9 +2,9 @@
title: Audit log
intro: Use the REST API to retrieve audit logs for an enterprise.
versions:
- ghes: '*'
- ghec: '*'
ghae: '*'
+ ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/billing.md b/content/rest/enterprise-admin/billing.md
index a4bf3430ff..b9f81753c9 100644
--- a/content/rest/enterprise-admin/billing.md
+++ b/content/rest/enterprise-admin/billing.md
@@ -1,9 +1,11 @@
---
title: Billing
-intro: Use the REST API to retrieve the GitHub Advanced Security active committers for an enterprise per repository.
+intro: >-
+ Use the REST API to retrieve the GitHub Advanced Security active committers
+ for an enterprise per repository.
versions:
- ghes: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/code-security-and-analysis.md b/content/rest/enterprise-admin/code-security-and-analysis.md
index 4d76ac74a7..be64aea67a 100644
--- a/content/rest/enterprise-admin/code-security-and-analysis.md
+++ b/content/rest/enterprise-admin/code-security-and-analysis.md
@@ -1,9 +1,11 @@
---
title: Code security and analysis
-intro: Use the REST API to manage code security and analysis features for your enterprise.
+intro: >-
+ Use the REST API to manage code security and analysis features for your
+ enterprise.
versions:
- ghes: '>=3.8'
ghec: '*'
+ ghes: '>=3.8'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/global-webhooks.md b/content/rest/enterprise-admin/global-webhooks.md
index 8d2026d066..373f4f658f 100644
--- a/content/rest/enterprise-admin/global-webhooks.md
+++ b/content/rest/enterprise-admin/global-webhooks.md
@@ -2,8 +2,8 @@
title: Global Webhooks
intro: Use the REST API to manage global webhooks for your enterprise.
versions:
- ghes: '*'
ghae: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/ldap.md b/content/rest/enterprise-admin/ldap.md
index 0cf946ea3d..fd4e107ab1 100644
--- a/content/rest/enterprise-admin/ldap.md
+++ b/content/rest/enterprise-admin/ldap.md
@@ -1,6 +1,9 @@
---
title: LDAP
-intro: 'Use the REST API to update account relationships between a {% data variables.product.product_name %} user or team and its linked LDAP entry or queue a new synchronization.'
+intro: >-
+ Use the REST API to update account relationships between a {% data
+ variables.product.product_name %} user or team and its linked LDAP entry or
+ queue a new synchronization.
versions:
ghes: '*'
topics:
diff --git a/content/rest/enterprise-admin/license.md b/content/rest/enterprise-admin/license.md
index 9218209353..896013140e 100644
--- a/content/rest/enterprise-admin/license.md
+++ b/content/rest/enterprise-admin/license.md
@@ -2,9 +2,9 @@
title: License
intro: Use the REST API to retrieve information about your Enterprise license.
versions:
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/management-console.md b/content/rest/enterprise-admin/management-console.md
index a41df2b6a0..423c2f6deb 100644
--- a/content/rest/enterprise-admin/management-console.md
+++ b/content/rest/enterprise-admin/management-console.md
@@ -1,6 +1,8 @@
---
title: Management Console
-intro: 'Use the REST API to manage your {% data variables.product.product_name %} installation.'
+intro: >-
+ Use the REST API to manage your {% data variables.product.product_name %}
+ installation.
versions:
ghes: '*'
topics:
diff --git a/content/rest/enterprise-admin/org-pre-receive-hooks.md b/content/rest/enterprise-admin/org-pre-receive-hooks.md
index 45b2a60770..539a24c083 100644
--- a/content/rest/enterprise-admin/org-pre-receive-hooks.md
+++ b/content/rest/enterprise-admin/org-pre-receive-hooks.md
@@ -1,6 +1,8 @@
---
title: Organization Pre-receive Hooks
-intro: Use the REST API to view and modify enforcement of the pre-receive hooks that are available to an organization.
+intro: >-
+ Use the REST API to view and modify enforcement of the pre-receive hooks that
+ are available to an organization.
versions:
ghes: '*'
topics:
diff --git a/content/rest/enterprise-admin/orgs.md b/content/rest/enterprise-admin/orgs.md
index cc7afbec3d..915f860ec0 100644
--- a/content/rest/enterprise-admin/orgs.md
+++ b/content/rest/enterprise-admin/orgs.md
@@ -2,8 +2,8 @@
title: Organizations
intro: Use the REST API to create organizations on your enterprise.
versions:
- ghes: '*'
ghae: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/enterprise-admin/pre-receive-environments.md b/content/rest/enterprise-admin/pre-receive-environments.md
index 7834a46434..c13a67c880 100644
--- a/content/rest/enterprise-admin/pre-receive-environments.md
+++ b/content/rest/enterprise-admin/pre-receive-environments.md
@@ -1,9 +1,11 @@
---
title: Pre-receive Environments
-intro: 'Use the REST API to create, list, update and delete environments for pre-receive hooks.'
+intro: >-
+ Use the REST API to create, list, update and delete environments for
+ pre-receive hooks.
versions:
- ghes: '*'
ghae: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/enterprise-admin/repo-pre-receive-hooks.md b/content/rest/enterprise-admin/repo-pre-receive-hooks.md
index b1bbc49332..8e57213543 100644
--- a/content/rest/enterprise-admin/repo-pre-receive-hooks.md
+++ b/content/rest/enterprise-admin/repo-pre-receive-hooks.md
@@ -1,6 +1,8 @@
---
title: Repository Pre-receive Hooks
-intro: Use the REST API to view and modify enforcement of the pre-receive hooks that are available to a repository.
+intro: >-
+ Use the REST API to view and modify enforcement of the pre-receive hooks that
+ are available to a repository.
versions:
ghes: '*'
topics:
diff --git a/content/rest/enterprise-admin/users.md b/content/rest/enterprise-admin/users.md
index 56fc91fb4b..4f2a1204e5 100644
--- a/content/rest/enterprise-admin/users.md
+++ b/content/rest/enterprise-admin/users.md
@@ -1,9 +1,12 @@
---
title: Users
-intro: 'Use the REST API to suspend{% ifversion ghes %}, unsuspend, promote, and demote{% endif %}{% ifversion ghae %} and unsuspend{% endif %} users on your enterprise.'
+intro: >-
+ Use the REST API to suspend{% ifversion ghes %}, unsuspend, promote, and
+ demote{% endif %}{% ifversion ghae %} and unsuspend{% endif %} users on your
+ enterprise.
versions:
- ghes: '*'
ghae: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/gists/comments.md b/content/rest/gists/comments.md
index 8504133b06..eec1c86962 100644
--- a/content/rest/gists/comments.md
+++ b/content/rest/gists/comments.md
@@ -5,9 +5,9 @@ shortTitle: Comments
intro: Use the REST API to view and modify comments on a gist.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/gists/gists.md b/content/rest/gists/gists.md
index f608a3cec0..9717a5d403 100644
--- a/content/rest/gists/gists.md
+++ b/content/rest/gists/gists.md
@@ -1,11 +1,13 @@
---
title: Gists
-intro: 'Use the REST API to list, create, update and delete the public gists on GitHub.'
+intro: >-
+ Use the REST API to list, create, update and delete the public gists on
+ GitHub.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/git/blobs.md b/content/rest/git/blobs.md
index 47dc6d7406..e2f2161394 100644
--- a/content/rest/git/blobs.md
+++ b/content/rest/git/blobs.md
@@ -2,12 +2,14 @@
title: Git blobs
shortTitle: Blobs
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with a Git blob (binary large object), the object type used to store the contents of each file in a repository.'
+intro: >-
+ Use the REST API to interact with a Git blob (binary large object), the object
+ type used to store the contents of each file in a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/git/commits.md b/content/rest/git/commits.md
index 401f80c863..8c0e321061 100644
--- a/content/rest/git/commits.md
+++ b/content/rest/git/commits.md
@@ -2,12 +2,14 @@
title: Git commits
shortTitle: Commits
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with commit objects in your Git database on {% data variables.product.product_name %}.'
+intro: >-
+ Use the REST API to interact with commit objects in your Git database on {%
+ data variables.product.product_name %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/git/refs.md b/content/rest/git/refs.md
index 90adb0d12a..ac4e23dd28 100644
--- a/content/rest/git/refs.md
+++ b/content/rest/git/refs.md
@@ -1,12 +1,14 @@
---
title: Git references
shortTitle: References
-intro: 'Use the REST API to interact with references in your Git database on {% data variables.product.product_name %}'
+intro: >-
+ Use the REST API to interact with references in your Git database on {% data
+ variables.product.product_name %}
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/git/tags.md b/content/rest/git/tags.md
index 22de8f41c4..a384e7825c 100644
--- a/content/rest/git/tags.md
+++ b/content/rest/git/tags.md
@@ -2,12 +2,14 @@
title: Git tags
shortTitle: Tags
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with tag objects in your Git database on {% data variables.product.product_name %}.'
+intro: >-
+ Use the REST API to interact with tag objects in your Git database on {% data
+ variables.product.product_name %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/git/trees.md b/content/rest/git/trees.md
index 8a4bb5e9cf..062f9737e3 100644
--- a/content/rest/git/trees.md
+++ b/content/rest/git/trees.md
@@ -2,12 +2,14 @@
title: Git trees
shortTitle: Trees
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to interact with tree objects in your Git database on {% data variables.product.product_name %}.'
+intro: >-
+ Use the REST API to interact with tree objects in your Git database on {% data
+ variables.product.product_name %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/gitignore.md b/content/rest/gitignore.md
index e7971590f5..7af18945e7 100644
--- a/content/rest/gitignore.md
+++ b/content/rest/gitignore.md
@@ -1,11 +1,13 @@
---
title: Gitignore
-intro: Use the REST API to get `.gitignore` templates that can be used to ignore files and directories.
+intro: >-
+ Use the REST API to get `.gitignore` templates that can be used to ignore
+ files and directories.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/interactions/orgs.md b/content/rest/interactions/orgs.md
index 658415825a..4997cbf494 100644
--- a/content/rest/interactions/orgs.md
+++ b/content/rest/interactions/orgs.md
@@ -1,7 +1,9 @@
---
title: Organization interactions
shortTitle: Organization
-intro: 'Use the REST API to temporarily restrict which type of user can comment, open issues, or create pull requests in the organization''s public repositories.'
+intro: >-
+ Use the REST API to temporarily restrict which type of user can comment, open
+ issues, or create pull requests in the organization's public repositories.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/interactions/repos.md b/content/rest/interactions/repos.md
index af83fa2300..ee44517ade 100644
--- a/content/rest/interactions/repos.md
+++ b/content/rest/interactions/repos.md
@@ -1,8 +1,12 @@
---
title: Repository interactions
shortTitle: Repository
-intro: 'Use the REST API to temporarily restrict which type of user can comment, open issues, or create pull requests in a public repository.'
-permissions: 'People with owner or admin access to temporarily restrict which type of user can comment, open issues, or create pull requests in a public repository.'
+intro: >-
+ Use the REST API to temporarily restrict which type of user can comment, open
+ issues, or create pull requests in a public repository.
+permissions: >-
+ People with owner or admin access to temporarily restrict which type of user
+ can comment, open issues, or create pull requests in a public repository.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/interactions/user.md b/content/rest/interactions/user.md
index de62c2fc02..f8dfaff39e 100644
--- a/content/rest/interactions/user.md
+++ b/content/rest/interactions/user.md
@@ -2,7 +2,9 @@
title: User interactions
shortTitle: User
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to temporarily restrict which type of user can comment, open issues, or create pull requests in your public repositories.'
+intro: >-
+ Use the REST API to temporarily restrict which type of user can comment, open
+ issues, or create pull requests in your public repositories.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/issues/assignees.md b/content/rest/issues/assignees.md
index 5162077dc4..238c2df9ce 100644
--- a/content/rest/issues/assignees.md
+++ b/content/rest/issues/assignees.md
@@ -5,9 +5,9 @@ shortTitle: Assignees
intro: Use the REST API to manage assignees on issues and pull requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/comments.md b/content/rest/issues/comments.md
index cd9c30e215..6d878647e5 100644
--- a/content/rest/issues/comments.md
+++ b/content/rest/issues/comments.md
@@ -5,9 +5,9 @@ shortTitle: Comments
intro: Use the REST API to manage comments on issues and pull requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/events.md b/content/rest/issues/events.md
index 614c178ef5..ec5846904e 100644
--- a/content/rest/issues/events.md
+++ b/content/rest/issues/events.md
@@ -2,12 +2,14 @@
title: Issue events
allowTitleToDifferFromFilename: true
shortTitle: Events
-intro: Use the REST API to retrieve events triggered by activity in issues and pull requests.
+intro: >-
+ Use the REST API to retrieve events triggered by activity in issues and pull
+ requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/issues.md b/content/rest/issues/issues.md
index 76da39e078..b6d2ea58a1 100644
--- a/content/rest/issues/issues.md
+++ b/content/rest/issues/issues.md
@@ -3,9 +3,9 @@ title: Issues
intro: Use the REST API to manage issues and pull requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/labels.md b/content/rest/issues/labels.md
index a38339bbdb..caddecc6fd 100644
--- a/content/rest/issues/labels.md
+++ b/content/rest/issues/labels.md
@@ -3,9 +3,9 @@ title: Labels
intro: 'Use the REST API to manage labels for repositories, issues and pull requests.'
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/milestones.md b/content/rest/issues/milestones.md
index 5a33793036..f1733b138e 100644
--- a/content/rest/issues/milestones.md
+++ b/content/rest/issues/milestones.md
@@ -3,9 +3,9 @@ title: Milestones
intro: Use the REST API to manage milestones.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/issues/timeline.md b/content/rest/issues/timeline.md
index c684e2e118..ec2c920a53 100644
--- a/content/rest/issues/timeline.md
+++ b/content/rest/issues/timeline.md
@@ -2,12 +2,14 @@
title: Timeline events
allowTitleToDifferFromFilename: true
shortTitle: Timeline
-intro: Use the REST API to receive events triggered by timeline activity in issues and pull requests.
+intro: >-
+ Use the REST API to receive events triggered by timeline activity in issues
+ and pull requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/licenses.md b/content/rest/licenses.md
index 5d1f6a0b69..e88291f171 100644
--- a/content/rest/licenses.md
+++ b/content/rest/licenses.md
@@ -1,11 +1,13 @@
---
title: Licenses
-intro: Use the REST API to retrieve popular open source licenses and information about a particular project's license file.
+intro: >-
+ Use the REST API to retrieve popular open source licenses and information
+ about a particular project's license file.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/markdown.md b/content/rest/markdown.md
index e8603b3752..ce61ba7a62 100644
--- a/content/rest/markdown.md
+++ b/content/rest/markdown.md
@@ -3,9 +3,9 @@ title: Markdown
intro: Use the REST API to render a markdown document as an HTML page or as raw text.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/meta.md b/content/rest/meta.md
index 853434227c..6a849d18b4 100644
--- a/content/rest/meta.md
+++ b/content/rest/meta.md
@@ -1,11 +1,14 @@
---
title: Meta
-intro: 'Use the REST API to get meta information about {% data variables.product.product_name %}, including the IP addresses of {% data variables.product.product_name %} services.'
+intro: >-
+ Use the REST API to get meta information about {% data
+ variables.product.product_name %}, including the IP addresses of {% data
+ variables.product.product_name %} services.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/metrics/statistics.md b/content/rest/metrics/statistics.md
index 447766bf2d..06606ecb62 100644
--- a/content/rest/metrics/statistics.md
+++ b/content/rest/metrics/statistics.md
@@ -2,12 +2,14 @@
title: Repository statistics
shortTitle: Statistics
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to fetch the data that {% data variables.product.product_name %} uses for visualizing different types of repository activity.'
+intro: >-
+ Use the REST API to fetch the data that {% data variables.product.product_name
+ %} uses for visualizing different types of repository activity.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/migrations/orgs.md b/content/rest/migrations/orgs.md
index 05cb7c812b..152becab8e 100644
--- a/content/rest/migrations/orgs.md
+++ b/content/rest/migrations/orgs.md
@@ -2,12 +2,15 @@
title: Organization migrations
allowTitleToDifferFromFilename: true
shortTitle: Organizations
-intro: 'Use the REST API to move a repository from {% data variables.product.prodname_dotcom_the_website %} to {% data variables.product.prodname_ghe_server %}.'
+intro: >-
+ Use the REST API to move a repository from {% data
+ variables.product.prodname_dotcom_the_website %} to {% data
+ variables.product.prodname_ghe_server %}.
versions:
fpt: '*'
+ ghae: '*'
ghec: '*'
ghes: '*'
- ghae: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/migrations/source-imports.md b/content/rest/migrations/source-imports.md
index 28031bf872..d805069b55 100644
--- a/content/rest/migrations/source-imports.md
+++ b/content/rest/migrations/source-imports.md
@@ -1,6 +1,8 @@
---
title: Source imports
-intro: 'Use the REST API to start an import from a Git, Subversion, Mercurial, or Team Foundation Version Control source repository.'
+intro: >-
+ Use the REST API to start an import from a Git, Subversion, Mercurial, or Team
+ Foundation Version Control source repository.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/migrations/users.md b/content/rest/migrations/users.md
index d84d801caa..ddb1268b43 100644
--- a/content/rest/migrations/users.md
+++ b/content/rest/migrations/users.md
@@ -2,12 +2,14 @@
title: User migrations
allowTitleToDifferFromFilename: true
shortTitle: Users
-intro: 'Use the REST API to review, backup, or migrate your user data stored on {% data variables.product.product_name %}.com.'
+intro: >-
+ Use the REST API to review, backup, or migrate your user data stored on {%
+ data variables.product.product_name %}.com.
versions:
fpt: '*'
+ ghae: '*'
ghec: '*'
ghes: '*'
- ghae: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/orgs/custom-roles.md b/content/rest/orgs/custom-roles.md
index 29de297f80..6e9f06f111 100644
--- a/content/rest/orgs/custom-roles.md
+++ b/content/rest/orgs/custom-roles.md
@@ -2,8 +2,8 @@
title: Custom Repository Roles
intro: Use the REST API to interact with custom repository roles.
versions:
- ghes: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/orgs/members.md b/content/rest/orgs/members.md
index 484022fab0..e75e85c15b 100644
--- a/content/rest/orgs/members.md
+++ b/content/rest/orgs/members.md
@@ -5,9 +5,9 @@ shortTitle: Members
intro: Use the REST API to manage memberships in your organization.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/orgs/orgs.md b/content/rest/orgs/orgs.md
index 6b5c5d776b..553b7a3104 100644
--- a/content/rest/orgs/orgs.md
+++ b/content/rest/orgs/orgs.md
@@ -3,9 +3,9 @@ title: Organizations
intro: Use the REST API to interact with organizations.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/orgs/outside-collaborators.md b/content/rest/orgs/outside-collaborators.md
index 55a8289aa3..dccdd57d23 100644
--- a/content/rest/orgs/outside-collaborators.md
+++ b/content/rest/orgs/outside-collaborators.md
@@ -3,9 +3,9 @@ title: Outside Collaborators
intro: Use the REST API to manage outside collaborators.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/orgs/security-managers.md b/content/rest/orgs/security-managers.md
index ce6e60e163..9b79e26233 100644
--- a/content/rest/orgs/security-managers.md
+++ b/content/rest/orgs/security-managers.md
@@ -3,9 +3,8 @@ title: Security Managers
intro: Use the REST API to manage security managers in an organization.
versions:
fpt: '*'
- ghes: '>=3.7'
- ghae: '>= 3.7'
ghec: '*'
+ ghes: '>=3.7'
topics:
- API
autogenerated: rest
diff --git a/content/rest/orgs/webhooks.md b/content/rest/orgs/webhooks.md
index b66ae56b29..d215d2da01 100644
--- a/content/rest/orgs/webhooks.md
+++ b/content/rest/orgs/webhooks.md
@@ -5,9 +5,9 @@ shortTitle: Webhooks
intro: Use the REST API to interact with webhooks in an organization.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/packages.md b/content/rest/packages.md
index 35958f2c3b..0ec2ddf9b2 100644
--- a/content/rest/packages.md
+++ b/content/rest/packages.md
@@ -1,6 +1,8 @@
---
title: Packages
-intro: 'Use the REST API to interact with {% data variables.product.prodname_registry %}.'
+intro: >-
+ Use the REST API to interact with {% data variables.product.prodname_registry
+ %}.
versions:
fpt: '*'
ghec: '*'
diff --git a/content/rest/pages.md b/content/rest/pages.md
index f1cdadf682..a550ffd8e2 100644
--- a/content/rest/pages.md
+++ b/content/rest/pages.md
@@ -1,11 +1,13 @@
---
title: Pages
-intro: 'Use the REST API to interact with {% data variables.product.prodname_pages %} sites and builds.'
+intro: >-
+ Use the REST API to interact with {% data variables.product.prodname_pages %}
+ sites and builds.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/projects/cards.md b/content/rest/projects/cards.md
index 0a5a921058..f6de550758 100644
--- a/content/rest/projects/cards.md
+++ b/content/rest/projects/cards.md
@@ -2,12 +2,14 @@
title: '{% data variables.product.prodname_project_v1_caps %} cards'
shortTitle: Cards
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to create and manage cards on a {% data variables.projects.projects_v1_board %}.'
+intro: >-
+ Use the REST API to create and manage cards on a {% data
+ variables.projects.projects_v1_board %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/projects/collaborators.md b/content/rest/projects/collaborators.md
index 3ff6c2ca91..00b2b85cba 100644
--- a/content/rest/projects/collaborators.md
+++ b/content/rest/projects/collaborators.md
@@ -2,12 +2,14 @@
title: '{% data variables.product.prodname_project_v1_caps %} collaborators'
shortTitle: Collaborators
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to manage collaborators on a {% data variables.projects.projects_v1_board %}.'
+intro: >-
+ Use the REST API to manage collaborators on a {% data
+ variables.projects.projects_v1_board %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/projects/columns.md b/content/rest/projects/columns.md
index 43dd828f40..59678d217f 100644
--- a/content/rest/projects/columns.md
+++ b/content/rest/projects/columns.md
@@ -2,12 +2,14 @@
title: '{% data variables.product.prodname_project_v1_caps %} columns'
shortTitle: Columns
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to create and manage columns on a {% data variables.projects.projects_v1_board %}.'
+intro: >-
+ Use the REST API to create and manage columns on a {% data
+ variables.projects.projects_v1_board %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/projects/projects.md b/content/rest/projects/projects.md
index c5632a4519..4208a076a7 100644
--- a/content/rest/projects/projects.md
+++ b/content/rest/projects/projects.md
@@ -2,12 +2,14 @@
title: '{% data variables.product.prodname_projects_v1_caps %}'
shortTitle: Boards
allowTitleToDifferFromFilename: true
-intro: 'Use the REST API to create and manage {% data variables.projects.projects_v1_boards %} in a repository.'
+intro: >-
+ Use the REST API to create and manage {% data
+ variables.projects.projects_v1_boards %} in a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/pulls/comments.md b/content/rest/pulls/comments.md
index 6db9d2279a..f87557e0e4 100644
--- a/content/rest/pulls/comments.md
+++ b/content/rest/pulls/comments.md
@@ -4,9 +4,9 @@ shortTitle: Review comments
intro: Use the REST API to interact with pull request review comments.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/pulls/pulls.md b/content/rest/pulls/pulls.md
index a245ee7e2a..f6a2676fef 100644
--- a/content/rest/pulls/pulls.md
+++ b/content/rest/pulls/pulls.md
@@ -3,9 +3,9 @@ title: Pulls
intro: Use the REST API to interact with pull requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/pulls/review-requests.md b/content/rest/pulls/review-requests.md
index 49e5ce2572..79dcf2364d 100644
--- a/content/rest/pulls/review-requests.md
+++ b/content/rest/pulls/review-requests.md
@@ -3,9 +3,9 @@ title: Review requests
intro: Use the REST API to interact with review requests.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/pulls/reviews.md b/content/rest/pulls/reviews.md
index 1d4b5e863a..40398d281d 100644
--- a/content/rest/pulls/reviews.md
+++ b/content/rest/pulls/reviews.md
@@ -5,9 +5,9 @@ allowTitleToDifferFromFilename: true
intro: Use the REST API to interact with pull request reviews.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/rate-limit.md b/content/rest/rate-limit.md
index 221572f44a..af0d5c2833 100644
--- a/content/rest/rate-limit.md
+++ b/content/rest/rate-limit.md
@@ -3,9 +3,9 @@ title: Rate limit
intro: Use the REST API to check your current rate limit status.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/reactions.md b/content/rest/reactions.md
index e7944ca9c4..62f32c07f8 100644
--- a/content/rest/reactions.md
+++ b/content/rest/reactions.md
@@ -1,11 +1,13 @@
---
title: Reactions
-intro: 'Use the REST API to interact with reactions on {% data variables.product.prodname_dotcom %}.'
+intro: >-
+ Use the REST API to interact with reactions on {% data
+ variables.product.prodname_dotcom %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/releases/assets.md b/content/rest/releases/assets.md
index 07338f7bc9..f401f595be 100644
--- a/content/rest/releases/assets.md
+++ b/content/rest/releases/assets.md
@@ -3,9 +3,9 @@ title: Release Assets
intro: Use the REST API to manage release assets.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/releases/releases.md b/content/rest/releases/releases.md
index 40f1d92cfa..2cf6c471ae 100644
--- a/content/rest/releases/releases.md
+++ b/content/rest/releases/releases.md
@@ -3,9 +3,9 @@ title: Releases
intro: 'Use the REST API to create, modify, and delete releases and release assets.'
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/repos/autolinks.md b/content/rest/repos/autolinks.md
index 2d29d2aaf1..422ed09d4f 100644
--- a/content/rest/repos/autolinks.md
+++ b/content/rest/repos/autolinks.md
@@ -5,9 +5,9 @@ shortTitle: Autolinks
intro: Use the REST API to add autolinks to external resources.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/repos/contents.md b/content/rest/repos/contents.md
index 33419ca869..0d9fe44c5e 100644
--- a/content/rest/repos/contents.md
+++ b/content/rest/repos/contents.md
@@ -2,12 +2,14 @@
title: Repository contents
allowTitleToDifferFromFilename: true
shortTitle: Contents
-intro: 'Use the REST API to create, modify, and delete Base64 encoded content in a repository.'
+intro: >-
+ Use the REST API to create, modify, and delete Base64 encoded content in a
+ repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/repos/forks.md b/content/rest/repos/forks.md
index 2e40ba8488..42bce05921 100644
--- a/content/rest/repos/forks.md
+++ b/content/rest/repos/forks.md
@@ -3,9 +3,9 @@ title: Forks
intro: Use the REST API to manage repository forks.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/repos/lfs.md b/content/rest/repos/lfs.md
index a5c157d420..af0268a825 100644
--- a/content/rest/repos/lfs.md
+++ b/content/rest/repos/lfs.md
@@ -1,11 +1,13 @@
---
title: Git LFS
-intro: 'Use the REST API to enable or disable {% data variables.large_files.product_name_long %} (LFS) for a repository.'
+intro: >-
+ Use the REST API to enable or disable {% data
+ variables.large_files.product_name_long %} (LFS) for a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/repos/repos.md b/content/rest/repos/repos.md
index bb5a616676..e03bb1f8eb 100644
--- a/content/rest/repos/repos.md
+++ b/content/rest/repos/repos.md
@@ -1,11 +1,13 @@
---
title: Repositories
-intro: 'Use the REST API to manage repositories on {% data variables.product.company_short %}.'
+intro: >-
+ Use the REST API to manage repositories on {% data
+ variables.product.company_short %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/repos/tags.md b/content/rest/repos/tags.md
index 9a2743222f..acd76fce87 100644
--- a/content/rest/repos/tags.md
+++ b/content/rest/repos/tags.md
@@ -6,7 +6,7 @@ intro: Use the REST API to manage tags for a repository.
versions:
fpt: '*'
ghec: '*'
- ghes: '>3.4'
+ ghes: '>=3.5'
topics:
- API
autogenerated: rest
diff --git a/content/rest/scim.md b/content/rest/scim.md
index f0173a637c..71487f52f7 100644
--- a/content/rest/scim.md
+++ b/content/rest/scim.md
@@ -1,6 +1,8 @@
---
title: SCIM
-intro: Use the REST API to control and manage your GitHub organization members access with SCIM.
+intro: >-
+ Use the REST API to control and manage your GitHub organization members access
+ with SCIM.
versions:
ghec: '*'
topics:
diff --git a/content/rest/search.md b/content/rest/search.md
index b4aa260f61..43dbe2bf2d 100644
--- a/content/rest/search.md
+++ b/content/rest/search.md
@@ -1,11 +1,13 @@
---
title: Search
-intro: 'Use the REST API to search for specific items on {% data variables.product.product_name %}.'
+intro: >-
+ Use the REST API to search for specific items on {% data
+ variables.product.product_name %}.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/secret-scanning.md b/content/rest/secret-scanning.md
index 34f4f7ac60..1c6c199f73 100644
--- a/content/rest/secret-scanning.md
+++ b/content/rest/secret-scanning.md
@@ -3,9 +3,9 @@ title: Secret scanning
intro: Use the REST API to retrieve and update secret alerts from a repository.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
redirect_from:
diff --git a/content/rest/teams/discussion-comments.md b/content/rest/teams/discussion-comments.md
index d7737b01b7..dc4cd32522 100644
--- a/content/rest/teams/discussion-comments.md
+++ b/content/rest/teams/discussion-comments.md
@@ -2,12 +2,14 @@
title: Team discussion comments
allowTitleToDifferFromFilename: true
shortTitle: Discussion comments
-intro: 'Use the REST API to get, create, edit, and delete discussion comments on a [team discussion](/rest/reference/teams#discussions) post.'
+intro: >-
+ Use the REST API to get, create, edit, and delete discussion comments on a
+ [team discussion](/rest/reference/teams#discussions) post.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/teams/discussions.md b/content/rest/teams/discussions.md
index 8e8d18d4f4..0eec157eb4 100644
--- a/content/rest/teams/discussions.md
+++ b/content/rest/teams/discussions.md
@@ -2,12 +2,14 @@
title: Team discussions
allowTitleToDifferFromFilename: true
shortTitle: Discussions
-intro: 'Use the REST API to get, create, edit, and delete discussion posts on a team''s page.'
+intro: >-
+ Use the REST API to get, create, edit, and delete discussion posts on a team's
+ page.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/teams/external-groups.md b/content/rest/teams/external-groups.md
index 313ace614c..9023d03115 100644
--- a/content/rest/teams/external-groups.md
+++ b/content/rest/teams/external-groups.md
@@ -1,6 +1,9 @@
---
title: External groups
-intro: Use the REST API to view the external identity provider groups that are available to your organization and manage the connection between external groups and teams in your organization.
+intro: >-
+ Use the REST API to view the external identity provider groups that are
+ available to your organization and manage the connection between external
+ groups and teams in your organization.
versions:
ghae: '*'
ghec: '*'
diff --git a/content/rest/teams/members.md b/content/rest/teams/members.md
index 12b1d1e01a..65ce220f5e 100644
--- a/content/rest/teams/members.md
+++ b/content/rest/teams/members.md
@@ -1,13 +1,15 @@
---
title: Team members
-intro: 'Use the REST API to create and manage membership of teams in your {% data variables.product.product_name %} organization.'
+intro: >-
+ Use the REST API to create and manage membership of teams in your {% data
+ variables.product.product_name %} organization.
allowTitleToDifferFromFilename: true
shortTitle: Members
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/teams/team-sync.md b/content/rest/teams/team-sync.md
index 72cc0ee416..1e15c27970 100644
--- a/content/rest/teams/team-sync.md
+++ b/content/rest/teams/team-sync.md
@@ -1,6 +1,9 @@
---
title: Team synchronization
-intro: 'Use the REST API to manage connections between {% data variables.product.product_name %} teams and external identity provider (IdP) groups.'
+intro: >-
+ Use the REST API to manage connections between {% data
+ variables.product.product_name %} teams and external identity provider (IdP)
+ groups.
versions:
ghec: '*'
topics:
diff --git a/content/rest/teams/teams.md b/content/rest/teams/teams.md
index a9c9e00b3c..67244a07ba 100644
--- a/content/rest/teams/teams.md
+++ b/content/rest/teams/teams.md
@@ -1,11 +1,13 @@
---
title: Teams
-intro: 'Use the REST API to create and manage teams in your {% data variables.product.product_name %} organization.'
+intro: >-
+ Use the REST API to create and manage teams in your {% data
+ variables.product.product_name %} organization.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/users/emails.md b/content/rest/users/emails.md
index e2a4249e62..d0a5fba271 100644
--- a/content/rest/users/emails.md
+++ b/content/rest/users/emails.md
@@ -3,8 +3,8 @@ title: Emails
intro: Use the REST API to manage email addresses of authenticated users.
versions:
fpt: '*'
- ghes: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/users/followers.md b/content/rest/users/followers.md
index 9a8caa9b1d..93f10607df 100644
--- a/content/rest/users/followers.md
+++ b/content/rest/users/followers.md
@@ -3,9 +3,9 @@ title: Followers
intro: Use the REST API to get information about followers of authenticated users.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/users/gpg-keys.md b/content/rest/users/gpg-keys.md
index 050df5a6b6..dc19c6272d 100644
--- a/content/rest/users/gpg-keys.md
+++ b/content/rest/users/gpg-keys.md
@@ -3,9 +3,9 @@ title: GPG Keys
intro: Use the REST API to manage GPG keys of authenticated users.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/users/keys.md b/content/rest/users/keys.md
index ff9b0c17e8..16a4c2d88a 100644
--- a/content/rest/users/keys.md
+++ b/content/rest/users/keys.md
@@ -3,9 +3,9 @@ title: Git SSH Keys
intro: Use the REST API to manage Git SSH keys of authenticated users.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/users/ssh-signing-keys.md b/content/rest/users/ssh-signing-keys.md
index 70a2046934..b237fbbc89 100644
--- a/content/rest/users/ssh-signing-keys.md
+++ b/content/rest/users/ssh-signing-keys.md
@@ -3,8 +3,8 @@ title: SSH signing keys
intro: Use the REST API to manage SSH signing keys of authenticated users.
versions:
fpt: '*'
- ghes: '>=3.7'
ghec: '*'
+ ghes: '>=3.7'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/users/users.md b/content/rest/users/users.md
index bd9364a8b2..2c81fd94db 100644
--- a/content/rest/users/users.md
+++ b/content/rest/users/users.md
@@ -1,11 +1,13 @@
---
title: Users
-intro: Use the REST API to get public and private information about authenticated users.
+intro: >-
+ Use the REST API to get public and private information about authenticated
+ users.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
autogenerated: rest
diff --git a/content/rest/webhooks/repo-config.md b/content/rest/webhooks/repo-config.md
index 6a6742369e..da5bf63abc 100644
--- a/content/rest/webhooks/repo-config.md
+++ b/content/rest/webhooks/repo-config.md
@@ -3,9 +3,9 @@ title: Repository Webhook Configuration
intro: Use the REST API to manage the configuration for repository webhooks.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/webhooks/repo-deliveries.md b/content/rest/webhooks/repo-deliveries.md
index 66a7a4ba8d..2ef7fd3f89 100644
--- a/content/rest/webhooks/repo-deliveries.md
+++ b/content/rest/webhooks/repo-deliveries.md
@@ -3,9 +3,9 @@ title: Repository Webhook Deliveries
intro: Use the REST API interact with deliveries of repository webhooks.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/content/rest/webhooks/repos.md b/content/rest/webhooks/repos.md
index 145282f038..d364524c33 100644
--- a/content/rest/webhooks/repos.md
+++ b/content/rest/webhooks/repos.md
@@ -3,9 +3,9 @@ title: Repository Webhooks
intro: Use the REST API to manage repository webhooks.
versions:
fpt: '*'
- ghes: '*'
ghae: '*'
ghec: '*'
+ ghes: '*'
topics:
- API
allowTitleToDifferFromFilename: true
diff --git a/contributing/videos.md b/contributing/videos.md
index 4b62864dbb..4091437740 100644
--- a/contributing/videos.md
+++ b/contributing/videos.md
@@ -196,94 +196,6 @@ Location: content/education/manage-coursework-with-github-classroom/get-started-
Transcript: TBD
```
-```
-Title: Pull Requests • GitHub & Git Foundations
-URL: https://www.youtube.com/watch?v=d5wpJ5VimSU&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=19
-Description: A 4.5 minute video introducing pull requests.
-Product: Pull requests, getting started
-Versions: All
-Date added: ?
-Location: content/get-started/quickstart/git-and-github-learning-resources.md
-Transcript: TBD
-```
-
-```
-Title: Rebase • GitHub & Git Foundations
-URL: https://www.youtube.com/watch?v=SxzjZtJwOgo&list=PLg7s6cbtAD15G8lNyoaYDuKZSKyJrgwB-&index=22
-Description: A 4.5 minute introduction to using Git Rebase.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/quickstart/git-and-github-learning-resources.md
-Transcript: TBD
-```
-
-```
-Title: Reset• GitHub & Git Foundations
-URL: https://www.youtube.com/watch?v=BKPjPMVB81g
-Description: A 4 minute introduction to using Git Reset.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/quickstart/git-and-github-learning-resources.md
-Transcript: TBD
-```
-
-```
-Title: Forking • GitHub & Git Foundations
-URL: https://www.youtube.com/watch?v=5oJHRbqEofs
-Description: A 2 minute introduction to forking projects on GitHub.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/quickstart/git-and-github-learning-resources.md
-Transcript: TBD
-```
-
-```
-Title: Git & GitHub: Working Locally
-URL: https://www.youtube.com/watch?v=rBbbOouhI-s&index=2&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4
-Description: A 1.5 minute overview of working locally in the command line.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/using-git/about-git.md
-Transcript: TBD
-```
-
-```
-Title: Git & GitHub: Git Status
-URL: https://www.youtube.com/watch?v=SxmveNrZb5k&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4&index=3
-Description: A 1 minute overview of the git status command.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/using-git/about-git.md
-Transcript: TBD
-```
-
-```
-Title: Git & GitHub: Git Pull and Git Push
-URL: https://www.youtube.com/watch?v=-uQHV9GOA0w&index=5&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4
-Description: A 1 minute introduction to using Git Push and Git Pull.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/using-git/about-git.md
-Transcript: TBD
-```
-
-```
-Title: Git & GiHub: Saved Changes
-URL: https://www.youtube.com/watch?v=Vb0Ghkkc2hk&index=4&list=PLg7s6cbtAD17Gw5u8644bgKhgRLiJXdX4
-Description: A 1.5 minute introduction to saving work and pushing commits.
-Product: Getting started
-Versions: All
-Date added: ?
-Location: content/get-started/using-git/about-git.md
-Transcript: TBD
-```
-
```
Title: Planning at scale with Issues – GitHub Universe 2021
URL: https://www.youtube-nocookie.com/embed/ha1KHcPMAEk
diff --git a/data/features/actions-break-glass.yml b/data/features/actions-break-glass.yml
new file mode 100644
index 0000000000..13626fc31a
--- /dev/null
+++ b/data/features/actions-break-glass.yml
@@ -0,0 +1,5 @@
+# Reference: #9225
+# Documentation for Actions break glass feature (bypass branch protection rules)
+versions:
+ fpt: '*'
+ ghec: '*'
diff --git a/data/features/pages-disable-symlinks-on-legacy-pages.yml b/data/features/pages-disable-symlinks-on-legacy-pages.yml
new file mode 100644
index 0000000000..4937db2212
--- /dev/null
+++ b/data/features/pages-disable-symlinks-on-legacy-pages.yml
@@ -0,0 +1,6 @@
+# Issue 9540
+# Disable symlinks on legacy pages build infrastructure
+versions:
+ fpt: '*'
+ ghec: '*'
+ ghes: '>=3.9'
diff --git a/data/graphql/ghae/schema.docs-ghae.graphql b/data/graphql/ghae/schema.docs-ghae.graphql
index a3eb06147b..6aab86f390 100644
--- a/data/graphql/ghae/schema.docs-ghae.graphql
+++ b/data/graphql/ghae/schema.docs-ghae.graphql
@@ -1820,6 +1820,11 @@ type BranchProtectionRule implements Node {
"""
requiredApprovingReviewCount: Int
+ """
+ List of required deployment environments that must be deployed successfully to update matching branches
+ """
+ requiredDeploymentEnvironments: [String]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -1850,6 +1855,11 @@ type BranchProtectionRule implements Node {
"""
requiresConversationResolution: Boolean!
+ """
+ Does this branch require deployment to specific environments before merging
+ """
+ requiresDeployments: Boolean!
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -5778,6 +5788,11 @@ input CreateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -5808,6 +5823,11 @@ input CreateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -41131,6 +41151,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -41161,6 +41186,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -44726,6 +44756,11 @@ type WorkflowRun implements Node & UniformResourceLocatable {
"""
last: Int
): DeploymentReviewConnection!
+
+ """
+ The event that triggered the workflow run
+ """
+ event: String!
id: ID!
"""
diff --git a/data/graphql/ghec/schema.docs.graphql b/data/graphql/ghec/schema.docs.graphql
index 7dd4c7fb5a..6f1aa10151 100644
--- a/data/graphql/ghec/schema.docs.graphql
+++ b/data/graphql/ghec/schema.docs.graphql
@@ -2087,6 +2087,11 @@ type BranchProtectionRule implements Node {
"""
requiredApprovingReviewCount: Int
+ """
+ List of required deployment environments that must be deployed successfully to update matching branches
+ """
+ requiredDeploymentEnvironments: [String]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -2117,6 +2122,11 @@ type BranchProtectionRule implements Node {
"""
requiresConversationResolution: Boolean!
+ """
+ Does this branch require deployment to specific environments before merging
+ """
+ requiresDeployments: Boolean!
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -6216,6 +6226,11 @@ input CreateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -6246,6 +6261,11 @@ input CreateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -51314,6 +51334,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -51344,6 +51369,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -55876,6 +55906,11 @@ type WorkflowRun implements Node & UniformResourceLocatable {
"""
last: Int
): DeploymentReviewConnection!
+
+ """
+ The event that triggered the workflow run
+ """
+ event: String!
id: ID!
"""
diff --git a/data/graphql/schema.docs.graphql b/data/graphql/schema.docs.graphql
index 7dd4c7fb5a..6f1aa10151 100644
--- a/data/graphql/schema.docs.graphql
+++ b/data/graphql/schema.docs.graphql
@@ -2087,6 +2087,11 @@ type BranchProtectionRule implements Node {
"""
requiredApprovingReviewCount: Int
+ """
+ List of required deployment environments that must be deployed successfully to update matching branches
+ """
+ requiredDeploymentEnvironments: [String]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -2117,6 +2122,11 @@ type BranchProtectionRule implements Node {
"""
requiresConversationResolution: Boolean!
+ """
+ Does this branch require deployment to specific environments before merging
+ """
+ requiresDeployments: Boolean!
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -6216,6 +6226,11 @@ input CreateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -6246,6 +6261,11 @@ input CreateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -51314,6 +51334,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiredApprovingReviewCount: Int
+ """
+ The list of required deployment environments
+ """
+ requiredDeploymentEnvironments: [String!]
+
"""
List of required status check contexts that must pass for commits to be accepted to matching branches.
"""
@@ -51344,6 +51369,11 @@ input UpdateBranchProtectionRuleInput {
"""
requiresConversationResolution: Boolean
+ """
+ Are successful deployments required before merging.
+ """
+ requiresDeployments: Boolean
+
"""
Are merge commits prohibited from being pushed to this branch.
"""
@@ -55876,6 +55906,11 @@ type WorkflowRun implements Node & UniformResourceLocatable {
"""
last: Int
): DeploymentReviewConnection!
+
+ """
+ The event that triggered the workflow run
+ """
+ event: String!
id: ID!
"""
diff --git a/data/reusables/actions/actions-importer-legal-notice.md b/data/reusables/actions/actions-importer-legal-notice.md
new file mode 100644
index 0000000000..428fe20be3
--- /dev/null
+++ b/data/reusables/actions/actions-importer-legal-notice.md
@@ -0,0 +1,25 @@
+Portions have been adapted from https://github.com/github/gh-actions-importer/ under the MIT license:
+
+```
+MIT License
+
+Copyright (c) 2022 GitHub
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
diff --git a/data/reusables/actions/supported-github-runners.md b/data/reusables/actions/supported-github-runners.md
index 6f1b790b0c..01e23745ff 100644
--- a/data/reusables/actions/supported-github-runners.md
+++ b/data/reusables/actions/supported-github-runners.md
@@ -65,10 +65,10 @@ Migrate to ubuntu-20.04 or ubuntu-22.04. For more info
macOS Monterey 12
-macos-latest or macos-12
+macos-latest, macos-12, macos-latest-xl or macos-12-xl
-The macos-latest label currently uses the macOS 12 runner image.
+The macos-latest and macos-latest-xl workflow labels currently uses the macOS 12 runner image.
diff --git a/data/reusables/audit_log/audit-log-action-categories.md b/data/reusables/audit_log/audit-log-action-categories.md
index 7ab8ce3b2b..5197aa4f23 100644
--- a/data/reusables/audit_log/audit-log-action-categories.md
+++ b/data/reusables/audit_log/audit-log-action-categories.md
@@ -66,7 +66,6 @@
| `external_group` | Contains activities related to Okta groups.
| `external_identity` | Contains activities related to a user in an Okta group.
{%- endif %}
-| `gist` | Contains activities related to Gists.
| `hook` | Contains activities related to webhooks.
| `integration` | Contains activities related to integrations in an account.
| `integration_installation` | Contains activities related to integrations installed in an account.
diff --git a/data/reusables/billing/billing-hosted-runners.md b/data/reusables/billing/billing-hosted-runners.md
index 8e405b86dc..9c59cf9523 100644
--- a/data/reusables/billing/billing-hosted-runners.md
+++ b/data/reusables/billing/billing-hosted-runners.md
@@ -3,6 +3,7 @@
| Linux | 16 | $0.064 |
| Linux | 32 | $0.128 |
| Linux | 64 | $0.256 |
+| macOS | 12 | $0.32 |
| Windows | 8 | $0.064 |
| Windows | 16 | $0.128 |
| Windows | 32 | $0.256 |
diff --git a/data/reusables/enterprise/saml-or-ldap.md b/data/reusables/enterprise/saml-or-ldap.md
new file mode 100644
index 0000000000..b6b76ac1e5
--- /dev/null
+++ b/data/reusables/enterprise/saml-or-ldap.md
@@ -0,0 +1,5 @@
+{% note %}
+
+**Note:** You can use either SAML or LDAP, but not both.
+
+{% endnote %}
\ No newline at end of file
diff --git a/data/reusables/marketplace/add-payment-method-org.md b/data/reusables/marketplace/add-payment-method-org.md
index 2333ce3f96..c17e60e543 100644
--- a/data/reusables/marketplace/add-payment-method-org.md
+++ b/data/reusables/marketplace/add-payment-method-org.md
@@ -1,5 +1,3 @@
1. If you chose a paid plan, review your payment method.
- - To change the existing payment method on file for the organization, click **Edit...**, then complete the form to add a new payment method. After you successfully add a new payment method, you will automatically return to the order page.
- 
+ - To change the existing payment method on file for the organization, click **Edit**, then complete the form to add a new payment method.
- If there isn't a payment method on file for the organization, click **Add a Payment Method**, then complete the form to add a credit card or PayPal account.
- 
diff --git a/data/reusables/marketplace/add-payment-method-personal.md b/data/reusables/marketplace/add-payment-method-personal.md
index 06de54b358..981998d4d6 100644
--- a/data/reusables/marketplace/add-payment-method-personal.md
+++ b/data/reusables/marketplace/add-payment-method-personal.md
@@ -1,5 +1,3 @@
-1. If you chose a paid plan, review your payment method.
- - To change the existing payment method on file for your personal account, click **Edit...**, then complete the form to add a new payment method. After you successfully add a new payment method, you will automatically return to the order page.
- 
- - If there isn't a payment method on file for your personal account, click **Add a Payment Method**, then complete the form to add a credit card or PayPal account.
- 
+1. If you chose a paid plan, in the "Payment Method" section, review your payment method.
+ - To change the existing payment method on file for your personal account, click **Edit**, then complete the form to add a new payment method.
+ - If there isn't a payment method on file for your personal account, complete the form to add a credit card or PayPal account.
diff --git a/data/reusables/marketplace/cancel-app-billing-settings.md b/data/reusables/marketplace/cancel-app-billing-settings.md
index 4f3df262f2..0dedde4d94 100644
--- a/data/reusables/marketplace/cancel-app-billing-settings.md
+++ b/data/reusables/marketplace/cancel-app-billing-settings.md
@@ -1,2 +1 @@
-1. Next to the app you want to cancel, use the **Edit** drop-down and click **Cancel plan**.
- 
+1. Next to the app you want to cancel, select the **Edit** {% octicon "triangle-down" aria-label="" %} dropdown menu, then click **Cancel plan**.
diff --git a/data/reusables/marketplace/choose-new-plan.md b/data/reusables/marketplace/choose-new-plan.md
index 6871a7dbe5..2682ad5f41 100644
--- a/data/reusables/marketplace/choose-new-plan.md
+++ b/data/reusables/marketplace/choose-new-plan.md
@@ -1,2 +1 @@
-1. Under "Edit your plan," use the drop-down menu, and click on a new plan.
- 
+1. Under "Edit your plan," select the dropdown menu, then click a new plan.
diff --git a/data/reusables/marketplace/choose-new-quantity.md b/data/reusables/marketplace/choose-new-quantity.md
index 8384c6b84f..6905ab9c77 100644
--- a/data/reusables/marketplace/choose-new-quantity.md
+++ b/data/reusables/marketplace/choose-new-quantity.md
@@ -1,2 +1 @@
1. If you chose a unit plan, type a new quantity.
- 
diff --git a/data/reusables/marketplace/choose-plan.md b/data/reusables/marketplace/choose-plan.md
index f5e02aff10..ae3cc3dbce 100644
--- a/data/reusables/marketplace/choose-plan.md
+++ b/data/reusables/marketplace/choose-plan.md
@@ -1,2 +1 @@
-1. On the app's page, under "Pricing and setup," click on the pricing plan you'd like to use.
- 
+1. On the app's page, under "Pricing and setup," click the pricing plan you'd like to use.
diff --git a/data/reusables/marketplace/complete-order-begin-installation.md b/data/reusables/marketplace/complete-order-begin-installation.md
index a1e78a6a20..80c1aa5f4e 100644
--- a/data/reusables/marketplace/complete-order-begin-installation.md
+++ b/data/reusables/marketplace/complete-order-begin-installation.md
@@ -1,2 +1 @@
1. Click **Complete order and begin installation**.
- 
diff --git a/data/reusables/marketplace/confirm-install-account-org.md b/data/reusables/marketplace/confirm-install-account-org.md
index 0b260c8b48..47d93cdda4 100644
--- a/data/reusables/marketplace/confirm-install-account-org.md
+++ b/data/reusables/marketplace/confirm-install-account-org.md
@@ -1,2 +1,9 @@
-1. Under "Billing information," use the Switch billing account drop-down menu, and choose the organization in which you'd like to install the app.
- 
+1. Choose an installation organization for the app. Depending on your organization's terms of service, this process will be slightly different.
+
+ - If you have given {% data variables.product.prodname_dotcom %} permission to collect name and address information for your organization, in the "Billing information" section, select the **Switch billing account** {% octicon "triangle-down" aria-label="The downwards-facing triangle icon" %} dropdown menu, then click the organization in which you'd like to install the app.
+
+ 
+
+ - Otherwise, under "Review your order," select the **Account** dropdown menu, then click the organization in which you'd like to install the app.
+
+ 
diff --git a/data/reusables/marketplace/confirm-install-account-personal.md b/data/reusables/marketplace/confirm-install-account-personal.md
index 3f365dd152..13e82a5eec 100644
--- a/data/reusables/marketplace/confirm-install-account-personal.md
+++ b/data/reusables/marketplace/confirm-install-account-personal.md
@@ -1,2 +1 @@
-1. Under "Billing information," confirm that you're installing the app for your personal account.
- 
+1. Under "Review your order," in the **Account** dropdown menu, confirm that you're installing the app for your personal account.
diff --git a/data/reusables/marketplace/downgrade-app-billing-settings.md b/data/reusables/marketplace/downgrade-app-billing-settings.md
index 7aac24b6c0..88c0e0da3a 100644
--- a/data/reusables/marketplace/downgrade-app-billing-settings.md
+++ b/data/reusables/marketplace/downgrade-app-billing-settings.md
@@ -1,2 +1 @@
-1. Next to the app you'd like to downgrade, use the **Edit** drop-down and click **Change plan** or **Cancel plan**.
- 
+1. Next to the app you'd like to downgrade, select the **Edit** {% octicon "triangle-down" aria-label="" %} dropdown menu, then click **Change plan** or **Cancel plan**.
diff --git a/data/reusables/marketplace/install-buy.md b/data/reusables/marketplace/install-buy.md
index 3fb9a930e9..9596c68b11 100644
--- a/data/reusables/marketplace/install-buy.md
+++ b/data/reusables/marketplace/install-buy.md
@@ -1,2 +1 @@
1. Click **Install it for free**, **Buy with {% data variables.product.prodname_dotcom %}**, or **Try free for 14 days**.
- 
diff --git a/data/reusables/marketplace/issue-plan-changes.md b/data/reusables/marketplace/issue-plan-changes.md
index 2dfc03b3ac..bca3334f73 100644
--- a/data/reusables/marketplace/issue-plan-changes.md
+++ b/data/reusables/marketplace/issue-plan-changes.md
@@ -1,2 +1 @@
1. Review the information about your new plan and billing information, then click **Issue plan changes**.
- 
diff --git a/data/reusables/marketplace/select-installation-repos.md b/data/reusables/marketplace/select-installation-repos.md
index a0673d48eb..5991f9d286 100644
--- a/data/reusables/marketplace/select-installation-repos.md
+++ b/data/reusables/marketplace/select-installation-repos.md
@@ -1,2 +1 @@
1. If you chose to give the app access to limited repositories instead of all of your repositories, type the name of each repository you'd like to give the app access to, then click on the repository name to select it.
- 
diff --git a/data/reusables/marketplace/upgrade-app-billing-settings.md b/data/reusables/marketplace/upgrade-app-billing-settings.md
index b6f6b04c03..2a9f337d13 100644
--- a/data/reusables/marketplace/upgrade-app-billing-settings.md
+++ b/data/reusables/marketplace/upgrade-app-billing-settings.md
@@ -1,2 +1 @@
-1. Next to the app you want to upgrade, use the **Edit** drop-down and click **Change plan**.
- 
+1. Next to the app you want to upgrade, select the **Edit** {% octicon "triangle-down" aria-label="" %} dropdown menu, then click **Change plan**.
diff --git a/data/reusables/marketplace/visit-marketplace.md b/data/reusables/marketplace/visit-marketplace.md
index 01acf2f8ce..43812a650c 100644
--- a/data/reusables/marketplace/visit-marketplace.md
+++ b/data/reusables/marketplace/visit-marketplace.md
@@ -1,2 +1,3 @@
-1. At the top of any page, click **Marketplace**.
- 
+1. In the navigation bar, at the top of any page, click **Marketplace**.
+
+ 
diff --git a/data/reusables/organizations/about-outside-collaborators.md b/data/reusables/organizations/about-outside-collaborators.md
new file mode 100644
index 0000000000..19165c1f28
--- /dev/null
+++ b/data/reusables/organizations/about-outside-collaborators.md
@@ -0,0 +1 @@
+An outside collaborator is a person who is not a member of your organization, but has access to one or more of your organization's repositories.
\ No newline at end of file
diff --git a/data/reusables/pages/admin-must-push.md b/data/reusables/pages/admin-must-push.md
index 79f244c85a..d86b6257d2 100644
--- a/data/reusables/pages/admin-must-push.md
+++ b/data/reusables/pages/admin-must-push.md
@@ -1,5 +1,5 @@
-{% tip %}
+{% note %}
**Note**: {% ifversion pages-custom-workflow %}If you are publishing from a branch and{% else %}If{% endif %} your site has not published automatically, make sure someone with admin permissions and a verified email address has pushed to the publishing source.
-{% endtip %}
+{% endnote %}
diff --git a/data/reusables/pages/pages-custom-workflow-beta.md b/data/reusables/pages/pages-custom-workflow-beta.md
index 6cb0002083..71e293f877 100644
--- a/data/reusables/pages/pages-custom-workflow-beta.md
+++ b/data/reusables/pages/pages-custom-workflow-beta.md
@@ -2,7 +2,7 @@
{% note %}
-Note: Publishing your {% data variables.product.prodname_pages %} site with a custom {% data variables.product.prodname_actions %} workflow is in beta and subject to change.
+**Note:** Publishing your {% data variables.product.prodname_pages %} site with a custom {% data variables.product.prodname_actions %} workflow is in beta and subject to change.
{% endnote %}
diff --git a/data/reusables/pages/symlink-removal.md b/data/reusables/pages/symlink-removal.md
new file mode 100644
index 0000000000..aa7dc8b995
--- /dev/null
+++ b/data/reusables/pages/symlink-removal.md
@@ -0,0 +1,5 @@
+{% note %}
+
+**Note:** If your repository contains symbolic links, you will need to publish your site using a {% data variables.product.prodname_actions %} workflow. For more information about {% data variables.product.prodname_actions %}, see "[Actions](/actions)."
+
+{% endnote %}
\ No newline at end of file
diff --git a/data/reusables/user-settings/modify_oauth_app.md b/data/reusables/user-settings/modify_oauth_app.md
index f444505813..ec0914b7bb 100644
--- a/data/reusables/user-settings/modify_oauth_app.md
+++ b/data/reusables/user-settings/modify_oauth_app.md
@@ -1,2 +1 @@
1. Select the {% data variables.product.prodname_oauth_app %} you want to modify.
-
diff --git a/data/reusables/user-settings/update_oauth_app.md b/data/reusables/user-settings/update_oauth_app.md
index 475e2d2b3e..d5be38de39 100644
--- a/data/reusables/user-settings/update_oauth_app.md
+++ b/data/reusables/user-settings/update_oauth_app.md
@@ -1,2 +1 @@
1. Click **Update application**.
-
diff --git a/data/ui.yml b/data/ui.yml
index 0ffc62a14c..3cfe3eaf0d 100644
--- a/data/ui.yml
+++ b/data/ui.yml
@@ -127,6 +127,10 @@ products:
api_versioned: The REST API is now versioned.
api_version_info: For more information, see "About API versioning."
ghes_api_versioned: After a site administrator upgrades your Enterprise Server instance to {{ firstGhesReleaseWithApiVersions.versionTitle }} or later, the REST API will be versioned. To learn how to find your instance's version, see "About versions of GitHub Docs".
+ redirect_notice: We've recently moved some of the REST API documentation.
+ redirect_repo: If you can't find what you're looking for, you might try the new {{ newRestPagesLinks }} REST API pages.
+ redirect_enterprise: If you can't find what you're looking for, you might try the {{ actionsPageLink }} REST API page.
+ actions_api_title: Actions
versioning:
about_versions: About REST API versions
reference:
@@ -152,6 +156,13 @@ products:
query: Query parameters
path: Path parameters
body: Body parameters
+ response_options:
+ example: Example response
+ schema: Response schema
+ code_sample_options:
+ ghcli: GitHub CLI
+ javascript: JavaScript
+ curl: cURL
webhooks:
action_type_switch_error: There was an error switching webhook action types.
action_type: Action type
@@ -208,6 +219,7 @@ product_landing:
reference: Reference
overview: Overview
guides: Guides
+ explore_guides: Explore guides
code_examples: Code examples
search_code_examples: Search code examples
search_results_for: Search results for
@@ -231,6 +243,10 @@ product_landing:
explore_release_notes: Explore release notes
view: View all
view_transcript: View video transcript
+ all_docs: 'All {{ title }} docs'
+ code_example:
+ search_button: Search
+ search_examples: 'Search code examples:'
product_guides:
start_path: Start learning path
learning_paths: '{{ productMap[currentProduct].name }} learning paths'
diff --git a/lib/excluded-links.js b/lib/excluded-links.js
index e621deae57..b864a915c6 100644
--- a/lib/excluded-links.js
+++ b/lib/excluded-links.js
@@ -49,4 +49,6 @@ export default [
'https://lastpass.com/auth/',
'https://zenodo.org/account/settings/github/',
'https://intellij-support.jetbrains.com/hc/en-us/articles/207241085-Locating-IDE-log-files',
+ 'https://developer.apple.com/documentation/swift_packages',
+ 'https://developer.android.com/studio/run/emulator-acceleration',
]
diff --git a/lib/render-content/plugins/rewrite-asset-img-tags.js b/lib/render-content/plugins/rewrite-asset-img-tags.js
index e17f5fb33a..a5bdac9974 100644
--- a/lib/render-content/plugins/rewrite-asset-img-tags.js
+++ b/lib/render-content/plugins/rewrite-asset-img-tags.js
@@ -22,8 +22,6 @@ function structuredClonePolyfill(obj) {
}
}
-const SUPPORT_AVIF_ASSETS = Boolean(JSON.parse(process.env.SUPPORT_AVIF_ASSETS || 'false'))
-
// This number must match a width we're willing to accept in a dynamic
// asset URL.
const MAX_WIDTH = 1000
@@ -45,12 +43,9 @@ const matcher = (node) =>
*
*
*
- * []
*
*
*
- * Note that the AVIF format is optional as it depends on the, off by
- * default, `process.env.SUPPORT_AVIF_ASSETS`.
* */
export default function rewriteAssetImgTags() {
return (tree) => {
@@ -58,33 +53,6 @@ export default function rewriteAssetImgTags() {
if (node.properties.src.endsWith('.png')) {
const copyPNG = structuredClonePolyfill(node)
- /**
- * If AVIF is support, we consider it "better" by injecting it first.
- * If the user agent supports both WebP and AVIF and it gets
- * HTML that looks like this:
- *
- *
- *
- *
- *
- *
- *
- * Then, browsers like Chrome will try the AVIF format first.
- * Other browsers, that don't support AVIF will use WebP.
- * */
- if (SUPPORT_AVIF_ASSETS) {
- const sourceAVIF = {
- type: 'element',
- tagName: 'source',
- properties: {
- srcset: injectMaxWidth(node.properties.src.replace(/\.png$/, '.avif'), MAX_WIDTH),
- type: 'image/avif',
- },
- children: [],
- }
- node.children.push(sourceAVIF)
- }
-
const sourceWEBP = {
type: 'element',
tagName: 'source',
diff --git a/lib/update-internal-links.js b/lib/update-internal-links.js
index ddaa92c1c4..3b7eb81804 100644
--- a/lib/update-internal-links.js
+++ b/lib/update-internal-links.js
@@ -1,8 +1,10 @@
import fs from 'fs'
+import path from 'path'
import { visit } from 'unist-util-visit'
import { fromMarkdown } from 'mdast-util-from-markdown'
import { toMarkdown } from 'mdast-util-to-markdown'
+import yaml from 'js-yaml'
import frontmatter from './read-frontmatter.js'
import {
@@ -18,6 +20,17 @@ import getRedirect, { splitPathByLanguage } from './get-redirect.js'
import nonEnterpriseDefaultVersion from './non-enterprise-default-version.js'
import { deprecated } from './enterprise-server-releases.js'
+function objectClone(obj) {
+ try {
+ return structuredClone(obj)
+ } catch {
+ // Need to polyfill for Node 16 folks
+ // Using `yaml.load(yaml.dump(...))` is safe enough because this
+ // data itself came from the Yaml deserializing in frontmatter().
+ return yaml.load(yaml.dump(obj))
+ }
+}
+
// That magical string that can be turned into th actual title when
// we, at runtime, render out the links
const AUTOTITLE = 'AUTOTITLE'
@@ -65,12 +78,89 @@ async function updateFile(file, context, opts) {
const rawContent = fs.readFileSync(file, 'utf8')
const { data, content } = frontmatter(rawContent)
+ // Since this function can process both `.md` and `.yml` files,
+ // when treating a `.md` file, the `data` from `frontmatter(rawContent)`
+ // is easy. But when dealing a file like `data/learning-tracks/foo.yml`
+ // then the the `frontmatter(rawContent).data` always becomes `{}`.
+ // And since the Yaml file might contain arrays of internal linked
+ // pathnames, we have to re-read it fully.
+ if (file.endsWith('.yml')) {
+ Object.assign(data, yaml.load(content))
+ }
+
let newContent = content
const ast = fromMarkdown(newContent)
const replacements = []
const skips = []
+ // The day we know with confidence that everyone us on Node >=17,
+ // we can change this to use `structuredClone` without the polyfill
+ // technique.
+ const newData = objectClone(data)
+
+ const ANY = Symbol('any')
+ const IS_ARRAY = Symbol('is array')
+
+ // This configuration determines which nested things to bother looking
+ // into.
+ const HAS_LINKS = {
+ featuredLinks: ['gettingStarted', 'startHere', 'guideCards', 'popular'],
+ introLinks: ANY,
+ includeGuides: IS_ARRAY,
+ }
+
+ if (
+ file.split(path.sep).includes('data') &&
+ file.split(path.sep).includes('learning-tracks') &&
+ file.endsWith('.yml')
+ ) {
+ // data/learning-tracks/**/*.yml files are different because the keys
+ // are abitrary but what they might all have in common is a key
+ // there called `guides`
+ for (const key of Object.keys(data)) {
+ HAS_LINKS[key] = ['guides']
+ }
+ }
+
+ for (const [key, seek] of Object.entries(HAS_LINKS)) {
+ if (!(key in data)) {
+ continue
+ }
+ try {
+ if (Array.isArray(data[key])) {
+ if ((Array.isArray(seek) && seek.includes(key)) || seek === IS_ARRAY || seek === ANY) {
+ const better = getNewFrontmatterLinkList(data[key], context, opts, file)
+ if (!equalArray(better, data[key])) {
+ newData[key] = better
+ }
+ }
+ } else {
+ for (const [group, thing] of Object.entries(data[key])) {
+ if (Array.isArray(thing)) {
+ if (
+ (Array.isArray(seek) && seek.includes(group)) ||
+ seek === IS_ARRAY ||
+ seek === ANY
+ ) {
+ const better = getNewFrontmatterLinkList(thing, context, opts, file)
+ if (!equalArray(better, thing)) {
+ newData[key][group] = better
+ }
+ }
+ }
+ }
+ }
+ } catch (error) {
+ // When in strict mode, if it throws an error that stacktrace will
+ // bubble up to the CLI. And the CLI will mention which file it
+ // was processing when it failed. But we have a valuable piece of
+ // information here about which frontmatter key it was that failed.
+ console.warn(`The frontmatter key it processed and failed was '${key}'`)
+ throw error
+ }
+ }
+
const lineOffset = rawContent.replace(content, '').split(/\n/g).length - 1
visit(ast, matcher, (node) => {
@@ -121,16 +211,11 @@ async function updateFile(file, context, opts) {
}
}
if (opts.fixHref) {
- try {
- const betterHref = getNewHref(node.url, context, opts)
- // getNewHref() might return a deliberate `undefined` if the
- // new href value could not be computed for some reason.
- if (betterHref !== undefined) {
- newHref = betterHref
- }
- } catch (err) {
- console.error('File in process:', file)
- throw err
+ const betterHref = getNewHref(node.url, context, opts, file)
+ // getNewHref() might return a deliberate `undefined` if the
+ // new href value could not be computed for some reason.
+ if (betterHref !== undefined) {
+ newHref = betterHref
}
}
const newAsMarkdown = `[${newTitle}](${newHref})`
@@ -156,8 +241,10 @@ async function updateFile(file, context, opts) {
return {
data,
content,
+ rawContent,
newContent,
replacements,
+ newData,
skips,
}
}
@@ -205,7 +292,89 @@ function matcher(node) {
return false
}
-function getNewHref(href, context, opts) {
+function getNewFrontmatterLinkList(list, context, opts, file) {
+ /**
+ * The `list` is expected to all be strings. Sometimes they're like this:
+ *
+ * /search-github/searching-on-github/searching-for-repositories
+ *
+ * Sometimes they're like this:
+ *
+ * {% ifversion fpt or ghec or ghes > 3.4 %}/pages/getting-started-with-github-pages{% endif %}
+ *
+ * In the case of Liquid, we have to temporarily remove it to be able to
+ * test the path as a URL.
+ **/
+
+ const better = []
+ for (const entry of list) {
+ if (/{%\s*else\s*%}/.test(entry)) {
+ console.warn(`Skipping frontmatter link with {% else %} in it: ${entry}. (file: ${file})`)
+ better.push(entry)
+ continue
+ }
+ const pure = stripLiquid(entry)
+ let asURL = '/en'
+ if (!pure.startsWith('/')) {
+ asURL += '/'
+ }
+ asURL += pure
+ if (asURL in context.pages) {
+ better.push(entry)
+ } else {
+ const redirected = getRedirect(asURL, context)
+ if (redirected === undefined) {
+ if (opts.strict) {
+ throw new Error(
+ `Neither redirecting nor findable '${asURL}' in frontmatter link. (file: ${file})`
+ )
+ }
+ console.warn(
+ 'WARNING: A frontmatter link appears to be broken. ' +
+ `Neither redirect or a findable page: ${pure}. (file: ${file})`
+ )
+ better.push(entry)
+ } else {
+ // Perhaps it just redirected to a specific version
+ const redirectedWithoutLanguage = getPathWithoutLanguage(redirected)
+ const asURLWithoutVersion = getPathWithoutVersion(redirectedWithoutLanguage)
+ if (asURLWithoutVersion === pure) {
+ better.push(entry)
+ } else {
+ better.push(entry.replace(pure, asURLWithoutVersion))
+ }
+ }
+ }
+ }
+ return better
+}
+
+const liquidStartRex = /^{%-?\s*ifversion .+?\s*%}/
+const liquidEndRex = /{%-?\s*endif\s*-?%}$/
+
+// Return
+//
+// /foo/bar
+//
+// if the text input was
+//
+// {% ifversion ghes%}/foo/bar{%endif %}
+//
+// And if no liquid, just return as is.
+function stripLiquid(text) {
+ if (liquidStartRex.test(text) && liquidEndRex.test(text)) {
+ return text.replace(liquidStartRex, '').replace(liquidEndRex, '').trim()
+ } else if (text.includes('{')) {
+ throw new Error(`Unsupported Liquid in frontmatter link list (${text})`)
+ }
+ return text
+}
+
+function equalArray(arr1, arr2) {
+ return arr1.length === arr2.length && arr1.every((item, i) => item === arr2[i])
+}
+
+function getNewHref(href, context, opts, file) {
const { currentLanguage } = context
const parsed = new URL(href, 'https://docs.github.com')
const hash = parsed.hash
@@ -218,10 +387,11 @@ function getNewHref(href, context, opts) {
const [language, withoutLanguage] = splitPathByLanguage(newHref, currentLanguage)
if (withoutLanguage !== newHref) {
// It means the link already had a language in it
+ const msg = `Unable to cope with internal links with hardcoded language '${newHref}' (file: ${file})`
if (opts.strict) {
- throw new Error(`Unable to cope with internal links with hardcoded language (${newHref})`)
+ throw new Error(msg)
} else {
- console.warn(`WARNING: Link had hardcoded language in it (${href})`)
+ console.warn(`WARNING: ${msg}`)
return
}
}
@@ -235,12 +405,11 @@ function getNewHref(href, context, opts) {
if (redirected === undefined) {
if (!context.pages[newHrefWithLanguage]) {
// If this happens, it's very possible that it's a broken link
+ const msg = `A link appears to be broken. Neither redirect or a findable page '${href}' (${file})`
if (opts.strict) {
- throw new Error(`Neither redirecting nor findable '${href}'`)
+ throw new Error(msg)
} else {
- console.warn(
- `WARNING: A link appears to be broken. Neither redirect or a findable page (${href})`
- )
+ console.warn(`WARNING: ${msg}`)
return
}
}
diff --git a/middleware/dynamic-assets.js b/middleware/dynamic-assets.js
index a5e8467133..310c381b6f 100644
--- a/middleware/dynamic-assets.js
+++ b/middleware/dynamic-assets.js
@@ -114,39 +114,6 @@ export default async function dynamicAssets(req, res, next) {
}
}
- // From PNG to AVIF, if the PNG exists
- if (req.path.endsWith('.avif')) {
- const { url, maxWidth, error } = deconstructImageURL(req.path)
- if (error) {
- return res.status(400).type('text/plain').send(error.toString())
- }
- try {
- const originalBuffer = await fs.readFile(url.slice(1).replace(/\.avif$/, '.png'))
- const image = sharp(originalBuffer)
-
- if (maxWidth) {
- const { width } = await image.metadata()
- if (width > maxWidth) {
- image.resize({ width: maxWidth })
- }
- }
- const buffer = await image
- .avif({
- // The default is 4 (max is 9). Because this is a dynamic thing
- // and AVIF encoding is slow for large images, go for a smaller
- // effort to be sure it can't take too long on a busy server.
- effort: 2,
- })
- .toBuffer()
- assetCacheControl(res)
- return res.type('image/avif').send(buffer)
- } catch (error) {
- if (error.code !== 'ENOENT') {
- throw error
- }
- }
- }
-
// Cache the 404 so it won't be re-attempted over and over
defaultCacheControl(res)
diff --git a/package-lock.json b/package-lock.json
index 680014bbdd..26cf04710f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -161,7 +161,7 @@
"rimraf": "^4.1.1",
"robots-parser": "^3.0.0",
"sass": "^1.52.3",
- "start-server-and-test": "^1.14.0",
+ "start-server-and-test": "^2.0.0",
"strip-ansi": "^7.0.1",
"typescript": "^4.7.3"
},
@@ -4726,23 +4726,6 @@
}
}
},
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/parser": {
"version": "5.53.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.53.0.tgz",
@@ -4770,23 +4753,6 @@
}
}
},
- "node_modules/@typescript-eslint/parser/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/scope-manager": {
"version": "5.53.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.53.0.tgz",
@@ -4831,23 +4797,6 @@
}
}
},
- "node_modules/@typescript-eslint/type-utils/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/types": {
"version": "5.53.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.53.0.tgz",
@@ -4888,23 +4837,6 @@
}
}
},
- "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/@typescript-eslint/utils": {
"version": "5.53.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.53.0.tgz",
@@ -5338,6 +5270,12 @@
"node": ">= 8"
}
},
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
"node_modules/argparse": {
"version": "2.0.1",
"license": "Python-2.0"
@@ -5431,6 +5369,12 @@
"node": ">=8"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
"node_modules/axe-core": {
"version": "4.3.5",
"dev": true,
@@ -7231,6 +7175,18 @@
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/comma-separated-tokens": {
"version": "2.0.2",
"license": "MIT",
@@ -7576,8 +7532,9 @@
"integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
},
"node_modules/debug": {
- "version": "4.3.2",
- "license": "MIT",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dependencies": {
"ms": "2.1.2"
},
@@ -7699,6 +7656,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/dependency-graph": {
"version": "0.11.0",
"dev": true,
@@ -9634,14 +9600,15 @@
"license": "W3C"
},
"node_modules/follow-redirects": {
- "version": "1.14.8",
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
- "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -9670,6 +9637,20 @@
"node": ">=0.10.0"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -13839,14 +13820,15 @@
}
},
"node_modules/joi": {
- "version": "17.6.0",
+ "version": "17.8.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.3.tgz",
+ "integrity": "sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==",
"devOptional": true,
- "license": "BSD-3-Clause",
"dependencies": {
"@hapi/hoek": "^9.0.0",
"@hapi/topo": "^5.0.0",
"@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.0",
+ "@sideway/formula": "^3.0.1",
"@sideway/pinpoint": "^2.0.0"
}
},
@@ -14136,23 +14118,6 @@
"node": "^12.20.0 || >=14"
}
},
- "node_modules/lint-staged/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
"node_modules/lint-staged/node_modules/execa": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
@@ -15573,8 +15538,12 @@
}
},
"node_modules/minimist": {
- "version": "1.2.6",
- "license": "MIT"
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
"node_modules/minimist-options": {
"version": "4.1.0",
@@ -18180,9 +18149,10 @@
}
},
"node_modules/rxjs": {
- "version": "7.5.5",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
+ "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
"dev": true,
- "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
}
@@ -18874,17 +18844,19 @@
}
},
"node_modules/start-server-and-test": {
- "version": "1.14.0",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.0.tgz",
+ "integrity": "sha512-UqKLw0mJbfrsG1jcRLTUlvuRi9sjNuUiDOLI42r7R5fA9dsFoywAy9DoLXNYys9B886E4RCKb+qM1Gzu96h7DQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
+ "arg": "^5.0.2",
"bluebird": "3.7.2",
"check-more-types": "2.24.0",
- "debug": "4.3.2",
+ "debug": "4.3.4",
"execa": "5.1.1",
"lazy-ass": "1.6.0",
"ps-tree": "1.2.0",
- "wait-on": "6.0.0"
+ "wait-on": "7.0.1"
},
"bin": {
"server-test": "src/bin/start.js",
@@ -18895,22 +18867,33 @@
"node": ">=6"
}
},
- "node_modules/start-server-and-test/node_modules/wait-on": {
- "version": "6.0.0",
+ "node_modules/start-server-and-test/node_modules/axios": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
+ "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
- "axios": "^0.21.1",
- "joi": "^17.4.0",
+ "follow-redirects": "^1.14.9",
+ "form-data": "^4.0.0"
+ }
+ },
+ "node_modules/start-server-and-test/node_modules/wait-on": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.0.1.tgz",
+ "integrity": "sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==",
+ "dev": true,
+ "dependencies": {
+ "axios": "^0.27.2",
+ "joi": "^17.7.0",
"lodash": "^4.17.21",
- "minimist": "^1.2.5",
- "rxjs": "^7.1.0"
+ "minimist": "^1.2.7",
+ "rxjs": "^7.8.0"
},
"bin": {
"wait-on": "bin/wait-on"
},
"engines": {
- "node": ">=10.0.0"
+ "node": ">=12.0.0"
}
},
"node_modules/state-toggle": {
@@ -24358,17 +24341,6 @@
"regexpp": "^3.2.0",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- }
}
},
"@typescript-eslint/parser": {
@@ -24381,17 +24353,6 @@
"@typescript-eslint/types": "5.53.0",
"@typescript-eslint/typescript-estree": "5.53.0",
"debug": "^4.3.4"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- }
}
},
"@typescript-eslint/scope-manager": {
@@ -24414,17 +24375,6 @@
"@typescript-eslint/utils": "5.53.0",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- }
}
},
"@typescript-eslint/types": {
@@ -24446,17 +24396,6 @@
"is-glob": "^4.0.3",
"semver": "^7.3.7",
"tsutils": "^3.21.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- }
}
},
"@typescript-eslint/utils": {
@@ -24805,6 +24744,12 @@
"picomatch": "^2.0.4"
}
},
+ "arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true
+ },
"argparse": {
"version": "2.0.1"
},
@@ -24863,6 +24808,12 @@
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
"dev": true
},
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true
+ },
"axe-core": {
"version": "4.3.5",
"dev": true
@@ -26206,6 +26157,15 @@
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
},
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
"comma-separated-tokens": {
"version": "2.0.2"
},
@@ -26435,7 +26395,9 @@
"integrity": "sha512-xxwlswWOlGhzgQ4TKzASQkUhqERI3egRNqgV4ScR8wlANA/A9tZ7miXa44vTTKEq5l7vWoL5G57bG3zA+Kow0A=="
},
"debug": {
- "version": "4.3.2",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"requires": {
"ms": "2.1.2"
}
@@ -26503,6 +26465,12 @@
"object-keys": "^1.1.1"
}
},
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true
+ },
"dependency-graph": {
"version": "0.11.0",
"dev": true
@@ -27842,7 +27810,9 @@
"version": "5.2.0"
},
"follow-redirects": {
- "version": "1.14.8"
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
},
"for-in": {
"version": "1.0.2",
@@ -27855,6 +27825,17 @@
"for-in": "^1.0.1"
}
},
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dev": true,
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ },
"form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -30904,13 +30885,15 @@
}
},
"joi": {
- "version": "17.6.0",
+ "version": "17.8.3",
+ "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.3.tgz",
+ "integrity": "sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==",
"devOptional": true,
"requires": {
"@hapi/hoek": "^9.0.0",
"@hapi/topo": "^5.0.0",
"@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.0",
+ "@sideway/formula": "^3.0.1",
"@sideway/pinpoint": "^2.0.0"
}
},
@@ -31107,15 +31090,6 @@
"integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
"dev": true
},
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
"execa": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
@@ -31935,7 +31909,9 @@
}
},
"minimist": {
- "version": "1.2.6"
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
},
"minimist-options": {
"version": "4.1.0",
@@ -33650,7 +33626,9 @@
}
},
"rxjs": {
- "version": "7.5.5",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
+ "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
@@ -34141,27 +34119,42 @@
}
},
"start-server-and-test": {
- "version": "1.14.0",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-2.0.0.tgz",
+ "integrity": "sha512-UqKLw0mJbfrsG1jcRLTUlvuRi9sjNuUiDOLI42r7R5fA9dsFoywAy9DoLXNYys9B886E4RCKb+qM1Gzu96h7DQ==",
"dev": true,
"requires": {
+ "arg": "^5.0.2",
"bluebird": "3.7.2",
"check-more-types": "2.24.0",
- "debug": "4.3.2",
+ "debug": "4.3.4",
"execa": "5.1.1",
"lazy-ass": "1.6.0",
"ps-tree": "1.2.0",
- "wait-on": "6.0.0"
+ "wait-on": "7.0.1"
},
"dependencies": {
- "wait-on": {
- "version": "6.0.0",
+ "axios": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
+ "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"dev": true,
"requires": {
- "axios": "^0.21.1",
- "joi": "^17.4.0",
+ "follow-redirects": "^1.14.9",
+ "form-data": "^4.0.0"
+ }
+ },
+ "wait-on": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-7.0.1.tgz",
+ "integrity": "sha512-9AnJE9qTjRQOlTZIldAaf/da2eW0eSRSgcqq85mXQja/DW3MriHxkpODDSUEg+Gri/rKEcXUZHe+cevvYItaog==",
+ "dev": true,
+ "requires": {
+ "axios": "^0.27.2",
+ "joi": "^17.7.0",
"lodash": "^4.17.21",
- "minimist": "^1.2.5",
- "rxjs": "^7.1.0"
+ "minimist": "^1.2.7",
+ "rxjs": "^7.8.0"
}
}
}
diff --git a/package.json b/package.json
index 1bb38a5a0c..45fbce8a68 100644
--- a/package.json
+++ b/package.json
@@ -163,7 +163,7 @@
"rimraf": "^4.1.1",
"robots-parser": "^3.0.0",
"sass": "^1.52.3",
- "start-server-and-test": "^1.14.0",
+ "start-server-and-test": "^2.0.0",
"strip-ansi": "^7.0.1",
"typescript": "^4.7.3"
},
diff --git a/script/update-internal-links.js b/script/update-internal-links.js
index 2549a590a4..caec25bceb 100755
--- a/script/update-internal-links.js
+++ b/script/update-internal-links.js
@@ -94,8 +94,10 @@ async function main(files, opts) {
const results = await updateInternalLinks(actualFiles, options)
let exitCheck = 0
- for (const { file, content, newContent, replacements, data } of results) {
- if (content !== newContent) {
+ for (const { file, rawContent, content, newContent, replacements, data, newData } of results) {
+ const differentContent = content !== newContent
+ const differentData = !equalObject(data, newData)
+ if (differentContent || differentData) {
if (opts.verbose || opts.check) {
if (opts.check) {
exitCheck++
@@ -104,7 +106,10 @@ async function main(files, opts) {
console.log(
opts.dryRun ? 'Would change...' : 'Will change...',
chalk.bold(file),
- chalk.dim(`${replacements.length} change${replacements.length !== 1 ? 's' : ''}`)
+ differentContent
+ ? chalk.dim(`${replacements.length} change${replacements.length !== 1 ? 's' : ''}`)
+ : '',
+ differentData ? chalk.dim('different data') : ''
)
for (const { asMarkdown, newAsMarkdown, line, column } of replacements) {
console.log(' ', chalk.red(asMarkdown))
@@ -112,6 +117,7 @@ async function main(files, opts) {
console.log(' ', chalk.dim(`line ${line} column ${column}`))
console.log('')
}
+ printObjectDifference(data, newData, rawContent)
}
}
if (!opts.dryRun) {
@@ -119,7 +125,7 @@ async function main(files, opts) {
// Markdown page. To save it you need the frontmatter data too.
fs.writeFileSync(
file,
- frontmatter.stringify(newContent, data, { lineWidth: 10000 }),
+ frontmatter.stringify(newContent, newData, { lineWidth: 10000 }),
'utf-8'
)
}
@@ -159,6 +165,74 @@ async function main(files, opts) {
}
}
+function printObjectDifference(objFrom, objTo, rawContent, parentKey = '') {
+ // Assume both object are of the same shape, but if a key's value is
+ // an array, and it's different, print that difference.
+ for (const [key, value] of Object.entries(objFrom)) {
+ const combinedKey = `${parentKey}.${key}`
+ if (Array.isArray(value) && !equalArray(value, objTo[key])) {
+ console.log(`In frontmatter key: ${chalk.bold(combinedKey)}`)
+ value.forEach((entry, i) => {
+ if (entry !== objTo[key][i]) {
+ console.log(chalk.red(`- ${entry}`))
+ console.log(chalk.green(`+ ${objTo[key][i]}`))
+ const needle = new RegExp(`- ${entry}\\b`)
+ const index = rawContent.split(/\n/g).findIndex((line) => needle.test(line))
+ console.log(' ', chalk.dim(`line ${(index && index + 1) || 'unknown'}`))
+ console.log('')
+ }
+ })
+ } else if (typeof value === 'object' && value !== null) {
+ printObjectDifference(value, objTo[key], rawContent, combinedKey)
+ }
+ }
+}
+
+// This assumes them to be the same shape with possibly different node values
+function equalObject(obj1, obj2) {
+ if (!equalSet(new Set(Object.keys(obj1)), new Set(Object.keys(obj2)))) {
+ return false
+ }
+ for (const [key, value] of Object.entries(obj1)) {
+ if (Array.isArray(value)) {
+ // Can't easily compare two arrays because the entries might be objects.
+ if (value.length !== obj2[key].length) return false
+ let i = 0
+ for (const each of value) {
+ if (isObject(each)) {
+ if (!equalObject(each, obj2[key][i])) {
+ return false
+ }
+ } else {
+ if (each !== obj2[key][i]) {
+ return false
+ }
+ }
+ i++
+ }
+ } else if (isObject(value)) {
+ if (!equalObject(value, obj2[key])) {
+ return false
+ }
+ } else if (value !== obj2[key]) {
+ return false
+ }
+ }
+ return true
+}
+
+function isObject(thing) {
+ return typeof thing === 'object' && thing !== null && !Array.isArray(thing)
+}
+
+function equalSet(set1, set2) {
+ return set1.size === set2.size && [...set1].every((x) => set2.has(x))
+}
+
+function equalArray(arr1, arr2) {
+ return arr1.length === arr2.length && arr1.every((item, i) => item === arr2[i])
+}
+
function countByTree(results) {
const files = {}
const changes = {}
diff --git a/src/graphql/data/dotcom/changelog.json b/src/graphql/data/dotcom/changelog.json
index af441ab650..ef6eaf87c0 100644
--- a/src/graphql/data/dotcom/changelog.json
+++ b/src/graphql/data/dotcom/changelog.json
@@ -1,4 +1,23 @@
[
+ {
+ "schemaChanges": [
+ {
+ "title": "The GraphQL schema includes these changes:",
+ "changes": [
+ "
Field requiredDeploymentEnvironments was added to object type BranchProtectionRule
",
+ "
Field requiresDeployments was added to object type BranchProtectionRule
",
+ "
Input field requiredDeploymentEnvironments was added to input object type CreateBranchProtectionRuleInput
",
+ "
Input field requiresDeployments was added to input object type CreateBranchProtectionRuleInput
",
+ "
Input field requiredDeploymentEnvironments was added to input object type UpdateBranchProtectionRuleInput
",
+ "
Input field requiresDeployments was added to input object type UpdateBranchProtectionRuleInput