diff --git a/assets/images/help/codespaces/maximum-minutes-timeout.png b/assets/images/help/codespaces/maximum-minutes-timeout.png index ff8efdc2a9c5..5f577b82fb31 100644 Binary files a/assets/images/help/codespaces/maximum-minutes-timeout.png and b/assets/images/help/codespaces/maximum-minutes-timeout.png differ diff --git a/assets/images/help/codespaces/maximum-value-policy-setting.png b/assets/images/help/codespaces/maximum-value-policy-setting.png new file mode 100644 index 000000000000..e0c0a9a45f50 Binary files /dev/null and b/assets/images/help/codespaces/maximum-value-policy-setting.png differ diff --git a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md index d610e8e7ad3f..dc02397ab4b0 100644 --- a/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md +++ b/content/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication.md @@ -107,8 +107,10 @@ Before using this method, be sure that you can receive text messages. Carrier ra {% data reusables.user-settings.security %} {% data reusables.two_fa.enable-two-factor-authentication %} 1. At the bottom of the page, next to "SMS authentication", click **Select**. +1. Complete the CAPTCHA challenge, which helps protect against spam and abuse. 1. Under "Setup SMS authentication", select your country code and type your mobile phone number, including the area code. When your information is correct, click **Send authentication code**. 1. You'll receive a text message with a security code. On {% data variables.product.product_name %}, type the code into the field under "Verify the code sent to your phone" and click **Continue**. + - If you need to edit the phone number you entered, you'll need to complete another CAPTCHA challenge. {% data reusables.two_fa.save_your_recovery_codes_during_2fa_setup %} {% data reusables.two_fa.backup_options_during_2fa_enrollment %} diff --git a/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md b/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md index c308124b18a5..c8d20b4a6ed2 100644 --- a/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md +++ b/content/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security.md @@ -56,7 +56,9 @@ You can determine how many licenses you'll need for {% data variables.product.pr {% endif %} {% ifversion ghec %} -If you use {% data variables.product.prodname_ghe_cloud %} with an enterprise account and pay with a credit card, you can purchase a {% data variables.product.prodname_GH_advanced_security %} license from your enterprise account settings. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security)." +If you use {% data variables.product.prodname_ghe_cloud %} with an enterprise account and pay with a credit card, you can purchase a {% data variables.product.prodname_GH_advanced_security %} license or start a free trial from your enterprise account settings. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security)" and "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security)." + +You can not purchase {% data variables.product.prodname_GH_advanced_security %} or start a {% data variables.product.prodname_GH_advanced_security %} trial if you are currently on a {% data variables.product.prodname_ghe_cloud %} trial. If you pay by invoice, contact {% data variables.contact.contact_enterprise_sales %} to discuss licensing {% data variables.product.prodname_GH_advanced_security %} for your enterprise. diff --git a/content/billing/managing-billing-for-github-advanced-security/index.md b/content/billing/managing-billing-for-github-advanced-security/index.md index d1d9db34a2dc..51aba2fca898 100644 --- a/content/billing/managing-billing-for-github-advanced-security/index.md +++ b/content/billing/managing-billing-for-github-advanced-security/index.md @@ -11,6 +11,7 @@ versions: ghes: '*' ghec: '*' children: + - /setting-up-a-trial-of-github-advanced-security - /about-billing-for-github-advanced-security - /signing-up-for-github-advanced-security - /viewing-committer-information-for-github-advanced-security diff --git a/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md b/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md new file mode 100644 index 000000000000..074cdb2dde0d --- /dev/null +++ b/content/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security.md @@ -0,0 +1,41 @@ +--- +title: Setting up a trial of GitHub Advanced Security +intro: 'You can evaluate the extra security features that {% data variables.product.prodname_dotcom %} makes available to customers with a {% data variables.product.prodname_GH_advanced_security %} license by setting up a free trial of {% data variables.product.prodname_GH_advanced_security %}.' +product: '{% data reusables.gated-features.ghas %}' +versions: + ghec: '*' +type: how_to +topics: + - Advanced Security + - Enterprise +shortTitle: Set up an Advanced Security trial +--- + +## About trials of {% data variables.product.prodname_GH_advanced_security %} +{% data variables.product.prodname_GH_advanced_security %} provides features that help you improve and maintain the security and quality of code. For more information, see "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)." + + If you use {% data variables.product.prodname_ghe_cloud %} with an enterprise account and pay with a credit card, you can set up a 14-day trial to evaluate the features that come with {% data variables.product.prodname_GH_advanced_security %}, such as code scanning, secret scanning, and dependency review. During the trial, you can add any number of committers and enable {% data variables.product.prodname_GH_advanced_security %} for any number of organizations. + +## Setting up your trial of {% data variables.product.prodname_GH_advanced_security %} + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.settings-tab %} +{% data reusables.enterprise-accounts.license-tab %} +1. To the right of "{% data variables.product.prodname_GH_advanced_security %}", click **Start free trial**. +2. Click **Start trial**. + +## Finishing your trial + +You can finish your trial at any time by purchasing {% data variables.product.prodname_GH_advanced_security %}. If you haven't purchased {% data variables.product.prodname_GH_advanced_security %} by the end of the 14 days, your trial will expire. + +{% data reusables.enterprise-accounts.access-enterprise %} +{% data reusables.enterprise-accounts.settings-tab %} +{% data reusables.enterprise-accounts.license-tab %} +1. To the right of "{% data variables.product.prodname_GH_advanced_security %} trial", select the **Manage** dropdown menu and click **Purchase**. +{% data reusables.advanced-security.purchase-ghas %} + +## Further reading + +- "[AUTOTITLE](/get-started/learning-about-github/about-github-advanced-security)" +- "[AUTOTITLE](/code-security/adopting-github-advanced-security-at-scale)" +- "[AUTOTITLE](/code-security/getting-started/securing-your-organization)" diff --git a/content/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security.md b/content/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security.md index d2012385a378..3326cd8d4f59 100644 --- a/content/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security.md +++ b/content/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security.md @@ -1,6 +1,6 @@ --- title: Signing up for GitHub Advanced Security -intro: 'You can sign up for {% data variables.product.prodname_GH_advanced_security %} from your enterprise account''s settings to take advantage of extra security features that {% data variables.product.prodname_dotcom %} makes available to customers under a {% data variables.product.prodname_GH_advanced_security %} license.' +intro: "You can sign up for {% data variables.product.prodname_GH_advanced_security %} from your enterprise account's settings to take advantage of extra security features that {% data variables.product.prodname_dotcom %} makes available to customers under a {% data variables.product.prodname_GH_advanced_security %} license." permissions: 'Enterprise owners can sign up for {% data variables.product.prodname_GH_advanced_security %}.' product: '{% data reusables.gated-features.ghas-ghec %}' versions: @@ -18,9 +18,7 @@ shortTitle: Sign up for Advanced Security 1. To the right of "GitHub Advanced Security", click **Buy Advanced Security**. ![Screenshot of the {% data variables.product.prodname_GH_advanced_security %} section of the enterprise licensing screen. The "Buy Advanced Security" button is highlighted with an orange outline.](/assets/images/help/enterprises/ghas-buy-advanced-security-button.png) -2. Under "How many committers do you want to include?", enter the number of committers for which you want to purchase licenses. For more information about committer numbers, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)." -3. Confirm your billing information and payment method. -4. Click **Purchase Advanced Security**. +1. {% data reusables.advanced-security.purchase-ghas %} ## Further reading * [Introduction to adopting {% data variables.product.prodname_GH_advanced_security %} at scale](/code-security/adopting-github-advanced-security-at-scale/introduction-to-adopting-github-advanced-security-at-scale) diff --git a/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md b/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md index d4e10891c704..f59b1c9a6e45 100644 --- a/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md +++ b/content/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces.md @@ -203,6 +203,10 @@ If a machine type that has more resources is chosen, this will affect the per-ho Organization owners can create a policy to limit the choice of machine types available to users for codespaces that are billed to an organization or enterprise account. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)." +## Limiting the number of organization-owned codespaces + +Organization owners can limit the number of codespaces that people can create, where the organization will be billed for the codespace. This can help to reduce storage charges for the organization. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)." + ## How billing is handled for forked repositories Usage of codespaces created from a forked repository will be billed to your personal account unless the upstream (or parent) repository is in an organization that has allowed you - as a member, or outside collaborator, of the organization - to use codespaces at the organization's expense. diff --git a/content/code-security/getting-started/github-security-features.md b/content/code-security/getting-started/github-security-features.md index 45973c333e25..28ba57620fea 100644 --- a/content/code-security/getting-started/github-security-features.md +++ b/content/code-security/getting-started/github-security-features.md @@ -87,6 +87,8 @@ The following {% data variables.product.prodname_GH_advanced_security %} feature {% elsif ghec %} Many {% data variables.product.prodname_GH_advanced_security %} features are available and free of charge for public repositories on {% data variables.product.prodname_dotcom_the_website %}. Organizations within an enterprise that have a {% data variables.product.prodname_GH_advanced_security %} license can use the following features on all their repositories. {% data reusables.advanced-security.more-info-ghas %} +{% data reusables.advanced-security.ghas-trial %} + {% elsif ghes %} {% data variables.product.prodname_GH_advanced_security %} features are available for enterprises with a license for {% data variables.product.prodname_GH_advanced_security %}. The features are restricted to repositories owned by an organization. {% data reusables.advanced-security.more-info-ghas %} diff --git a/content/codespaces/managing-codespaces-for-your-organization/index.md b/content/codespaces/managing-codespaces-for-your-organization/index.md index d65a8957a368..e4b5bf22b00d 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/index.md +++ b/content/codespaces/managing-codespaces-for-your-organization/index.md @@ -16,6 +16,7 @@ children: - /managing-repository-access-for-your-organizations-codespaces - /reviewing-your-organizations-audit-logs-for-github-codespaces - /restricting-access-to-machine-types + - /restricting-the-number-of-organization-billed-codespaces-a-user-can-create - /restricting-the-base-image-for-codespaces - /restricting-the-visibility-of-forwarded-ports - /restricting-the-idle-timeout-period diff --git a/content/codespaces/managing-codespaces-for-your-organization/managing-the-cost-of-github-codespaces-in-your-organization.md b/content/codespaces/managing-codespaces-for-your-organization/managing-the-cost-of-github-codespaces-in-your-organization.md index 455438b1faa9..82d46c323a9f 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/managing-the-cost-of-github-codespaces-in-your-organization.md +++ b/content/codespaces/managing-codespaces-for-your-organization/managing-the-cost-of-github-codespaces-in-your-organization.md @@ -44,6 +44,8 @@ You can disable all use of {% data variables.product.prodname_github_codespaces {% data reusables.codespaces.codespaces-disabling-org-billing %} +You can limit the number of codespaces that people can create, where the organization will be billed for the codespace. This can help to reduce codespace storage charges for your organization. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)." + You can configure which repositories can be accessed from codespaces created for a particular repository. For more information, see "[AUTOTITLE](/codespaces/managing-your-codespaces/managing-repository-access-for-your-codespaces)." You can limit the choice of types of machine that are available for codespaces created from repositories owned by your organization. This allows you to prevent people using overly resourced machines for their codespaces, and incurring unnecessary charges. For more information, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)." diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md index b8d55b0f8e54..086bc986f0a4 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types.md @@ -57,8 +57,10 @@ If you add an organization-wide policy, you should set it to the largest choice ![Screenshot of the "Allowed values" dropdown with options for four machine types. The options for 2-core and 4-core machines are selected.](/assets/images/help/codespaces/edit-machine-constraint.png) +1. Click outside of the dialog box to close it. {% data reusables.codespaces.codespaces-policy-targets %} 1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces.md index f5566656d479..2ca9d130cea3 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces.md @@ -67,9 +67,11 @@ For example, you could create an organization-wide policy that restricts the bas 1. Click {% octicon "plus" aria-label="Add button" %} to add the value. 1. If required, repeat the previous two steps to add more image URLs. +1. Click outside of the dialog box to close it. {% data reusables.codespaces.codespaces-policy-targets %} 1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)" diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period.md index a1a44aa8a7fd..3b2d7ef64eea 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period.md @@ -56,6 +56,7 @@ If you add an organization-wide policy with a timeout constraint, you should set {% data reusables.codespaces.codespaces-policy-targets %} 1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)" diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create.md new file mode 100644 index 000000000000..9056acca8e41 --- /dev/null +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create.md @@ -0,0 +1,71 @@ +--- +title: Restricting the number of organization-billed codespaces a user can create +shortTitle: Restrict codespace creation +intro: You can specify the maximum number of codespaces that any member of your organization, or collaborator, can create for the repositories in your organization. +permissions: 'To manage this constraint for an organization, you must be an owner of the organization.' +versions: + fpt: '*' + ghec: '*' +type: how_to +topics: + - Codespaces +product: '{% data reusables.gated-features.codespaces-org %}' +--- + +## Overview + +By default, if organization members, or collaborators, are permitted to create codespaces that are billable to your organization, they can create multiple such codespaces. The number of organization-billed codespaces someone can create is governed by a limit to the total number of codespaces that they can create across all repositories they can access. This limit is set by {% data variables.product.company_short %}. + +As an organization owner, you can restrict the number of codespaces that each user can create, where the costs of the codespace are billable to the organization. This can help to reduce the overall cost of {% data variables.product.prodname_github_codespaces %} to the organization, as there is a charge for codespace storage. For more information, see "[AUTOTITLE](/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#about-billing-for-storage-usage)." + +To restrict the maximum number of organization-billed codespaces that users can create, you create a policy in the {% data variables.product.prodname_codespaces %} settings for your organization. For example, if you set the maximum to 2, users who already have 2 active or stopped codespaces that are billed to your organization will have to delete one of these before they can create a new codespace that's billed to the organization. + +This setting does not restrict users from creating codespaces that are not billed to your organization. For example, they can create additional codespaces for public repositories, using their personal {% data variables.product.prodname_codespaces %} usage allowance. However, users who are permitted to create organization-billed codespaces, but have reached the limit for such codespaces, cannot choose to create a codespace for an organization-owned repository using their personal included allowance. + +For information about the free use of {% data variables.product.prodname_github_codespaces %} for personal accounts, see "[AUTOTITLE](/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces#monthly-included-storage-and-core-hours-for-personal-accounts)." For information on how to choose who can create codespaces that are billed to your organization, see "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/enabling-github-codespaces-for-your-organization#choose-who-can-create-codespaces-that-are-billed-to-your-organization)." + +Policies with the "Maximum codespaces per user" constraint are applied to every repository in your organization. You can't, therefore, add this constraint to an existing policy that is configured to apply only to selected repositories. + +## Adding a policy to define the maximum codespaces per user + +{% data reusables.profile.access_org %} +{% data reusables.profile.org_settings %} +{% data reusables.codespaces.codespaces-org-policies %} +1. Click **Add constraint** and choose **Maximum codespaces per user**. +1. Click {% octicon "pencil" aria-label="Edit policy" %} to edit the constraint. +1. In the "Maximum value" field, enter the maximum number of organization-billed codespaces that each user can create. + + ![Screenshot of the 'Maximum value' dialog with the value '2' being entered, and 'Cancel' and 'Save' buttons.](/assets/images/help/codespaces/maximum-value-policy-setting.png) + +1. Click **Save**. +1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)" + + {% note %} + + **Note**: When you add a constraint to a policy that already contains the "Maximum codespaces per user" constraint, you won't be able to restrict the additional constraint to specific repositories, as the "Maximum codespaces per user" constraint applies to all repositories in the organization. + + {% endnote %} + +1. After you've finished adding constraints to your policy, click **Save**. + +The policy is applied when anyone attempts to create a new codespace that is billable to your organization. + +## Editing a policy + +You can edit an existing policy. For example, you may want to add or remove constraints to or from a policy. + +1. Display the "Codespace policies" page. For more information, see "[Adding a policy to define the maximum codespaces per user](#adding-a-policy-to-define-the-maximum-codespaces-per-user)." +1. Click the name of the policy you want to edit. +1. Beside the "Maximum codespaces per user" constraint, click {% octicon "pencil" aria-label="Edit policy" %}. +1. Edit the maximum number of codespaces. +1. Click **Save**. + +## Deleting a policy + +1. Display the "Codespace policies" page. For more information, see "[Adding a policy to define the maximum codespaces per user](#adding-a-policy-to-define-the-maximum-codespaces-per-user)." +1. Click {% octicon "trash" aria-label="The trash can icon" %} to the right of the policy you want to delete. diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces.md index ffdb111aba3b..ae71428e5ed5 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces.md @@ -57,6 +57,7 @@ If you add an organization-wide policy with a retention constraint, you should s {% data reusables.codespaces.codespaces-policy-targets %} 1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" diff --git a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports.md b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports.md index f93df0777346..3ddf021ec0e5 100644 --- a/content/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports.md +++ b/content/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports.md @@ -49,9 +49,11 @@ If you add an organization-wide policy, you should set it to the most lenient vi ![Screenshot of the "Allowed values" dropdown, with two checkboxes. "Org" is selected and "Public" is cleared.](/assets/images/help/codespaces/choose-port-visibility-options.png) +1. Click outside of the dialog box to close it. {% data reusables.codespaces.codespaces-policy-targets %} 1. If you want to add another constraint to the policy, click **Add constraint** and choose another constraint. For information about other constraints, see: * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)" + * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-base-image-for-codespaces)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)" * "[AUTOTITLE](/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)" diff --git a/content/get-started/learning-about-github/about-github-advanced-security.md b/content/get-started/learning-about-github/about-github-advanced-security.md index 9b1d0d59b2ec..49046dedce33 100644 --- a/content/get-started/learning-about-github/about-github-advanced-security.md +++ b/content/get-started/learning-about-github/about-github-advanced-security.md @@ -20,6 +20,9 @@ shortTitle: GitHub Advanced Security {% ifversion ghes %}For information about buying a license for {% data variables.product.prodname_GH_advanced_security %}, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)."{% elsif ghec %}For information about buying a license for {% data variables.product.prodname_GH_advanced_security %}, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/signing-up-for-github-advanced-security)."{% elsif ghae %}There is no charge for {% data variables.product.prodname_GH_advanced_security %} on {% data variables.product.prodname_ghe_managed %} during the beta release.{% elsif fpt %}To purchase a {% data variables.product.prodname_GH_advanced_security %} license, you must be using {% data variables.product.prodname_enterprise %}. For information about upgrading to {% data variables.product.prodname_enterprise %} with {% data variables.product.prodname_GH_advanced_security %}, see "[AUTOTITLE](/get-started/learning-about-github/githubs-products)" and "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)."{% endif %} + +{% ifversion ghec %}{% data reusables.advanced-security.ghas-trial %}{% endif %} + {% ifversion ghas-for-azure-devops %} {% note %} diff --git a/data/reusables/advanced-security/ghas-trial.md b/data/reusables/advanced-security/ghas-trial.md new file mode 100644 index 000000000000..9eaea6bc4b82 --- /dev/null +++ b/data/reusables/advanced-security/ghas-trial.md @@ -0,0 +1 @@ +For information about how you can try {% data variables.product.prodname_GH_advanced_security %} for free, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/setting-up-a-trial-of-github-advanced-security)." \ No newline at end of file diff --git a/data/reusables/advanced-security/purchase-ghas.md b/data/reusables/advanced-security/purchase-ghas.md new file mode 100644 index 000000000000..a9cc179698b0 --- /dev/null +++ b/data/reusables/advanced-security/purchase-ghas.md @@ -0,0 +1,3 @@ +1. Under "How many committers do you want to include?", enter the number of committers you want to purchase licenses for. For more information about committer numbers, see "[AUTOTITLE](/billing/managing-billing-for-github-advanced-security/about-billing-for-github-advanced-security)." +1. Confirm your billing information and payment method. +1. Click **Purchase Advanced Security**. \ No newline at end of file diff --git a/data/reusables/codespaces/codespaces-policy-targets.md b/data/reusables/codespaces/codespaces-policy-targets.md index 31d8bb769698..ee684ed9d133 100644 --- a/data/reusables/codespaces/codespaces-policy-targets.md +++ b/data/reusables/codespaces/codespaces-policy-targets.md @@ -1,8 +1,13 @@ -1. Click outside of the dialog box to close it. 1. By default the policy is set to apply to all repositories, if you want it to apply only to some of the repositories in your organization, click **All repositories** and then click **Selected repositories** in the dropdown menu. ![Screenshot of the repository selection dropdown, showing the options "All repositories" and "Selected repositories."](/assets/images/help/codespaces/selected-repositories.png) + {% note %} + + **Note**: If you're adding a constraint to a policy that already contains the "Maximum codespaces per user" constraint, you won't be able to apply the policy to selected repositories. This is because the "Maximum codespaces per user" constraint always applies to all repositories in the organization. + + {% endnote %} + With **Selected repositories** selected: 1. Click {% octicon "gear" aria-label="The settings icon" %}. diff --git a/data/reusables/codespaces/delete-codespace-policy.md b/data/reusables/codespaces/delete-codespace-policy.md index c38e65bc798a..f9b9b08b6539 100644 --- a/data/reusables/codespaces/delete-codespace-policy.md +++ b/data/reusables/codespaces/delete-codespace-policy.md @@ -1,3 +1,3 @@ -1. Click the delete button to the right of the policy you want to delete. +1. Click {% octicon "trash" aria-label="Delete YOUR-POLICY-NAME" %} to the right of the policy you want to delete. ![Screenshot of a policy with the delete button (a trash can icon) highlighted with a dark orange outline.](/assets/images/help/codespaces/policy-delete.png) diff --git a/data/reusables/gated-features/secret-scanning.md b/data/reusables/gated-features/secret-scanning.md index b1141fe5c989..997b7fe033f5 100644 --- a/data/reusables/gated-features/secret-scanning.md +++ b/data/reusables/gated-features/secret-scanning.md @@ -10,3 +10,5 @@ {% data variables.product.prodname_secret_scanning_caps %} is available for organization-owned repositories in {% data variables.product.product_name %}. This is a {% data variables.product.prodname_GH_advanced_security %} feature (free during the beta release). {%- endif %} {% ifversion not ghae %}{% data reusables.advanced-security.more-info-ghas-secret-scanning %}{% endif %} + +{% ifversion ghec %}{% data reusables.advanced-security.ghas-trial %}{% endif %} diff --git a/data/reusables/repositories/git-lfs.md b/data/reusables/repositories/git-lfs.md index b6cc85c329e2..7341761a5975 100644 --- a/data/reusables/repositories/git-lfs.md +++ b/data/reusables/repositories/git-lfs.md @@ -1 +1 @@ -If you exceed the limit of {% ifversion ghae %}200 MiB{% else %}5 GB{% endif %}, any new files added to the repository will be rejected silently by Git LFS. +If you exceed the per file limit of {% ifversion ghae %}200 MiB{% else %}5 GB{% endif %}, the file will be rejected silently by Git LFS. diff --git a/src/rest/scripts/utils/get-body-params.js b/src/rest/scripts/utils/get-body-params.js index 5050de2ee2d2..1fadfb4f87d6 100644 --- a/src/rest/scripts/utils/get-body-params.js +++ b/src/rest/scripts/utils/get-body-params.js @@ -106,18 +106,7 @@ export async function getBodyParams(schema, topLevel = false) { if (param.items.oneOf.every((object) => object.type === 'object')) { paramType.splice(paramType.indexOf('array'), 1, `array of objects`) param.oneOfObject = true - - for (const oneOfParam of param.items.oneOf) { - const objParam = { - type: 'object', - name: oneOfParam.title, - description: await renderContent(oneOfParam.description), - isRequired: oneOfParam.required, - childParamsGroups: [], - } - objParam.childParamsGroups.push(...(await getBodyParams(oneOfParam, false))) - childParamsGroups.push(objParam) - } + childParamsGroups.push(...(await getOneOfChildParams(param.items))) } } else { const arrayType = param.items.type @@ -129,7 +118,14 @@ export async function getBodyParams(schema, topLevel = false) { } } } else if (paramType && paramType.includes('object')) { - childParamsGroups.push(...(await getBodyParams(param, false))) + if (param && param.oneOf) { + if (param.oneOf.every((object) => object.type === 'object')) { + param.oneOfObject = true + childParamsGroups.push(...(await getOneOfChildParams(param))) + } + } else { + childParamsGroups.push(...(await getBodyParams(param, false))) + } } else if (param && param.oneOf) { // get concatenated description and type const descriptions = [] @@ -150,6 +146,8 @@ export async function getBodyParams(schema, topLevel = false) { descriptions.push({ type: childParam.type, description: childParam.description }) } } + } else { + descriptions.push({ type: param.type, description: param.description }) } } // Occasionally, there is no parent description and the description @@ -205,7 +203,7 @@ async function getTransformedParam(param, paramType, props) { if (required && required.includes(paramKey)) { paramDecorated.isRequired = true } - if (childParamsGroups && childParamsGroups.length > 0) { + if (childParamsGroups && childParamsGroups.length > 0 && !param.oneOfObject) { // Since the allOf properties can have multiple duplicate properties we want to get rid of the duplicates with the same name, but keep the // the one that has isRequired set to true. const mergedChildParamsGroups = Array.from( @@ -221,6 +219,8 @@ async function getTransformedParam(param, paramType, props) { ) paramDecorated.childParamsGroups = mergedChildParamsGroups + } else if (childParamsGroups.length > 0) { + paramDecorated.childParamsGroups = childParamsGroups } if (param.enum) { paramDecorated.enum = param.enum @@ -236,3 +236,19 @@ async function getTransformedParam(param, paramType, props) { } return paramDecorated } + +async function getOneOfChildParams(param) { + const childParamsGroups = [] + for (const oneOfParam of param.oneOf) { + const objParam = { + type: 'object', + name: oneOfParam.title, + description: await renderContent(oneOfParam.description), + isRequired: oneOfParam.required, + childParamsGroups: [], + } + objParam.childParamsGroups.push(...(await getBodyParams(oneOfParam, false))) + childParamsGroups.push(objParam) + } + return childParamsGroups +}