Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2358841
Update FPT/GHEC versioning and access information for Dependency revi…
sophietheking Mar 9, 2022
2dbb344
Added versioning to page
sophietheking Mar 9, 2022
31eaded
Added versioning to pull request page
sophietheking Mar 9, 2022
89d26c0
Merge branch 'main' into sophie-4821
sophietheking Mar 9, 2022
d4e84e2
Merge branch 'main' into sophie-4821
sophietheking Mar 9, 2022
646e132
Merge branch 'main' into sophie-4821
sophietheking Mar 10, 2022
fe7a0be
Feb/March updates to projects
guntrip Mar 10, 2022
27cdf08
Merge branch 'main' into repo-sync
Octomerger Mar 10, 2022
df251b1
Fix schema in examples (#26076)
felicitymay Mar 10, 2022
ae8beec
Sidebar Nav improvements (#21500)
ramyaparimi Mar 10, 2022
7832cb5
Merge pull request #26065 from github/repo-sync
heiskr Mar 10, 2022
a1aad93
Restrict workflow access to runner groups (#25463)
Mar 10, 2022
fb52ab2
breadcrumbs fail on some enterprise-server URIs
peterbe Mar 10, 2022
2cb4d60
Merge pull request #26086 from github/peterbe-1673-breadcrumbs-fail-o…
heiskr Mar 10, 2022
bbe65a2
Fix deployment category index page versions (#26088)
lucascosti Mar 10, 2022
f70514e
Merge branch 'main' into repo-sync
Octomerger Mar 11, 2022
ef324ab
Merge pull request #26080 from github/repo-sync
Octomerger Mar 11, 2022
2f925d5
Remove lazy highlighting for now (#26091)
rachmari Mar 11, 2022
97d7107
Update content/code-security/supply-chain-security/understanding-your…
sophietheking Mar 11, 2022
b787871
Update content/pull-requests/collaborating-with-pull-requests/reviewi…
sophietheking Mar 11, 2022
9fea1ad
Update content/code-security/supply-chain-security/understanding-your…
sophietheking Mar 11, 2022
a33d579
Update content/code-security/supply-chain-security/understanding-your…
sophietheking Mar 11, 2022
8f67f63
Merge branch 'main' into sophie-4821
sophietheking Mar 11, 2022
37dbbb4
Merge pull request #26048 from github/sophie-4821
sophietheking Mar 11, 2022
334c8fa
Merge branch 'main' into repo-sync
Octomerger Mar 11, 2022
d6806e8
Merge pull request #26096 from github/repo-sync
Octomerger Mar 11, 2022
e898e03
Merge branch 'main' into repo-sync
Octomerger Mar 11, 2022
a6b4d5e
Merge pull request #26097 from github/repo-sync
Octomerger Mar 11, 2022
59618c6
[GHEC version] Version content for IP allow lists (#26067)
lecoursen Mar 11, 2022
7850f08
Update key to rerender RestCodeSamples (#26093)
gracepark Mar 11, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/images/help/issues/burnup-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/help/issues/iterations-example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 3 additions & 2 deletions components/rest/RestCodeSamples.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { xCodeSample } from './types'
import { useTranslation } from 'components/hooks/useTranslation'
import { CodeBlock } from './CodeBlock'
import { Fragment } from 'react'

type Props = {
slug: string
Expand All @@ -11,7 +12,7 @@ export function RestCodeSamples({ slug, xCodeSamples }: Props) {
const { t } = useTranslation('products')

return (
<>
<Fragment key={xCodeSamples + slug}>
<h4 id={`${slug}--code-samples`}>
<a href={`#${slug}--code-samples`}>{`${t('rest.reference.code_samples')}`}</a>
</h4>
Expand All @@ -29,6 +30,6 @@ export function RestCodeSamples({ slug, xCodeSamples }: Props) {
}
return sampleElements
})}
</>
</Fragment>
)
}
3 changes: 1 addition & 2 deletions components/sidebar/SidebarProduct.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { Link } from 'components/Link'
import { ProductTreeNode, useMainContext } from 'components/context/MainContext'
import { AllProductsLink } from 'components/sidebar/AllProductsLink'
import { EventType, sendEvent } from 'components/lib/events'

import styles from './SidebarProduct.module.scss'

export const SidebarProduct = () => {
Expand Down Expand Up @@ -154,7 +153,7 @@ const CollapsibleSection = (props: SectionProps) => {
<details open={defaultOpen} onToggle={onToggle} className="details-reset">
<summary className="outline-none">
<div className="d-flex flex-justify-between">
<div className="pl-4 pr-1 py-2 f6 text-uppercase d-block flex-auto mr-3 color-fg-default no-underline text-bold">
<div className="pl-4 pr-1 py-2 f5 d-block flex-auto mr-3 color-fg-default no-underline text-bold">
{title}
</div>
<span style={{ marginTop: 7 }} className="flex-shrink-0 pr-3">
Expand Down
3 changes: 2 additions & 1 deletion content/actions/deployment/about-deployments/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ shortTitle: About deployments
intro: 'Learn how deployments can run with {% data variables.product.prodname_actions %} workflows.'
versions:
fpt: '*'
ghae: issue-4856
ghes: '*'
ghae: '*'
ghec: '*'
children:
- /about-continuous-deployment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ shortTitle: Deploying Xcode applications
intro: 'You can sign Xcode apps within your continuous integration (CI) workflow by installing an Apple code signing certificate on {% data variables.product.prodname_actions %} runners.'
versions:
fpt: '*'
ghae: issue-4856
ghes: '*'
ghae: '*'
ghec: '*'
children:
- /installing-an-apple-certificate-on-macos-runners-for-xcode-development
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ shortTitle: Managing your deployments
intro: You can review the past activity of your deployments.
versions:
fpt: '*'
ghae: issue-4856
ghes: '*'
ghae: '*'
ghec: '*'
children:
- /viewing-deployment-history
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ shortTitle: Targeting different environments
intro: You can configure environments with protection rules and secrets. A workflow job that references an environment must follow any protection rules for the environment before running or accessing the environment's secrets.
versions:
fpt: '*'
ghae: issue-4856
ghes: '*'
ghae: '*'
ghec: '*'
children:
- /using-environments-for-deployment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ For more information about installing and using self-hosted runners, see "[Addin
- 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.
- 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 or ghae %}
- Can be organized into groups to restrict access to specific {% if restrict-groups-to-workflows %}workflows, {% endif %}organizations and repositories. For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups)."{% endif %}

## Requirements for self-hosted runner machines

Expand Down Expand Up @@ -186,7 +187,7 @@ github-registry-files.githubusercontent.com

In addition, your workflow may require access to other network resources. For example, if your workflow installs packages or publishes containers to {% data variables.product.prodname_dotcom %} Packages, then the runner will also require access to those network endpoints.

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](/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](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-security-settings-in-your-enterprise)".
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 %}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,12 @@ versions:
ghae: '*'
ghec: '*'
type: tutorial
shortTitle: Manage runner groups
shortTitle: Manage access to runners
---

{% data reusables.actions.enterprise-beta %}
{% data reusables.actions.enterprise-github-hosted-runners %}
{% data reusables.actions.restrict-runner-workflow-beta %}

## About self-hosted runner groups

Expand All @@ -30,9 +31,9 @@ If you use {% data variables.product.prodname_ghe_cloud %}, you can create addit
{% endif %}

{% ifversion ghec or ghes or ghae %}
Self-hosted runner groups are used to control access to self-hosted runners at the organization and enterprise level. Enterprise admins can configure access policies that control which organizations in an enterprise have access to the runner group. Organization admins can configure access policies that control which repositories in an organization have access to the runner group.
Self-hosted runner groups are used to control access to self-hosted runners at the organization and enterprise level. Enterprise owners can configure access policies that control which organizations {% if restrict-groups-to-workflows %}and workflows {% endif %}in an enterprise have access to the runner group. Organization owners can configure access policies that control which repositories{% if restrict-groups-to-workflows %} and workflows{% endif %} in an organization have access to the runner group.

When an enterprise admin grants an organization access to a runner group, organization admins can see the runner group listed in the organization's self-hosted runner settings. The organizations admins can then assign additional granular repository access policies to the enterprise runner group.
When an enterprise owner grants an organization access to a runner group, organization owners can see the runner group listed in the organization's self-hosted runner settings. The organization owners can then assign additional granular repository{% if restrict-groups-to-workflows %} and workflow{% endif %} access policies to the enterprise runner group.

When new runners are created, they are automatically assigned to the default group. Runners can only be in one group at a time. You can move runners from the default group to another group. For more information, see "[Moving a self-hosted runner to a group](#moving-a-self-hosted-runner-to-a-group)."

Expand All @@ -42,13 +43,14 @@ All organizations have a single default self-hosted runner group. Organizations

Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can move a runner from the default group to any group you create.

When creating a group, you must choose a policy that defines which repositories have access to the runner group.
When creating a group, you must choose a policy that defines which repositories{% if restrict-groups-to-workflows %} and workflows{% endif %} have access to the runner group.

{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.actions.settings-sidebar-actions-runner-groups %}
1. In the "Runner groups" section, click **New runner group**.
1. Enter a name for your runner group.
{% data reusables.actions.runner-group-assign-policy-repo %}

{% warning %}
Expand All @@ -58,6 +60,7 @@ When creating a group, you must choose a policy that defines which repositories
For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories)."

{% endwarning %}
{% data reusables.actions.runner-group-assign-policy-workflow %}{%- if restrict-groups-to-workflows %} Organization-owned runner groups cannot access workflows from a different organization in the enterprise; instead, you must create an enterprise-owned runner group.{% endif %}
{% data reusables.actions.self-hosted-runner-create-group %}
{% elsif ghae or ghes < 3.4 %}
{% data reusables.organizations.navigate-to-org %}
Expand Down Expand Up @@ -88,7 +91,7 @@ When creating a group, you must choose a policy that defines which repositories

## Creating a self-hosted runner group for an enterprise

Enterprises can add their self-hosted runners to groups for access management. Enterprises can create groups of self-hosted runners that are accessible to specific organizations in the enterprise account. Organization admins can then assign additional granular repository access policies to the enterprise runner groups. For information about how to create a self-hosted runner group with the REST API, see the enterprise endpoints in the [{% data variables.product.prodname_actions %} REST API](/rest/reference/actions#self-hosted-runner-groups).
Enterprises can add their self-hosted runners to groups for access management. Enterprises can create groups of self-hosted runners that are accessible to specific organizations in the enterprise account{% if restrict-groups-to-workflows %} or to specific workflows{% endif %}. Organization owners can then assign additional granular repository{% if restrict-groups-to-workflows %} or workflow{% endif %} access policies to the enterprise runner groups. For information about how to create a self-hosted runner group with the REST API, see the enterprise endpoints in the [{% data variables.product.prodname_actions %} REST API](/rest/reference/actions#self-hosted-runner-groups).

Self-hosted runners are automatically assigned to the default group when created, and can only be members of one group at a time. You can assign the runner to a specific group during the registration process, or you can later move the runner from the default group to a custom group.

Expand All @@ -115,17 +118,21 @@ When creating a group, you must choose a policy that defines which organizations

![Add runner group options](/assets/images/help/settings/actions-enterprise-account-add-runner-group-options-ae.png)
{%- endif %}
{% data reusables.actions.runner-group-assign-policy-workflow %}
1. Click **Save group** to create the group and apply the policy.

{% endif %}

## Changing the access policy of a self-hosted runner group

You can update the access policy of a runner group, or rename a runner group.
For runner groups in an enterprise, you can change what organizations in the enterprise can access a runner group{% if restrict-groups-to-workflows %} or restrict what workflows a runner group can run{% endif %}. For runner groups in an organization, you can change what repositories in the organization can access a runner group{% if restrict-groups-to-workflows %} or restrict what workflows a runner group can run{% endif %}.

### Changing what organizations or repositories can access a runner group

{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.actions.self-hosted-runner-groups-navigate-to-repo-org-enterprise %}
{% data reusables.actions.settings-sidebar-actions-runner-groups-selection %}
1. Modify the access options, or change the runner group name.
1. For runner groups in an enterprise, under **Organization access**, modify what organizations can access the runner group. For runner groups in an organization, under **Repository access**, modify what repositories can access the runner group.

{%- ifversion fpt or ghec or ghes %}
{% warning %}
Expand All @@ -142,6 +149,35 @@ You can update the access policy of a runner group, or rename a runner group.
{% data reusables.actions.self-hosted-runner-configure-runner-group-access %}
{% endif %}

{% if restrict-groups-to-workflows %}
### Changing what workflows can access a runner group
You can configure a self-hosted runner group to run either selected workflows or all workflows. For example, you might use this setting to protect secrets that are stored on self-hosted runners or to standardize deployment workflows by restricting a runner group to run only a specific reusable workflow. This setting cannot be overridden if you are configuring an organization's runner group that was shared by an enterprise.
{% data reusables.actions.self-hosted-runner-groups-navigate-to-repo-org-enterprise %}
{% data reusables.actions.settings-sidebar-actions-runner-groups-selection %}
1. Under **Workflow access**, select the dropdown menu and click **Selected workflows**.
1. Click {% octicon "gear" aria-label="the gear icon" %}.
1. Enter a comma separated list of the workflows that can access the runner group. Use the full path, including the repository name and owner. Pin the workflow to a branch, tag, or full SHA. For example: `octo-org/octo-repo/.github/workflows/build.yml@v2, octo-org/octo-repo/.github/workflows/deploy.yml@d6dc6c96df4f32fa27b039f2084f576ed2c5c2a5, monalisa/octo-test/.github/workflows/test.yml@main`.

Only jobs directly defined within the selected workflows will have access to the runner group.

Organization-owned runner groups cannot access workflows from a different organization in the enterprise; instead, you must create an enterprise-owned runner group.

1. Click **Save**.

{% endif %}

## Changing the name of a runner group

{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.actions.self-hosted-runner-groups-navigate-to-repo-org-enterprise %}
{% data reusables.actions.settings-sidebar-actions-runner-groups-selection %}
1. Change the runner group name.

{% elsif ghae or ghes < 3.4 %}
{% data reusables.actions.self-hosted-runner-configure-runner-group %}
1. Change the runner group name.
{% endif %}

{% ifversion ghec or ghes or ghae %}
## Automatically adding a self-hosted runner to a group

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ This list describes the recommended approaches for accessing repository data wit

{% ifversion fpt or ghec %}As a result, self-hosted runners should almost [never be used for public repositories](/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories) on {% data variables.product.product_name %}, because any user can open pull requests against the repository and compromise the environment. Similarly, be{% elsif ghes or ghae %}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{% ifversion fpt or ghes > 3.1 or ghae or ghec %}, depending on its settings, can grant {% else %} grants {% endif %}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.

When a self-hosted runner is defined at the organization or enterprise level, {% data variables.product.product_name %} 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. For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups)."
When a self-hosted runner is defined at the organization or enterprise level, {% data variables.product.product_name %} 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 {% if restrict-groups-to-workflows %}workflows, {% endif %}organizations and repositories can access runner groups. For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-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.
Expand Down
2 changes: 2 additions & 0 deletions content/actions/using-workflows/reusing-workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -307,3 +307,5 @@ For information about using the REST API to query the audit log for an organizat
## Next steps

To continue learning about {% data variables.product.prodname_actions %}, see "[Events that trigger workflows](/actions/learn-github-actions/events-that-trigger-workflows)."

{% if restrict-groups-to-workflows %}You can standardize deployments by creating a self-hosted runner group that can only execute a specific reusable workflow. For more information, see "[Managing access to self-hosted runners using groups](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups)."{% endif %}
Loading