Skip to content

Commit 1317bd9

Browse files
authored
Merge branch 'main' into resolve-typo-commit-signature-verification
2 parents 53f738a + 1da3694 commit 1317bd9

File tree

216 files changed

+1335
-985
lines changed

Some content is hidden

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

216 files changed

+1335
-985
lines changed

.github/workflows/azure-preview-env-deploy.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,16 @@ jobs:
198198
# Deploy ARM template is idempotent
199199
# Note: once the resources exist the image tag must change for a new deployment to occur (the image tag includes workflow run number, run attempt, as well as sha)
200200
- name: Run ARM deploy
201-
id: deploy
201+
# This 'if' will be truth, if this workflow is...
202+
# - run as a workflow_dispatch
203+
# - run because of a push to main (or gh-readonly-queue/main)
204+
# - run as a regular pull request
205+
# But if it's a pull request, *and* for whatever reason, the pull
206+
# request has "Auto-merge" enabled, don't bother.
207+
# The idea is that if auto-merge has been abled, by humans or by
208+
# bots, they have no intention of viewing the deployed preview anyway.
209+
# This saves time because the PR can merge sooner.
210+
if: ${{ !github.event.pull_request.auto_merge }}
202211
uses: azure/arm-deploy@841b12551939c88af8f6df767c24c38a5620fd0d
203212
with:
204213
resourceGroupName: ${{ secrets.PREVIEW_ENV_RESOURCE_GROUP }}
24.1 KB
Loading

components/page-footer/Contribution.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { GitPullRequestIcon } from '@primer/octicons-react'
2+
23
import { useMainContext } from 'components/context/MainContext'
34
import { useTranslation } from 'components/hooks/useTranslation'
45

@@ -11,7 +12,7 @@ export const Contribution = () => {
1112
: 'https://github.com/github/docs'
1213

1314
return (
14-
<div className="f5 contribution">
15+
<div className="hide-sm hide-md f5 contribution">
1516
<h2 className="f4 mb-3">{t`title`}</h2>
1617
<p className="max-w-xs color-fg-muted mb-3">{t`body`}</p>
1718
<a className="btn color-border-accent-emphasis" href={contributionHref}>
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
---
2+
title: Connecting to a private network
3+
intro: 'You can connect {% data variables.product.prodname_dotcom %}-hosted runners to resources on a private network, including package registries, secret managers, and other on-premises services.'
4+
versions:
5+
fpt: '*'
6+
ghes: '*'
7+
ghec: '*'
8+
type: how_to
9+
topics:
10+
- Actions
11+
- Developer
12+
---
13+
14+
{% data reusables.actions.enterprise-beta %}
15+
{% data reusables.actions.enterprise-github-hosted-runners %}
16+
17+
## About {% data variables.product.prodname_dotcom %}-hosted runners networking
18+
19+
By default, {% data variables.product.prodname_dotcom %}-hosted runners have access to the public internet. However, you may also want these runners to access resources on your private network, such as a package registry, a secret manager, or other on-premise services.
20+
21+
{% data variables.product.prodname_dotcom %}-hosted runners are shared across all {% data variables.product.prodname_dotcom %} customers, so you will need a way of connecting your private network to just your runners while they are running your workflows. There are a few different approaches you could take to configure this access, each with different advantages and disadvantages.
22+
23+
{% ifversion fpt or ghec or ghes > 3.4 %}
24+
### Using an API Gateway with OIDC
25+
26+
With {% data variables.product.prodname_actions %}, you can use OpenID Connect (OIDC) tokens to authenticate your workflow outside of {% data variables.product.prodname_actions %}. For example, you could run an API Gateway on the edge of your private network that authenticates incoming requests with the OIDC token and then makes API requests on behalf of your workflow in your private network.
27+
28+
The following diagram gives an overview of this solution's architecture:
29+
30+
![Diagram of an OIDC gateway](/assets/images/help/images/actions-oidc-gateway.png)
31+
32+
It's important that you authenticate not just that the OIDC token came from {% data variables.product.prodname_actions %}, but that it came specifically from your expected workflows, so that other {% data variables.product.prodname_actions %} users aren't able to access services in your private network. You can use OIDC claims to create these conditions. For more information, see "[Defining trust conditions on cloud roles using OIDC claims](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect#defining-trust-conditions-on-cloud-roles-using-oidc-claims)."
33+
34+
The main disadvantage of this approach is you have to implement the API gateway to make requests on your behalf, as well as run it on the edge of your network.
35+
36+
But there are various advantages too:
37+
- You don't need to configure any firewalls, or modify the routing of your private network.
38+
- The API gateway is stateless, and so it scales horizontally to handle high availability and high throughput.
39+
40+
For more information, see [a reference implementation of an API Gateway](https://github.com/github/actions-oidc-gateway-example) (note that this requires customization for your use case and is not ready-to-run as-is), and "[About security hardening with OpenID Connect](/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)".
41+
{% endif %}
42+
43+
### Using WireGuard to create a network overlay
44+
45+
If you don't want to maintain separate infrastructure for an API Gateway, you can create an overlay network between your runner and a service in your private network, by running WireGuard in both places.
46+
47+
There are various disadvantages to this approach:
48+
49+
- To reach WireGuard running on your private service, you will need a well-known IP address and port that your workflow can reference: this can either be a public IP address and port, a port mapping on a network gateway, or a service that dynamically updates DNS.
50+
- WireGuard doesn't handle NAT traversal out of the box, so you'll need to identify a way to provide this service.
51+
- This connection is one-to-one, so if you need high availability or high throughput you'll need to build that on top of WireGuard.
52+
- You'll need to generate and securely store keys for both the runner and your private service. WireGuard uses UDP, so your network must support UDP traffic.
53+
54+
There are some advantages too, as you can run WireGuard on an existing server so you don't have to maintain separate infrastructure, and it's well supported on {% data variables.product.prodname_dotcom %}-hosted runners.
55+
56+
### Example: Configuring WireGuard
57+
58+
This example workflow configures WireGuard to connect to a private service.
59+
60+
For this example, the WireGuard instance running in the private network has this configuration:
61+
- Overlay network IP address of `192.168.1.1`
62+
- Public IP address and port of `1.2.3.4:56789`
63+
- Public key `examplepubkey1234...`
64+
65+
The WireGuard instance in the {% data variables.product.prodname_actions %} runner has this configuration:
66+
- Overlay network IP address of `192.168.1.2`
67+
- Private key stores as an {% data variables.product.prodname_actions %} secret under `WIREGUARD_PRIVATE_KEY`
68+
69+
```yaml
70+
name: WireGuard example
71+
72+
on:
73+
workflow_dispatch:
74+
75+
jobs:
76+
wireguard_example:
77+
runs-on: ubuntu-latest
78+
steps:
79+
- run: sudo apt install wireguard
80+
81+
- run: echo "${{ secrets.WIREGUARD_PRIVATE_KEY }}" > privatekey
82+
83+
- run: sudo ip link add dev wg0 type wireguard
84+
85+
- run: sudo ip address add dev wg0 192.168.1.2 peer 192.168.1.1
86+
87+
- run: sudo wg set wg0 listen-port 48123 private-key privatekey peer examplepubkey1234... allowed-ips 0.0.0.0/0 endpoint 1.2.3.4:56789
88+
89+
- run: sudo ip link set up dev wg0
90+
91+
- run: curl -vvv http://192.168.1.1
92+
```
93+
94+
For more information, see [WireGuard's Quick Start](https://www.wireguard.com/quickstart/), as well as "[Encrypted Secrets](/actions/security-guides/encrypted-secrets)" for how to securely store keys.
95+
96+
### Using Tailscale to create a network overlay
97+
98+
Tailscale is a commercial product built on top of WireGuard. This option is very similar to WireGuard, except Tailscale is more of a complete product experience instead of an open source component.
99+
100+
It's disadvantages are similar to WireGuard: The connection is one-to-one, so you might need to do additional work for high availability or high throughput. You still need to generate and securely store keys. The protocol is still UDP, so your network must support UDP traffic.
101+
102+
However, there are some advantages over WireGuard: NAT traversal is built-in, so you don't need to expose a port to the public internet. It is by far the quickest of these options to get up and running, since Tailscale provides an {% data variables.product.prodname_actions %} workflow with a single step to connect to the overlay network.
103+
104+
For more information, see the [Tailscale GitHub Action](https://github.com/tailscale/github-action), as well as "[Encrypted Secrets](/actions/security-guides/encrypted-secrets)" for how to securely store keys.

content/actions/using-github-hosted-runners/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ children:
99
- /about-github-hosted-runners
1010
- /monitoring-your-current-jobs
1111
- /customizing-github-hosted-runners
12+
- /connecting-to-a-private-network
1213
shortTitle: Use GitHub-hosted runners
1314
---
1415

content/admin/configuration/configuring-github-connect/enabling-automatic-user-license-sync-for-your-enterprise.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ topics:
1717
- Licensing
1818
shortTitle: Automatic user license sync
1919
---
20-
## About license synchronization
20+
## About automatic license synchronization
21+
22+
{% data reusables.enterprise-licensing.unique-user-licensing-model %}
2123

2224
{% data reusables.enterprise-licensing.about-license-sync %} For more information, see "[About {% data variables.product.prodname_github_connect %}](/admin/configuration/configuring-github-connect/about-github-connect#data-transmission-for-github-connect)."
2325

content/admin/configuration/configuring-your-enterprise/verifying-or-approving-a-domain-for-your-enterprise.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ You can confirm that the websites and email addresses listed on the profiles of
3030

3131
After you verify ownership of your enterprise account's domains, a "Verified" badge will display on the profile of each organization that has the domain listed on its profile. {% data reusables.organizations.verified-domains-details %}
3232

33-
Organization owners will be able to verify the identity of organization members by viewing each member's email address within the verified domain.
33+
For domains configured at the enterprise level, enterprise owners can verify the identity of organization members by viewing each member's email address within the verified domain. Enterprise owners can also view a list of enterprise members who don't have an email address from a verified domain associated with their user account on {% data variables.product.prodname_dotcom %}. For more information, see "[Viewing members without an email address from a verified domain](/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise#viewing-members-without-an-email-address-from-a-verified-domain)."
3434

3535
After you verify domains for your enterprise account, you can restrict email notifications to verified domains for all the organizations owned by your enterprise account. For more information, see "[Restricting email notifications for your enterprise](/admin/policies/enforcing-policies-for-your-enterprise/restricting-email-notifications-for-your-enterprise)."
3636

content/admin/user-management/managing-users-in-your-enterprise/viewing-people-in-your-enterprise.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,17 @@ If your enterprise uses {% data variables.product.prodname_emus %}, you can also
108108

109109
You can view a list of all dormant users {% ifversion ghes or ghae %} who have not been suspended and {% endif %}who are not site administrators. {% data reusables.enterprise-accounts.dormant-user-activity-threshold %} For more information, see "[Managing dormant users](/admin/user-management/managing-users-in-your-enterprise/managing-dormant-users)."
110110

111+
{% ifversion ghec or ghes > 3.1 %}
112+
## Viewing members without an email address from a verified domain
113+
114+
You can view a list of members in your enterprise who don't have an email address from a verified domain associated with their user account on {% data variables.product.prodname_dotcom_the_website %}.
115+
116+
{% data reusables.enterprise-accounts.access-enterprise %}
117+
{% data reusables.enterprise-accounts.settings-tab %}
118+
{% data reusables.enterprise-accounts.verified-domains-tab %}
119+
1. Under "Notification preferences", click the {% octicon "eye" aria-label="The github eye icon" %} **View enterprise members without an approved or verified domain email** link.
120+
{% endif %}
121+
111122
## Further reading
112123

113124
- "[Roles in an enterprise](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)"

content/billing/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,11 @@ topics:
4343
children:
4444
- /managing-your-github-billing-settings
4545
- /managing-billing-for-your-github-account
46+
- /managing-your-license-for-github-enterprise
47+
- /managing-licenses-for-visual-studio-subscriptions-with-github-enterprise
4648
- /managing-billing-for-github-actions
4749
- /managing-billing-for-github-codespaces
4850
- /managing-billing-for-github-packages
49-
- /managing-your-license-for-github-enterprise
50-
- /managing-licenses-for-visual-studio-subscriptions-with-github-enterprise
5151
- /managing-billing-for-github-advanced-security
5252
- /managing-billing-for-github-sponsors
5353
- /managing-billing-for-github-marketplace-apps

content/billing/managing-billing-for-your-github-account/about-billing-for-your-enterprise.md

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ You can see your current usage in your [Azure account portal](https://portal.azu
4545

4646
{% ifversion ghec %}
4747

48-
{% data variables.product.company_short %} bills monthly for the total number of members in your enterprise account, as well as any additional services you use with {% data variables.product.prodname_ghe_cloud %}.
48+
{% data variables.product.company_short %} bills monthly for the total number of licensed seats for your organization or enterprise account, as well as any additional services you use with {% data variables.product.prodname_ghe_cloud %}, such as {% data variables.product.prodname_actions %} minutes. For more information about the licensed seats portion of your bill, see "[About per-user pricing](/billing/managing-billing-for-your-github-account/about-per-user-pricing)."
4949

5050
{% elsif ghes %}
5151

@@ -64,40 +64,14 @@ Each user on {% data variables.product.product_location %} consumes a seat on yo
6464
Administrators for your enterprise account on {% data variables.product.prodname_dotcom_the_website %} can access and manage billing for the enterprise. For more information, see "[Roles in an enterprise]({% ifversion ghes %}/enterprise-cloud@latest{% endif %}/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise){% ifversion ghec %}."{% elsif ghes %}" in the {% data variables.product.prodname_ghe_cloud %} documentation.{% endif %}
6565

6666
{% ifversion ghec %}
67-
6867
{% data reusables.enterprise-accounts.billing-microsoft-ea-overview %} For more information, see "[Connecting an Azure subscription to your enterprise](/billing/managing-billing-for-your-github-account/connecting-an-azure-subscription-to-your-enterprise)."
69-
7068
{% endif %}
7169

7270
{% ifversion ghes %}
73-
7471
{% data reusables.billing.ghes-with-no-enterprise-account %}
75-
7672
{% endif %}
7773

78-
{% ifversion ghec %}
79-
80-
## Per-user pricing
81-
82-
{% data variables.product.company_short %} bills for services consumed on {% data variables.product.prodname_dotcom_the_website %}, each user for deployments of {% data variables.product.prodname_ghe_server %}, and each member of organizations on {% data variables.product.prodname_ghe_cloud %}. For more information about per-user pricing, see "[About per-user pricing](/billing/managing-billing-for-your-github-account/about-per-user-pricing)."
83-
84-
{% data reusables.billing.per-user-pricing-reference %}
85-
86-
For more information about roles, see "[Roles in an enterprise](/admin/user-management/managing-users-in-your-enterprise/roles-in-an-enterprise)" or "[Roles in an organization](/organizations/managing-peoples-access-to-your-organization-with-roles/roles-in-an-organization)."
87-
88-
For more information about outside collaborators, see "[Adding outside collaborators to repositories in your organization](/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization)."
89-
90-
{% endif %}
91-
92-
## About synchronization of license usage
93-
94-
{% data reusables.enterprise.about-deployment-methods %}
95-
96-
{% data reusables.enterprise-licensing.about-license-sync %} For more information, see {% ifversion ghec %}"[Syncing license usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}](/enterprise-server/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)" in the {% data variables.product.prodname_ghe_server %} documentation.{% elsif ghes %}"[Syncing license usage between {% data variables.product.prodname_ghe_server %} and {% data variables.product.prodname_ghe_cloud %}](/billing/managing-your-license-for-github-enterprise/syncing-license-usage-between-github-enterprise-server-and-github-enterprise-cloud)."{% endif %}
97-
9874
{% endif %}
99-
10075
## Further reading
10176

102-
- "[About enterprise accounts](/admin/overview/about-enterprise-accounts)"{% ifversion ghec or ghes %}
103-
- "[About licenses for GitHub Enterprise](/billing/managing-your-license-for-github-enterprise/about-licenses-for-github-enterprise)"{% endif %}
77+
- "[About enterprise accounts](/admin/overview/about-enterprise-accounts)"

0 commit comments

Comments
 (0)