diff --git a/assets/images/help/commits/signature-verification-statuses.png b/assets/images/help/commits/signature-verification-statuses.png new file mode 100644 index 0000000000..a190f7ff93 Binary files /dev/null and b/assets/images/help/commits/signature-verification-statuses.png differ diff --git a/assets/images/help/commits/vigilant-mode-checkbox.png b/assets/images/help/commits/vigilant-mode-checkbox.png new file mode 100644 index 0000000000..147128ce6f Binary files /dev/null and b/assets/images/help/commits/vigilant-mode-checkbox.png differ diff --git a/assets/images/help/repository/readme-automatic-toc-setting.png b/assets/images/help/repository/readme-automatic-toc-setting.png new file mode 100644 index 0000000000..f513f5401d Binary files /dev/null and b/assets/images/help/repository/readme-automatic-toc-setting.png differ diff --git a/assets/images/help/repository/readme-automatic-toc.png b/assets/images/help/repository/readme-automatic-toc.png new file mode 100644 index 0000000000..b4cace2453 Binary files /dev/null and b/assets/images/help/repository/readme-automatic-toc.png differ diff --git a/content/actions/guides/building-and-testing-net.md b/content/actions/guides/building-and-testing-net.md index d734043f71..6111502bd5 100644 --- a/content/actions/guides/building-and-testing-net.md +++ b/content/actions/guides/building-and-testing-net.md @@ -86,7 +86,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Setup dotnet ${{ matrix.dotnet-version }} - uses: actions/setup-dotnet@v1.7.2 + uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ matrix.dotnet-version }} # You can test your matrix by printing the current dotnet version @@ -102,7 +102,7 @@ You can configure your job to use a specific version of .NET, such as `3.1.3`. A {% raw %} ```yaml - name: Setup .NET 3.x - uses: actions/setup-dotnet@v2 + uses: actions/setup-dotnet@v1 with: # Semantic version range syntax or exact version of a dotnet version dotnet-version: '3.x' @@ -118,7 +118,7 @@ You can configure your job to use a specific version of .NET, such as `3.1.3`. A steps: - uses: actions/checkout@v2 - name: Setup dotnet - uses: actions/setup-dotnet@v1.7.2 + uses: actions/setup-dotnet@v1 with: dotnet-version: '3.1.x' - name: Install dependencies @@ -139,7 +139,7 @@ For more information, see "[Caching dependencies to speed up workflows](/actions steps: - uses: actions/checkout@v2 - name: Setup dotnet - uses: actions/setup-dotnet@v1.7.2 + uses: actions/setup-dotnet@v1 with: dotnet-version: '3.1.x' - uses: actions/cache@v2 @@ -171,7 +171,7 @@ You can use the same commands that you use locally to build and test your code. steps: - uses: actions/checkout@v2 - name: Setup dotnet - uses: actions/setup-dotnet@v1.7.2 + uses: actions/setup-dotnet@v1 with: dotnet-version: '3.1.x' - name: Install dependencies @@ -206,7 +206,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Setup dotnet - uses: actions/setup-dotnet@v1.7.2 + uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ matrix.dotnet-version }} - name: Install dependencies diff --git a/content/actions/guides/building-and-testing-xamarin-applications.md b/content/actions/guides/building-and-testing-xamarin-applications.md new file mode 100644 index 0000000000..3538de8f07 --- /dev/null +++ b/content/actions/guides/building-and-testing-xamarin-applications.md @@ -0,0 +1,122 @@ +--- +title: Building and testing Xamarin applications +intro: You can create a continuous integration (CI) workflow in GitHub Actions to build and test your Xamarin application. +product: '{% data reusables.gated-features.actions %}' +versions: + free-pro-team: '*' + enterprise-server: '>=2.22' + github-ae: '*' +type: 'tutorial' +topics: + - 'CI' + - 'Xamarin' + - 'Xamarin.iOS' + - 'Xamarin.Android' + - 'Android' + - 'iOS' +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} +{% data reusables.actions.ae-beta %} + +### Introduction + +This guide shows you how to create a workflow that performs continuous integration (CI) for your Xamarin project. The workflow you create will allow you to see when commits to a pull request cause build or test failures against your default branch; this approach can help ensure that your code is always healthy. + +{% data variables.product.prodname_actions %}-hosted macOS runner stores Xamarin SDK versions and the associated Mono versions as a set of symlinks to Xamarin SDK locations that are available by a single bundle symlink. For a full list of available Xamarin SDK versions and their corresponding bundles, see the runners documentation: + +* [macOS 10.15](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-10.15-Readme.md#xamarin-bundles) +* [macOS 11.0](https://github.com/actions/virtual-environments/blob/main/images/macos/macos-11.0-Readme.md#xamarin-bundles) + +{% data reusables.github-actions.macos-runner-preview %} + +### Prerequisites + +We recommend that you have a basic understanding of Xamarin, .NET Core SDK, YAML, workflow configuration options, and how to create a workflow file. For more information, see: + +- "[Workflow syntax for {% data variables.product.prodname_actions %}](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions)" +- "[Getting started with .NET](https://dotnet.microsoft.com/learn)" +- "[Learn Xamarin](https://dotnet.microsoft.com/learn/xamarin)" + +### Bulding Xamarin.iOS apps + +The example below demonstrates how to change the default Xamarin bundle and build a Xamarin.iOS application. + +{% raw %} +```yaml +name: Build Xamarin.iOS app + +on: [push] + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + - name: Select default Xamarin bundle to 6_12_6 + run: | + XAMARIN_SDK=6_12_6 + $VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK + + - name: Set default Xcode 12.3 + run: | + XCODE_ROOT=/Applications/Xcode_12.3.0.app + echo "MD_APPLE_SDK_ROOT=$XCODE_ROOT" >> $GITHUB_ENV + sudo xcode-select -s $XCODE_ROOT + + - name: Setup .NET Core SDK 5.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '5.0.x' + + - name: Install dependencies + run: nuget restore + + - name: Build + run: msbuild /p:Configuration=Debug /p:Platform=iPhoneSimulator /t:Rebuild +``` +{% endraw %} + +### Bulding Xamarin.Android apps + +The example below demonstrates how to change default the Xamarin bundle and build a Xamarin.Android application. + +{% raw %} +```yaml +name: Build Xamarin.Android app + +on: [push] + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v2 + - name: Select default Xamarin bundle to 6_12_6 + run: | + XAMARIN_SDK=6_12_6 + $VM_ASSETS/select-xamarin-sdk.sh $XAMARIN_SDK + + - name: Setup .NET Core SDK 5.0.x + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '5.0.x' + + - name: Install dependencies + run: nuget restore + + - name: Build + run: msbuild /t:PackageForAndroid /p:Configuration=Debug +``` +{% endraw %} + +### Specifying a .NET version + +To use a preinstalled version of the .NET Core SDK on a {% data variables.product.prodname_dotcom %}-hosted runner, use the `setup-dotnet` action. This action finds a specific version of .NET from the tools cache on each runner, and adds the necessary binaries to `PATH`. These changes will persist for the remainder of the job. + +The `setup-dotnet` action is the recommended way of using .NET with {% data variables.product.prodname_actions %}, because it ensures consistent behavior across different runners and different versions of .NET. If you are using a self-hosted runner, you must install .NET and add it to `PATH`. For more information, see the [`setup-dotnet`](https://github.com/marketplace/actions/setup-net-core-sdk) action. diff --git a/content/actions/guides/index.md b/content/actions/guides/index.md index 6ba486d6eb..6164dd1109 100644 --- a/content/actions/guides/index.md +++ b/content/actions/guides/index.md @@ -42,6 +42,7 @@ includeGuides: - /actions/guides/building-and-testing-java-with-maven - /actions/guides/building-and-testing-java-with-gradle - /actions/guides/building-and-testing-java-with-ant + - /actions/guides/building-and-testing-xamarin-applications - /actions/guides/installing-an-apple-certificate-on-macos-runners-for-xcode-development - /actions/guides/publishing-nodejs-packages - /actions/guides/publishing-java-packages-with-maven @@ -84,6 +85,7 @@ includeGuides: + diff --git a/content/admin/all-releases.md b/content/admin/all-releases.md new file mode 100644 index 0000000000..64ddb7b543 --- /dev/null +++ b/content/admin/all-releases.md @@ -0,0 +1,37 @@ +--- +title: GitHub Enterprise Server releases +intro: Documentation for the currently supported and previously deprecated versions of {{ site.data.variables.product.prodname_ghe_server }}. +allowTitleToDifferFromFilename: true +versions: + enterprise-server: '*' +topics: + - enterprise +--- + +## Currently supported + +See [{% data variables.product.prodname_enterprise %}](https://github.com/enterprise) for information about the latest release. + +{% for supportedRelease in enterpriseServerReleases.supported %} +- [{% data variables.product.prodname_ghe_server %} {{supportedRelease}}](/enterprise-server@{{supportedRelease}}) +{% endfor %} + +## Deprecated + +Documentation for deprecated versions remains available but is no longer maintained. + +{% for deprecatedRelease in enterpriseServerReleases.deprecatedReleasesWithNewFormat %} +- [Enterprise Server {{deprecatedRelease}}](/enterprise-server@{{deprecatedRelease}}) +{% endfor %} + +{% for deprecatedReleaseLegacyFormat in enterpriseServerReleases.deprecatedReleasesWithLegacyFormat %} +- [Enterprise Server {{deprecatedReleaseLegacyFormat}}](/enterprise/{{deprecatedReleaseLegacyFormat}}) +{% endfor %} + +## Deprecated developer documentation + +Developer documentation for deprecated versions remains available but is no longer maintained. + +{% for deprecatedDevRelease in enterpriseServerReleases.deprecatedReleasesOnDeveloperSite %} +- [Enterprise Server {{deprecatedDevRelease}}](https://developer.github.com/enterprise/{{deprecatedDevRelease}}) +{% endfor %} diff --git a/content/admin/index.md b/content/admin/index.md index 6928e31fc4..39a011de89 100644 --- a/content/admin/index.md +++ b/content/admin/index.md @@ -30,3 +30,5 @@ versions: {% link_with_intro /enterprise-support %} {% link_with_intro /release-notes %} + +{% link_with_intro /all-releases %} diff --git a/content/github/administering-a-repository/about-protected-branches.md b/content/github/administering-a-repository/about-protected-branches.md index 1dc9ce75c3..f280d10014 100644 --- a/content/github/administering-a-repository/about-protected-branches.md +++ b/content/github/administering-a-repository/about-protected-branches.md @@ -47,6 +47,8 @@ For each branch protection rule, you can choose to enable or disable the followi - [Allow force pushes](#allow-force-pushes) - [Allow deletions](#allow-deletions) +For more information on how to set up branch protection, see "[Managing a branch protection rule](/github/administering-a-repository/managing-a-branch-protection-rule)." + #### Require pull request reviews before merging {% data reusables.pull_requests.required-reviews-for-prs-summary %} @@ -100,7 +102,15 @@ When you enable required commit signing on a branch, contributors {% if currentV {% note %} +{% if currentVersion == "free-pro-team@latest" %} +**Notes:** + +* If you have enabled vigilant mode, which indicates that your commits will always be signed, any commits that {% data variables.product.prodname_dotcom %} identifies as "Partially verified" are permitted on branches that require signed commits. For more information about vigilant mode, see "[Displaying verification statuses for all of your commits](/github/authenticating-to-github/displaying-verification-statuses-for-all-of-your-commits)." +* If a collaborator pushes an unsigned commit to a branch that requires commit signatures, the collaborator will need to rebase the commit to include a verified signature, then force push the rewritten commit to the branch. + +{% else %} **Note:** If a collaborator pushes an unsigned commit to a branch that requires commit signatures, the collaborator will need to rebase the commit to include a verified signature, then force push the rewritten commit to the branch. +{% endif %} {% endnote %} diff --git a/content/github/authenticating-to-github/about-commit-signature-verification.md b/content/github/authenticating-to-github/about-commit-signature-verification.md index 77a2b528ca..3b7c3a957f 100644 --- a/content/github/authenticating-to-github/about-commit-signature-verification.md +++ b/content/github/authenticating-to-github/about-commit-signature-verification.md @@ -1,6 +1,6 @@ --- title: About commit signature verification -intro: 'Using GPG or S/MIME, you can sign tags and commits locally. These tags or commits are marked as verified on {% data variables.product.product_name %} so other people can trust that the changes come from a trusted source.' +intro: 'Using GPG or S/MIME, you can sign tags and commits locally. These tags or commits are marked as verified on {% data variables.product.product_name %} so other people can be confident that the changes come from a trusted source.' redirect_from: - /articles/about-gpg-commit-and-tag-signatures/ - /articles/about-gpg/ @@ -16,15 +16,34 @@ topics: ### About commit signature verification -You can sign commits and tags locally, so other people can verify that your work comes from a trusted source. If a commit or tag has a GPG or S/MIME signature that is cryptographically verifiable, {% data variables.product.product_name %} marks the commit or tag as verified. +You can sign commits and tags locally, to give other people confidence about the origin of a change you have made. If a commit or tag has a GPG or S/MIME signature that is cryptographically verifiable, GitHub marks the commit or tag {% if currentVersion == "free-pro-team@latest" %}"Verified" or "Partially verified."{% else %}"Verified."{% endif %} ![Verified commit](/assets/images/help/commits/verified-commit.png) -If a commit or tag has a signature that cannot be verified, {% data variables.product.product_name %} marks the commit or tag as unverified. +{% if currentVersion == "free-pro-team@latest" %} +Commits and tags have the following verification statuses, depending on whether you have enabled vigilant mode. By default vigilant mode is not enabled. For information on how to enable vigilant mode, see "[Displaying verification statuses for all of your commits](/github/authenticating-to-github/displaying-verification-statuses-for-all-of-your-commits)." + +{% data reusables.identity-and-permissions.vigilant-mode-beta-note %} + +#### Default statuses + +| Status | Description | +| -------------- | ----------- | +| **Verified** | The commit is signed and the signature was successfully verified. +| **Unverified** | The commit is signed but the signature could not be verified. +| No verification status | The commit is not signed. + +#### Statuses with vigilant mode enabled + +{% data reusables.identity-and-permissions.vigilant-mode-verification-statuses %} + +{% else %} +If a commit or tag has a signature that can't be verified, {% data variables.product.product_name %} marks the commit or tag "Unverified." +{% endif %} Repository administrators can enforce required commit signing on a branch to block all commits that are not signed and verified. For more information, see "[About protected branches](/github/administering-a-repository/about-protected-branches#require-signed-commits)." -You can check the verification status of your signed commits or tags on {% data variables.product.product_name %} and view why your commit signatures might be unverified. For more information, see "[Checking your commit and tag signature verification status](/articles/checking-your-commit-and-tag-signature-verification-status)." +{% data reusables.identity-and-permissions.verification-status-check %} {% if currentVersion == "free-pro-team@latest" %} {% data variables.product.product_name %} will automatically use GPG to sign commits you make using the {% data variables.product.product_name %} web interface, except for when you squash and merge a pull request that you are not the author of. You can optionally choose to have {% data variables.product.product_name %} sign commits you make in {% data variables.product.prodname_codespaces %}. Commits signed by {% data variables.product.product_name %} will have a verified status on {% data variables.product.product_name %}. You can verify the signature locally using the public key available at https://github.com/web-flow.gpg. For more information about enabling GPG verification for your codespaces, see "[Managing GPG verification for {% data variables.product.prodname_codespaces %}](/github/developing-online-with-codespaces/managing-gpg-verification-for-codespaces)." diff --git a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md b/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md index 36d736bca8..84a45e07c1 100644 --- a/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md +++ b/content/github/authenticating-to-github/checking-your-commit-and-tag-signature-verification-status.md @@ -17,23 +17,20 @@ topics: 1. On {% data variables.product.product_name %}, navigate to your pull request. {% data reusables.repositories.review-pr-commits %} -3. Next to your commit's abbreviated commit hash, there is a box that shows whether your commit signature is verified or unverified. +3. Next to your commit's abbreviated commit hash, there is a box that shows whether your commit signature is verified{% if currentVersion == "free-pro-team@latest" %}, partially verified,{% endif %} or unverified. ![Signed commit](/assets/images/help/commits/gpg-signed-commit-verified-without-details.png) -4. To view more detailed information about the commit signature, click **Verified** or **Unverified**. +4. To view more detailed information about the commit signature, click **Verified**{% if currentVersion == "free-pro-team@latest" %}, **Partially verified**,{% endif %} or **Unverified**. ![Verified signed commit](/assets/images/help/commits/gpg-signed-commit_verified_details.png) -If your commit signature is unverified, you can learn more about why by clicking the **Unverified** box. -![Unverified signed commit](/assets/images/help/commits/gpg-signed-commit-unverified-details.png) - ### Checking your tag signature verification status {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.releases %} 2. At the top of the Releases page, click **Tags**. ![Tags page](/assets/images/help/releases/tags-list.png) -3. Next to your tag description, there is a box that shows whether your tag signature is verified or unverified. +3. Next to your tag description, there is a box that shows whether your tag signature is verified{% if currentVersion == "free-pro-team@latest" %}, partially verified,{% endif %} or unverified. ![verified tag signature](/assets/images/help/commits/gpg-signed-tag-verified.png) -4. To view more detailed information about the tag signature, click **Verified** or **Unverified**. If your tag signature is unverified, you can learn more about why by clicking the **Unverified** box. +4. To view more detailed information about the tag signature, click **Verified**{% if currentVersion == "free-pro-team@latest" %}, **Partially verified**,{% endif %} or **Unverified**. ![Verified signed tag](/assets/images/help/commits/gpg-signed-tag-verified-details.png) ### Further reading diff --git a/content/github/authenticating-to-github/displaying-verification-statuses-for-all-of-your-commits.md b/content/github/authenticating-to-github/displaying-verification-statuses-for-all-of-your-commits.md new file mode 100644 index 0000000000..4d1d98d54f --- /dev/null +++ b/content/github/authenticating-to-github/displaying-verification-statuses-for-all-of-your-commits.md @@ -0,0 +1,36 @@ +--- +title: Displaying verification statuses for all of your commits +shortTitle: Displaying verification for all commits +intro: You can enable vigilant mode for commit signature verification to mark all of your commits and tags with a signature verification status. +versions: + free-pro-team: '*' +topics: + - identity + - access management +--- + +{% data reusables.identity-and-permissions.vigilant-mode-beta-note %} + +### About vigilant mode + +When you work locally on your computer, Git allows you to set the author of your changes and the identity of the committer. This, potentially, makes it difficult for other people to be confident that commits and tags you create were actually created by you. To help solve this problem you can sign your commits and tags. For more information, see "[Signing commits](/github/authenticating-to-github/signing-commits)" and "[Signing tags](/github/authenticating-to-github/signing-tags)." {% data variables.product.prodname_dotcom %} marks signed commits and tags with a verification status. + +By default commits and tags are marked "Verified" if they are signed with a GPG or S/MIME key that was successfully verified. If a commit or tag has a signature that can't be verified, {% data variables.product.prodname_dotcom %} marks the commit or tag "Unverified." In all other cases no verification status is displayed. + +However, you can give other users increased confidence in the identity attributed to your commits and tags by enabling vigilant mode in your {% data variables.product.prodname_dotcom %} settings. With vigilant mode enabled, all of your commits and tags are marked with one of three verification statuses. + +![Signature verification statuses](/assets/images/help/commits/signature-verification-statuses.png) + +{% data reusables.identity-and-permissions.vigilant-mode-verification-statuses %} + +You should only enable vigilant mode if you sign all of your commits and tags. After enabling this mode, any unsigned commits or tags that you generate locally and push to {% data variables.product.prodname_dotcom %} will be marked "Unverified." + +{% data reusables.identity-and-permissions.verification-status-check %} + +### Enabling vigilant mode + +{% data reusables.user_settings.access_settings %} +{% data reusables.user_settings.ssh %} +3. On the SSH Settings page, under "Vigilant mode," select **Flag unsigned commits as unverified**. + + ![Flag unsigned commits as unverified checkbox](/assets/images/help/commits/vigilant-mode-checkbox.png) diff --git a/content/github/authenticating-to-github/index.md b/content/github/authenticating-to-github/index.md index d59e1b78c4..b2a2f5ab57 100644 --- a/content/github/authenticating-to-github/index.md +++ b/content/github/authenticating-to-github/index.md @@ -82,6 +82,7 @@ topics: {% link_in_list /error-were-doing-an-ssh-key-audit %} {% topic_link_in_list /managing-commit-signature-verification %} {% link_in_list /about-commit-signature-verification %} + {% link_in_list /displaying-verification-statuses-for-all-of-your-commits %} {% link_in_list /checking-for-existing-gpg-keys %} {% link_in_list /generating-a-new-gpg-key %} {% link_in_list /adding-a-new-gpg-key-to-your-github-account %} diff --git a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md b/content/github/creating-cloning-and-archiving-repositories/about-readmes.md index 17fd777be8..3de45ae2ea 100644 --- a/content/github/creating-cloning-and-archiving-repositories/about-readmes.md +++ b/content/github/creating-cloning-and-archiving-repositories/about-readmes.md @@ -42,9 +42,22 @@ If you put your README file in your repository's root, `docs`, or hidden `.githu {% endif %} +### Auto-generated table of contents for README files + +For the rendered view of any Markdown file in a repository, including README files, {% data variables.product.product_name %} will automatically generate a table of contents based on section headings. You can view the table of contents for a README file by clicking the {% octicon "list-unordered" aria-label="The unordered list icon" %} menu icon at the top left of the rendered page. + +![README with automatically generated TOC](/assets/images/help/repository/readme-automatic-toc.png) + +The auto-generated table of contents is enabled by default for all Markdown files in a repository, but you can disable this feature for your repository. + +{% data reusables.repositories.navigate-to-repo %} +{% data reusables.repositories.sidebar-settings %} +1. Under "Features", deselect **Table of contents**. +![Automatic TOC setting for repositories](/assets/images/help/repository/readme-automatic-toc-setting.png) + ### Section links in README files and blob pages -Many projects use a table of contents at the start of a README to direct users to different sections of the file. {% data reusables.repositories.section-links %} +{% data reusables.repositories.section-links %} ### Relative links and image paths in README files diff --git a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md b/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md index c7553618ce..26f0575849 100644 --- a/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md +++ b/content/github/developing-online-with-codespaces/about-billing-for-codespaces.md @@ -12,18 +12,4 @@ topics: {% data reusables.codespaces.about-billing-for-codespaces %} -Compute costs are incurred only when a codespace is active. When you're using a codespace, the codespace is active. After 30 minutes of inactivity, a codespace becomes suspended automatically. - -Compute usage is billed per hour, at a rate that depends on your codespace's instance type. During the beta, {% data variables.product.prodname_codespaces %} offers a single, Linux instance type. At general availability, we'll support three Linux instance types. - -| Instance Type (Linux) | Per-hour rate | -| --------------------------------------- | ------------- | -| Basic (2 cores, 4GB RAM, 32 GB SSD) | $0.085 | -| Standard (4 cores, 8 GB RAM, 32 GB SSD) | $0.169 | -| Premium (8 cores, 16 GB RAM, 32 GB SSD) | $0.339 | - -Compute pricing may vary for additional instance types and operating systems supported in the future. - -Each codespace also incurs monthly storage costs until you delete the codespace. Storage costs for all instance types are $0.10/GB-month. - -We'll share more information about any compute and storage usage included in each plan at general availability. +Updates on the billing model for Codespaces will be shared in an upcoming announcement. \ No newline at end of file diff --git a/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md b/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md index 742b05dcd4..be6a35e7dd 100644 --- a/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md +++ b/content/github/setting-up-and-managing-your-github-profile/personalizing-your-profile.md @@ -122,7 +122,7 @@ When you participate in certain programs, {% data variables.product.prodname_dot | Badge | Program | Description | | --- | --- | --- | -| ![Mars 2020 Helicopter Contributor badge icon](/assets/images/help/profile/badge-mars-2020-small.png) | **Mars 2020 Helicopter Contributor** | If you authored any commit(s) on the default branch up to the relevant version of an open source library used in the Mars 2020 Helicopter Mission, you'll get a Mars 2020 Helicopter Contributor badge on your profile. Hovering over the badge shows you several of the repositories you contributed to that were used in the mission. For the full list of repositories that will qualify you for the badge, see "[List of qualifying repositories for Mars 2020 Helicopter Contributor badge](/github/setting-up-and-managing-your-github-profile/personalizing-your-profile#list-of-qualifying-repositories-for-mars-2020-helicopter-contributor-badge)." | +| ![Mars 2020 Helicopter Contributor badge icon](/assets/images/help/profile/badge-mars-2020-small.png) | **Mars 2020 Helicopter Contributor** | If you authored any commit(s) present in the commit history for the relevant tag of an open source library used in the Mars 2020 Helicopter Mission, you'll get a Mars 2020 Helicopter Contributor badge on your profile. Hovering over the badge shows you several of the repositories you contributed to that were used in the mission. For the full list of repositories that will qualify you for the badge, see "[List of qualifying repositories for Mars 2020 Helicopter Contributor badge](/github/setting-up-and-managing-your-github-profile/personalizing-your-profile#list-of-qualifying-repositories-for-mars-2020-helicopter-contributor-badge)." | | ![Arctic Code Vault Contributor badge icon](/assets/images/help/profile/badge-arctic-code-vault-small.png) | **{% data variables.product.prodname_arctic_vault %} Contributor** | If you authored any commit(s) on the default branch of a repository that was archived in the 2020 Arctic Vault program, you'll get an {% data variables.product.prodname_arctic_vault %} Contributor badge on your profile. Hovering over the badge shows you several of the repositories you contributed to that were part of the program. For more information on the program, see [{% data variables.product.prodname_archive %}](https://archiveprogram.github.com). | | ![{% data variables.product.prodname_dotcom %} Sponsor badge icon](/assets/images/help/profile/badge-sponsors-small.png) | **{% data variables.product.prodname_dotcom %} Sponsor** | If you sponsored an open source contributor through {% data variables.product.prodname_sponsors %} you'll get a {% data variables.product.prodname_dotcom %} Sponsor badge on your profile. Clicking the badge takes you to the **Sponsoring** tab of your profile. For more information, see "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)." | | {% 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.prodname_dotcom %} 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](/program/). | diff --git a/content/rest/reference/repos.md b/content/rest/reference/repos.md index 05ced5bf56..6c9705fa8a 100644 --- a/content/rest/reference/repos.md +++ b/content/rest/reference/repos.md @@ -158,7 +158,8 @@ You can communicate that a transient environment no longer exists by setting its {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1" or currentVersion == "github-ae@next" %} ## Environments -The Environments API allows you to create, configure, and delete environments. For more information about environments, see "[Environments](/actions/reference/environments)." +The Environments API allows you to create, configure, and delete environments. For more information about environments, see "[Environments](/actions/reference/environments)." To manage environment secrets, see "[Secrets](/rest/reference/actions#secrets)." + {% for operation in currentRestOperations %} {% if operation.subcategory == 'environments' %}{% include rest_operation %}{% endif %} {% endfor %} diff --git a/data/allowed-topics.js b/data/allowed-topics.js index 8abb382cb2..917ee153f0 100644 --- a/data/allowed-topics.js +++ b/data/allowed-topics.js @@ -14,6 +14,7 @@ module.exports = [ '2fa', 'Action development', 'Amazon ECS', + 'Android', 'Ant', 'Analytics', 'API', @@ -31,6 +32,7 @@ module.exports = [ 'Google Kubernetes Engine', 'Gradle', 'GraphQL', + 'iOS', 'Java', 'JavaScript', 'Jenkins', @@ -92,5 +94,8 @@ module.exports = [ 'teams', 'usernames', 'webhooks', // replace this with Webhooks + 'Xamarin', + 'Xamarin.iOS', + 'Xamarin.Android', 'Xcode' ] diff --git a/data/reusables/identity-and-permissions/verification-status-check.md b/data/reusables/identity-and-permissions/verification-status-check.md new file mode 100644 index 0000000000..85b8a05d3c --- /dev/null +++ b/data/reusables/identity-and-permissions/verification-status-check.md @@ -0,0 +1 @@ +You can check the verification status of your signed commits or tags on {% data variables.product.product_name %} and view why your commit signatures might be unverified. For more information, see "[Checking your commit and tag signature verification status](/articles/checking-your-commit-and-tag-signature-verification-status)." diff --git a/data/reusables/identity-and-permissions/vigilant-mode-beta-note.md b/data/reusables/identity-and-permissions/vigilant-mode-beta-note.md new file mode 100644 index 0000000000..bb9ea14675 --- /dev/null +++ b/data/reusables/identity-and-permissions/vigilant-mode-beta-note.md @@ -0,0 +1,5 @@ +{% note %} + +**Note:** Vigilant mode is currently in beta and subject to change. + +{% endnote %} \ No newline at end of file diff --git a/data/reusables/identity-and-permissions/vigilant-mode-verification-statuses.md b/data/reusables/identity-and-permissions/vigilant-mode-verification-statuses.md new file mode 100644 index 0000000000..f8377c67cb --- /dev/null +++ b/data/reusables/identity-and-permissions/vigilant-mode-verification-statuses.md @@ -0,0 +1,5 @@ +| Status | Description | +| -------------- | ----------- | +| **Verified** | The commit is signed, the signature was successfully verified, and the committer is the only author who has enabled vigilant mode. +| **Partially verified** | The commit is signed, and the signature was successfully verified, but the commit has an author who: a) is not the committer and b) has enabled vigilant mode. In this case, the commit signature doesn't guarantee the consent of the author, so the commit is only partially verified. +| **Unverified** | Any of the following is true:
- The commit is signed but the signature could not be verified.
- The commit is not signed and the committer has enabled vigilant mode.
- The commit is not signed and an author has enabled vigilant mode.
diff --git a/data/ui.yml b/data/ui.yml index dbcabc9c2c..57f31d9998 100644 --- a/data/ui.yml +++ b/data/ui.yml @@ -64,14 +64,6 @@ contribution_cta: button: Make a contribution or: Or, to_guidelines: learn how to contribute. -enterprise_releases_list: - title: Enterprise Server Releases - currently_supported: Currently supported - currently_supported_message: See GitHub Enterprise for information about the latest release. - deprecated: Deprecated - deprecated_message: 'These docs remain available but are no longer maintained:' - deprecated_developer: Deprecated on developer.github.com - deprecated_developer_message: 'These docs remain available on the legacy developer site but are no longer maintained:' products: graphql: reference: diff --git a/includes/all-enterprise-releases-link.html b/includes/all-enterprise-releases-link.html new file mode 100644 index 0000000000..ed96dfc2d4 --- /dev/null +++ b/includes/all-enterprise-releases-link.html @@ -0,0 +1 @@ +See all Enterprise releases diff --git a/includes/article-version-switcher.html b/includes/article-version-switcher.html index db6f217206..e7260c4a26 100644 --- a/includes/article-version-switcher.html +++ b/includes/article-version-switcher.html @@ -14,7 +14,7 @@ > {{ allVersions[permalink.pageVersion].versionTitle }} {% endfor %} - See all Enterprise releases + {% include all-enterprise-releases-link %} {% endif %} diff --git a/includes/header-notification.html b/includes/header-notification.html index 544a32ed7d..5a1f18af2a 100644 --- a/includes/header-notification.html +++ b/includes/header-notification.html @@ -39,7 +39,7 @@ {% if translation_notification_type %} -
+
{{ translation_notification }}
{% endif %} diff --git a/includes/header-version-switcher.html b/includes/header-version-switcher.html index a54094b79b..af5aebb0e1 100644 --- a/includes/header-version-switcher.html +++ b/includes/header-version-switcher.html @@ -24,6 +24,7 @@ >{{ allVersions[permalink.pageVersion].versionTitle }} {% endunless %} {% endfor %} + {% include all-enterprise-releases-link %}
diff --git a/layouts/enterprise-server-releases.html b/layouts/enterprise-server-releases.html deleted file mode 100644 index b37ac6ba26..0000000000 --- a/layouts/enterprise-server-releases.html +++ /dev/null @@ -1,67 +0,0 @@ - - - {% include head %} - - - {% include sidebar %} - -
- {% include header %} - {% include deprecation-banner %} - -
-
-
- -
- -
-
-

{% data ui.enterprise_releases_list.title %}

-
-
-
-
- {% if miniTocItems.size > 1 %} -

{% data ui.pages.miniToc %}

-
    - {% for item in miniTocItems %} -
  • {{ item.contents }}
  • - {% endfor %} -
- {% endif %} -
-
-
-

{% data ui.enterprise_releases_list.currently_supported %}

-

{% data ui.enterprise_releases_list.currently_supported_message %}

- -

{% data ui.enterprise_releases_list.deprecated %}

-

{% data ui.enterprise_releases_list.deprecated_message %}

- -

{% data ui.enterprise_releases_list.deprecated_developer %}

-

{% data ui.enterprise_releases_list.deprecated_developer_message %}

- {% for version in enterpriseServerReleases.deprecatedReleasesOnDeveloperSite %} -
  • Enterprise Server {{version}}
  • - {% endfor %} -
    -
    -
    -
    - {% include support-section %} - {% include small-footer %} - {% include scroll-button %} -
    - - diff --git a/lib/redirects/get-old-paths-from-permalink.js b/lib/redirects/get-old-paths-from-permalink.js index bf7055fd87..d488b5292b 100644 --- a/lib/redirects/get-old-paths-from-permalink.js +++ b/lib/redirects/get-old-paths-from-permalink.js @@ -99,6 +99,15 @@ module.exports = function getOldPathsFromPath (currentPath, languageCode, curren } // ------ END MODERN VERSION FORMAT REPLACEMENTS ------// + // ------ BEGIN ONEOFF REPLACEMENTS ------// + + // create special old path /enterprise-server-releases from current path /enterprise-server@/admin/all-releases + if (versionSatisfiesRange(currentVersion, `=${latest}`) && currentPath.endsWith('/admin/all-releases')) { + oldPaths.add('/enterprise-server-releases') + } + + // ------ END ONEOFF REPLACEMENTS ------// + // For each old path added to the set above, do the following... (new Set(oldPaths)).forEach(oldPath => { // for English only, remove language code diff --git a/lib/render-content/plugins/rewrite-local-links.js b/lib/render-content/plugins/rewrite-local-links.js index a7f9456295..5e121c333f 100644 --- a/lib/render-content/plugins/rewrite-local-links.js +++ b/lib/render-content/plugins/rewrite-local-links.js @@ -50,7 +50,7 @@ function getNewHref (node, languageCode, version) { // /enterprise-server/rest/reference/oauth-authorizations (this redirects to the latest version) // /enterprise-server@latest/rest/reference/oauth-authorizations (this redirects to the latest version) const firstLinkSegment = href.split('/')[1] - if ([...supportedPlans, ...supportedVersions, 'enterprise-server@latest'].includes(firstLinkSegment)) { + if ([...supportedPlans, ...supportedVersions, 'enterprise-server@latest'].some(v => firstLinkSegment.startsWith(v))) { newHref = path.join('/', languageCode, href) } diff --git a/middleware/enterprise-server-releases.js b/middleware/enterprise-server-releases.js deleted file mode 100644 index e0f0f274ce..0000000000 --- a/middleware/enterprise-server-releases.js +++ /dev/null @@ -1,13 +0,0 @@ -const { liquid } = require('../lib/render-content') -const layouts = require('../lib/layouts') -const getMiniTocItems = require('../lib/get-mini-toc-items') - -module.exports = async function enterpriseServerReleases (req, res, next) { - if (!req.path.endsWith('/enterprise-server-releases')) return next() - - const html = await liquid.parseAndRender(layouts['enterprise-server-releases'], req.context) - - req.context.miniTocItems = getMiniTocItems(html, 3, 'article') - - return res.send(await liquid.parseAndRender(layouts['enterprise-server-releases'], req.context)) -} diff --git a/middleware/index.js b/middleware/index.js index cb70213a79..01b8e25db5 100644 --- a/middleware/index.js +++ b/middleware/index.js @@ -130,7 +130,6 @@ module.exports = function (app) { app.use(asyncMiddleware(instrument('./contextualizers/early-access-breadcrumbs'))) } - app.use(asyncMiddleware(instrument('./enterprise-server-releases'))) app.use(asyncMiddleware(instrument('./dev-toc'))) app.use(asyncMiddleware(instrument('./featured-links'))) app.use(asyncMiddleware(instrument('./learning-track'))) diff --git a/tests/content/lint-files.js b/tests/content/lint-files.js index d81996dbee..dfe1007ddd 100644 --- a/tests/content/lint-files.js +++ b/tests/content/lint-files.js @@ -399,7 +399,10 @@ describe('lint markdown content', () => { // Filter out some very specific false positive matches const matches = initialMatches.filter(match => { - if (markdownRelPath === 'content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md') { + if ( + markdownRelPath === 'content/admin/enterprise-management/migrating-from-github-enterprise-1110x-to-2123.md' || + markdownRelPath === 'content/admin/all-releases.md' + ) { return false } return true @@ -410,7 +413,16 @@ describe('lint markdown content', () => { }) test('URLs must not contain a hard-coded domain name', async () => { - const matches = (content.match(domainLinkRegex) || []) + const initialMatches = (content.match(domainLinkRegex) || []) + + // Filter out some very specific false positive matches + const matches = initialMatches.filter(match => { + if (markdownRelPath === 'content/admin/all-releases.md') { + return false + } + return true + }) + const errorMessage = formatLinkError(domainLinkErrorText, matches) expect(matches.length, errorMessage).toBe(0) })