1
0
mirror of synced 2025-12-21 19:06:49 -05:00

Merge branch 'main' into 4169-remove-github-one

This commit is contained in:
Amy Burns
2021-04-09 10:26:33 -04:00
committed by GitHub
121 changed files with 633 additions and 589 deletions

View File

@@ -1,65 +0,0 @@
name: Check for External Repo Sync PR
# **What it does**: If someone made a repo sync pull request other than Octomerger, close it.
# **Why we have it**: Another form of spam in the open-source repository.
# **Who does it impact**: Open-source contributors.
on:
pull_request:
types:
- opened
- reopened
branches:
- main
jobs:
invalid-repo-sync-check:
name: Close external Repo Sync PRs
if: ${{ github.repository == 'github/docs' && github.head_ref == 'repo-sync' }}
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9
with:
github-token: ${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }}
script: |
const prCreator = context.payload.sender.login
// If the PR creator is the expected account, stop now
if (prCreator === 'Octomerger') {
return
}
try {
await github.teams.getMembershipForUserInOrg({
org: 'github',
team_slug: 'employees',
username: prCreator
})
// If the PR creator is a GitHub employee, stop now
return
} catch (err) {
// An error will be thrown if the user is not a GitHub employee.
// That said, we still want to proceed anyway!
}
const pr = context.payload.pull_request
const { owner, repo } = context.repo
// Close the PR and add the invalid label
await github.issues.update({
owner: owner,
repo: repo,
issue_number: pr.number,
labels: ['invalid'],
state: 'closed'
})
// Comment on the PR
await github.issues.createComment({
owner: owner,
repo: repo,
issue_number: pr.number,
body: "Please leave this `repo-sync` branch to the robots!\n\nI'm going to close this pull request now, but feel free to open a new issue or ask any questions in [discussions](https://github.com/github/docs/discussions)!"
})

View File

@@ -17,7 +17,7 @@ jobs:
check-team-membership: check-team-membership:
runs-on: ubuntu-latest runs-on: ubuntu-latest
continue-on-error: true continue-on-error: true
if: github.repository == 'github/docs' if: github.repository == 'github/docs' && github.actor != 'docs-bot'
steps: steps:
- id: membership_check - id: membership_check
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9 uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9

View File

@@ -0,0 +1,41 @@
name: Move Reopened Issues to Triage
# **What it does**: Moves issues that are reopened from the Done column to the Triage column.
# **Why we have it**: To prevent having to do this manually.
# **Who does it impact**: Open-source.
on:
issues:
types:
- reopened
jobs:
move-reopened-issue-to-triage:
if: github.repository == 'github/docs'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9
with:
github-token: ${{ github.token }}
script: |
const issueNumber = context.issue.number;
const doneColumnId = 11167427;
const triageColumnId = 11007039;
try {
const cards = await github.projects.listCards({
column_id: doneColumnId
});
for (const card of cards) {
if (card.content_url.endsWith(`/${issueNumber}`)) {
await github.projects.moveCard({
card_id: card.id,
position: 'position',
column_id: triageColumnId
});
}
}
} catch(e) {
console.log(error);
}

View File

@@ -1,13 +1,18 @@
# The docs.github.com project has two repositories: github/docs (public) and github/docs-internal (private) # The docs.github.com project has two repositories: github/docs (public) and github/docs-internal (private)
# #
# This GitHub Actions workflow keeps the main branch of those two repos in sync. # This GitHub Actions workflow keeps the `main` branch of those two repos in sync.
# #
# For more details, see https://github.com/repo-sync/repo-sync#how-it-works # For more details, see https://github.com/repo-sync/repo-sync#how-it-works
name: Repo Sync name: Repo Sync
# **What it does**: Syncs docs and docs-internal. # **What it does**:
# **Why we have it**: To keep the open-source repository up-to-date, while still having an internal repository for sensitive work. # - close-invalid-repo-sync: Close repo sync pull requests not created by Octomerger or a Hubber.
# - repo-sync: Syncs docs and docs-internal.
# **Why we have it**:
# - close-invalid-repo-sync: Another form of spam prevention for the open-source repository.
# - repo-sync: To keep the open-source repository up-to-date, while still having an internal
# repository for sensitive work.
# **Who does it impact**: Open-source. # **Who does it impact**: Open-source.
on: on:
@@ -16,7 +21,73 @@ on:
- cron: '*/15 * * * *' # every 15 minutes - cron: '*/15 * * * *' # every 15 minutes
jobs: jobs:
close-invalid-repo-sync:
name: Close invalid Repo Sync PRs
runs-on: ubuntu-latest
steps:
- name: Find pull request
if: ${{ github.repository == 'github/docs' }}
uses: juliangruber/find-pull-request-action@2fc55e82a6d5d36fe1e7f1848f7e64fd02d99de9
id: find-pull-request
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
branch: repo-sync
base: main
- name: Close pull request if unwanted
if: ${{ github.repository == 'github/docs' && steps.find-pull-request.outputs.number }}
uses: actions/github-script@626af12fe9a53dc2972b48385e7fe7dec79145c9
with:
github-token: ${{ secrets.DOCUBOT_FR_PROJECT_BOARD_WORKFLOWS_REPO_ORG_READ_SCOPES }}
script: |
const { owner, repo } = context.repo
const pr = await github.pulls.get({
owner,
repo,
pull_number: parseInt(${{ steps.find-pull-request.outputs.number }})
})
const prCreator = pr.user.login
// If the PR creator is the expected account, stop now
if (prCreator === 'Octomerger') {
return
}
try {
await github.teams.getMembershipForUserInOrg({
org: 'github',
team_slug: 'employees',
username: prCreator
})
// If the PR creator is a GitHub employee, stop now
return
} catch (err) {
// An error will be thrown if the user is not a GitHub employee.
// That said, we still want to proceed anyway!
}
// Close the PR and add the invalid label
await github.issues.update({
owner,
repo,
issue_number: pr.number,
labels: ['invalid'],
state: 'closed'
})
// Comment on the PR
await github.issues.createComment({
owner,
repo,
issue_number: pr.number,
body: "Please leave this `repo-sync` branch to the robots!\n\nI'm going to close this pull request now, but feel free to open a new issue or ask any questions in [discussions](https://github.com/github/docs/discussions)!"
})
repo-sync: repo-sync:
needs: close-invalid-repo-sync
if: github.repository == 'github/docs-internal' || github.repository == 'github/docs' if: github.repository == 'github/docs-internal' || github.repository == 'github/docs'
name: Repo Sync name: Repo Sync
runs-on: ubuntu-latest runs-on: ubuntu-latest

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -184,8 +184,10 @@ featuredLinks:
### `changelog` ### `changelog`
- Purpose: Render a list of changelog items with timestamps on product pages (ex: `layouts/product-landing.html`) - Purpose: Render a list of items pulled from [GitHub Changelog](https://github.blog/changelog/) on product landing pages (ex: `layouts/product-landing.html`). The one exception is Education, which pulls from https://github.blog/category/community/education.
- Type: `Array`, items are objects `{ href: string, title: string, date: 'YYYY-MM-DD' }` - Type: `Object`, properties:
- `label` -- must be present and corresponds to the labels used in the [GitHub Changelog](https://github.blog/changelog/)
- `prefix` -- optional string that starts each changelog title that should be omitted in the docs feed. For example, with the prefix `GitHub Actions: ` specified, changelog titles like `GitHub Actions: Some Title Here` will render as `Some Title Here` in the docs feed).
- Optional. - Optional.
### `defaultPlatform` ### `defaultPlatform`
@@ -223,7 +225,7 @@ includeGuides:
``` ```
### `type` ### `type`
- Purpose: Indicate the type of article. - Purpose: Indicate the type of article.
- Type: `String`, one of the `overview`, `quick_start`, `tutorial`, `how_to`, `reference`. - Type: `String`, one of the `overview`, `quick_start`, `tutorial`, `how_to`, `reference`.
- Optional. - Optional.

View File

@@ -22,18 +22,9 @@ featuredLinks:
- /actions/reference/environment-variables - /actions/reference/environment-variables
- /actions/reference/encrypted-secrets - /actions/reference/encrypted-secrets
changelog: changelog:
- title: Environments, environment protection rules and environment secrets (beta) label: 'actions'
date: '2020-12-15' prefix: 'GitHub Actions: '
href: https://github.blog/changelog/2020-12-15-github-actions-environments-environment-protection-rules-and-environment-secrets-beta/
- title: Workflow visualization
date: '2020-12-08'
href: https://github.blog/changelog/2020-12-08-github-actions-workflow-visualization/
- title: Removing set-env and add-path commands on November 16
date: '2020-11-09'
href: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
product_video: https://www.youtube-nocookie.com/embed/cP0I9w2coGU product_video: https://www.youtube-nocookie.com/embed/cP0I9w2coGU
redirect_from: redirect_from:
- /articles/automating-your-workflow-with-github-actions/ - /articles/automating-your-workflow-with-github-actions/
- /articles/customizing-your-project-with-github-actions/ - /articles/customizing-your-project-with-github-actions/

View File

@@ -1,6 +1,6 @@
--- ---
title: Quickstart for GitHub Actions title: Quickstart for GitHub Actions
intro: 'Add a {% data variables.product.prodname_actions %} workflow to an existing repository in 5 minutes or less.' intro: 'Try out the features of {% data variables.product.prodname_actions %} in 5 minutes or less.'
allowTitleToDifferFromFilename: true allowTitleToDifferFromFilename: true
redirect_from: redirect_from:
- /actions/getting-started-with-github-actions/starting-with-preconfigured-workflow-templates - /actions/getting-started-with-github-actions/starting-with-preconfigured-workflow-templates
@@ -19,135 +19,73 @@ topics:
### Introduction ### Introduction
You only need an existing {% data variables.product.prodname_dotcom %} repository to create and run a {% data variables.product.prodname_actions %} workflow. In this guide, you'll add a workflow that lints multiple coding languages using the [{% data variables.product.prodname_dotcom %} Super-Linter action](https://github.com/github/super-linter). The workflow uses Super-Linter to validate your source code every time a new commit is pushed to your repository. You only need a {% data variables.product.prodname_dotcom %} repository to create and run a {% data variables.product.prodname_actions %} workflow. In this guide, you'll add a workflow that demonstrates some of the essential features of {% data variables.product.prodname_actions %}.
The following example shows you how {% data variables.product.prodname_actions %} jobs can be automatically triggered, where they run, and how they can interact with the code in your repository.
### Creating your first workflow ### Creating your first workflow
1. From your repository on {% data variables.product.prodname_dotcom %}, create a new file in the `.github/workflows` directory named `superlinter.yml`. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)." 1. From your repository on {% data variables.product.prodname_dotcom %}, create a new file in the `.github/workflows` directory named `github-actions-demo.yml`. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)."
2. Copy the following YAML contents into the `superlinter.yml` file. **Note:** If your default branch is not `main`, update the value of `DEFAULT_BRANCH` to match your repository's default branch name. 2. Copy the following YAML contents into the `github-actions-demo.yml` file:
{% raw %} {% raw %}
```yaml{:copy} ```yaml{:copy}
name: Super-Linter name: GitHub Actions Demo
on: [push]
# Run this workflow every time a new commit pushed to your repository
on: push
jobs: jobs:
# Set the job key. The key is displayed as the job name Explore-GitHub-Actions:
# when a job name is not provided
super-lint:
# Name the Job
name: Lint code base
# Set the type of machine to run on
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# Checks out a copy of your repository on the ubuntu-latest machine - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event."
- name: Checkout code - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v2 uses: actions/checkout@v2
- run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "🖥️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "🍏 This job's status is ${{ job.status }}."
# Runs the Super-Linter action
- name: Run Super-Linter
uses: github/super-linter@v3
env:
DEFAULT_BRANCH: main
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
``` ```
{% endraw %} {% endraw %}
3. To run your workflow, scroll to the bottom of the page and select **Create a new branch for this commit and start a pull request**. Then, to create a pull request, click **Propose new file**. 3. Scroll to the bottom of the page and select **Create a new branch for this commit and start a pull request**. Then, to create a pull request, click **Propose new file**.
![Commit workflow file](/assets/images/commit-workflow-file.png) ![Commit workflow file](/assets/images/help/repository/actions-quickstart-commit-new-file.png)
Committing the workflow file in your repository triggers the `push` event and runs your workflow. Committing the workflow file to a branch in your repository triggers the `push` event and runs your workflow.
### Viewing your workflow results ### Viewing your workflow results
{% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.actions-tab %} {% data reusables.repositories.actions-tab %}
{% data reusables.repositories.navigate-to-workflow-superlinter %} 1. In the left sidebar, click the workflow you want to see.
{% data reusables.repositories.view-run-superlinter %}
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.0" or currentVersion == "github-ae@latest" %}
1. Under **Jobs** or in the visualization graph, click the **Lint code base** job.
![Lint code base job](/assets/images/help/repository/superlinter-lint-code-base-job-updated.png)
{% else %}
1. In the left sidebar, click the **Lint code base** job.
![Lint code base job](/assets/images/help/repository/superlinter-lint-code-base-job.png)
{% endif %}
{% data reusables.repositories.view-failed-job-results-superlinter %}
![Workflow list in left sidebar](/assets/images/help/repository/actions-quickstart-workflow-sidebar.png)
1. From the list of workflow runs, click the name of the run you want to see.
![Name of workflow run](/assets/images/help/repository/actions-quickstart-run-name.png)
1. Under **Jobs** , click the **Explore-GitHub-Actions** job.
![Locate job](/assets/images/help/repository/actions-quickstart-job.png)
1. The log shows you how each of the steps was processed. Expand any of the steps to view its details.
![Example workflow results](/assets/images/help/repository/actions-quickstart-logs.png)
For example, you can see the list of files in your repository:
![Example action detail](/assets/images/help/repository/actions-quickstart-log-detail.png)
### More workflow templates ### More workflow templates
{% data reusables.actions.workflow-template-overview %} {% data reusables.actions.workflow-template-overview %}
### Next steps ### Next steps
The super-linter workflow you just added runs each time code is pushed to your repository to help you spot errors and inconsistencies in your code. But this is only the beginning of what you can do with {% data variables.product.prodname_actions %}. Your repository can contain multiple workflows that trigger different jobs based on different events. {% data variables.product.prodname_actions %} can help you automate nearly every aspect of your application development processes. Ready to get started? Here are some helpful resources for taking your next steps with {% data variables.product.prodname_actions %}: The example workflow you just added runs each time code is pushed to the branch, and shows you how {% data variables.product.prodname_actions %} can work with the contents of your repository. But this is only the beginning of what you can do with {% data variables.product.prodname_actions %}:
- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" for an in-depth tutorial - Your repository can contain multiple workflows that trigger different jobs based on different events.
- "[Guides](/actions/guides)" for specific uses cases and examples - You can use a workflow to install software testing apps and have them automatically test your code on {% data variables.product.prodname_dotcom %}'s runners.
- [github/super-linter](https://github.com/github/super-linter) for more details about configuring the Super-Linter action
<div id="quickstart-treatment" hidden> {% data variables.product.prodname_actions %} can help you automate nearly every aspect of your application development processes. Ready to get started? Here are some helpful resources for taking your next steps with {% data variables.product.prodname_actions %}:
### Introduction - "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" for an in-depth tutorial.
- "[Guides](/actions/guides)" for specific uses cases and examples.
Printing "Hello, World!" is a great way to explore the basic set up and syntax of a new programming language. In this guide, you'll use GitHub Actions to print "Hello, World!" within your {% data variables.product.prodname_dotcom %} repository's workflow logs. All you need to get started is a {% data variables.product.prodname_dotcom %} repository where you feel comfortable creating and running a sample {% data variables.product.prodname_actions %} workflow. Feel free to create a new repository for this Quickstart to test this and future {% data variables.product.prodname_actions %} workflows.
### Creating your first workflow
1. From your repository on {% data variables.product.prodname_dotcom %}, create a new file in the `.github/workflows` directory named `hello-world.yml`. For more information, see "[Creating new files](/github/managing-files-in-a-repository/creating-new-files)."
2. Copy the following YAML contents into the `hello-world.yml` file.
{% raw %}
```yaml{:copy}
name: Say hello!
# GitHub Actions Workflows are automatically triggered by GitHub events
on:
# For this workflow, we're using the workflow_dispatch event which is triggered when the user clicks Run workflow in the GitHub Actions UI
workflow_dispatch:
# The workflow_dispatch event accepts optional inputs so you can customize the behavior of the workflow
inputs:
name:
description: 'Person to greet'
required: true
default: 'World'
# When the event is triggered, GitHub Actions will run the jobs indicated
jobs:
say_hello:
# Uses a ubuntu-latest runner to complete the requested steps
runs-on: ubuntu-latest
steps:
- run: |
echo "Hello ${{ github.event.inputs.name }}!"
```
{% endraw %}
3. Scroll to the bottom of the page and select **Create a new branch for this commit and start a pull request**. Then, to create a pull request, click **Propose new file**.
![Commit workflow file](/assets/images/help/repository/commit-hello-world-file.png)
4. Once the pull request has been merged, you'll be ready to move on to "Trigger your workflow".
### Trigger your workflow
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.actions-tab %}
1. In the left sidebar, click the workflow you want to run.
![Select say hello job](/assets/images/help/repository/say-hello-job.png)
1. On the right, click the **Run workflow** drop-down and click **Run workflow**. Optionally, you can enter a custom message into the "Person to greet" input before running the workflow.
![Trigger the manual workflow](/assets/images/help/repository/manual-workflow-trigger.png)
1. The workflow run will appear at the top of the list of "Say hello!" workflow runs. Click "Say hello!" to see the result of the workflow run.
![Workflow run result listing](/assets/images/help/repository/workflow-run-listing.png)
1. In the left sidebar, click the "say_hello" job.
![Workflow job listing](/assets/images/help/repository/workflow-job-listing.png)
1. In the workflow logs, expand the 'Run echo "Hello World!"' section.
![Workflow detail](/assets/images/help/repository/workflow-log-listing.png)
### More workflow templates
{% data reusables.actions.workflow-template-overview %}
### Next steps
The hello-world workflow you just added is a minimal example of a manually triggered workflow. This is only the beginning of what you can do with {% data variables.product.prodname_actions %}. Your repository can contain multiple workflows that trigger different jobs based on different events. {% data variables.product.prodname_actions %} can help you automate nearly every aspect of your application development processes. Ready to get started? Here are some helpful resources for taking your next steps with {% data variables.product.prodname_actions %}:
- "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" for an in-depth tutorial
- "[Guides](/actions/guides)" for specific uses cases and examples
</div>

View File

@@ -30,6 +30,19 @@ The `actions-sync` tool can only download actions from {% data variables.product
* Before using the `actions-sync` tool, you must ensure that all destination organizations already exist on your enterprise instance. The following example demonstrates how to sync actions to an organization named `synced-actions` on an enterprise instance. For more information, see "[Creating a new organization from scratch](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)." * Before using the `actions-sync` tool, you must ensure that all destination organizations already exist on your enterprise instance. The following example demonstrates how to sync actions to an organization named `synced-actions` on an enterprise instance. For more information, see "[Creating a new organization from scratch](/organizations/collaborating-with-groups-in-organizations/creating-a-new-organization-from-scratch)."
* You must create a personal access token (PAT) on your enterprise instance that can create and write to repositories in the destination organizations. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)." * You must create a personal access token (PAT) on your enterprise instance that can create and write to repositories in the destination organizations. For more information, see "[Creating a personal access token](/github/authenticating-to-github/creating-a-personal-access-token)."
* If you want to sync the bundled actions in the `actions` organization on {% data variables.product.product_location %}, you must be an owner of the `actions` organization.
{% note %}
**Note:** By default, even site administrators are not owners of the bundled `actions` organization.
{% endnote %}
Site administrators can use the `ghe-org-admin-promote` command in the administrative shell to promote a user to be an owner of the bundled `actions` organization. For more information, see "[Accessing the administrative shell (SSH)](/admin/configuration/accessing-the-administrative-shell-ssh)" and "[`ghe-org-admin-promote`](/admin/configuration/command-line-utilities#ghe-org-admin-promote)."
```shell
ghe-org-admin-promote -u <em>USERNAME</em> -o actions
```
### Example: Using the `actions-sync` tool ### Example: Using the `actions-sync` tool

View File

@@ -1,7 +1,7 @@
--- ---
title: Finding security vulnerabilities and errors in your code title: Finding security vulnerabilities and errors in your code
shortTitle: Secure coding shortTitle: Secure coding
intro: 'Keep your code secure by using secret scanning to identify and fix potential security vulnerabilities and other errors in your code.' intro: 'Keep your code secure by using {% data variables.product.prodname_code_scanning %} to identify and fix potential security vulnerabilities and other errors in your code.'
product: '{% data reusables.gated-features.code-scanning %}' product: '{% data reusables.gated-features.code-scanning %}'
redirect_from: redirect_from:
- /github/managing-security-vulnerabilities/finding-security-vulnerabilities-in-your-projects-code - /github/managing-security-vulnerabilities/finding-security-vulnerabilities-in-your-projects-code

View File

@@ -22,6 +22,8 @@ featuredLinks:
- /discussions/guides/finding-discussions-across-multiple-repositories - /discussions/guides/finding-discussions-across-multiple-repositories
- /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions - /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions
- /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository - /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository
changelog:
label: 'discussions'
product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk
layout: product-landing layout: product-landing
versions: versions:

View File

@@ -19,21 +19,8 @@ featuredLinks:
- /desktop - /desktop
- /github/getting-started-with-github/github-cli - /github/getting-started-with-github/github-cli
- /education/manage-coursework-with-github-classroom/teach-with-github-classroom - /education/manage-coursework-with-github-classroom/teach-with-github-classroom
changelog: changelog:
- title: 'Try something new at Local Hack Day: Learn' label: 'education'
date: '2020-10-15'
href: https://github.blog/2020-10-15-try-something-new-at-local-hack-day-learn/
- title: 'Remote Education: Creating community through shared experiences'
date: '2020-09-24'
href: https://github.blog/2020-09-24-remote-education-creating-community-through-shared-experiences/
- title: 'Remote Education: A series of best practices for online campus communities'
date: '2020-09-10'
href: https://github.blog/2020-09-10-remote-education-a-series-of-best-practices-for-online-campus-communities/
- title: Welcome to the inaugural class of MLH Fellows
date: '2020-06-24'
href: https://github.blog/2020-06-24-welcome-to-the-inaugural-class-of-mlh-fellows/
layout: product-landing layout: product-landing
versions: versions:
free-pro-team: '*' free-pro-team: '*'

View File

@@ -17,13 +17,13 @@ topics:
Personal access tokens (PATs) are an alternative to using passwords for authentication to {% data variables.product.product_name %} when using the [GitHub API](/rest/overview/other-authentication-methods#via-oauth-and-personal-access-tokens) or the [command line](#using-a-token-on-the-command-line). Personal access tokens (PATs) are an alternative to using passwords for authentication to {% data variables.product.product_name %} when using the [GitHub API](/rest/overview/other-authentication-methods#via-oauth-and-personal-access-tokens) or the [command line](#using-a-token-on-the-command-line).
{% if currentVersion == "free-pro-team@latest" %}If you want to use a PAT to access resources owned by an organization that uses SAML SSO, you must authorize the PAT. For more information, see "[About authentication with SAML single sign-on](/articles/about-authentication-with-saml-single-sign-on)" and "[Authorizing a personal access token for use with SAML single sign-on](/articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)."{% endif %} {% if currentVersion == "free-pro-team@latest" %}If you want to use a PAT to access resources owned by an organization that uses SAML SSO, you must authorize the PAT. For more information, see "[About authentication with SAML single sign-on](/github/authenticating-to-github/about-authentication-with-saml-single-sign-on)" and "[Authorizing a personal access token for use with SAML single sign-on](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on)."{% endif %}
{% if currentVersion == "free-pro-team@latest" %}{% data reusables.user_settings.removes-personal-access-tokens %}{% endif %} {% if currentVersion == "free-pro-team@latest" %}{% data reusables.user_settings.removes-personal-access-tokens %}{% endif %}
### Creating a token ### Creating a token
{% if currentVersion == "free-pro-team@latest" %}1. [Verify your email address](/articles/verifying-your-email-address), if it hasn't been verified yet.{% endif %} {% if currentVersion == "free-pro-team@latest" %}1. [Verify your email address](/github/getting-started-with-github/verifying-your-email-address), if it hasn't been verified yet.{% endif %}
{% data reusables.user_settings.access_settings %} {% data reusables.user_settings.access_settings %}
{% data reusables.user_settings.developer_settings %} {% data reusables.user_settings.developer_settings %}
{% data reusables.user_settings.personal_access_tokens %} {% data reusables.user_settings.personal_access_tokens %}
@@ -47,13 +47,13 @@ Personal access tokens (PATs) are an alternative to using passwords for authenti
{% else %} {% else %}
![Newly created token](/assets/images/help/settings/personal_access_tokens_ghe_legacy.png) ![Newly created token](/assets/images/help/settings/personal_access_tokens_ghe_legacy.png)
{% endif %} {% endif %}
{% warning %} {% warning %}
**Warning:** Treat your tokens like passwords and keep them secret. When working with the API, use tokens as environment variables instead of hardcoding them into your programs. **Warning:** Treat your tokens like passwords and keep them secret. When working with the API, use tokens as environment variables instead of hardcoding them into your programs.
{% endwarning %} {% endwarning %}
{% if currentVersion == "free-pro-team@latest" %}9. To use your token to authenticate to an organization that uses SAML SSO, [authorize the token for use with a SAML single-sign-on organization](/articles/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on).{% endif %}
{% if currentVersion == "free-pro-team@latest" %}9. To use your token to authenticate to an organization that uses SAML SSO, [authorize the token for use with a SAML single-sign-on organization](/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on).{% endif %}
### Using a token on the command line ### Using a token on the command line
@@ -61,7 +61,7 @@ Personal access tokens (PATs) are an alternative to using passwords for authenti
Personal access tokens can only be used for HTTPS Git operations. If your repository uses an SSH remote URL, you will need to [switch the remote from SSH to HTTPS](/github/getting-started-with-github/managing-remote-repositories/#switching-remote-urls-from-ssh-to-https). Personal access tokens can only be used for HTTPS Git operations. If your repository uses an SSH remote URL, you will need to [switch the remote from SSH to HTTPS](/github/getting-started-with-github/managing-remote-repositories/#switching-remote-urls-from-ssh-to-https).
If you are not prompted for your username and password, your credentials may be cached on your computer. You can [update your credentials in the Keychain](/articles/updating-credentials-from-the-osx-keychain) to replace your old password with the token. If you are not prompted for your username and password, your credentials may be cached on your computer. You can [update your credentials in the Keychain](/github/getting-started-with-github/updating-credentials-from-the-macos-keychain) to replace your old password with the token.
### Further reading ### Further reading

View File

@@ -186,7 +186,6 @@ An overview of some of the most common actions that are recorded as events in th
| Action | Description | Action | Description
|------------------|------------------- |------------------|-------------------
| `repo_funding_link_button_toggle` | Triggered when you enable or disable a sponsor button in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)")
| `repo_funding_links_file_action` | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") | `repo_funding_links_file_action` | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)")
| `sponsor_sponsorship_cancel` | Triggered when you cancel a sponsorship (see "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") | `sponsor_sponsorship_cancel` | Triggered when you cancel a sponsorship (see "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)")
| `sponsor_sponsorship_create` | Triggered when you sponsor an account (see "[Sponsoring an open source contributor](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor)") | `sponsor_sponsorship_create` | Triggered when you sponsor an account (see "[Sponsoring an open source contributor](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor)")
@@ -194,9 +193,11 @@ An overview of some of the most common actions that are recorded as events in th
| `sponsor_sponsorship_tier_change` | Triggered when you upgrade or downgrade your sponsorship (see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") | `sponsor_sponsorship_tier_change` | Triggered when you upgrade or downgrade your sponsorship (see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)")
| `sponsored_developer_approve` | Triggered when your {% data variables.product.prodname_sponsors %} account is approved (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") | `sponsored_developer_approve` | Triggered when your {% data variables.product.prodname_sponsors %} account is approved (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)")
| `sponsored_developer_create` | Triggered when your {% data variables.product.prodname_sponsors %} account is created (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") | `sponsored_developer_create` | Triggered when your {% data variables.product.prodname_sponsors %} account is created (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)")
| `sponsored_developer_disable` | Triggered when your {% data variables.product.prodname_sponsors %} account is disabled
| `sponsored_developer_redraft` | Triggered when your {% data variables.product.prodname_sponsors %} account is returned to draft state from approved state
| `sponsored_developer_profile_update` | Triggered when you edit your sponsored developer profile (see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)") | `sponsored_developer_profile_update` | Triggered when you edit your sponsored developer profile (see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)")
| `sponsored_developer_request_approval` | Triggered when you submit your application for {% data variables.product.prodname_sponsors %} for approval (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") | `sponsored_developer_request_approval` | Triggered when you submit your application for {% data variables.product.prodname_sponsors %} for approval (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)")
| `sponsored_developer_tier_description_update` | Triggered when you change the description for a sponsorship tier (see "[Changing your sponsorship tiers](/articles/changing-your-sponsorship-tiers)") | `sponsored_developer_tier_description_update` | Triggered when you change the description for a sponsorship tier (see "[Managing your sponsorship tiers](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-tiers)")
| `sponsored_developer_update_newsletter_send` | Triggered when you send an email update to your sponsors (see "[Contacting your sponsors](/articles/contacting-your-sponsors)") | `sponsored_developer_update_newsletter_send` | Triggered when you send an email update to your sponsors (see "[Contacting your sponsors](/articles/contacting-your-sponsors)")
| `waitlist_invite_sponsored_developer` | Triggered when you are invited to join {% data variables.product.prodname_sponsors %} from the waitlist (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") | `waitlist_invite_sponsored_developer` | Triggered when you are invited to join {% data variables.product.prodname_sponsors %} from the waitlist (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)")
| `waitlist_join` | Triggered when you join the waitlist to become a sponsored developer (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)") | `waitlist_join` | Triggered when you join the waitlist to become a sponsored developer (see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)")

View File

@@ -19,15 +19,15 @@ When you downgrade or cancel a sponsorship, the change will become effective on
{% data reusables.sponsors.navigate-to-sponsored-account %} {% data reusables.sponsors.navigate-to-sponsored-account %}
{% data reusables.sponsors.sponsorship-dashboard %} {% data reusables.sponsors.sponsorship-dashboard %}
{% data reusables.sponsors.review-tiers-to-select %}
{% data reusables.sponsors.select-a-tier %} {% data reusables.sponsors.select-a-tier %}
{% data reusables.sponsors.update-sponsorship %} {% data reusables.sponsors.update-sponsorship %}
### Canceling a sponsorship ### Canceling a sponsorship
{% data reusables.user_settings.access_settings %} {% data reusables.user_settings.access_settings %}
{% data reusables.user_settings.billing %} {% data reusables.user_settings.billing_plans %}
{% data reusables.sponsors.billing-switcher %} {% data reusables.sponsors.billing-switcher %}
{% data reusables.user_settings.subscriptions-tab %}
3. Under "{% data variables.product.prodname_sponsors %}", to the right of the sponsored open source contributor, click {% octicon "triangle-down" aria-label="The down triangle octicon" %} next to your sponsored amount, then click **Cancel sponsorship**. 3. Under "{% data variables.product.prodname_sponsors %}", to the right of the sponsored open source contributor, click {% octicon "triangle-down" aria-label="The down triangle octicon" %} next to your sponsored amount, then click **Cancel sponsorship**.
![Cancel sponsorship button](/assets/images/help/billing/edit-sponsor-billing.png) ![Cancel sponsorship button](/assets/images/help/billing/edit-sponsor-billing.png)
4. Review the information about canceling your sponsorship, then click **OK**. 4. Review the information about canceling your sponsorship, then click **OK**.

View File

@@ -19,5 +19,6 @@ When you upgrade your sponsorship tier, the change will become effective immedia
{% data reusables.sponsors.navigate-to-sponsored-account %} {% data reusables.sponsors.navigate-to-sponsored-account %}
{% data reusables.sponsors.sponsorship-dashboard %} {% data reusables.sponsors.sponsorship-dashboard %}
{% data reusables.sponsors.review-tiers-to-select %}
{% data reusables.sponsors.select-a-tier %} {% data reusables.sponsors.select-a-tier %}
{% data reusables.sponsors.update-sponsorship %} {% data reusables.sponsors.update-sponsorship %}

View File

@@ -13,7 +13,7 @@ topics:
- legal - legal
--- ---
Effective date: **January 29, 2021** Effective date: **April 2, 2021**
GitHub provides a great deal of transparency regarding how we use your data, how we collect your data, and with whom we share your data. To that end, we provide this page, which details [our subprocessors](#github-subprocessors), and how we use [cookies](#cookies-on-github). GitHub provides a great deal of transparency regarding how we use your data, how we collect your data, and with whom we share your data. To that end, we provide this page, which details [our subprocessors](#github-subprocessors), and how we use [cookies](#cookies-on-github).
@@ -33,7 +33,6 @@ When we share your information with third party subprocessors, such as our vendo
| MailChimp | Customer ticketing mail services provider | United States | United States | | MailChimp | Customer ticketing mail services provider | United States | United States |
| Mailgun | Transactional mail services provider | United States | United States | | Mailgun | Transactional mail services provider | United States | United States |
| Microsoft | Microsoft Services | United States | United States | | Microsoft | Microsoft Services | United States | United States |
| Monday.com | Team collaboration and project management platform | United States | Israel |
| Nexmo | SMS notification provider | United States | United States | | Nexmo | SMS notification provider | United States | United States |
| Salesforce.com | Customer relations management | United States | United States | | Salesforce.com | Customer relations management | United States | United States |
| Sentry.io | Application monitoring provider | United States | United States | | Sentry.io | Application monitoring provider | United States | United States |

View File

@@ -24,7 +24,9 @@ You can set a goal for your sponsorships. For more information, see "[Managing y
### Sponsorship tiers ### Sponsorship tiers
{% data reusables.sponsors.tier-details %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)," "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization), and "[Changing your sponsorship tiers](/articles/changing-your-sponsorship-tiers)." {% data reusables.sponsors.tier-details %} For more information, see "[Setting up {% data variables.product.prodname_sponsors %} for your user account](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-user-account)," "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization), and "[Managing your sponsorship tiers](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-tiers)."
It's best to set up a range of different sponsorship options, including monthly and one-time tiers, to make it easy for anyone to support your work. In particular, one-time payments allow people to reward your efforts without worrying about whether their finances will support a regular payment schedule.
### Sponsorship payouts ### Sponsorship payouts
@@ -34,5 +36,9 @@ You can set a goal for your sponsorships. For more information, see "[Managing y
For more information, see "[Managing your payouts from {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors)." For more information, see "[Managing your payouts from {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-payouts-from-github-sponsors)."
### Sharing feedback about {% data variables.product.prodname_sponsors %}
{% data reusables.sponsors.feedback %}
### Further reading ### Further reading
- "[FAQ with the {% data variables.product.prodname_sponsors %} team](https://github.blog/2019-06-12-faq-with-the-github-sponsors-team/)" on {% data variables.product.prodname_blog %} - "[FAQ with the {% data variables.product.prodname_sponsors %} team](https://github.blog/2019-06-12-faq-with-the-github-sponsors-team/)" on {% data variables.product.prodname_blog %}

View File

@@ -37,7 +37,7 @@ To be eligible for the {% data variables.product.prodname_matching_fund %}, you
### Sharing feedback about {% data variables.product.prodname_sponsors %} ### Sharing feedback about {% data variables.product.prodname_sponsors %}
This is just the beginning — we'd love your input to make sure {% data variables.product.prodname_sponsors %} serves your needs into the future. Please send us your feedback or suggestions by contacting [{% data variables.contact.github_support %}](https://support.github.com/contact?form%5Bsubject%5D=GitHub+Sponsors). {% data reusables.sponsors.feedback %}
### Further reading ### Further reading
- "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)" - "[Sponsoring open source contributors](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-open-source-contributors)"

View File

@@ -15,6 +15,8 @@ Your sponsors can choose whether they receive email updates about your work. For
For sponsored developer accounts, the update will come from your user account's primary email address. If you've enabled email address privacy on your user account, the update will come from `noreply@github.com` instead. For sponsored organizations, the update will come from the organization's `noreply@github.com` email address. For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)." For sponsored developer accounts, the update will come from your user account's primary email address. If you've enabled email address privacy on your user account, the update will come from `noreply@github.com` instead. For sponsored organizations, the update will come from the organization's `noreply@github.com` email address. For more information, see "[Setting your commit email address](/articles/setting-your-commit-email-address)."
You can also contact any one-time sponsors who contributed within the last 30 days and enabled updates.
### Contacting your sponsors ### Contacting your sponsors
{% data reusables.sponsors.navigate-to-sponsors-dashboard %} {% data reusables.sponsors.navigate-to-sponsors-dashboard %}

View File

@@ -25,7 +25,7 @@ topics:
{% link_in_list /setting-up-github-sponsors-for-your-organization %} {% link_in_list /setting-up-github-sponsors-for-your-organization %}
{% link_in_list /editing-your-profile-details-for-github-sponsors %} {% link_in_list /editing-your-profile-details-for-github-sponsors %}
{% link_in_list /managing-your-sponsorship-goal %} {% link_in_list /managing-your-sponsorship-goal %}
{% link_in_list /changing-your-sponsorship-tiers %} {% link_in_list /managing-your-sponsorship-tiers %}
{% link_in_list /viewing-your-sponsors-and-sponsorships %} {% link_in_list /viewing-your-sponsors-and-sponsorships %}
{% link_in_list /managing-your-payouts-from-github-sponsors %} {% link_in_list /managing-your-payouts-from-github-sponsors %}
{% link_in_list /configuring-webhooks-for-events-in-your-sponsored-account %} {% link_in_list /configuring-webhooks-for-events-in-your-sponsored-account %}

View File

@@ -13,6 +13,12 @@ You can set a funding goal for your sponsored account and share the goal with yo
Your goal can set a target for the number of sponsors you want to have or the amount of money you want to earn each month. You can only set one goal up at a time. After you reach a goal, you can set another goal. Your goal can set a target for the number of sponsors you want to have or the amount of money you want to earn each month. You can only set one goal up at a time. After you reach a goal, you can set another goal.
{% note %}
**Note:** Goals are intended to help people track momentum so only monthly sponsors contribute toward your goal.
{% endnote %}
### Setting a goal ### Setting a goal
{% data reusables.sponsors.navigate-to-sponsors-dashboard %} {% data reusables.sponsors.navigate-to-sponsors-dashboard %}

View File

@@ -1,8 +1,9 @@
--- ---
title: Changing your sponsorship tiers title: Managing your sponsorship tiers
intro: 'You can add a new sponsorship tier, or edit or retire an existing tier.' intro: 'You can add a new sponsorship tier, or edit or retire an existing tier.'
redirect_from: redirect_from:
- /articles/changing-your-sponsorship-tiers - /articles/changing-your-sponsorship-tiers
- /github/supporting-the-open-source-community-with-github-sponsors/changing-your-sponsorship-tiers
versions: versions:
free-pro-team: '*' free-pro-team: '*'
topics: topics:
@@ -32,3 +33,13 @@ topics:
{% data reusables.sponsors.tier-price-description %} {% data reusables.sponsors.tier-price-description %}
{% data reusables.sponsors.tier-update %} {% data reusables.sponsors.tier-update %}
{% data reusables.sponsors.retire-tier %} {% data reusables.sponsors.retire-tier %}
### Enabling tiers with custom amounts
{% data reusables.sponsors.navigate-to-sponsors-dashboard %}
{% data reusables.sponsors.navigate-to-sponsor-tiers-tab %}
{% data reusables.sponsors.enable-custom-amounts %}
### Disabling tiers with custom amounts
You can disable tiers with custom amounts by deselecting the **Enable custom amounts** option on the **Sponsor tiers** tab. If you disable custom amounts, all custom tiers are retired.

View File

@@ -48,6 +48,7 @@ To join {% data variables.product.prodname_sponsors %} as an individual contribu
{% data reusables.sponsors.tier-price-description %} {% data reusables.sponsors.tier-price-description %}
{% data reusables.sponsors.save-tier-draft %} {% data reusables.sponsors.save-tier-draft %}
{% data reusables.sponsors.review-and-publish-tier %} {% data reusables.sponsors.review-and-publish-tier %}
{% data reusables.sponsors.enable-custom-amounts %}
{% data reusables.sponsors.add-more-tiers %} {% data reusables.sponsors.add-more-tiers %}
### Submitting your bank information ### Submitting your bank information

View File

@@ -48,6 +48,7 @@ After {% data variables.product.prodname_dotcom %} reviews your application, you
{% data reusables.sponsors.tier-price-description %} {% data reusables.sponsors.tier-price-description %}
{% data reusables.sponsors.save-tier-draft %} {% data reusables.sponsors.save-tier-draft %}
{% data reusables.sponsors.review-and-publish-tier %} {% data reusables.sponsors.review-and-publish-tier %}
{% data reusables.sponsors.enable-custom-amounts %}
{% data reusables.sponsors.add-more-tiers %} {% data reusables.sponsors.add-more-tiers %}
### Submitting your bank information ### Submitting your bank information

View File

@@ -1,6 +1,6 @@
--- ---
title: Sponsoring an open source contributor title: Sponsoring an open source contributor
intro: 'You can make a monthly recurring payment to a developer or organization who designs, creates, or maintains open source projects you depend on.' intro: 'You can make a one-time or monthly recurring payment to a developer or organization who designs, creates, or maintains open source projects you depend on.'
redirect_from: redirect_from:
- /articles/sponsoring-a-developer - /articles/sponsoring-a-developer
- /articles/sponsoring-an-open-source-contributor - /articles/sponsoring-an-open-source-contributor
@@ -24,11 +24,11 @@ You can sponsor an account on behalf of your user account to invest in projects
- Developing brand awareness as an organization that values open source - Developing brand awareness as an organization that values open source
- Thanking open source developers for building libraries that complement the product your organization offers - Thanking open source developers for building libraries that complement the product your organization offers
You can use a credit card to sponsor an account on {% data variables.product.product_name %}. If your organization wants to pay by invoice, [contact us](https://support.github.com/contact/org-sponsors-waitlist). You use your normal payment method to sponsor an account on {% data variables.product.product_name %}. If your organization wants to pay by invoice, [contact us](https://support.github.com/contact/org-sponsors-waitlist).
{% data reusables.sponsors.no-fees %} For more information, see "[About billing for {% data variables.product.prodname_sponsors %}](/articles/about-billing-for-github-sponsors)." {% data reusables.sponsors.no-fees %} For more information, see "[About billing for {% data variables.product.prodname_sponsors %}](/articles/about-billing-for-github-sponsors)."
When you sponsor an account using a credit card, the change will become effective immediately. {% data reusables.sponsors.prorated-sponsorship %} When you sponsor an account the change is effective immediately, unless you are sponsoring on behalf of an organization that pays by invoice. {% data reusables.sponsors.prorated-sponsorship %} Your sponsorship is included in the next scheduled payment to the sponsored account.
{% data reusables.sponsors.manage-updates-for-orgs %} {% data reusables.sponsors.manage-updates-for-orgs %}
@@ -56,6 +56,7 @@ Before you can sponsor an account, you must have a verified email address. For m
![Sponsor button](/assets/images/help/sponsors/sponsor-org-button.png) ![Sponsor button](/assets/images/help/sponsors/sponsor-org-button.png)
1. Optionally, on the right side of the page, to sponsor the account on behalf of your organization, use the **Sponsor as** drop-down menu, and click the organization. 1. Optionally, on the right side of the page, to sponsor the account on behalf of your organization, use the **Sponsor as** drop-down menu, and click the organization.
![Drop-down menu to choose the account you'll sponsor as](/assets/images/help/sponsors/sponsor-as-drop-down-menu.png) ![Drop-down menu to choose the account you'll sponsor as](/assets/images/help/sponsors/sponsor-as-drop-down-menu.png)
{% data reusables.sponsors.review-tiers-to-select %}
{% data reusables.sponsors.select-a-tier %} {% data reusables.sponsors.select-a-tier %}
{% data reusables.sponsors.pay-prorated-amount %} {% data reusables.sponsors.pay-prorated-amount %}
{% data reusables.sponsors.select-sponsorship-billing %} {% data reusables.sponsors.select-sponsorship-billing %}

View File

@@ -593,7 +593,6 @@ For more information, see "[Managing the publication of {% data variables.produc
| Action | Description | Action | Description
|------------------|------------------- |------------------|-------------------
| `repo_funding_link_button_toggle` | Triggered when you enable or disable a sponsor button in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)")
| `repo_funding_links_file_action` | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)") | `repo_funding_links_file_action` | Triggered when you change the FUNDING file in your repository (see "[Displaying a sponsor button in your repository](/articles/displaying-a-sponsor-button-in-your-repository)")
| `sponsor_sponsorship_cancel` | Triggered when you cancel a sponsorship (see "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") | `sponsor_sponsorship_cancel` | Triggered when you cancel a sponsorship (see "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)")
| `sponsor_sponsorship_create` | Triggered when you sponsor an account (see "[Sponsoring an open source contributor](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor)") | `sponsor_sponsorship_create` | Triggered when you sponsor an account (see "[Sponsoring an open source contributor](/github/supporting-the-open-source-community-with-github-sponsors/sponsoring-an-open-source-contributor)")
@@ -601,10 +600,12 @@ For more information, see "[Managing the publication of {% data variables.produc
| `sponsor_sponsorship_tier_change` | Triggered when you upgrade or downgrade your sponsorship (see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)") | `sponsor_sponsorship_tier_change` | Triggered when you upgrade or downgrade your sponsorship (see "[Upgrading a sponsorship](/articles/upgrading-a-sponsorship)" and "[Downgrading a sponsorship](/articles/downgrading-a-sponsorship)")
| `sponsored_developer_approve` | Triggered when your {% data variables.product.prodname_sponsors %} account is approved (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)") | `sponsored_developer_approve` | Triggered when your {% data variables.product.prodname_sponsors %} account is approved (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)")
| `sponsored_developer_create` | Triggered when your {% data variables.product.prodname_sponsors %} account is created (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)") | `sponsored_developer_create` | Triggered when your {% data variables.product.prodname_sponsors %} account is created (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)")
| `sponsored_developer_disable` | Triggered when your {% data variables.product.prodname_sponsors %} account is disabled
| `sponsored_developer_redraft` | Triggered when your {% data variables.product.prodname_sponsors %} account is returned to draft state from approved state
| `sponsored_developer_profile_update` | Triggered when you edit your sponsored organization profile (see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)") | `sponsored_developer_profile_update` | Triggered when you edit your sponsored organization profile (see "[Editing your profile details for {% data variables.product.prodname_sponsors %}](/github/supporting-the-open-source-community-with-github-sponsors/editing-your-profile-details-for-github-sponsors)")
| `sponsored_developer_request_approval` | Triggered when you submit your application for {% data variables.product.prodname_sponsors %} for approval (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)") | `sponsored_developer_request_approval` | Triggered when you submit your application for {% data variables.product.prodname_sponsors %} for approval (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)")
| `sponsored_developer_tier_description_update` | Triggered when you change the description for a sponsorship tier (see "[Changing your sponsorship tiers](/articles/changing-your-sponsorship-tiers)") | `sponsored_developer_tier_description_update` | Triggered when you change the description for a sponsorship tier (see "[Managing your sponsorship tiers](/github/supporting-the-open-source-community-with-github-sponsors/managing-your-sponsorship-tiers)")
| sponsored_developer_update_newsletter_send | Triggered when you send an email update to your sponsors (see "[Contacting your sponsors](/articles/contacting-your-sponsors)") | `sponsored_developer_update_newsletter_send` | Triggered when you send an email update to your sponsors (see "[Contacting your sponsors](/articles/contacting-your-sponsors)")
| `waitlist_invite_sponsored_developer` | Triggered when you are invited to join {% data variables.product.prodname_sponsors %} from the waitlist (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)") | `waitlist_invite_sponsored_developer` | Triggered when you are invited to join {% data variables.product.prodname_sponsors %} from the waitlist (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)")
| `waitlist_join` | Triggered when you join the waitlist to become a sponsored organization (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)") | `waitlist_join` | Triggered when you join the waitlist to become a sponsored organization (see "[Setting up {% data variables.product.prodname_sponsors %} for your organization](/github/supporting-the-open-source-community-with-github-sponsors/setting-up-github-sponsors-for-your-organization)")
{% endif %} {% endif %}

View File

@@ -6,6 +6,7 @@ redirect_from:
- /articles/changing-a-persons-role-to-owner - /articles/changing-a-persons-role-to-owner
- /github/setting-up-and-managing-organizations-and-teams/changing-a-persons-role-to-owner - /github/setting-up-and-managing-organizations-and-teams/changing-a-persons-role-to-owner
- /github/setting-up-and-managing-organizations-and-teams/managing-ownership-continuity-for-your-organization - /github/setting-up-and-managing-organizations-and-teams/managing-ownership-continuity-for-your-organization
- /github/setting-up-and-managing-organizations-and-teams/maintaining-ownership-continuity-for-your-organization
permissions: Organization owners can promote any member of an organization to an organization owner. permissions: Organization owners can promote any member of an organization to an organization owner.
versions: versions:
free-pro-team: '*' free-pro-team: '*'

View File

@@ -20,15 +20,8 @@ featuredLinks:
- /packages/guides/enabling-improved-container-support - /packages/guides/enabling-improved-container-support
- /packages/guides/configuring-rubygems-for-use-with-github-packages - /packages/guides/configuring-rubygems-for-use-with-github-packages
changelog: changelog:
- title: ghcr.io maintenance mode on 2021-01-09 label: 'packages'
date: '2021-01-08' prefix: 'Packages: '
href: https://github.blog/changelog/2021-01-08-packages-ghcr-io-maintenance-mode-on-2021-01-09/
- title: ghcr.io container names redirect to the container page
date: '2020-12-14'
href: https://github.blog/changelog/2020-12-14-ghcr-io-container-names-redirect-to-the-container-page/
- title: Filter for tagged and untagged containers
date: '2020-12-14'
href: https://github.blog/changelog/2020-12-14-packages-can-filter-for-tagged-and-untagged-containers/
redirect_from: redirect_from:
- /github/managing-packages-with-github-packages - /github/managing-packages-with-github-packages
- /categories/managing-packages-with-github-package-registry - /categories/managing-packages-with-github-package-registry

View File

@@ -24,7 +24,9 @@ topics:
| Custom subdomain | `blog.example.com` | | Custom subdomain | `blog.example.com` |
| Apex domain | `example.com` | | Apex domain | `example.com` |
You can set up either or both types of custom domains for your site. We recommend always using a `www` subdomain, even if you also use an apex domain. For more information, see "[Using an apex domain for your {% data variables.product.prodname_pages %} site](#using-an-apex-domain-for-your-github-pages-site)." You can set up either or both of apex and `www` subdomain configurations for your site. For more information on apex domains, see "[Using an apex domain for your {% data variables.product.prodname_pages %} site](#using-an-apex-domain-for-your-github-pages-site)."
We recommend always using a `www` subdomain, even if you also use an apex domain. When you create a new site with an apex domain, we automatically attempt to secure the `www` subdomain for use when serving your site's content. If you configure a `www` subdomain, we automatically attempt to secure the associated apex domain. For more information, see "[Managing a custom domain for your {% data variables.product.prodname_pages %} site](/articles/managing-a-custom-domain-for-your-github-pages-site)."
After you configure a custom domain for a user or organization site, the custom domain will replace the `<user>.github.io` or `<organization>.github.io` portion of the URL for any project sites owned by the account that do not have a custom domain configured. For example, if the custom domain for your user site is `www.octocat.com`, and you have a project site with no custom domain configured that is published from a repository called `octo-project`, the {% data variables.product.prodname_pages %} site for that repository will be available at `www.octocat.com/octo-project`. After you configure a custom domain for a user or organization site, the custom domain will replace the `<user>.github.io` or `<organization>.github.io` portion of the URL for any project sites owned by the account that do not have a custom domain configured. For example, if the custom domain for your user site is `www.octocat.com`, and you have a project site with no custom domain configured that is published from a repository called `octo-project`, the {% data variables.product.prodname_pages %} site for that repository will be available at `www.octocat.com/octo-project`.
@@ -38,11 +40,11 @@ Subdomains are configured with a `CNAME` record through your DNS provider. For m
A `www` subdomain is the most commonly used type of subdomain. For example, `www.example.com` includes a `www` subdomain. A `www` subdomain is the most commonly used type of subdomain. For example, `www.example.com` includes a `www` subdomain.
`www` subdomains are the most stable type of custom domain because `www` subdomains are not affected by changes to the IP addresses of {% data variables.product.product_name %}'s servers. Your site will also load faster because Denial of Service (DoS) attack protection can be implemented more efficiently. `www` subdomains are the most stable type of custom domain because `www` subdomains are not affected by changes to the IP addresses of {% data variables.product.product_name %}'s servers.
#### Custom subdomains #### Custom subdomains
A custom subdomain is a type of subdomain that doesn't use the standard `www` subdomain. Custom subdomains are mostly used when you want two distinct sections of your site. For example, you can create a site called `blog.example.com` and customize that section independently from `www.example.com`. A custom subdomain is a type of subdomain that doesn't use the standard `www` variant. Custom subdomains are mostly used when you want two distinct sections of your site. For example, you can create a site called `blog.example.com` and customize that section independently from `www.example.com`.
### Using an apex domain for your {% data variables.product.prodname_pages %} site ### Using an apex domain for your {% data variables.product.prodname_pages %} site

View File

@@ -42,6 +42,7 @@ To set up a `www` or custom subdomain, such as `www.example.com` or `blog.exampl
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
4. Under "Custom domain", type your custom domain, then click **Save**. This will create a commit that adds a _CNAME_ file in the root of your publishing source. 4. Under "Custom domain", type your custom domain, then click **Save**. This will create a commit that adds a _CNAME_ file in the root of your publishing source.
![Save custom domain button](/assets/images/help/pages/save-custom-subdomain.png) ![Save custom domain button](/assets/images/help/pages/save-custom-subdomain.png)
5. Navigate to your DNS provider and create a `CNAME` record that points your subdomain to the default domain for your site. For example, if you want to use the subdomain `www.example.com` for your user site, create a `CNAME` record that points `www.example.com` to `<user>.github.io`. If you want to use the subdomain `www.anotherexample.com` for your organization site, create a `CNAME` record that points `www.anotherexample.com` to `<organization>.github.io`. The `CNAME` record should always point to `<user>.github.io` or `<organization>.github.io`, excluding the repository name. {% data reusables.pages.contact-dns-provider %} {% data reusables.pages.default-domain-information %} 5. Navigate to your DNS provider and create a `CNAME` record that points your subdomain to the default domain for your site. For example, if you want to use the subdomain `www.example.com` for your user site, create a `CNAME` record that points `www.example.com` to `<user>.github.io`. If you want to use the subdomain `www.anotherexample.com` for your organization site, create a `CNAME` record that points `www.anotherexample.com` to `<organization>.github.io`. The `CNAME` record should always point to `<user>.github.io` or `<organization>.github.io`, excluding the repository name. {% data reusables.pages.contact-dns-provider %} {% data reusables.pages.default-domain-information %}
@@ -67,6 +68,7 @@ To set up an apex domain, such as `example.com`, you must configure a _CNAME_ fi
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
4. Under "Custom domain", type your custom domain, then click **Save**. This will create a commit that adds a _CNAME_ file in the root of your publishing source. 4. Under "Custom domain", type your custom domain, then click **Save**. This will create a commit that adds a _CNAME_ file in the root of your publishing source.
![Save custom domain button](/assets/images/help/pages/save-custom-apex-domain.png) ![Save custom domain button](/assets/images/help/pages/save-custom-apex-domain.png)
5. Navigate to your DNS provider and create either an `ALIAS`, `ANAME`, or `A` record. {% data reusables.pages.contact-dns-provider %} 5. Navigate to your DNS provider and create either an `ALIAS`, `ANAME`, or `A` record. {% data reusables.pages.contact-dns-provider %}
@@ -92,6 +94,31 @@ To set up an apex domain, such as `example.com`, you must configure a _CNAME_ fi
{% data reusables.pages.build-locally-download-cname %} {% data reusables.pages.build-locally-download-cname %}
{% data reusables.pages.enforce-https-custom-domain %} {% data reusables.pages.enforce-https-custom-domain %}
### Configuring an apex domain and the `www` subdomain variant
When using an apex domain, we recommend configuring your {% data variables.product.prodname_pages %} site to host content at both the apex domain and that domain's `www` subdomain variant.
To set up a `www` subdomain alongside the apex domain, you must first configure an apex domain, which will create an `ALIAS`, `ANAME`, or `A` record with your DNS provider. For more information, see "[Configuring an apex domain](#configuring-an-apex-domain)."
After you configure the apex domain, you must to configure a CNAME record with your DNS provider.
1. Navigate to your DNS provider and create a `CNAME` record that points `www.example.com` to the default domain for your site: `<user>.github.io` or `<organization>.github.io`. Do not include the repository name. {% data reusables.pages.contact-dns-provider %} {% data reusables.pages.default-domain-information %}
2. To confirm that your DNS record configured correctly, use the `dig` command, replacing _WWW.EXAMPLE.COM_ with your `www` subdomain variant.
```shell
$ dig <em>WWW.EXAMPLE.COM</em> +nostats +nocomments +nocmd
> ;<em>WWW.EXAMPLE.COM.</em> IN A
> <em>WWW.EXAMPLE.COM.</em> 3592 IN CNAME <em>YOUR-USERNAME</em>.github.io.
> <em>YOUR-USERNAME</em>.github.io. 43192 IN CNAME <em> GITHUB-PAGES-SERVER </em>.
> <em> GITHUB-PAGES-SERVER </em>. 22 IN A 192.0.2.1
```
### Removing a custom domain
{% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
4. Under "Custom domain," click **Remove**.
![Save custom domain button](/assets/images/help/pages/remove-custom-domain.png)
### Further reading ### Further reading
- "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages)" - "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages)"

View File

@@ -32,6 +32,7 @@ If you manually added a Jekyll theme to your repository in the past, those files
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
3. Under "{% data variables.product.prodname_pages %}," click **Choose a theme** or **Change theme**. 3. Under "{% data variables.product.prodname_pages %}," click **Choose a theme** or **Change theme**.
![Choose a theme button](/assets/images/help/pages/choose-a-theme.png) ![Choose a theme button](/assets/images/help/pages/choose-a-theme.png)
4. On the top of the page, click the theme you want, then click **Select theme**. 4. On the top of the page, click the theme you want, then click **Select theme**.

View File

@@ -11,7 +11,7 @@ redirect_from:
### About access control for {% data variables.product.prodname_pages %} sites ### About access control for {% data variables.product.prodname_pages %} sites
If your project site is published from a private or internal repository that's owned by an organization using {% data variables.product.prodname_ghe_cloud %}, you can manage access control for the site. With access control, you can choose to publish the site publicly to anyone on the internet or privately to people with read access to your repository. A privately published site can be used to share your internal documentation or knowledge base with members of your enterprise. You cannot manage access control for an organization site. For more information about the types of {% data variables.product.prodname_pages %} sites, see "[About {% data variables.product.prodname_pages %}](/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites)." If your project site is published from a private or internal repository that's owned by an organization using {% data variables.product.prodname_ghe_cloud %}, you can manage access control for the site. With access control, you can choose to publish the site publicly to anyone on the internet or privately to people with read access to your repository. A privately published site can be used to share your internal documentation or knowledge base with members of your enterprise. You cannot manage access control for an organization site. For more information about the types of {% data variables.product.prodname_pages %} sites, see "[About {% data variables.product.prodname_pages %}](/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites)."
Privately published sites are available at a different subdomain than publicly published sites. This ensures that your {% data variables.product.prodname_pages %} site is secure from the moment it's published: Privately published sites are available at a different subdomain than publicly published sites. This ensures that your {% data variables.product.prodname_pages %} site is secure from the moment it's published:
@@ -26,6 +26,7 @@ To use a shorter and more memorable domain for your private {% data variables.pr
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
3. Under "{% data variables.product.prodname_pages %}", select the **{% data variables.product.prodname_pages %} visibility** drop-down menu, then click a visibility. 3. Under "{% data variables.product.prodname_pages %}", select the **{% data variables.product.prodname_pages %} visibility** drop-down menu, then click a visibility.
![Drop-down to choose a visibility for your site](/assets/images/help/pages/public-or-private-visibility.png) ![Drop-down to choose a visibility for your site](/assets/images/help/pages/public-or-private-visibility.png)
4. To see your published site, under "{% data variables.product.prodname_pages %}", click your site's URL. 4. To see your published site, under "{% data variables.product.prodname_pages %}", click your site's URL.

View File

@@ -1,6 +1,6 @@
--- ---
title: Configuring a publishing source for your GitHub Pages site title: Configuring a publishing source for your GitHub Pages site
intro: 'If you use the default publishing source for your {% data variables.product.prodname_pages %} site, your site will publish automatically. You can also choose to publish your{% if currentVersion ver_lt "enterprise-server@2.23" %} project{% endif %} site from a different branch or folder.' intro: 'If you use the default publishing source for your {% data variables.product.prodname_pages %} site, your site will publish automatically. You can also choose to publish your{% if currentVersion ver_lt "enterprise-server@3.0" %} project{% endif %} site from a different branch or folder.'
redirect_from: redirect_from:
- /articles/configuring-a-publishing-source-for-github-pages/ - /articles/configuring-a-publishing-source-for-github-pages/
- /articles/configuring-a-publishing-source-for-your-github-pages-site - /articles/configuring-a-publishing-source-for-your-github-pages-site
@@ -19,18 +19,18 @@ For more information about publishing sources, see "[About {% data variables.pro
### Choosing a publishing source ### Choosing a publishing source
Before you configure a publishing source, make sure the branch{% if currentVersion ver_lt "enterprise-server@2.23" %} or folder{% endif %} you want to use as your publishing source already exists in your repository.{% if currentVersion ver_lt "enterprise-server@2.23" %} For example, before you can publish your project site from the `/docs` folder on the `master` branch of your repository, you or a collaborator must create a `/docs` folder on the default `master` branch of your repository.{% endif %} Before you configure a publishing source, make sure the branch{% if currentVersion ver_lt "enterprise-server@3.0" %} or folder{% endif %} you want to use as your publishing source already exists in your repository.{% if currentVersion ver_lt "enterprise-server@3.0" %} For example, before you can publish your project site from the `/docs` folder on the `master` branch of your repository, you or a collaborator must create a `/docs` folder on the default `master` branch of your repository.{% endif %}
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" or currentVersion == "github-ae@latest" %} {% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@2.22" or currentVersion == "github-ae@latest" %}
3. Under "{% data variables.product.prodname_pages %}", use the **None** or **Branch** drop-down menu and select a publishing source. 3. Under "{% data variables.product.prodname_pages %}", use the **None** or **Branch** drop-down menu and select a publishing source.
![Drop-down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) ![Drop-down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png)
4. Optionally, use the drop-down menu to select a folder for your publishing source. 4. Optionally, use the drop-down menu to select a folder for your publishing source.
![Drop-down menu to select a folder for publishing source](/assets/images/help/pages/publishing-source-folder-drop-down.png) ![Drop-down menu to select a folder for publishing source](/assets/images/help/pages/publishing-source-folder-drop-down.png)
5. Click **Save**. 5. Click **Save**.
![Button to save changes to publishing source settings](/assets/images/help/pages/publishing-source-save.png) ![Button to save changes to publishing source settings](/assets/images/help/pages/publishing-source-save.png){% else %}
{% else %}
3. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select a publishing source. 3. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select a publishing source.
![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) ![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png)
{% endif %} {% endif %}

View File

@@ -41,7 +41,8 @@ topics:
3. If your chosen publishing source already exists, navigate to the publishing source. If your chosen publishing source doesn't exist, create the publishing source. 3. If your chosen publishing source already exists, navigate to the publishing source. If your chosen publishing source doesn't exist, create the publishing source.
4. In the root of the publishing source, create a new file called `index.md` that contains the content you want to display on the main page of your site. 4. In the root of the publishing source, create a new file called `index.md` that contains the content you want to display on the main page of your site.
{% data reusables.pages.configure-publishing-source %} {% data reusables.pages.configure-publishing-source %}
{% data reusables.repositories.sidebar-settings %}{% if currentVersion == "free-pro-team@latest" %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}{% if currentVersion == "free-pro-team@latest" %}
{% data reusables.pages.choose-visibility %}{% endif %} {% data reusables.pages.choose-visibility %}{% endif %}
{% data reusables.pages.visit-site %} {% data reusables.pages.visit-site %}

View File

@@ -17,8 +17,6 @@ People with admin permissions for a repository can enforce HTTPS for a {% data v
All {% data variables.product.prodname_pages %} sites, including sites that are correctly configured with a custom domain, support HTTPS and HTTPS enforcement. For more information about custom domains, see "[About custom domains and {% data variables.product.prodname_pages %}](/articles/about-custom-domains-and-github-pages)" and "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages#https-errors)." All {% data variables.product.prodname_pages %} sites, including sites that are correctly configured with a custom domain, support HTTPS and HTTPS enforcement. For more information about custom domains, see "[About custom domains and {% data variables.product.prodname_pages %}](/articles/about-custom-domains-and-github-pages)" and "[Troubleshooting custom domains and {% data variables.product.prodname_pages %}](/articles/troubleshooting-custom-domains-and-github-pages#https-errors)."
HTTPS enforcement is required for {% data variables.product.prodname_pages %} sites using a `github.io` domain that were created after June 15, 2016. If you created your site before June 15, 2016, you can manually enable HTTPS enforcement.
{% data reusables.pages.no_sensitive_data_pages %} {% data reusables.pages.no_sensitive_data_pages %}
{% data reusables.pages.private_pages_are_public_warning %} {% data reusables.pages.private_pages_are_public_warning %}
@@ -27,6 +25,7 @@ HTTPS enforcement is required for {% data variables.product.prodname_pages %} si
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
3. Under "{% data variables.product.prodname_pages %}," select **Enforce HTTPS**. 3. Under "{% data variables.product.prodname_pages %}," select **Enforce HTTPS**.
![Enforce HTTPS checkbox](/assets/images/help/pages/enforce-https-checkbox.png) ![Enforce HTTPS checkbox](/assets/images/help/pages/enforce-https-checkbox.png)

View File

@@ -24,6 +24,7 @@ topics:
2. If a `gh-pages` branch exists in the repository, delete the `gh-pages` branch. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository#deleting-a-branch)." 2. If a `gh-pages` branch exists in the repository, delete the `gh-pages` branch. For more information, see "[Creating and deleting branches within your repository](/articles/creating-and-deleting-branches-within-your-repository#deleting-a-branch)."
3. If the `gh-pages` branch was your publishing source, {% if currentVersion == "free-pro-team@latest" %}skip to step 6{% else %}your site is now unpublished and you can skip the remaining steps{% endif %}. 3. If the `gh-pages` branch was your publishing source, {% if currentVersion == "free-pro-team@latest" %}skip to step 6{% else %}your site is now unpublished and you can skip the remaining steps{% endif %}.
{% data reusables.repositories.sidebar-settings %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
5. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select **None.** 5. Under "{% data variables.product.prodname_pages %}", use the **Source** drop-down menu and select **None.**
![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png) ![Drop down menu to select a publishing source](/assets/images/help/pages/publishing-source-drop-down.png)
{% data reusables.pages.update_your_dns_settings %} {% data reusables.pages.update_your_dns_settings %}

View File

@@ -101,7 +101,9 @@ $ git remote add origin https://<em>HOSTNAME</em>/<em>USER</em>/<em>REPOSITORY</
``` ```
{% data reusables.pages.configure-publishing-source %} {% data reusables.pages.configure-publishing-source %}
{% data reusables.pages.navigate-site-repo %} {% data reusables.pages.navigate-site-repo %}
{% data reusables.repositories.sidebar-settings %}{% if currentVersion == "free-pro-team@latest" %} {% data reusables.repositories.sidebar-settings %}
{% data reusables.pages.sidebar-pages %}
{% if currentVersion == "free-pro-team@latest" %}
{% data reusables.pages.choose-visibility %}{% endif %} {% data reusables.pages.choose-visibility %}{% endif %}
{% data reusables.pages.visit-site %} {% data reusables.pages.visit-site %}

View File

@@ -0,0 +1,4 @@
{% if currentVersion == "free-pro-team@latest" or currentVersion ver_gt "enterprise-server@3.1" %}
1. In the left sidebar, click **Pages**.
![Page tab in the left-hand sidebar](/assets/images/help/pages/pages-tab.png)
{% endif %}

View File

@@ -1,2 +1,2 @@
4. Decide whether you want to receive email updates from the sponsored account, then select or unselect "Receive updates from _ACCOUNT_." 4. Decide whether you want to receive email updates from the sponsored account, then select or unselect "Receive email updates from _ACCOUNT_."
![Checkbox to receive updates from sponsored account](/assets/images/help/sponsors/updates-checkbox-manage.png) ![Checkbox to receive updates from sponsored account](/assets/images/help/sponsors/updates-checkbox-manage.png)

View File

@@ -1,2 +1,2 @@
1. On the bottom of the page, click **Add a tier**. 1. To create a monthly tier, click **Add a monthly tier** at the right of the page. Alternatively, to create a tier for one-time payments, click **One-time tiers** and then click **Add a one-time tier**.
![Add a tier button](/assets/images/help/sponsors/add-a-tier-button.png) ![Add a tier button](/assets/images/help/sponsors/add-a-tier-button.png)

View File

@@ -0,0 +1,4 @@
1. When you have at least one tier, you'll see an option to enable custom amounts above the monthly and one-time tiers. If you want to allow sponsors to set their payment amount, then select **Enable custom amounts**.
![Enable custom amounts](/assets/images/help/sponsors/enable-custom-amounts.png)
1. Optionally, if you enable custom amounts you can set a default amount to display for the custom tiers. Specify a whole dollar amount and click **Set default amount**.
![Set a default amount](/assets/images/help/sponsors/set-default-amount.png)

View File

@@ -0,0 +1 @@
You can share your feedback about {% data variables.product.prodname_sponsors %} with {% data variables.product.company_short %}. To join the conversation, see "[Sponsors Feedback](https://github.com/github/feedback/discussions/categories/sponsors-feedback)."

View File

@@ -1,2 +1,2 @@
1. Optionally, if you're sponsoring as an organization, to pay a prorated amount instead of making the full monthly payment, under "Due today", click **Pay prorated $X.XX today**. 1. Optionally, if you're sponsoring as an organization, to pay a prorated amount instead of making the full monthly payment, under "Total due now", click **Pay prorated $X.XX instead**.
![Link to pay prorated amount](/assets/images/help/sponsors/pay-prorated-amount-link.png) ![Link to pay prorated amount](/assets/images/help/sponsors/pay-prorated-amount-link.png)

View File

@@ -1 +1 @@
If you're sponsoring on behalf of your user account, you will immediately be charged a prorated amount for the time until your next regular billing date. If you're sponsoring on behalf of an organization, you can choose to pay the prorated amount or make the full monthly payment. If you're starting a monthly sponsorship on behalf of your user account, you'll immediately be charged a prorated amount for the time until your next regular billing date. If you're sponsoring on behalf of an organization, you can choose to pay the prorated amount or make the full monthly payment.

View File

@@ -1,2 +1,2 @@
1. Proofread your tier, then click **Publish tier**. 1. Proofread your tier, then click **Publish _TYPE_ tier**.
![Publish tier button](/assets/images/help/sponsors/publish-tier-button.png) ![Publish monthly tier button](/assets/images/help/sponsors/publish-tier-button.png)

View File

@@ -0,0 +1,2 @@
1. On the right side of the page, under "Select a tier", review the sponsorship tiers available. If more than one type of tier is available "Monthly" tiers are shown, click **One-time** to show the tiers for one-time payments.
![Show "One-time" tiers](/assets/images/help/sponsors/show-one-time-tiers.png)

View File

@@ -1,2 +1,2 @@
1. On the right side of the page, under "Select a tier", review the sponsorship tiers available. Then, to the right of the tier you want, click **Select**. 1. To the right of the tier you want, click **Select**. If want to select a custom amount, enter the sponsorship amount before clicking "Select."
![Select a tier box](/assets/images/help/sponsors/select-a-tier-box.png) ![Select a tier box](/assets/images/help/sponsors/select-a-tier-box.png)

View File

@@ -1 +1 @@
You can sponsor anyone with a sponsored developer profile or sponsored organization profile on behalf of your user account or an organization. You can choose from multiple sponsorship tiers, with monthly payment amounts and benefits that are set by the sponsored account. Your sponsorship will share your account's existing billing date, payment method, and receipt. You can sponsor anyone with a sponsored developer profile or sponsored organization profile on behalf of your user account or an organization. You can choose from multiple sponsorship tiers, with one-time or monthly payment amounts and benefits that are set by the sponsored account. Your sponsorship will share your account's existing billing date, payment method, and receipt.

View File

@@ -1,3 +1,3 @@
You can create up to ten sponsorship tiers for sponsors to choose from. Each tier has its own monthly payment amount in US dollars and benefits, such as receiving early access to new versions or being featured in the project's README. You can create up to ten sponsorship tiers for sponsors to choose from. Each tier has its own monthly or one-time payment amount in US dollars and benefits, such as receiving early access to new versions or being featured in the project's README. In addition, you can choose to enable tiers for custom amounts (monthly and one-time).
Once you have published a tier, you can't edit the price of that tier. Instead, you must retire the tier and create a new tier. Existing sponsors will remain on the retired tier until they change their sponsorship tier or cancel their sponsorship. Once you have published a tier, you can't edit the price of that tier. Instead, you must retire the tier and create a new tier. Existing sponsors will remain on the retired tier until they change their sponsorship tier, cancel their sponsorship, or their one-time sponsorship period expires.

View File

@@ -0,0 +1,2 @@
1. In your user settings sidebar, click **Billing & plans**.
![Billing & plans settings](/assets/images/help/settings/settings-sidebar-billing-plans.png)

View File

@@ -98,12 +98,12 @@
<div class="col-12 col-lg-4 mb-4 mb-lg-0"> <div class="col-12 col-lg-4 mb-4 mb-lg-0">
<div class="featured-links-heading mb-4 d-flex flex-items-baseline"> <div class="featured-links-heading mb-4 d-flex flex-items-baseline">
<h3 class="f4 text-normal text-mono text-uppercase color-gray-5">{% data ui.toc.whats_new %}</h3> <h3 class="f4 text-normal text-mono text-uppercase color-gray-5">{% data ui.toc.whats_new %}</h3>
<a href="https://github.blog/changelog/" class="ml-4">View all {% octicon "arrow-right" height="14" class="v-align-middle" %}</a> <a href="{{ changelogUrl }}" class="ml-4">View all {% octicon "arrow-right" height="14" class="v-align-middle" %}</a>
</div> </div>
<ul class="list-style-none"> <ul class="list-style-none">
{% for link in page.changelog %} {% for link in whatsNewChangelog %}
<li class="border-top"> <li class="border-top">
<a href="{{ link.href }}" class="d-block text-gray-dark Bump-link--hover py-3 no-underline"> <a href="{{ link.href }}" class="d-block text-gray-dark Bump-link--hover py-3 no-underline capitalize">
<h4>{{ link.title }} <span class="Bump-link-symbol"></span></h4> <h4>{{ link.title }} <span class="Bump-link-symbol"></span></h4>
<time <time
class="tooltipped tooltipped-n text-gray-light text-mono mt-1" class="tooltipped tooltipped-n text-gray-light text-mono mt-1"

42
lib/changelog.js Normal file
View File

@@ -0,0 +1,42 @@
const Parser = require('rss-parser')
async function getRssFeed (url) {
const parser = new Parser({ timeout: 5000 })
const feedUrl = `${url}/feed`
let feed
try {
feed = await parser.parseURL(feedUrl)
} catch (err) {
console.error(`cannot get ${feedUrl}: ${err.message}`)
return
}
return feed
}
async function getChangelogItems (prefix, feed) {
if (!feed || !feed.items) {
console.log(feed)
console.error('feed is not valid or has no items')
return
}
// only show the first 3 posts
const changelog = feed.items
.slice(0, 3)
.map(item => {
// remove the prefix if it exists (Ex: 'GitHub Actions: '), where the colon and expected whitespace should be hardcoded.
const title = prefix ? item.title.replace(new RegExp(`^${prefix}`), '') : item.title
return {
// capitalize the first letter of the title
title: title.trim().charAt(0).toUpperCase() + title.slice(1),
date: item.isoDate,
href: item.guid
}
})
return changelog
}
module.exports = { getRssFeed, getChangelogItems }

View File

@@ -80,14 +80,10 @@ const schema = {
}, },
// Shown in `product-landing.html` "What's new" section // Shown in `product-landing.html` "What's new" section
changelog: { changelog: {
type: 'array', type: 'object',
items: { properties: {
type: 'object', label: { type: 'string' },
properties: { prefix: { type: 'string' }
title: { type: 'string' },
date: { type: 'string', format: 'date' },
href: { type: 'string' }
}
} }
}, },
type: { type: {

View File

@@ -1,5 +1,7 @@
const crypto = require('crypto') const crypto = require('crypto')
const fetch = require('node-fetch') const fetch = require('node-fetch')
const statsd = require('../lib/statsd')
const FailBot = require('../lib/failbot')
const SCHEMAS = { const SCHEMAS = {
page: 'docs.v0.PageEvent', page: 'docs.v0.PageEvent',
@@ -62,7 +64,7 @@ module.exports = class Hydro {
}) })
const token = this.generatePayloadHmac(body) const token = this.generatePayloadHmac(body)
return fetch(this.endpoint, { const doFetch = () => fetch(this.endpoint, {
method: 'POST', method: 'POST',
body, body,
headers: { headers: {
@@ -71,5 +73,25 @@ module.exports = class Hydro {
'X-Hydro-App': 'docs-production' 'X-Hydro-App': 'docs-production'
} }
}) })
const res = await statsd.asyncTimer(doFetch, 'hydro.response_time')()
statsd.increment(`hydro.response_code.${res.status}`, 1)
statsd.increment('hydro.response_code.all', 1)
// Track hydro exceptions in Sentry, but don't track 503s because we can't do anything about service availability
if (!res.ok && res.status !== 503) {
const err = new Error(`Hydro request failed: ${res.statusText}`)
err.status = res.status
FailBot.report(err, {
hydroStatus: res.status,
hydroText: res.statusText
})
throw err
}
return res
} }
} }

View File

@@ -0,0 +1,13 @@
const { getRssFeed, getChangelogItems } = require('../../lib/changelog')
module.exports = async function whatsNewChangelog (req, res, next) {
if (!req.context.page) return next()
if (!req.context.page.changelog) return next()
req.context.changelogUrl = req.context.page.changelog.label === 'education'
? 'https://github.blog/category/community/education'
: `https://github.blog/changelog/label/${req.context.page.changelog.label}`
const feed = await getRssFeed(req.context.changelogUrl)
req.context.whatsNewChangelog = await getChangelogItems(req.context.page.changelog.prefix, feed)
return next()
}

View File

@@ -2,7 +2,6 @@ const express = require('express')
const { omit } = require('lodash') const { omit } = require('lodash')
const Ajv = require('ajv') const Ajv = require('ajv')
const schema = require('../lib/schema-event') const schema = require('../lib/schema-event')
const FailBot = require('../lib/failbot')
const OMIT_FIELDS = ['type', 'token'] const OMIT_FIELDS = ['type', 'token']
@@ -19,43 +18,18 @@ router.post('/', async function postEvents (req, res, next) {
return res.status(400).json({}) return res.status(400).json({})
} }
// Don't depend on Hydro on local development if (req.hydro.maySend()) {
if (isDev && !req.hydro.maySend()) { // intentionally don't await this async request
return res.status(200).json({}) // so that the http response afterwards is sent immediately
} req.hydro.publish(
try {
const hydroRes = await req.hydro.publish(
req.hydro.schemas[fields.type], req.hydro.schemas[fields.type],
omit(fields, OMIT_FIELDS) omit(fields, OMIT_FIELDS)
) ).catch((e) => {
if (isDev) console.error(e)
if (!hydroRes.ok) { })
const err = new Error('Hydro request failed')
err.status = hydroRes.status
err.path = fields.path
await FailBot.report(err, {
path: fields.path,
hydroStatus: hydroRes.status,
hydroText: await hydroRes.text()
})
throw err
}
if (res.headersSent) {
throw new Error('Cannot send http response: Hydro publish succeeded, but took too long.')
}
return res.status(201).json(fields)
} catch (err) {
if (isDev) console.error(err)
if (!res.headersSent) {
return res.status(502).json({})
}
} }
return res.status(200).json({})
}) })
module.exports = router module.exports = router

View File

@@ -109,6 +109,7 @@ module.exports = function (app) {
app.use(instrument('./contextualizers/graphql')) app.use(instrument('./contextualizers/graphql'))
app.use(instrument('./contextualizers/rest')) app.use(instrument('./contextualizers/rest'))
app.use(instrument('./contextualizers/webhooks')) app.use(instrument('./contextualizers/webhooks'))
app.use(asyncMiddleware(instrument('./contextualizers/whats-new-changelog')))
app.use(asyncMiddleware(instrument('./breadcrumbs'))) app.use(asyncMiddleware(instrument('./breadcrumbs')))
app.use(asyncMiddleware(instrument('./early-access-breadcrumbs'))) app.use(asyncMiddleware(instrument('./early-access-breadcrumbs')))
app.use(asyncMiddleware(instrument('./enterprise-server-releases'))) app.use(asyncMiddleware(instrument('./enterprise-server-releases')))

23
package-lock.json generated
View File

@@ -21865,6 +21865,22 @@
"integrity": "sha512-6yWEYSdhK3bAEcYY0In3wgSBK70BiQoJArzdjZKCP/35b3gKIYu5Lc0qQqsoxjoLVebVoJiKK4VWGc5+oxvWBQ==", "integrity": "sha512-6yWEYSdhK3bAEcYY0In3wgSBK70BiQoJArzdjZKCP/35b3gKIYu5Lc0qQqsoxjoLVebVoJiKK4VWGc5+oxvWBQ==",
"dev": true "dev": true
}, },
"rss-parser": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/rss-parser/-/rss-parser-3.12.0.tgz",
"integrity": "sha512-aqD3E8iavcCdkhVxNDIdg1nkBI17jgqF+9OqPS1orwNaOgySdpvq6B+DoONLhzjzwV8mWg37sb60e4bmLK117A==",
"requires": {
"entities": "^2.0.3",
"xml2js": "^0.4.19"
},
"dependencies": {
"entities": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
"integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
}
}
},
"rsvp": { "rsvp": {
"version": "4.8.5", "version": "4.8.5",
"resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz",
@@ -21987,8 +22003,7 @@
"sax": { "sax": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=", "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
"dev": true
}, },
"saxes": { "saxes": {
"version": "5.0.1", "version": "5.0.1",
@@ -25427,7 +25442,6 @@
"version": "0.4.19", "version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"dev": true,
"requires": { "requires": {
"sax": ">=0.6.0", "sax": ">=0.6.0",
"xmlbuilder": "~9.0.1" "xmlbuilder": "~9.0.1"
@@ -25436,8 +25450,7 @@
"xmlbuilder": { "xmlbuilder": {
"version": "9.0.7", "version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
"dev": true
}, },
"xmlchars": { "xmlchars": {
"version": "2.2.0", "version": "2.2.0",

View File

@@ -90,6 +90,7 @@
"resolve-url-loader": "^3.1.2", "resolve-url-loader": "^3.1.2",
"revalidator": "^0.3.1", "revalidator": "^0.3.1",
"rimraf": "^3.0.0", "rimraf": "^3.0.0",
"rss-parser": "^3.12.0",
"sass": "^1.26.3", "sass": "^1.26.3",
"sass-loader": "^9.0.2", "sass-loader": "^9.0.2",
"search-with-your-keyboard": "1.1.0", "search-with-your-keyboard": "1.1.0",

View File

@@ -33,10 +33,6 @@ summary {
} }
} }
// all h3 headers that are links should be blue-500 // all h3 headers that are links should be blue-500
// except those on each product's toc // except those on each product's toc
h3 a { h3 a {

103
tests/fixtures/rss-feed.xml vendored Normal file
View File

@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
xmlns:georss="http://www.georss.org/georss"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
>
<channel>
<title>api &#8211; The GitHub Blog</title>
<atom:link href="https://github.blog/changelog/label/api/feed/" rel="self" type="application/rss+xml" />
<link>https://github.blog</link>
<description>Updates, ideas, and inspiration from GitHub to help developers build and design software.</description>
<lastBuildDate>Thu, 01 Apr 2021 20:48:29 +0000</lastBuildDate>
<language>en-US</language>
<sy:updatePeriod>
hourly </sy:updatePeriod>
<sy:updateFrequency>
1 </sy:updateFrequency>
<generator>https://wordpress.org/?v=5.7</generator>
<image>
<url>https://github.blog/wp-content/uploads/2019/01/cropped-github-favicon-512.png?fit=32%2C32</url>
<title>api &#8211; The GitHub Blog</title>
<link>https://github.blog</link>
<width>32</width>
<height>32</height>
</image>
<site xmlns="com-wordpress:feed-additions:1">153214340</site> <item>
<title>Authentication token format updates are generally available</title>
<link>https://github.blog/changelog/2021-03-31-authentication-token-format-updates-are-generally-available</link>
<dc:creator><![CDATA[phanatic]]></dc:creator>
<pubDate>Wed, 31 Mar 2021 22:22:03 +0000</pubDate>
<guid isPermaLink="false">https://github.blog/changelog/2021-03-31-authentication-token-format-updates-are-generally-available</guid>
<description><![CDATA[Authentication token format updates are generally available]]></description>
<content:encoded><![CDATA[<p>As we <a href="https://github.blog/changelog/2021-03-04-authentication-token-format-updates">announced previously</a>, the format of GitHub authentication tokens has changed. The following token types are affected:</p>
<ul>
<li><a href="https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token">Personal Access Tokens</a></li>
<li><a href="https://docs.github.com/en/developers/apps/authorizing-oauth-apps">OAuth Access Tokens</a></li>
<li><a href="https://docs.github.com/en/developers/apps/identifying-and-authorizing-users-for-github-apps">GitHub App User-to-Server Tokens</a></li>
<li><a href="https://docs.github.com/en/developers/apps/authenticating-with-github-apps#authenticating-as-an-installation">GitHub App Server-to-Server Tokens</a></li>
<li><a href="https://docs.github.com/en/developers/apps/refreshing-user-to-server-access-tokens">Refresh Tokens</a></li>
</ul>
<p>If you use any of these tokens, we encourage you to reset them now. This will give you additional security benefits and allow <a href="https://docs.github.com/en/code-security/secret-security/about-secret-scanning">Secret Scanning</a> to detect the tokens. </p>
<p>Notably, the token formats now include the following updates:</p>
<ul>
<li>The character set changed from <code>[a-f0-9]</code> to <code>[A-Za-z0-9_]</code></li>
<li>The format now includes a prefix for each token type:
<ul>
<li><code>ghp_</code> for Personal Access Tokens</li>
<li><code>gho_</code> for OAuth Access tokens</li>
<li><code>ghu_</code> for GitHub App user-to-server tokens</li>
<li><code>ghs_</code> for GitHub App server-to-server tokens</li>
<li><code>ghr_</code> for GitHub App refresh tokens</li>
</ul>
</li>
</ul>
<p>The length of our tokens is remaining the same for now. However, GitHub tokens will likely increase in length in future updates, so integrators should plan to support tokens up to 255 characters after June 1, 2021.</p>
]]></content:encoded>
<post-id xmlns="com-wordpress:feed-additions:1">57117</post-id> </item>
<item>
<title>Compare REST API now supports pagination</title>
<link>https://github.blog/changelog/2021-03-22-compare-rest-api-now-supports-pagination</link>
<dc:creator><![CDATA[phanatic]]></dc:creator>
<pubDate>Tue, 23 Mar 2021 02:49:54 +0000</pubDate>
<guid isPermaLink="false">https://github.blog/changelog/2021-03-22-compare-rest-api-now-supports-pagination</guid>
<description><![CDATA[Compare REST API now supports pagination]]></description>
<content:encoded><![CDATA[<p>The <a href="https://docs.github.com/rest/reference/repos#compare-two-commits">&quot;Compare two commits&quot;</a> REST API, which returns a list of commits reachable from one commit (or branch) but not reachable from another, now supports pagination. It can also now return the results for comparisons over 250 commits.</p>
<p>To learn more, see the <a href="https://docs.github.com/rest/reference/repos#compare-two-commits">compare two commits</a> API reference or the guide for <a href="https://docs.github.com/en/rest/guides/traversing-with-pagination">using pagination</a>.</p>
]]></content:encoded>
<post-id xmlns="com-wordpress:feed-additions:1">56979</post-id> </item>
<item>
<title>GitHub Discussions GraphQL API public beta</title>
<link>https://github.blog/changelog/2021-02-23-github-discussions-graphql-api-public-beta</link>
<dc:creator><![CDATA[phanatic]]></dc:creator>
<pubDate>Tue, 23 Feb 2021 18:21:40 +0000</pubDate>
<guid isPermaLink="false">https://github.blog/changelog/2021-02-23-github-discussions-graphql-api-public-beta</guid>
<description><![CDATA[GitHub Discussions GraphQL API public beta]]></description>
<content:encoded><![CDATA[<p>The GitHub Discussions GraphQL API public beta is now available. Get started with the <a href="https://docs.github.com/en/graphql/guides/using-the-graphql-api-for-discussions">GitHub Discussions API</a>.</p>
<p>For questions or feedback, visit <a href="https://github.com/github/feedback/discussions/categories/discussions-feedback">GitHub Discussions feedback</a>.</p>
]]></content:encoded>
<post-id xmlns="com-wordpress:feed-additions:1">56364</post-id> </item>
</channel>
</rss>

View File

@@ -74,7 +74,7 @@ describe('POST /events', () => {
const pageExample = { ...baseExample, type: 'page' } const pageExample = { ...baseExample, type: 'page' }
it('should record a page event', () => it('should record a page event', () =>
checkEvent(pageExample, 201) checkEvent(pageExample, 200)
) )
it('should require a type', () => it('should require a type', () =>
@@ -128,7 +128,7 @@ describe('POST /events', () => {
...pageExample.context, ...pageExample.context,
page_event_id: baseExample.context.event_id page_event_id: baseExample.context.event_id
} }
}, 201) }, 200)
) )
it('should not allow a honeypot token', () => it('should not allow a honeypot token', () =>
@@ -201,7 +201,7 @@ describe('POST /events', () => {
}, 400) }, 400)
) )
it('should a valid os option', () => it('should os a valid os option', () =>
checkEvent({ checkEvent({
...pageExample, ...pageExample,
context: { context: {
@@ -295,7 +295,7 @@ describe('POST /events', () => {
} }
it('should record an exit event', () => it('should record an exit event', () =>
checkEvent(exitExample, 201) checkEvent(exitExample, 200)
) )
it('should exit_render_duration is a positive number', () => it('should exit_render_duration is a positive number', () =>
@@ -330,7 +330,7 @@ describe('POST /events', () => {
} }
it('should send a link event', () => it('should send a link event', () =>
checkEvent(linkExample, 201) checkEvent(linkExample, 200)
) )
it('link_url is a required uri formatted string', () => it('link_url is a required uri formatted string', () =>
@@ -347,7 +347,7 @@ describe('POST /events', () => {
} }
it('should record a search event', () => it('should record a search event', () =>
checkEvent(searchExample, 201) checkEvent(searchExample, 200)
) )
it('search_query is required string', () => it('search_query is required string', () =>
@@ -355,7 +355,7 @@ describe('POST /events', () => {
) )
it('search_context is optional string', () => it('search_context is optional string', () =>
checkEvent({ ...searchExample, search_context: undefined }, 201) checkEvent({ ...searchExample, search_context: undefined }, 200)
) )
}) })
@@ -367,11 +367,11 @@ describe('POST /events', () => {
} }
it('should record a navigate event', () => it('should record a navigate event', () =>
checkEvent(navigateExample, 201) checkEvent(navigateExample, 200)
) )
it('navigate_label is optional string', () => it('navigate_label is optional string', () =>
checkEvent({ ...navigateExample, navigate_label: undefined }, 201) checkEvent({ ...navigateExample, navigate_label: undefined }, 200)
) )
}) })
@@ -385,7 +385,7 @@ describe('POST /events', () => {
} }
it('should record a survey event', () => it('should record a survey event', () =>
checkEvent(surveyExample, 201) checkEvent(surveyExample, 200)
) )
it('survey_vote is boolean', () => it('survey_vote is boolean', () =>
@@ -411,7 +411,7 @@ describe('POST /events', () => {
} }
it('should record an experiment event', () => it('should record an experiment event', () =>
checkEvent(experimentExample, 201) checkEvent(experimentExample, 200)
) )
it('experiment_name is required string', () => it('experiment_name is required string', () =>
@@ -423,7 +423,7 @@ describe('POST /events', () => {
) )
it('experiment_success is optional boolean', () => it('experiment_success is optional boolean', () =>
checkEvent({ ...experimentExample, experiment_success: undefined }, 201) checkEvent({ ...experimentExample, experiment_success: undefined }, 200)
) )
}) })
@@ -436,7 +436,7 @@ describe('POST /events', () => {
} }
it('should record an redirect event', () => it('should record an redirect event', () =>
checkEvent(redirectExample, 201) checkEvent(redirectExample, 200)
) )
it('redirect_from is required url', () => it('redirect_from is required url', () =>
@@ -456,7 +456,7 @@ describe('POST /events', () => {
} }
it('should record an clipboard event', () => it('should record an clipboard event', () =>
checkEvent(clipboardExample, 201) checkEvent(clipboardExample, 200)
) )
it('clipboard_operation is required copy, paste, cut', () => it('clipboard_operation is required copy, paste, cut', () =>
@@ -471,7 +471,7 @@ describe('POST /events', () => {
} }
it('should record a print event', () => it('should record a print event', () =>
checkEvent(printExample, 201) checkEvent(printExample, 200)
) )
}) })
}) })

View File

@@ -0,0 +1,46 @@
const Parser = require('rss-parser')
const { getChangelogItems } = require('../../lib/changelog')
const fs = require('fs')
const path = require('path')
const parser = new Parser({ timeout: 5000 })
const rssFeedContent = fs.readFileSync(path.join(process.cwd(), 'tests/fixtures/rss-feed.xml'), 'utf8')
describe('getChangelogItems module', () => {
let changelog
beforeAll(async () => {
const feed = await parser.parseString(rssFeedContent)
changelog = await getChangelogItems('GitHub Actions:', feed)
})
it('changelog contains 3 items', async () => {
expect(changelog.length).toEqual(3)
})
it('each changelog item has expected title, date, and href', async () => {
const expectedChangelogValues = [
{
title: 'Authentication token format updates are generally available',
date: '2021-03-31T22:22:03.000Z',
href: 'https://github.blog/changelog/2021-03-31-authentication-token-format-updates-are-generally-available'
},
{
title: 'Compare REST API now supports pagination',
date: '2021-03-23T02:49:54.000Z',
href: 'https://github.blog/changelog/2021-03-22-compare-rest-api-now-supports-pagination'
},
{
title: 'GitHub Discussions GraphQL API public beta',
date: '2021-02-23T18:21:40.000Z',
href: 'https://github.blog/changelog/2021-02-23-github-discussions-graphql-api-public-beta'
}
]
for (let i = 0; i < 3; i++) {
const changeLogEntry = changelog[i]
const expectedEntry = expectedChangelogValues[i]
expect(changeLogEntry.title).toBe(expectedEntry.title)
expect(changeLogEntry.date).toBe(expectedEntry.date)
expect(changeLogEntry.href).toBe(expectedEntry.href)
}
})
})

View File

@@ -22,18 +22,8 @@ featuredLinks:
- /actions/reference/environment-variables - /actions/reference/environment-variables
- /actions/reference/encrypted-secrets - /actions/reference/encrypted-secrets
changelog: changelog:
- label: 'actions'
title: Environments, environment protection rules and environment secrets (beta) prefix: 'GitHub Actions: '
date: '2020-12-15'
href: https://github.blog/changelog/2020-12-15-github-actions-environments-environment-protection-rules-and-environment-secrets-beta/
-
title: Workflow visualization
date: '2020-12-08'
href: https://github.blog/changelog/2020-12-08-github-actions-workflow-visualization/
-
title: Removing set-env and add-path commands on November 16
date: '2020-11-09'
href: https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/
product_video: https://www.youtube-nocookie.com/embed/cP0I9w2coGU product_video: https://www.youtube-nocookie.com/embed/cP0I9w2coGU
redirect_from: redirect_from:
- /articles/automating-your-workflow-with-github-actions/ - /articles/automating-your-workflow-with-github-actions/

View File

@@ -22,6 +22,8 @@ featuredLinks:
- /discussions/guides/finding-discussions-across-multiple-repositories - /discussions/guides/finding-discussions-across-multiple-repositories
- /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions - /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions
- /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository - /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository
changelog:
label: 'discussions'
product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk
layout: product-landing layout: product-landing
versions: versions:

View File

@@ -20,22 +20,7 @@ featuredLinks:
- /github/getting-started-with-github/github-cli - /github/getting-started-with-github/github-cli
- /education/manage-coursework-with-github-classroom/teach-with-github-classroom - /education/manage-coursework-with-github-classroom/teach-with-github-classroom
changelog: changelog:
- label: 'education'
title: 'Try something new at Local Hack Day: Learn'
date: '2020-10-15'
href: https://github.blog/2020-10-15-try-something-new-at-local-hack-day-learn/
-
title: 'Remote Education: Creating community through shared experiences'
date: '2020-09-24'
href: https://github.blog/2020-09-24-remote-education-creating-community-through-shared-experiences/
-
title: 'Remote Education: A series of best practices for online campus communities'
date: '2020-09-10'
href: https://github.blog/2020-09-10-remote-education-a-series-of-best-practices-for-online-campus-communities/
-
title: Welcome to the inaugural class of MLH Fellows
date: '2020-06-24'
href: https://github.blog/2020-06-24-welcome-to-the-inaugural-class-of-mlh-fellows/
layout: product-landing layout: product-landing
versions: versions:
free-pro-team: '*' free-pro-team: '*'

View File

@@ -20,18 +20,8 @@ featuredLinks:
- /packages/guides/enabling-improved-container-support - /packages/guides/enabling-improved-container-support
- /packages/guides/configuring-rubygems-for-use-with-github-packages - /packages/guides/configuring-rubygems-for-use-with-github-packages
changelog: changelog:
- label: 'packages'
title: ghcr.io maintenance mode on 2021-01-09 prefix: 'Packages: '
date: '2021-01-08'
href: https://github.blog/changelog/2021-01-08-packages-ghcr-io-maintenance-mode-on-2021-01-09/
-
title: ghcr.io container names redirect to the container page
date: '2020-12-14'
href: https://github.blog/changelog/2020-12-14-ghcr-io-container-names-redirect-to-the-container-page/
-
title: Filter for tagged and untagged containers
date: '2020-12-14'
href: https://github.blog/changelog/2020-12-14-packages-can-filter-for-tagged-and-untagged-containers/
redirect_from: redirect_from:
- /github/managing-packages-with-github-packages - /github/managing-packages-with-github-packages
- /categories/managing-packages-with-github-package-registry - /categories/managing-packages-with-github-package-registry

View File

@@ -22,15 +22,8 @@ featuredLinks:
- /actions/reference/environment-variables - /actions/reference/environment-variables
- /actions/reference/encrypted-secrets - /actions/reference/encrypted-secrets
changelog: changelog:
- title: 'Ambientes, reglas de protección de ambiente y secretos de ambiente (beta)' label: 'actions'
date: '2020-12-15' prefix: 'GitHub Actions: '
href: 'https://github.blog/changelog/2020-12-15-github-actions-environments-environment-protection-rules-and-environment-secrets-beta/'
- title: Visualización de flujos de trabajo
date: '2020-12-08'
href: 'https://github.blog/changelog/2020-12-08-github-actions-workflow-visualization/'
- title: Eliminación de los comandos de set-env y add-path en el 16 de Noviembre
date: '2020-11-09'
href: 'https://github.blog/changelog/2020-10-01-github-actions-deprecating-set-env-and-add-path-commands/'
product_video: 'https://www.youtube-nocookie.com/embed/cP0I9w2coGU' product_video: 'https://www.youtube-nocookie.com/embed/cP0I9w2coGU'
redirect_from: redirect_from:
- /articles/automating-your-workflow-with-github-actions/ - /articles/automating-your-workflow-with-github-actions/

View File

@@ -22,6 +22,8 @@ featuredLinks:
- /discussions/guides/finding-discussions-across-multiple-repositories - /discussions/guides/finding-discussions-across-multiple-repositories
- /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions - /discussions/collaborating-with-your-community-using-discussions/collaborating-with-maintainers-using-discussions
- /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository - /discussions/managing-discussions-for-your-community/managing-categories-for-discussions-in-your-repository
changelog:
label: 'discussions'
product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk product_video: https://www.youtube-nocookie.com/embed/IpBw2SJkFyk
layout: product-landing layout: product-landing
versions: versions:

View File

@@ -20,18 +20,7 @@ featuredLinks:
- /github/getting-started-with-github/github-cli - /github/getting-started-with-github/github-cli
- /education/manage-coursework-with-github-classroom/teach-with-github-classroom - /education/manage-coursework-with-github-classroom/teach-with-github-classroom
changelog: changelog:
- title: 'Intenta hacer algo nuevo en el día local del Hack: Aprende' label: 'education'
date: '2020-10-15'
href: 'https://github.blog/2020-10-15-try-something-new-at-local-hack-day-learn/'
- title: 'Educación remota: Crear una comunidad mediante las experiencias compartidas'
date: '2020-09-24'
href: 'https://github.blog/2020-09-24-remote-education-creating-community-through-shared-experiences/'
- title: 'Educación remota: Una serie de mejores prácticas para las comunidades de campus en línea'
date: '2020-09-10'
href: 'https://github.blog/2020-09-10-remote-education-a-series-of-best-practices-for-online-campus-communities/'
- title: Bienvenido a la clase de inauguración de MLH Fellows
date: '2020-06-24'
href: 'https://github.blog/2020-06-24-welcome-to-the-inaugural-class-of-mlh-fellows/'
layout: product-landing layout: product-landing
versions: versions:
free-pro-team: '*' free-pro-team: '*'

Some files were not shown because too many files have changed in this diff Show More