diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 51227417a2..cb2a9e7b4b 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -25,7 +25,7 @@ Closes [issue link] ### Check off the following: - [ ] I have reviewed my changes in staging (look for the latest deployment event in your pull request's timeline, then click **View deployment**). -- [ ] For content changes, I have completed the [self-review checklist](https://github.com/github/docs/blob/main/CONTRIBUTING.md#self-review). +- [ ] For content changes, I have completed the [self-review checklist](https://github.com/github/docs/blob/main/contributing/self-review.md#self-review). ### Writer impact (This section is for GitHub staff members only): diff --git a/.github/workflows/staging-deploy-pr.yml b/.github/workflows/staging-deploy-pr.yml index db611d66e9..ca3a18bbd1 100644 --- a/.github/workflows/staging-deploy-pr.yml +++ b/.github/workflows/staging-deploy-pr.yml @@ -209,7 +209,8 @@ jobs: PR_NUMBER: ${{ needs.pr-metadata.outputs.number }} with: script: | - const sleep = require('await-sleep') // Does not require ESM + // Equivalent of the 'await-sleep' module without the install + const sleep = ms => new Promise(resolve => setTimeout(resolve, ms)) const blockingLabel = 'automated-block-deploy' const { owner, repo } = context.repo diff --git a/.github/workflows/staging-undeploy-pr.yml b/.github/workflows/staging-undeploy-pr.yml index e71e363f1f..452a2431d0 100644 --- a/.github/workflows/staging-undeploy-pr.yml +++ b/.github/workflows/staging-undeploy-pr.yml @@ -12,6 +12,7 @@ on: permissions: contents: read deployments: write + pull-requests: write # This prevents one Undeploy workflow run from interrupting another concurrency: @@ -42,17 +43,26 @@ jobs: echo 'Cancelling other deployment runs (if any)...' undeploy: + needs: cancel-jobs-before-undeploy if: ${{ github.repository == 'github/docs-internal' || github.repository == 'github/docs' }} runs-on: ubuntu-latest timeout-minutes: 5 # IMPORTANT: Intentionally OMIT a `concurrency` configuration from this job! steps: - name: Add a label to the PR to block deployment during undeployment + uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_NUMBER: ${{ github.event.pull_request.number }} - run: | - gh pr edit $PR_NUMBER --add-label "automated-block-deploy" + with: + script: | + const { owner, repo } = context.repo + await github.issues.addLabels({ + owner, + repo, + issue_number: process.env.PR_NUMBER, + labels: ['automated-block-deploy'] + }) - name: Check out repo's default branch uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f @@ -117,11 +127,19 @@ jobs: - if: ${{ always() }} name: Remove the label from the PR to unblock deployment + uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} PR_NUMBER: ${{ github.event.pull_request.number }} - run: | - gh pr edit $PR_NUMBER --remove-label "automated-block-deploy" + with: + script: | + const { owner, repo } = context.repo + await github.issues.removeLabel({ + owner, + repo, + issue_number: process.env.PR_NUMBER, + name: 'automated-block-deploy' + }) - name: Send Slack notification if workflow failed uses: someimportantcompany/github-actions-slack-message@0b470c14b39da4260ed9e3f9a4f1298a74ccdefd diff --git a/assets/images/help/images/deploy-graph.png b/assets/images/help/images/deploy-graph.png new file mode 100644 index 0000000000..a05368a580 Binary files /dev/null and b/assets/images/help/images/deploy-graph.png differ diff --git a/content/actions/automating-builds-and-tests/about-continuous-integration.md b/content/actions/automating-builds-and-tests/about-continuous-integration.md index a36d89af76..c4089fd362 100644 --- a/content/actions/automating-builds-and-tests/about-continuous-integration.md +++ b/content/actions/automating-builds-and-tests/about-continuous-integration.md @@ -1,6 +1,6 @@ --- title: About continuous integration -intro: 'You can create custom continuous integration (CI) and continuous deployment (CD) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.' +intro: 'You can create custom continuous integration (CI) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.' product: '{% data reusables.gated-features.actions %}' redirect_from: - /articles/about-continuous-integration @@ -15,7 +15,6 @@ versions: type: overview topics: - CI - - CD shortTitle: Continuous integration --- @@ -48,45 +47,12 @@ In addition to helping you set up CI workflows for your project, you can use {% For a definition of common terms, see "[Core concepts for {% data variables.product.prodname_actions %}](/github/automating-your-workflow-with-github-actions/core-concepts-for-github-actions)." -## Supported languages - +## Workflow templates {% data variables.product.product_name %} offers CI workflow templates for a variety of languages and frameworks. Browse the complete list of CI workflow templates offered by {% data variables.product.product_name %} in the {% ifversion fpt %}[actions/starter-workflows](https://github.com/actions/starter-workflows/tree/main/ci) repository{% else %} `actions/starter-workflows` repository on {% data variables.product.product_location %}{% endif %}. -{% ifversion fpt or ghes > 3.0 or ghae-next %} -## Skipping workflow runs - -If you want to temporarily prevent a workflow from being triggered, you can add a skip instruction to the commit message. Workflows that would otherwise be triggered `on: push` or `on: pull_request`, won't be triggered if you add any of the following strings to the commit message in a push, or the HEAD commit of a pull request: - -* `[skip ci]` -* `[ci skip]` -* `[no ci]` -* `[skip actions]` -* `[actions skip]` - -Alternatively, you can end the commit message with two empty lines followed by either `skip-checks: true` or `skip-checks:true`. - -You won't be able to merge the pull request if your repository is configured to require specific checks to pass first. To allow the pull request to be merged you can push a new commit to the pull request without the skip instruction in the commit message. - -{% note %} - -**Note:** Skip instructions only apply to the `push` and `pull_request` events. For example, adding `[skip ci]` to a commit message won't stop a workflow that's triggered `on: pull_request_target` from running. - -{% endnote %} -{% endif %} - -## Notifications for workflow runs - -{% data reusables.repositories.workflow-notifications %} - -## Status badges for workflow runs - -{% data reusables.repositories.actions-workflow-status-badge-intro %} - -For more information, see "[Adding a workflow status badge](/actions/managing-workflow-runs/adding-a-workflow-status-badge)." - ## Further reading {% ifversion fpt %} diff --git a/content/actions/deployment/about-continuous-deployment.md b/content/actions/deployment/about-continuous-deployment.md new file mode 100644 index 0000000000..b80b199a0d --- /dev/null +++ b/content/actions/deployment/about-continuous-deployment.md @@ -0,0 +1,41 @@ +--- +title: About continuous deployment +intro: 'You can create custom continuous deployment (CD) workflows directly in your {% data variables.product.prodname_dotcom %} repository with {% data variables.product.prodname_actions %}.' +product: '{% data reusables.gated-features.actions %}' +versions: + fpt: '*' + ghes: '*' + ghae: '*' +type: overview +topics: + - CD +shortTitle: Continuous deployment +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} + +## About continuous deployment + +_Continuous deployment_ (CD) is the practice of using automation to publish and deploy software updates. As part of the typical CD process, the code is automatically built and tested before deployment. + +Continuous deployment is often coupled with continuous integration. For more information about continuous integration, see "[About continuous integration](/actions/guides/about-continuous-integration)". + +## About continuous deployment using {% data variables.product.prodname_actions %} + +You can set up a {% data variables.product.prodname_actions %} workflow to deploy your software product. To verify that your product works as expected, your workflow can build the code in your repository and run your tests before deploying. + +You can configure your CD workflow to run when a {% data variables.product.product_name %} event occurs (for example, when new code is pushed to the default branch of your repository), on a set schedule, manually, or when an external event occurs using the repository dispatch webhook. For more information about when your workflow can run, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +{% data variables.product.prodname_actions %} provides features that give you more control over deployments. For example, you can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. You can use concurrency to limit your CD pipeline to a maximum of one in-progress deployment and one pending deployment. For more information about these features, see "[Deploying with GitHub Actions](/actions/deployment/deploying-with-github-actions)" and "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." + +## Workflow templates and third party actions + +{% data reusables.actions.cd-templates-actions %} + +## Further reading + +- [Deploying with GitHub Actions](/actions/deployment/deploying-with-github-actions) +- [Using environments for deployment](/actions/deployment/using-environments-for-deployment){% ifversion fpt %} +- "[Managing billing for {% data variables.product.prodname_actions %}](/billing/managing-billing-for-github-actions)" +{% endif %} diff --git a/content/actions/deployment/deploying-to-amazon-elastic-container-service.md b/content/actions/deployment/deploying-to-amazon-elastic-container-service.md index b2d1c45864..decc02cb95 100644 --- a/content/actions/deployment/deploying-to-amazon-elastic-container-service.md +++ b/content/actions/deployment/deploying-to-amazon-elastic-container-service.md @@ -21,7 +21,7 @@ shortTitle: Deploy to Amazon ECS ## Introduction -This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to [Amazon Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/), and deploy it to [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/). +This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to [Amazon Elastic Container Registry (ECR)](https://aws.amazon.com/ecr/), and deploy it to [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/) when a release is created. On every new release in your {% data variables.product.company_short %} repository, the {% data variables.product.prodname_actions %} workflow builds and pushes a new container image to Amazon ECR, and then deploys a new task definition to Amazon ECS. @@ -67,6 +67,8 @@ Before creating your {% data variables.product.prodname_actions %} workflow, you See the documentation for each action used below for the recommended IAM policies for the IAM user, and methods for handling the access key credentials. +5. Optionally, configure a deployment environment. {% data reusables.actions.about-environments %} + ## Creating the workflow Once you've completed the prerequisites, you can proceed with creating the workflow. @@ -75,6 +77,8 @@ The following example workflow demonstrates how to build a container image and p Ensure that you provide your own values for all the variables in the `env` key of the workflow. +{% data reusables.actions.delete-env-key %} + ```yaml{:copy} {% data reusables.actions.actions-not-certified-by-github-comment %} @@ -94,17 +98,11 @@ env: CONTAINER_NAME: MY_CONTAINER_NAME # set this to the name of the container in the # containerDefinitions section of your task definition -defaults: - run: - shell: bash - jobs: deploy: name: Deploy - runs-on: ubuntu-latest{% ifversion fpt or ghes > 3.1 or ghae-next %} - permissions: - packages: write - contents: read{% endif %} + runs-on: ubuntu-latest + environment: production {% raw %}steps: - name: Checkout @@ -151,9 +149,10 @@ jobs: wait-for-service-stability: true{% endraw %} ``` - ## Additional resources +For the original starter workflow, see [`aws.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/aws.yml) in the {% data variables.product.prodname_actions %} `starter-workflows` repository. + For more information on the services used in these examples, see the following documentation: * "[Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)" in the Amazon AWS documentation. diff --git a/content/actions/deployment/deploying-to-azure-app-service.md b/content/actions/deployment/deploying-to-azure-app-service.md index 418de6accd..0ea72b7c23 100644 --- a/content/actions/deployment/deploying-to-azure-app-service.md +++ b/content/actions/deployment/deploying-to-azure-app-service.md @@ -67,13 +67,19 @@ Before creating your {% data variables.product.prodname_actions %} workflow, you In your {% data variables.product.prodname_dotcom %} repository, create a secret named `AZURE_WEBAPP_PUBLISH_PROFILE` that contains the contents of the publish profile. For more information on creating secrets, see "[Encrypted secrets](/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository)." +4. For Linux apps, add an app setting called `WEBSITE_WEBDEPLOY_USE_SCM` and set it to true in your app. For more information, see "[Configure apps in the portal](https://docs.microsoft.com/en-us/azure/app-service/configure-common#configure-app-settings)" in the Azure documentation. + +5. Optionally, configure a deployment environment. {% data reusables.actions.about-environments %} + ## Creating the workflow Once you've completed the prerequisites, you can proceed with creating the workflow. -The following example workflow demonstrates how to build, test, and deploy the Node.js project to Azure App Service. +The following example workflow demonstrates how to build, test, and deploy the Node.js project to Azure App Service when a release is created. -Ensure that you set `AZURE_WEBAPP_NAME` in the workflow `env` key to the name of the web app you created. +Ensure that you set `AZURE_WEBAPP_NAME` in the workflow `env` key to the name of the web app you created. You can also change `AZURE_WEBAPP_PACKAGE_PATH` if the path to your project is not the repository root and `NODE_VERSION` if you want to use a node version other than `10.x`. + +{% data reusables.actions.delete-env-key %} ```yaml{:copy} {% data reusables.actions.actions-not-certified-by-github-comment %} @@ -91,6 +97,8 @@ jobs: build-and-deploy: name: Build and Deploy runs-on: ubuntu-latest + environment: production + steps: - uses: actions/checkout@v2 @@ -121,4 +129,6 @@ The following resources may also be useful: * For the original starter workflow, see [`azure.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/azure.yml) in the {% data variables.product.prodname_actions %} `starter-workflows` repository. * The action used to deploy the web app is the official Azure [`Azure/webapps-deploy`](https://github.com/Azure/webapps-deploy) action. +* For more examples of GitHub Action workflows that deploy to Azure, see the +[actions-workflow-samples](https://github.com/Azure/actions-workflow-samples) repository. * The "[Create a Node.js web app in Azure](https://docs.microsoft.com/en-us/azure/app-service/quickstart-nodejs)" quickstart in the Azure web app documentation demonstrates using VS Code with the [Azure App Service extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureappservice). diff --git a/content/actions/deployment/deploying-to-google-kubernetes-engine.md b/content/actions/deployment/deploying-to-google-kubernetes-engine.md index 37ab25fda0..3affd5041c 100644 --- a/content/actions/deployment/deploying-to-google-kubernetes-engine.md +++ b/content/actions/deployment/deploying-to-google-kubernetes-engine.md @@ -13,7 +13,7 @@ topics: - CD - Containers - Google Kubernetes Engine -shortTitle: Deploy to Kubernetes (GKE) +shortTitle: Deploy to Google Kubernetes Engine --- {% data reusables.actions.enterprise-beta %} @@ -21,7 +21,7 @@ shortTitle: Deploy to Kubernetes (GKE) ## Introduction -This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to Google Container Registry (GCR), and deploy it to Google Kubernetes Engine (GKE). +This guide explains how to use {% data variables.product.prodname_actions %} to build a containerized application, push it to Google Container Registry (GCR), and deploy it to Google Kubernetes Engine (GKE) when a release is created. GKE is a managed Kubernetes cluster service from Google Cloud that can host your containerized workloads in the cloud or in your own datacenter. For more information, see [Google Kubernetes Engine](https://cloud.google.com/kubernetes-engine). @@ -60,7 +60,7 @@ $ gcloud services enable \ ### Configuring a service account and storing its credentials -This procedure demonstrates how to create the service account for your GKE integration. It explains how to create the account, add roles to it, retrieve its keys, and store them as a base64-encoded [encrypted repository secret](/actions/reference/encrypted-secrets) named `GKE_SA_KEY`. +This procedure demonstrates how to create the service account for your GKE integration. It explains how to create the account, add roles to it, retrieve its keys, and store them as a base64-encoded encrypted repository secret named `GKE_SA_KEY`. 1. Create a new service account: {% raw %} @@ -96,16 +96,29 @@ This procedure demonstrates how to create the service account for your GKE integ $ export GKE_SA_KEY=$(cat key.json | base64) ``` {% endraw %} + For more information about how to store a secret, see "[Encrypted secrets](/actions/security-guides/encrypted-secrets)." + +### Storing your project name + +Store the name of your project as a secret named `GKE_PROJECT`. For more information about how to store a secret, see "[Encrypted secrets](/actions/security-guides/encrypted-secrets)." ### (Optional) Configuring kustomize Kustomize is an optional tool used for managing YAML specs. After creating a _kustomization_ file, the workflow below can be used to dynamically set fields of the image and pipe in the result to `kubectl`. For more information, see [kustomize usage](https://github.com/kubernetes-sigs/kustomize#usage). +### (Optional) Configure a deployment environment + +{% data reusables.actions.about-environments %} + ## Creating the workflow Once you've completed the prerequisites, you can proceed with creating the workflow. The following example workflow demonstrates how to build a container image and push it to GCR. It then uses the Kubernetes tools (such as `kubectl` and `kustomize`) to pull the image into the cluster deployment. +Under the `env` key, change the value of `GKE_CLUSTER` to the name of your cluster, `GKE_ZONE` to your cluster zone, `DEPLOYMENT_NAME` to the name of your deployment, and `IMAGE` to the name of your image. + +{% data reusables.actions.delete-env-key %} + ```yaml{:copy} {% data reusables.actions.actions-not-certified-by-github-comment %} @@ -126,8 +139,9 @@ jobs: setup-build-publish-deploy: name: Setup, Build, Publish, and Deploy runs-on: ubuntu-latest - steps: + environment: production + steps: - name: Checkout uses: actions/checkout@v2 @@ -137,7 +151,8 @@ jobs: service_account_key: {% raw %}${{ secrets.GKE_SA_KEY }}{% endraw %} project_id: {% raw %}${{ secrets.GKE_PROJECT }}{% endraw %} - # Configure docker to use the gcloud command-line tool as a credential helper + # Configure Docker to use the gcloud command-line tool as a credential + # helper for authentication - run: |- gcloud --quiet auth configure-docker @@ -165,7 +180,7 @@ jobs: # Set up kustomize - name: Set up Kustomize run: |- - curl --location https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv4.2.0/kustomize_v4.2.0_linux_amd64.tar.gz | tar xz + curl -sfLo kustomize https://github.com/kubernetes-sigs/kustomize/releases/download/v3.1.0/kustomize_3.1.0_linux_amd64 chmod u+x ./kustomize # Deploy the Docker image to the GKE cluster diff --git a/content/actions/deployment/deploying-with-github-actions.md b/content/actions/deployment/deploying-with-github-actions.md new file mode 100644 index 0000000000..3816cb2cbf --- /dev/null +++ b/content/actions/deployment/deploying-with-github-actions.md @@ -0,0 +1,173 @@ +--- +title: Deploying with GitHub Actions +intro: Learn how to control deployments with features like environments and concurrency. +product: '{% data reusables.gated-features.actions %}' +versions: + fpt: '*' + ghes: '>=3.1' + ghae: '*' +type: overview +topics: + - CD +shortTitle: Deploy with GitHub Actions +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} + +## Introduction + +{% data variables.product.prodname_actions %} offers features that let you control deployments. You can: + +- Trigger workflows with a variety of events. +- Configure environments to set rules before a job can proceed and to limit access to secrets. +- Use concurrency to control the number of deployments running at a time. + +For more information about continuous deployment, see "[About continuous deployment](/actions/deployment/about-continuous-deployment)." + +## Prerequisites + +You should be familiar with the syntax for {% data variables.product.prodname_actions %}. For more information, see "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)." + +## Triggering your deployment + +You can use a variety of events to trigger your deployment workflow. Some of the most common are: `pull_request`, `push`, `release`, and `workflow_dispatch`. + +For example, a workflow with the following triggers runs whenever: + +- There is a push to the `main` branch. +- A pull request targeting the `main` branch is opened, synchronized, or reopened. +- A release is created. +- Someone manually triggers it. + +```yaml +on: + push: + branches: + - main + pull_request: + branches: + - main + release: + types: + - created + workflow_dispatch: +``` + +For more information, see "[Events that trigger workflows](/actions/reference/events-that-trigger-workflows)." + +## Using environments + +{% data reusables.actions.about-environments %} + +## Using concurrency + +Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. You can use concurrency so that an environment has a maximum of one deployment in progress and one deployment pending at a time. + +{% note %} + +**Note:** `concurrency` and `environment` are not connected. The concurrency value can be any string; it does not need to be an environment name. Additionally, if another workflow uses the same environment but does not specify concurrency, that workflow will not be subject to any concurrency rules. + +{% endnote %} + +For example, when the following workflow runs, it will be paused with the status `pending` if any job or workflow that uses the `production` concurrency group is in progress. It will also cancel any job or workflow that uses the `production` concurrency group and has the status `pending`. This means that there will be a maximum of one running and one pending job or workflow in that uses the `production` concurrency group. + +```yaml +name: Deployment + +concurrency: production + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + environment: production + steps: + - name: deploy + # ...deployment-specific steps +``` + +You can also specify concurrency at the job level. This will allow other jobs in the workflow to proceed even if the concurrent job is `pending`. + +```yaml +name: Deployment + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + environment: production + concurrency: production + steps: + - name: deploy + # ...deployment-specific steps +``` + +You can also use `cancel-in-progress` to cancel any currently running job or workflow in the same concurrency group. + +```yaml +name: Deployment + +concurrency: + group: production + cancel-in-progress: true + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + environment: production + steps: + - name: deploy + # ...deployment-specific steps +``` + +## Viewing deployment history + +When a {% data variables.product.prodname_actions %} workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about viewing deployments to environments, see "[Viewing deployment history](/developers/overview/viewing-deployment-history)." + +## Monitoring workflow runs + +Every workflow run generates a real-time graph that illustrates the run progress. You can use this graph to monitor and debug deployments. For more information see, "[Using the visualization graph](/actions/monitoring-and-troubleshooting-workflows/using-the-visualization-graph)." + +You can also view the logs of each workflow run and the history of workflow runs. For more information, see "[Viewing workflow run history](/actions/monitoring-and-troubleshooting-workflows/viewing-workflow-run-history)." + +## Tracking deployments through apps + +{% ifversion fpt %} +If your {% data variables.product.product_name %} personal account or organization is integrated with Microsoft Teams or Slack, you can track deployments that use environments through Microsoft Teams or Slack. For example, you can receive notifications through the app when a deployment is pending approval, when a deployment is approved, or when the deployment status changes. For more information about integrating Microsoft Teams or Slack, see "[GitHub extensions and integrations](/github/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations#team-communication-tools)." +{% endif %} + +You can also build an app that uses deployment and deployment status webhooks to track deployments. {% data reusables.actions.environment-deployment-event %} For more information, see "[Apps](/developers/apps)" and "[Webhook events and payloads](/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment)." + +{% ifversion fpt or ghes %} + +## Choosing a runner + +You can run your deployment workflow on {% data variables.product.product_name %}-hosted runners or on self-hosted runners. Traffic from {% data variables.product.product_name %}-hosted runners can come from a [wide range of network addresses](/rest/reference/meta#get-github-meta-information). If you are deploying to an internal environment and your company restricts external traffic into private networks, {% data variables.product.prodname_actions %} workflows running on {% data variables.product.product_name %}-hosted runners may not be communicate with your internal services or resources. To overcome this, you can host your own runners. For more information, see "[About self-hosted runners](/actions/hosting-your-own-runners/about-self-hosted-runners)" and "[About GitHub-hosted runners](/actions/using-github-hosted-runners/about-github-hosted-runners)." + +{% endif %} + +## Displaying a status badge + +You can use a status badge to display the status of your deployment workflow. {% data reusables.repositories.actions-workflow-status-badge-intro %} + +For more information, see "[Adding a workflow status badge](/actions/managing-workflow-runs/adding-a-workflow-status-badge)." + +## Next steps + +This article demonstrated features of {% data variables.product.prodname_actions %} that you can add to your deployment workflows. + +{% data reusables.actions.cd-templates-actions %} diff --git a/content/actions/deployment/index.md b/content/actions/deployment/index.md index 2ae385cc62..0fbfa9c440 100644 --- a/content/actions/deployment/index.md +++ b/content/actions/deployment/index.md @@ -7,10 +7,13 @@ versions: ghes: '*' ghae: '*' children: + - /about-continuous-deployment + - /deploying-with-github-actions + - /using-environments-for-deployment + - /viewing-deployment-history - /deploying-to-amazon-elastic-container-service - /deploying-to-azure-app-service - /deploying-to-google-kubernetes-engine - /installing-an-apple-certificate-on-macos-runners-for-xcode-development - - /environments --- diff --git a/content/actions/deployment/environments.md b/content/actions/deployment/using-environments-for-deployment.md similarity index 60% rename from content/actions/deployment/environments.md rename to content/actions/deployment/using-environments-for-deployment.md index babe5c7dff..c31c160547 100644 --- a/content/actions/deployment/environments.md +++ b/content/actions/deployment/using-environments-for-deployment.md @@ -1,9 +1,12 @@ --- -title: Environments -intro: You can configure environments with protection rules and secrets. A workflow job can reference an environment to use the environment's protection rules and secrets. +title: Using environments for deployment +shortTitle: Use environments for deployment +intro: You can configure environments with protection rules and secrets. A workflow job that references an environment must follow any protection rules for the environment before running or accessing the environment's secrets. product: '{% data reusables.gated-features.environments %}' +miniTocMaxHeadingLevel: 3 redirect_from: - /actions/reference/environments + - /actions/deployment/environments versions: fpt: '*' ghes: '>=3.1' @@ -13,30 +16,34 @@ versions: ## About environments +Environments are used to describe a general deployment target like `production`, `staging`, or `development`. When a {% data variables.product.prodname_actions %} workflow deploys to an environment, the environment is displayed on the main page of the repository. For more information about viewing deployments to environments, see "[Viewing deployment history](/developers/overview/viewing-deployment-history)." + You can configure environments with protection rules and secrets. When a workflow job references an environment, the job won't start until all of the environment's protection rules pass. A job also cannot access secrets that are defined in an environment until all the environment protection rules pass. {% ifversion fpt %} -Environment protection rules and environment secrets are only available on private repositories with {% data variables.product.prodname_ghe_cloud %}. {% data reusables.enterprise.link-to-ghec-trial %} +{% note %} -If you don't use {% data variables.product.prodname_ghe_cloud %} and convert a repository from public to private, any configured protection rules or environment secrets will be ignored, and you will not be able to configure any environments. If you convert your repository back to public, you will have access to any previously configured protection rules and environment secrets. +**Note:** If you don't use {% data variables.product.prodname_ghe_cloud %} and convert a repository from public to private, any configured protection rules or environment secrets will be ignored, and you will not be able to configure any environments. If you convert your repository back to public, you will have access to any previously configured protection rules and environment secrets. {% data reusables.enterprise.link-to-ghec-trial %} + +{% endnote %} {% endif %} -### Environment protection rules +## Environment protection rules Environment protection rules require specific conditions to pass before a job referencing the environment can proceed. {% ifversion fpt or ghae-next or ghes > 3.1 %}You can use environment protection rules to require a manual approval, delay a job, or restrict the environment to certain branches.{% else %}You can use environment protection rules to require a manual approval or delay a job.{% endif %} -#### Required reviewers +### Required reviewers Use required reviewers to require a specific person or team to approve workflow jobs that reference the environment. You can list up to six users or teams as reviewers. The reviewers must have at least read access to the repository. Only one of the required reviewers needs to approve the job for it to proceed. For more information on reviewing jobs that reference an environment with required reviewers, see "[Reviewing deployments](/actions/managing-workflow-runs/reviewing-deployments)." -#### Wait timer +### Wait timer Use a wait timer to delay a job for a specific amount of time after the job is initially triggered. The time (in minutes) must be an integer between 0 and 43,200 (30 days). {% ifversion fpt or ghae-next or ghes > 3.1 %} -#### Deployment branches +### Deployment branches Use deployment branches to restrict which branches can deploy to the environment. Below are the options for deployment branches for an environment: @@ -46,13 +53,13 @@ Use deployment branches to restrict which branches can deploy to the environment For example, if you specify `releases/*` as a deployment branch rule, only branches whose name begins with `releases/` can deploy to the environment. (Wildcard characters will not match `/`. To match branches that begin with `release/` and contain an additional single slash, use `release/*/*`.) If you add `main` as a deployment branch rule, a branch named `main` can also deploy to the environment. For more information about syntax options for deployment branches, see the [Ruby File.fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch). {% endif %} -### Environment secrets +## Environment secrets Secrets stored in an environment are only available to workflow jobs that reference the environment. If the environment requires approval, a job cannot access environment secrets until one of the required reviewers approves it. For more information about secrets, see "[Encrypted secrets](/actions/reference/encrypted-secrets)." {% note %} -**Note:** Workflows that run on self-hosted runners are not run in an isolated container, even if they use environments. Environment secrets should be treated with the same level as security as repository and organization secrets. For more information, see "[Security hardening for GitHub Actions](/actions/learn-github-actions/security-hardening-for-github-actions#hardening-for-self-hosted-runners)." +**Note:** Workflows that run on self-hosted runners are not run in an isolated container, even if they use environments. Environment secrets should be treated with the same level of security as repository and organization secrets. For more information, see "[Security hardening for GitHub Actions](/actions/learn-github-actions/security-hardening-for-github-actions#hardening-for-self-hosted-runners)." {% endnote %} @@ -63,25 +70,36 @@ Secrets stored in an environment are only available to workflow jobs that refere {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.sidebar-settings %} {% data reusables.github-actions.sidebar-environment %} -1. Click **New environment**. -1. Enter a name for the environment, then click **Configure environment**. Environment names are not case sensitive. An environment name may not exceed 255 characters and must be unique within the repository. -1. Configure any environment protection rules or environment secrets. +{% data reusables.github-actions.new-environment %} +{% data reusables.github-actions.name-environment %} +1. Optionally, specify people or teams that must approve workflow jobs that use this environment. + 1. Select **Required reviewers**. + 1. Enter up to 6 people or teams. Only one of the required reviewers needs to approve the job for it to proceed. + 1. Click **Save protection rules**. +2. Optionally, specify the amount of time to wait before allowing workflow jobs that use this environment to proceed. + 1. Select **Wait timer**. + 1. Enter the number of minutes to wait. + 1. Click **Save protection rules**. +3. Optionally, specify what branches can deploy to this environment. For more information about the possible values, see "[Deployment branches](#deployment-branches)." + 1. Select the desired option in the **Deployment branches** dropdown. + 1. If you chose **Selected branches**, enter the branch name patterns that you want to allow. +4. Optionally, add environment secrets. These secrets are only available to workflow jobs that use the environment. Additionally, workflow jobs that use this environment can only access these secrets after any configured rules (for example, required reviewers) pass. For more information about secrets, see "[Encrypted secrets](/actions/reference/encrypted-secrets)." + 1. Under **Environment secrets**, click **Add Secret**. + 1. Enter the secret name. + 1. Enter the secret value. + 1. Click **Add secret**. {% ifversion fpt or ghae-next or ghes > 3.1 %}You can also create and configure environments through the REST API. For more information, see "[Environments](/rest/reference/repos#environments)" and "[Secrets](/rest/reference/actions#secrets)."{% endif %} Running a workflow that references an environment that does not exist will create an environment with the referenced name. The newly created environment will not have any protection rules or secrets configured. Anyone that can edit workflows in the repository can create environments via a workflow file, but only repository admins can configure the environment. -## Referencing an environment +## Using an environment -Each job in a workflow can reference a single environment. Any protection rules configured for the environment must pass before a job referencing the environment is sent to a runner. When the job is sent to the runner, the job can access the environment's secrets. - -For more information on syntax to reference environments in workflows, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idenvironment)." For more information on reviewing jobs that reference an environment with required reviewers, see "[Reviewing deployments](/actions/managing-workflow-runs/reviewing-deployments)." +Each job in a workflow can reference a single environment. Any protection rules configured for the environment must pass before a job referencing the environment is sent to a runner. The job can access the environment's secrets only after the job is sent to a runner. When a workflow references an environment, the environment will appear in the repository's deployments. For more information about viewing current and previous deployments, see "[Viewing deployment history](/developers/overview/viewing-deployment-history)." -{% ifversion fpt or ghae-next or ghes > 3.1 %} -## Using concurrency to serialize deployments in an environment -You can use concurrency so that an environment has a maximum of one deployment in progress and one deployment pending at a time. For more information, see "[Workflow syntax for GitHub Actions](/actions/reference/workflow-syntax-for-github-actions#concurrency)."{% endif %} +{% data reusables.actions.environment-example %} ## Deleting an environment @@ -96,3 +114,13 @@ Deleting an environment will delete all secrets and protection rules associated 2. Click **I understand, delete this environment**. {% ifversion fpt or ghae-next or ghes > 3.1 %}You can also delete environments through the REST API. For more information, see "[Environments](/rest/reference/repos#environments)."{% endif %} + +## How environments relate to deployments + +{% data reusables.actions.environment-deployment-event %} + +You can access these objects through the REST API or GraphQL API. You can also subscribe to these webhook events. For more information, see "[Repositories](/rest/reference/repos#deployments)" (REST API), "[Objects](/graphql/reference/objects#deployment)" (GraphQL API), or "[Webhook events and payloads](/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#deployment)." + +## Next steps + +{% data variables.product.prodname_actions %} provides several features for managing your deployments. For more information, see "[Deploying with GitHub Actions](/actions/deployment/deploying-with-github-actions)." diff --git a/content/developers/overview/viewing-deployment-history.md b/content/actions/deployment/viewing-deployment-history.md similarity index 60% rename from content/developers/overview/viewing-deployment-history.md rename to content/actions/deployment/viewing-deployment-history.md index 3605ed48fb..16f184214e 100644 --- a/content/developers/overview/viewing-deployment-history.md +++ b/content/actions/deployment/viewing-deployment-history.md @@ -8,17 +8,19 @@ versions: topics: - API shortTitle: View deployment history +redirect_from: + - /developers/overview/viewing-deployment-history --- -You can deliver deployments through {% ifversion fpt or ghes > 3.0 %}{% data variables.product.prodname_actions %} and environments or with {% endif %}the REST API and third party apps. {% ifversion fpt or ghes > 3.0 %}For more information about {% data variables.product.prodname_actions %}, see "[{% data variables.product.prodname_actions %}](/actions)." {% endif %}For more information about deployments with the REST API, see "[Repositories](/rest/reference/repos#deployments)." +You can deliver deployments through {% ifversion fpt or ghae or ghes > 3.0 %}{% data variables.product.prodname_actions %} and environments or with {% endif %}the REST API and third party apps. {% ifversion fpt or ghae ghes > 3.0 %}For more information about using environments to deploy with {% data variables.product.prodname_actions %}, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." {% endif %}For more information about deployments with the REST API, see "[Repositories](/rest/reference/repos#deployments)." To view current and past deployments, click **Environments** on the home page of your repository. {% ifversion ghae or ghes < 3.0 %} ![Environments](/assets/images/enterprise/2.22/environments-sidebar.png){% else %} ![Environments](/assets/images/environments-sidebar.png){% endif %} -The deployments page displays the last active deployment of each environment for your repository. If the deployment includes an environment URL, a "View deployment" button that links to the URL is shown next to the deployment. +The deployments page displays the last active deployment of each environment for your repository. If the deployment includes an environment URL, a **View deployment** button that links to the URL is shown next to the deployment. The activity log shows the deployment history for your environments. By default, only the most recent deployment for an environment has an `Active` status; all previously active deployments have an `Inactive` status. For more information on automatic inactivation of deployments, see "[Inactive deployments](/rest/reference/repos#inactive-deployments)." diff --git a/content/actions/index.md b/content/actions/index.md index 3d4b6b62aa..aea62f47ed 100644 --- a/content/actions/index.md +++ b/content/actions/index.md @@ -9,6 +9,7 @@ featuredLinks: guides: - /actions/learn-github-actions - /actions/guides/about-continuous-integration + - /actions/deployment/deploying-with-github-actions - /actions/guides/about-packaging-with-github-actions - /actions/monitoring-and-troubleshooting-workflows/about-monitoring-and-troubleshooting guideCards: diff --git a/content/actions/learn-github-actions/creating-workflow-templates.md b/content/actions/learn-github-actions/creating-workflow-templates.md index 295e201106..49d4729143 100644 --- a/content/actions/learn-github-actions/creating-workflow-templates.md +++ b/content/actions/learn-github-actions/creating-workflow-templates.md @@ -23,7 +23,7 @@ topics: ## Creating a workflow template -Workflow templates can be created by users with write access to the organization's `.github` repository. The templates can then be used by organization members who have permission to create workflows. +Workflow templates can be created by users with write access to the organization's `.github` repository. The templates can then be used by organization members who have permission to create workflows. You can share workflow templates if your organization's repository is public or if the repository is private and on an Enterprise plan. {% ifversion fpt or ghes > 3.3 or ghae-issue-4757 %} {% note %} diff --git a/content/actions/learn-github-actions/managing-complex-workflows.md b/content/actions/learn-github-actions/managing-complex-workflows.md index 6963f011e1..e52af06cdd 100644 --- a/content/actions/learn-github-actions/managing-complex-workflows.md +++ b/content/actions/learn-github-actions/managing-complex-workflows.md @@ -175,7 +175,7 @@ To learn more about {% data variables.product.prodname_dotcom %}-hosted runner l ## Using environments -You can configure environments with protection rules and secrets. Each job in a workflow can reference a single environment. Any protection rules configured for the environment must pass before a job referencing the environment is sent to a runner. For more information, see "[Environments](/actions/reference/environments)." +You can configure environments with protection rules and secrets. Each job in a workflow can reference a single environment. Any protection rules configured for the environment must pass before a job referencing the environment is sent to a runner. For more information, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." {% endif %} ## Using a workflow template diff --git a/content/actions/learn-github-actions/using-workflow-templates.md b/content/actions/learn-github-actions/using-workflow-templates.md index a01ac40b77..5a47502f67 100644 --- a/content/actions/learn-github-actions/using-workflow-templates.md +++ b/content/actions/learn-github-actions/using-workflow-templates.md @@ -1,7 +1,7 @@ --- title: Using workflow templates shortTitle: Using templates -intro: You can set up CI using a workflow template that matches the language and tooling you want to use. +intro: '{% data variables.product.product_name %} provides workflow templates for a variety of languages and tooling.' product: '{% data reusables.gated-features.actions %}' redirect_from: - /articles/setting-up-continuous-integration-using-github-actions @@ -17,39 +17,37 @@ type: tutorial topics: - Workflows - CI + - CD --- {% data reusables.actions.enterprise-beta %} {% data reusables.actions.enterprise-github-hosted-runners %} -Anyone with write permission to a repository can set up continuous integration (CI) using {% data variables.product.prodname_actions %}. +## About workflow templates -You can use workflow templates to create new workflows in an organization's public repository. To use templates to create workflows in private repositories, the organization must be part of an enterprise plan. +{% data variables.product.product_name %} offers workflow templates for a variety of languages and tooling. When you set up workflows in your repository, {% data variables.product.product_name %} analyzes the code in your repository and recommends workflows based on the language and framework in your repository. For example, if you use [Node.js](https://nodejs.org/en/), {% data variables.product.product_name %} will suggest a template file that installs your Node.js packages and runs your tests. -After you set up CI, you can customize the workflow to meet your needs. +You can also create your own workflow templates to share with your organization. For more information, see "[Creating workflow templates](/actions/learn-github-actions/creating-workflow-templates)." + +## Using workflow templates + +Anyone with write permission to a repository can set up {% data variables.product.prodname_actions %} workflows for CI/CD or other automation. {% data reusables.repositories.navigate-to-repo %} {% data reusables.repositories.actions-tab %} -1. If your repository already has existing workflows: In the upper-left corner, click **New workflow**. - ![Create a new workflow](/assets/images/help/repository/actions-new-workflow.png) -2. Find the template that matches the language and tooling you want to use, then click **Set up this workflow**. - ![Setup workflow button](/assets/images/help/repository/setup-workflow-button.png) +1. If you already have a workflow in your repository, click **New workflow**. +1. Find the template that you want to use, then click **Set up this workflow**. +1. If the workflow template contains comments detailing additional setup steps, follow these steps. +1. Some workflow templates use secrets. For example, {% raw %}`${{ secrets.npm_token }}`{% endraw %}. If the workflow template uses a secret, store the value described in the secret name as a secret in your repository. For more information, see "[Encrypted secrets](/actions/reference/encrypted-secrets)." +1. Optionally, make additional changes. For example, you might want to change the value of `on` to change when the workflow runs. 1. Click **Start commit**. - ![Start commit button](/assets/images/help/repository/start-commit.png) -{% data reusables.files.write_commit_message %} -{% data reusables.files.choose_commit_branch %} -{% data reusables.files.propose_new_file %} - -Once a push is made to your repository, you can follow the status and detailed logs of your continuous integration workflow run on {% data variables.product.prodname_dotcom %} and receive customized notifications. For more information, see "[Configuring notifications](/github/managing-subscriptions-and-notifications-on-github/configuring-notifications#github-actions-notification-options)" and "[Managing a workflow run](/articles/managing-a-workflow-run)." - -{% data reusables.repositories.actions-workflow-status-badge-intro %} - -For more information, see "[Adding a workflow status badge](/actions/managing-workflow-runs/adding-a-workflow-status-badge)." +1. Write a commit message and decide whether to commit directly to the default branch or to open a pull request. ## Further reading - "[About continuous integration](/articles/about-continuous-integration)" -- "[Managing a workflow run](/articles/managing-a-workflow-run)" +- "[Managing workflow runs](/actions/managing-workflow-runs)" +- "[About monitoring and troubleshooting](/actions/monitoring-and-troubleshooting-workflows/about-monitoring-and-troubleshooting)" - "[Learn {% data variables.product.prodname_actions %}](/actions/learn-github-actions)" {% ifversion fpt %} - "[Managing billing for {% data variables.product.prodname_actions %}](/billing/managing-billing-for-github-actions)" diff --git a/content/actions/learn-github-actions/workflow-syntax-for-github-actions.md b/content/actions/learn-github-actions/workflow-syntax-for-github-actions.md index a65b9bb38c..2f39a235c9 100644 --- a/content/actions/learn-github-actions/workflow-syntax-for-github-actions.md +++ b/content/actions/learn-github-actions/workflow-syntax-for-github-actions.md @@ -353,8 +353,6 @@ defaults: {% ifversion fpt or ghae-next or ghes > 3.1 %} ## `concurrency` -{% data reusables.actions.concurrency-beta %} - Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. A concurrency group can be any string or expression. The expression can only use the [`github` context](/actions/learn-github-actions/contexts#github-context). For more information about expressions, see "[Expressions](/actions/learn-github-actions/expressions)." You can also specify `concurrency` at the job level. For more information, see [`jobs..concurrency`](/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions#jobsjob_idconcurrency). @@ -509,7 +507,7 @@ jobs: {% ifversion fpt or ghes > 3.0 or ghae %} ## `jobs..environment` -The environment that the job references. All environment protection rules must pass before a job referencing the environment is sent to a runner. For more information, see "[Environments](/actions/reference/environments)." +The environment that the job references. All environment protection rules must pass before a job referencing the environment is sent to a runner. For more information, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." You can provide the environment as only the environment `name`, or as an environment object with the `name` and `url`. The URL maps to `environment_url` in the deployments API. For more information about the deployments API, see "[Deployments](/rest/reference/repos#deployments)." @@ -544,8 +542,6 @@ environment: {% ifversion fpt or ghae-next or ghes > 3.1 %} ## `jobs..concurrency` -{% data reusables.actions.concurrency-beta %} - {% note %} **Note:** When concurrency is specified at the job level, order is not guaranteed for jobs or runs that queue within 5 minutes of each other. diff --git a/content/actions/managing-workflow-runs/index.md b/content/actions/managing-workflow-runs/index.md index 2a1a44e8cc..646976f009 100644 --- a/content/actions/managing-workflow-runs/index.md +++ b/content/actions/managing-workflow-runs/index.md @@ -19,6 +19,7 @@ children: - /approving-workflow-runs-from-public-forks - /reviewing-deployments - /disabling-and-enabling-a-workflow + - /skipping-workflow-runs - /deleting-a-workflow-run - /downloading-workflow-artifacts - /removing-workflow-artifacts diff --git a/content/actions/managing-workflow-runs/reviewing-deployments.md b/content/actions/managing-workflow-runs/reviewing-deployments.md index 898899fd40..7203e91502 100644 --- a/content/actions/managing-workflow-runs/reviewing-deployments.md +++ b/content/actions/managing-workflow-runs/reviewing-deployments.md @@ -13,7 +13,7 @@ versions: Jobs that reference an environment configured with required reviewers will wait for an approval before starting. While a job is awaiting approval, it has a status of "Waiting". If a job is not approved within 30 days, the workflow run will be automatically canceled. -For more information about environments and required approvals, see "[Environments](/actions/reference/environments)."{% ifversion fpt or ghae-next or ghes > 3.1 %} For information about how to review deployments with the REST API, see "[Workflow Runs](/rest/reference/actions#workflow-runs)."{% endif %} +For more information about environments and required approvals, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)."{% ifversion fpt or ghae-next or ghes > 3.1 %} For information about how to review deployments with the REST API, see "[Workflow Runs](/rest/reference/actions#workflow-runs)."{% endif %} ## Approving or rejecting a job diff --git a/content/actions/managing-workflow-runs/skipping-workflow-runs.md b/content/actions/managing-workflow-runs/skipping-workflow-runs.md new file mode 100644 index 0000000000..09cd92c4fe --- /dev/null +++ b/content/actions/managing-workflow-runs/skipping-workflow-runs.md @@ -0,0 +1,33 @@ +--- +title: Skipping workflow runs +intro: 'You can skip workflow runs triggered by the `push` and `pull_request` events by including a command in your commit message.' +product: '{% data reusables.gated-features.actions %}' +versions: + fpt: '*' + ghes: '>=3.0' + ghae: 'ghae-next' +shortTitle: Skip workflow runs +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} + +Workflows that would otherwise be triggered using `on: push` or `on: pull_request` won't be triggered if you add any of the following strings to the commit message in a push, or the HEAD commit of a pull request: + +* `[skip ci]` +* `[ci skip]` +* `[no ci]` +* `[skip actions]` +* `[actions skip]` + +Alternatively, you can end the commit message with two empty lines followed by either `skip-checks: true` or `skip-checks:true`. + +You won't be able to merge the pull request if your repository is configured to require specific checks to pass first. To allow the pull request to be merged you can push a new commit to the pull request without the skip instruction in the commit message. + +{% note %} + +**Note:** Skip instructions only apply to the `push` and `pull_request` events. For example, adding `[skip ci]` to a commit message won't stop a workflow that's triggered `on: pull_request_target` from running. + +{% endnote %} + +Skip instructions only apply to the workflow run(s) that would be triggered by the commit that contains the skip instructions. You can also disable a workflow from running. For more information, see "[Disabling and enabling a workflow](/actions/managing-workflow-runs/disabling-and-enabling-a-workflow)." \ No newline at end of file diff --git a/content/actions/monitoring-and-troubleshooting-workflows/index.md b/content/actions/monitoring-and-troubleshooting-workflows/index.md index aa2e6bbf19..84eb482eea 100644 --- a/content/actions/monitoring-and-troubleshooting-workflows/index.md +++ b/content/actions/monitoring-and-troubleshooting-workflows/index.md @@ -17,6 +17,7 @@ children: - /viewing-job-execution-time - /using-workflow-run-logs - /enabling-debug-logging + - /notifications-for-workflow-runs --- {% data reusables.actions.enterprise-beta %} {% data reusables.actions.enterprise-github-hosted-runners %} diff --git a/content/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs.md b/content/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs.md new file mode 100644 index 0000000000..2b07b0fa58 --- /dev/null +++ b/content/actions/monitoring-and-troubleshooting-workflows/notifications-for-workflow-runs.md @@ -0,0 +1,15 @@ +--- +title: Notifications for workflow runs +intro: 'You can subscribe to notifications about workflow runs that you trigger.' +product: '{% data reusables.gated-features.actions %}' +versions: + fpt: '*' + ghes: '*' + ghae: '*' +shortTitle: Notifications +--- + +{% data reusables.actions.enterprise-beta %} +{% data reusables.actions.enterprise-github-hosted-runners %} + +{% data reusables.repositories.workflow-notifications %} diff --git a/content/actions/security-guides/security-hardening-for-github-actions.md b/content/actions/security-guides/security-hardening-for-github-actions.md index b6f8680e7d..a65026414e 100644 --- a/content/actions/security-guides/security-hardening-for-github-actions.md +++ b/content/actions/security-guides/security-hardening-for-github-actions.md @@ -47,7 +47,7 @@ To help prevent accidental disclosure, {% data variables.product.product_name %} - Rotate secrets periodically to reduce the window of time during which a compromised secret is valid. {% ifversion fpt or ghes > 3.0 or ghae %} - **Consider requiring review for access to secrets** - - You can use required reviewers to protect environment secrets. A workflow job cannot access environment secrets until approval is granted by a reviewer. For more information about storing secrets in environments or requiring reviews for environments, see "[Encrypted secrets](/actions/reference/encrypted-secrets)" and "[Environments](/actions/reference/environments)." + - You can use required reviewers to protect environment secrets. A workflow job cannot access environment secrets until approval is granted by a reviewer. For more information about storing secrets in environments or requiring reviews for environments, see "[Encrypted secrets](/actions/reference/encrypted-secrets)" and "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." {% endif %} ## Using `CODEOWNERS` to monitor changes diff --git a/content/developers/overview/index.md b/content/developers/overview/index.md index a87ee3d605..5c834b8cad 100644 --- a/content/developers/overview/index.md +++ b/content/developers/overview/index.md @@ -8,7 +8,6 @@ versions: children: - /about-githubs-apis - /managing-deploy-keys - - /viewing-deployment-history - /using-ssh-agent-forwarding - /secret-scanning-partner-program - /replacing-github-services diff --git a/content/graphql/guides/managing-enterprise-accounts.md b/content/graphql/guides/managing-enterprise-accounts.md index c9989f7af8..a1db5d4831 100644 --- a/content/graphql/guides/managing-enterprise-accounts.md +++ b/content/graphql/guides/managing-enterprise-accounts.md @@ -58,10 +58,11 @@ For some example queries, see "[An example query using the Enterprise Accounts A - `admin:enterprise` The enterprise account specific scopes are: - - `admin:enterprise`: Gives full control of enterprises (includes `manage_billing:enterprise` and `read:enterprise`) - - `manage_billing:enterprise`: Read and write enterprise billing data. + - `admin:enterprise`: Gives full control of enterprises (includes {% ifversion ghes < 3.3 %}`manage_runners:enteprise`, {% endif %}`manage_billing:enterprise` and `read:enterprise`) + - `manage_billing:enterprise`: Read and write enterprise billing data.{% ifversion ghes < 3.3 %} + - `manage_runners:enteprise`: Access to manage GitHub Actions enterprise runners and runner-groups.{% endif %} - `read:enterprise`: Read enterprise profile data. - + 4. Copy your personal access token and keep it in a secure place until you add it to your GraphQL client. ### 2. Choose a GraphQL client diff --git a/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md b/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md index 752ea1d795..ea4cda1ba1 100644 --- a/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md +++ b/content/pages/getting-started-with-github-pages/securing-your-github-pages-site-with-https.md @@ -22,6 +22,12 @@ All {% data variables.product.prodname_pages %} sites, including sites that are {% data reusables.pages.private_pages_are_public_warning %} +{% note %} + +**Note:** RFC3280 states that the maximum length of the common name should be 64 characters. Therefore, the entire domain name of your {% data variables.product.prodname_pages %} site must be less than 64 characters long for a certificate to be successfully created. + +{% endnote %} + ## Enforcing HTTPS for your {% data variables.product.prodname_pages %} site {% data reusables.pages.navigate-site-repo %} diff --git a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files.md b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files.md index e2368c2e8d..7d65edb139 100644 --- a/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files.md +++ b/content/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-citation-files.md @@ -45,18 +45,19 @@ Lisa, M., & Bot, H. (2017). My Research Software (Version 2.0.4) [Computer softw {% raw %} ``` -@misc{Lisa_My_Research_Software_2017, +@software{Lisa_My_Research_Software_2017, author = {Lisa, Mona and Bot, Hew}, doi = {10.5281/zenodo.1234}, month = {12}, title = {{My Research Software}}, url = {https://github.com/github/linguist}, + version = {2.0.4}, year = {2017} } ``` {% endraw %} -Note the example above produces a _software_ citation (i.e., `@misc` type in BibTeX rather than `@article`). +Note the example above produces a _software_ citation (i.e., `@software` type in BibTeX rather than `@article`). For more information, see the [Citation File Format](https://citation-file-format.github.io/) website. @@ -66,9 +67,15 @@ When you add a `CITATION.cff` file to the default branch of your repository, it ## Citing something other than software -If you would prefer the GitHub citation information to link to another resource such as a research paper then you can use the `preferred-citation` override in CFF. +If you would prefer the {% data variables.product.prodname_dotcom %} citation information to link to another resource such as a research article, then you can use the `preferred-citation` override in CFF with the following types. -Extended CITATION.cff file describing the software, but linking to a research paper as the preferred citation: +Resource | Type +--------- | ----- +Research article | `article` +Conference paper | `conference-paper` +Book | `book` + +Extended CITATION.cff file describing the software, but linking to a research article as the preferred citation: ``` cff-version: 1.2.0 @@ -131,6 +138,10 @@ Lisa, M., & Bot, H. (2021). My awesome research software. Journal Title, 1(1), 1 ``` {% endraw %} +## Citing a dataset + +If your repository contains a dataset, you can set `type: dataset` in your `CITATION.cff` file to produce a data citation string output in the {% data variables.product.prodname_dotcom %} citation prompt. + ## Other citation files The GitHub citation feature will also detect a small number of additional files that are often used by communities and projects to describe how they would like their work to be cited. diff --git a/content/rest/overview/api-previews.md b/content/rest/overview/api-previews.md index 7329089d74..cf48012a81 100644 --- a/content/rest/overview/api-previews.md +++ b/content/rest/overview/api-previews.md @@ -193,6 +193,8 @@ You can now provide more information in GitHub for URLs that link to registered **Custom media types:** `corsair-preview` **Announced:** [2018-12-10](https://developer.github.com/changes/2018-12-10-content-attachments-api/) +{% ifversion ghes < 3.3 %} + ## Enable and disable Pages You can use the new endpoints in the [Pages API](/rest/reference/repos#pages) to enable or disable Pages. To learn more about Pages, see "[GitHub Pages Basics](/categories/github-pages-basics)". @@ -200,6 +202,8 @@ You can use the new endpoints in the [Pages API](/rest/reference/repos#pages) to **Custom media types:** `switcheroo-preview` **Announced:** [2019-03-14](https://developer.github.com/changes/2019-03-14-enabling-disabling-pages/) +{% endif %} + {% ifversion ghes < 3.3 %} ## List branches or pull requests for a commit diff --git a/content/rest/reference/repos.md b/content/rest/reference/repos.md index ccbda5f5b5..19e6219bbb 100644 --- a/content/rest/reference/repos.md +++ b/content/rest/reference/repos.md @@ -178,7 +178,7 @@ You can communicate that a transient environment no longer exists by setting its {% ifversion fpt or ghes > 3.1 or ghae-next %} ## Environments -The Environments API allows you to create, configure, and delete environments. For more information about environments, see "[Environments](/actions/reference/environments)." To manage environment secrets, see "[Secrets](/rest/reference/actions#secrets)." +The Environments API allows you to create, configure, and delete environments. For more information about environments, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." To manage environment secrets, see "[Secrets](/rest/reference/actions#secrets)." {% for operation in currentRestOperations %} {% if operation.subcategory == 'environments' %}{% include rest_operation %}{% endif %} diff --git a/data/reusables/actions/about-environments.md b/data/reusables/actions/about-environments.md new file mode 100644 index 0000000000..ab9cfa899f --- /dev/null +++ b/data/reusables/actions/about-environments.md @@ -0,0 +1 @@ +Environments are used to describe a general deployment target like `production`, `staging`, or `development`. When a {% data variables.product.prodname_actions %} workflow deploys to an environment, the environment is displayed on the main page of the repository. You can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. For more information about creating environments, see "[Using environments for deployment](/actions/deployment/using-environments-for-deployment)." \ No newline at end of file diff --git a/data/reusables/actions/cd-templates-actions.md b/data/reusables/actions/cd-templates-actions.md new file mode 100644 index 0000000000..c6eeec90db --- /dev/null +++ b/data/reusables/actions/cd-templates-actions.md @@ -0,0 +1,3 @@ +{% data variables.product.product_name %} offers CD workflow templates for several popular services, such as Azure Web App. To learn how to get started using a workflow template, see "[Using workflow templates](/actions/learn-github-actions/using-workflow-templates)" or [browse the full list of deployment workflow templates](https://github.com/actions/starter-workflows/tree/main/deployments). You can also check out our more detailed guides for specific deployment workflows, such as "[Deploying to Azure App Service](/actions/deployment/deploying-to-azure-app-service)." + +Many service providers also offer actions on {% data variables.product.prodname_marketplace %} for deploying to their service. For the full list, see [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?category=deployment&type=actions). \ No newline at end of file diff --git a/data/reusables/actions/concurrency-beta.md b/data/reusables/actions/concurrency-beta.md deleted file mode 100644 index 0ebcdd0091..0000000000 --- a/data/reusables/actions/concurrency-beta.md +++ /dev/null @@ -1,5 +0,0 @@ -{% note %} - -**Note:** Concurrency is currently in beta and subject to change. - -{% endnote %} diff --git a/data/reusables/actions/delete-env-key.md b/data/reusables/actions/delete-env-key.md new file mode 100644 index 0000000000..380ebe5653 --- /dev/null +++ b/data/reusables/actions/delete-env-key.md @@ -0,0 +1 @@ +If you configured a deployment environment, change the value of `environment` to be the name of your environment. If you did not configure an environment{% ifversion fpt %} or if your workflow is in a private repository and you do not use {% data variables.product.prodname_ghe_cloud %}{% endif %}, delete the `environment` key. \ No newline at end of file diff --git a/data/reusables/actions/environment-deployment-event.md b/data/reusables/actions/environment-deployment-event.md new file mode 100644 index 0000000000..1a014fbfc6 --- /dev/null +++ b/data/reusables/actions/environment-deployment-event.md @@ -0,0 +1 @@ +When a workflow job that references an environment runs, it creates a deployment object with the `environment` property set to the name of your environment. As the workflow progresses, it also creates deployment status objects with the `environment` property set to the name of your environment, the `environment_url` property set to the URL for environment (if specified in the workflow), and the `state` property set to the status of the job. \ No newline at end of file diff --git a/data/reusables/actions/environment-example.md b/data/reusables/actions/environment-example.md new file mode 100644 index 0000000000..95ed6bc816 --- /dev/null +++ b/data/reusables/actions/environment-example.md @@ -0,0 +1,45 @@ +You can specify an environment for each job in your workflow. To do so, add a `jobs..environment` key followed by the name of the environment. + +For example, this workflow will use an environment called `production`. + +```yaml +name: Deployment + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + environment: production + steps: + - name: deploy + # ...deployment-specific steps +``` + +When the above workflow runs, the `deployment` job will be subject to any rules configured for the `production` environment. For example, if the environment requires reviewers, the job will pause until one of the reviewers approves the job. + +You can also specify a URL for the environment. The specified URL will appear on the deployments page for the repository (accessed by clicking **Environments** on the home page of your repository) and in the visualization graph for the workflow run. If a pull request triggered the workflow, the URL is also displayed as a **View deployment** button in the pull request timeline. + +```yaml +name: Deployment + +on: + push: + branches: + - main + +jobs: + deployment: + runs-on: ubuntu-latest + environment: + name: production + url: https://github.com + steps: + - name: deploy + # ...deployment-specific steps +``` + +![Workflow graph with URL](/assets/images/help/images/deploy-graph.png) \ No newline at end of file diff --git a/data/reusables/github-actions/name-environment.md b/data/reusables/github-actions/name-environment.md new file mode 100644 index 0000000000..f6fd5c69d4 --- /dev/null +++ b/data/reusables/github-actions/name-environment.md @@ -0,0 +1 @@ +1. Enter a name for the environment, then click **Configure environment**. Environment names are not case sensitive. An environment name may not exceed 255 characters and must be unique within the repository. diff --git a/data/reusables/github-actions/new-environment.md b/data/reusables/github-actions/new-environment.md new file mode 100644 index 0000000000..879f2bf20a --- /dev/null +++ b/data/reusables/github-actions/new-environment.md @@ -0,0 +1 @@ +1. Click **New environment**. diff --git a/data/reusables/repositories/workflow-notifications.md b/data/reusables/repositories/workflow-notifications.md index c1399976e8..d9f2a271db 100644 --- a/data/reusables/repositories/workflow-notifications.md +++ b/data/reusables/repositories/workflow-notifications.md @@ -1,4 +1,4 @@ -If you enable email or web notifications for {% data variables.product.prodname_actions %}, you'll receive a notification when any workflow runs that you've triggered have completed. The notification will include the workflow run's status (including successful, failed, neutral, and canceled runs). You can also choose to receive a notification only when a workflow run has failed. +If you enable email or web notifications for {% data variables.product.prodname_actions %}, you'll receive a notification when any workflow runs that you've triggered have completed. The notification will include the workflow run's status (including successful, failed, neutral, and canceled runs). You can also choose to receive a notification only when a workflow run has failed. For more information about enabling or disabling notifications, see "[About notifications](/account-and-profile/managing-subscriptions-and-notifications-on-github/setting-up-notifications/about-notifications)." Notifications for scheduled workflows are sent to the user who initially created the workflow. If a different user updates the cron syntax in the workflow file, subsequent notifications will be sent to that user instead.{% ifversion fpt or ghes > 2.22 %} If a scheduled workflow is disabled and then re-enabled, notifications will be sent to the user who re-enabled the workflow rather than the user who last modified the cron syntax.{% endif %} diff --git a/lib/search/indexes/github-docs-2.22-cn-records.json.br b/lib/search/indexes/github-docs-2.22-cn-records.json.br index eaeb2baa19..6727b6c6a6 100644 --- a/lib/search/indexes/github-docs-2.22-cn-records.json.br +++ b/lib/search/indexes/github-docs-2.22-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7fddf4c7faf6c930bf0e378a1ffcc9bfef95449c1d863b7143091bf1c960cd41 -size 525387 +oid sha256:91208e024867af555a4eb969e81cf9889343d67acd59cb2a0a8b2ea08dde1e96 +size 525424 diff --git a/lib/search/indexes/github-docs-2.22-cn.json.br b/lib/search/indexes/github-docs-2.22-cn.json.br index 44006dba5f..eed5d4b67f 100644 --- a/lib/search/indexes/github-docs-2.22-cn.json.br +++ b/lib/search/indexes/github-docs-2.22-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6cdba924672d13a96e72c94d0b655f2da4f5db0d43a0ea2fa1405f6b42ccc19a -size 868817 +oid sha256:7ce2293187a52af182b945594cf7f2f48aaa51778471f8ed2a588a83635531c1 +size 868920 diff --git a/lib/search/indexes/github-docs-2.22-de-records.json.br b/lib/search/indexes/github-docs-2.22-de-records.json.br index 0265fa7ed4..f3c870de90 100644 --- a/lib/search/indexes/github-docs-2.22-de-records.json.br +++ b/lib/search/indexes/github-docs-2.22-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8031aa7987254c33af030664ead0eb1c3e50fc6fcff27a5ca4f292ba67cbb50 -size 479354 +oid sha256:06ed8e30eb4a54c4479fe734e57a75733110c745d00cd0b40232c844394faa7e +size 479313 diff --git a/lib/search/indexes/github-docs-2.22-de.json.br b/lib/search/indexes/github-docs-2.22-de.json.br index 004f53dcd3..c9b9645c7b 100644 --- a/lib/search/indexes/github-docs-2.22-de.json.br +++ b/lib/search/indexes/github-docs-2.22-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b99f605bc49ee1b3a25628af635843f16e7977a73e52390bc313acd016c7bde5 -size 2127018 +oid sha256:3126d7488e44088e750c52161d5df39fbd0c71507e43e92353923a24888a3f9b +size 2127575 diff --git a/lib/search/indexes/github-docs-2.22-en-records.json.br b/lib/search/indexes/github-docs-2.22-en-records.json.br index 2143880b36..91add51ada 100644 --- a/lib/search/indexes/github-docs-2.22-en-records.json.br +++ b/lib/search/indexes/github-docs-2.22-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1af5ed92b5d28760746f716ae1cb30744cc31fa11e4fbac972165224d7569c00 -size 433209 +oid sha256:40ad457c0e26d6f502ed9a1da6ba3b87e05d385fcf97021449288ee03f1deb28 +size 434178 diff --git a/lib/search/indexes/github-docs-2.22-en.json.br b/lib/search/indexes/github-docs-2.22-en.json.br index b4f60a79e8..d8f9667cb4 100644 --- a/lib/search/indexes/github-docs-2.22-en.json.br +++ b/lib/search/indexes/github-docs-2.22-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0f74a2f4c99b8b8c12d08e13664063fb5127ed5eafee4172d24339a4420e4ea4 -size 1691908 +oid sha256:5d6d2162d830350c05d6340974d7fef66be30e400d3fea26529ee286638b0091 +size 1695964 diff --git a/lib/search/indexes/github-docs-2.22-es-records.json.br b/lib/search/indexes/github-docs-2.22-es-records.json.br index a565e203b1..04b3fd8c61 100644 --- a/lib/search/indexes/github-docs-2.22-es-records.json.br +++ b/lib/search/indexes/github-docs-2.22-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:684ae2ed9ff94f290a37483b01392248ecad74c82a2cdb0a3d310248a81b003e -size 194966 +oid sha256:28303ab0f742ac14a10721f94cb36ff7011a15866b2a1a9503a751b2d2a03de8 +size 195098 diff --git a/lib/search/indexes/github-docs-2.22-es.json.br b/lib/search/indexes/github-docs-2.22-es.json.br index 813eee40c5..2b5c11dcba 100644 --- a/lib/search/indexes/github-docs-2.22-es.json.br +++ b/lib/search/indexes/github-docs-2.22-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8da6555baf4dc636f2a10b47c5b9cee0af00ea34f065c7e2927eb761d6e65390 -size 702561 +oid sha256:e93fdd51712c6ab062dde5062279a702eca3511e529897be1b013d5796b96533 +size 702748 diff --git a/lib/search/indexes/github-docs-2.22-ja-records.json.br b/lib/search/indexes/github-docs-2.22-ja-records.json.br index 03a6519646..2569349231 100644 --- a/lib/search/indexes/github-docs-2.22-ja-records.json.br +++ b/lib/search/indexes/github-docs-2.22-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ac5b16a4f0e00a22ceafc689084228c5e9256bdd2e7899158b6d029691ee2ec2 -size 545312 +oid sha256:63155775a74ca5f1add9b970b00633b43cd6f840b858fe5eb6ea0a0602137d71 +size 545125 diff --git a/lib/search/indexes/github-docs-2.22-ja.json.br b/lib/search/indexes/github-docs-2.22-ja.json.br index 70cdd86c03..d4b0ceb41d 100644 --- a/lib/search/indexes/github-docs-2.22-ja.json.br +++ b/lib/search/indexes/github-docs-2.22-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a9ca00d6233c9a57d6c626adb98a3ab56acd7a603dadb9b07dd9d56dfe912ca -size 2880736 +oid sha256:2239e3d2a38f472fec2c004ef2cf6efc7d2fb9536ccdb8d868b15ee7e252212d +size 2881233 diff --git a/lib/search/indexes/github-docs-2.22-pt-records.json.br b/lib/search/indexes/github-docs-2.22-pt-records.json.br index d6283a8163..285d57f4f8 100644 --- a/lib/search/indexes/github-docs-2.22-pt-records.json.br +++ b/lib/search/indexes/github-docs-2.22-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eeaa533b175af0ed77e04bc809e267e2d9691cc71db070d76daa65713db4ace0 -size 456916 +oid sha256:7eecfa7dd53c92d6c11fbd73146e09a4053ca429ec346718f19c0343f226e86d +size 456762 diff --git a/lib/search/indexes/github-docs-2.22-pt.json.br b/lib/search/indexes/github-docs-2.22-pt.json.br index 4df906d3c3..4a66301637 100644 --- a/lib/search/indexes/github-docs-2.22-pt.json.br +++ b/lib/search/indexes/github-docs-2.22-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e564855f3a9cb64eac81e2e824ee4567ccebf8c0ad3c23a063af553cf2cd202a -size 1906016 +oid sha256:c275566abd5fbd592dfaec5652e5b5fab5f683d533906d1b9e1cd4efd5a12b59 +size 1906421 diff --git a/lib/search/indexes/github-docs-3.0-cn-records.json.br b/lib/search/indexes/github-docs-3.0-cn-records.json.br index b56ee84cc8..3a9aef589a 100644 --- a/lib/search/indexes/github-docs-3.0-cn-records.json.br +++ b/lib/search/indexes/github-docs-3.0-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2bf514c59e3928c9c156a7297961ac0f9e40196c133f0f6f42b9124a54571a97 -size 544827 +oid sha256:87cf77f4d982ecdc6b3098aacf4fd41dfcf391fc85d382b8fd407bf88a39abb7 +size 544936 diff --git a/lib/search/indexes/github-docs-3.0-cn.json.br b/lib/search/indexes/github-docs-3.0-cn.json.br index a02e362647..61afcab8f8 100644 --- a/lib/search/indexes/github-docs-3.0-cn.json.br +++ b/lib/search/indexes/github-docs-3.0-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:870a970a2d7faa1bebf71d76ef894bfbb30f7d1d9b9aeb724fecb0ffa2ddfe6f -size 906924 +oid sha256:3c06af4f6b6693cd191502296cc772d7918e7613fd749c76805462fe61f778af +size 906699 diff --git a/lib/search/indexes/github-docs-3.0-de-records.json.br b/lib/search/indexes/github-docs-3.0-de-records.json.br index ad9ba4ce06..a6c808484c 100644 --- a/lib/search/indexes/github-docs-3.0-de-records.json.br +++ b/lib/search/indexes/github-docs-3.0-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2538fd004ef1f5cfd3c68865cc225200ec4650fce02d758345f9f491aa99fee5 -size 499761 +oid sha256:3d68db0ba698cf3c75466d033503e9851a5f4c65ac5ccd803489afc671449a94 +size 499785 diff --git a/lib/search/indexes/github-docs-3.0-de.json.br b/lib/search/indexes/github-docs-3.0-de.json.br index 9db729d843..96aec98a01 100644 --- a/lib/search/indexes/github-docs-3.0-de.json.br +++ b/lib/search/indexes/github-docs-3.0-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49c06c5d0f26bb42d2797c56fb4dcbfdad8b3856760452eb9fbb7fe37e14d167 -size 2232343 +oid sha256:352ea704f354e70f67d6685f890bd23a45e557277d6d57997a312264d0b8a049 +size 2232857 diff --git a/lib/search/indexes/github-docs-3.0-en-records.json.br b/lib/search/indexes/github-docs-3.0-en-records.json.br index 107fe60df3..18e2133b28 100644 --- a/lib/search/indexes/github-docs-3.0-en-records.json.br +++ b/lib/search/indexes/github-docs-3.0-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:56eee7ffb97d071f93035c1e14e52107831f3b45af4ed351c941ed1796b0624e -size 453365 +oid sha256:2f821af9fde706deb6593aff4feca97681d15f25c41f6a92322e5cacc7effe39 +size 454394 diff --git a/lib/search/indexes/github-docs-3.0-en.json.br b/lib/search/indexes/github-docs-3.0-en.json.br index c9b621d729..63d3aa4420 100644 --- a/lib/search/indexes/github-docs-3.0-en.json.br +++ b/lib/search/indexes/github-docs-3.0-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d8f2b68341c3ae80dbfbfe40d910816bbb99f141239672bbd70f035d9a5a60f -size 1766262 +oid sha256:d6665bcaefb7c0fded7bc23d80d23430788068f3c63822d2f257ab65f11b79c0 +size 1770932 diff --git a/lib/search/indexes/github-docs-3.0-es-records.json.br b/lib/search/indexes/github-docs-3.0-es-records.json.br index d40791e8c1..2e225a51a6 100644 --- a/lib/search/indexes/github-docs-3.0-es-records.json.br +++ b/lib/search/indexes/github-docs-3.0-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e7f2780c8fe7c1aab0ed263ab293ce6d954bd417cb0ba3cc1f79698d8748bba -size 193801 +oid sha256:26bebda784fda100b9ce81b81c69ba6f41001477bccce87b9d97b6648f364ae8 +size 193608 diff --git a/lib/search/indexes/github-docs-3.0-es.json.br b/lib/search/indexes/github-docs-3.0-es.json.br index a7f025d90a..ccfcad5178 100644 --- a/lib/search/indexes/github-docs-3.0-es.json.br +++ b/lib/search/indexes/github-docs-3.0-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b810b4df4eee3953399f92c37951736bdc71eea7463222a321b3db333b31252b -size 694352 +oid sha256:96351ceb3ca6ee3874cc92c036e4a185b4efd95bef0e5379ff1bcf0aa7e6d459 +size 694366 diff --git a/lib/search/indexes/github-docs-3.0-ja-records.json.br b/lib/search/indexes/github-docs-3.0-ja-records.json.br index 4f1517d679..9bee4f04be 100644 --- a/lib/search/indexes/github-docs-3.0-ja-records.json.br +++ b/lib/search/indexes/github-docs-3.0-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:53e7f463b04033d32c3996b0212503d4b199da02c3d14499b3472e1f080b2398 -size 567804 +oid sha256:8a3b4ecafeadc17e3676ae2fab88446b8f75bfc798f78d9cf7ce511749e7cec8 +size 567820 diff --git a/lib/search/indexes/github-docs-3.0-ja.json.br b/lib/search/indexes/github-docs-3.0-ja.json.br index af9f1926e3..9abb823ccf 100644 --- a/lib/search/indexes/github-docs-3.0-ja.json.br +++ b/lib/search/indexes/github-docs-3.0-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49a2a706283a54b8f878a9edde25b3be6504d32447b32558994a6db17ac320dc -size 3007018 +oid sha256:8306224b0db95075977f8254a9d0e7cb6e91b3460ab67abf9c813d769c4eb880 +size 3007064 diff --git a/lib/search/indexes/github-docs-3.0-pt-records.json.br b/lib/search/indexes/github-docs-3.0-pt-records.json.br index 8ca7cf4643..8daf38226f 100644 --- a/lib/search/indexes/github-docs-3.0-pt-records.json.br +++ b/lib/search/indexes/github-docs-3.0-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d081c90eb2aaaff60ebc80549e72734df6b03f03baa8b53d0a62255be77e56d7 -size 477490 +oid sha256:16b1e99e76dd3d35641a57f9a32e4e4c92d78e41a9d9eef85e76ed8b07091122 +size 477573 diff --git a/lib/search/indexes/github-docs-3.0-pt.json.br b/lib/search/indexes/github-docs-3.0-pt.json.br index 25eb9d11f4..0577b66931 100644 --- a/lib/search/indexes/github-docs-3.0-pt.json.br +++ b/lib/search/indexes/github-docs-3.0-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6b12f9dd29b19b36445a09b1b82727c09d98c315c7ba89e3cd83a021314062d2 -size 1994090 +oid sha256:d37e5ca7e5b618bd3bce01f3f0f6bad0281bf8b93a2b9398f6e38e311bff9c74 +size 1993274 diff --git a/lib/search/indexes/github-docs-3.1-cn-records.json.br b/lib/search/indexes/github-docs-3.1-cn-records.json.br index a128c18ff8..3829ba9f0f 100644 --- a/lib/search/indexes/github-docs-3.1-cn-records.json.br +++ b/lib/search/indexes/github-docs-3.1-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ad305dc09e9a22d000b29a82e3f8fb9946d1ae5e74049de10dccf3b9e929f94 -size 557425 +oid sha256:dbce82399f9e304b3cc072e436123629fde328531c49fd425b6cd52198e07b36 +size 557376 diff --git a/lib/search/indexes/github-docs-3.1-cn.json.br b/lib/search/indexes/github-docs-3.1-cn.json.br index 6b14f3b380..122036230d 100644 --- a/lib/search/indexes/github-docs-3.1-cn.json.br +++ b/lib/search/indexes/github-docs-3.1-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1e17dfd64c1d3e9de9fffc1f478ec4c7664799b03ec7405a6eec3cb212a6f573 -size 929718 +oid sha256:07cd5cd737e4d97dc876e00fb4145ebc4f5dd921f86e0639c673fda4f3cc526f +size 929239 diff --git a/lib/search/indexes/github-docs-3.1-de-records.json.br b/lib/search/indexes/github-docs-3.1-de-records.json.br index 9f3e6eb6aa..1280634b73 100644 --- a/lib/search/indexes/github-docs-3.1-de-records.json.br +++ b/lib/search/indexes/github-docs-3.1-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ce036cc17ecb858f5256716d97332d6048f7b4c61250ffa5d061bd6b3bb1e9d8 -size 508542 +oid sha256:5d7a3274a1467dbd095b6f3d1ad0a695c8deb5c4e510bff36c6b1ccc8f8bc552 +size 508562 diff --git a/lib/search/indexes/github-docs-3.1-de.json.br b/lib/search/indexes/github-docs-3.1-de.json.br index 5af46db205..976a6a7ea0 100644 --- a/lib/search/indexes/github-docs-3.1-de.json.br +++ b/lib/search/indexes/github-docs-3.1-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6ce66bf59df88391d0438292bc4fc0a01581f77de1e1696df20d2de53401e373 -size 2284813 +oid sha256:e9a5777f9de796588d8027d728fc41b6d010b1a3e4a7206d4375fbdbd64d1194 +size 2285095 diff --git a/lib/search/indexes/github-docs-3.1-en-records.json.br b/lib/search/indexes/github-docs-3.1-en-records.json.br index a157e97a2a..222d0f0418 100644 --- a/lib/search/indexes/github-docs-3.1-en-records.json.br +++ b/lib/search/indexes/github-docs-3.1-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c750dddeba3fa6917a5fb899b98a0abfe15ab92e8740dafdae885c999756775e -size 461953 +oid sha256:b2f218d06aae678e87b5b86b57b9fe8d209a1d893f49f607d35427ae8ee028f9 +size 464086 diff --git a/lib/search/indexes/github-docs-3.1-en.json.br b/lib/search/indexes/github-docs-3.1-en.json.br index 2c9f6d9811..4777154946 100644 --- a/lib/search/indexes/github-docs-3.1-en.json.br +++ b/lib/search/indexes/github-docs-3.1-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3293fa50b36d8c39712d1f315282099702cdceddd51daf619c97a59c016a6583 -size 1804852 +oid sha256:b1dcd2ec5a3202d09ed741b36ad525b28a0715b89915fcb9001940ecfc51b0fc +size 1813064 diff --git a/lib/search/indexes/github-docs-3.1-es-records.json.br b/lib/search/indexes/github-docs-3.1-es-records.json.br index 3af8c55364..be106ca952 100644 --- a/lib/search/indexes/github-docs-3.1-es-records.json.br +++ b/lib/search/indexes/github-docs-3.1-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5f649f668c7a78318efdf0af749846e2cd8dbda4bffaeb86a32ced1b1a42b682 -size 193642 +oid sha256:2a4ae7b71b73cb2a0a6d78c153550aa88b053d0aa7d45630830a3b875c815cd3 +size 193643 diff --git a/lib/search/indexes/github-docs-3.1-es.json.br b/lib/search/indexes/github-docs-3.1-es.json.br index f04cc7902d..fd6e68ce49 100644 --- a/lib/search/indexes/github-docs-3.1-es.json.br +++ b/lib/search/indexes/github-docs-3.1-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6384445ec50d97e6536e86ec01f3e981daa0256d0bf4cba56fb42e7d18631773 -size 694106 +oid sha256:62c43bfe1ffd644bcd4badf0449aee736b75ddcdd44797b5ace1dedb864969dd +size 694297 diff --git a/lib/search/indexes/github-docs-3.1-ja-records.json.br b/lib/search/indexes/github-docs-3.1-ja-records.json.br index 1bef4f75c6..c83745f0d7 100644 --- a/lib/search/indexes/github-docs-3.1-ja-records.json.br +++ b/lib/search/indexes/github-docs-3.1-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fdc13a433adfde9df018da3d98ac4a273499d50226ba3a3ae81bbfcef28542f5 -size 579765 +oid sha256:5937bc3cc8325c6653abd921a4372ea1791b1e4201d2ddc7651105f3952df428 +size 579871 diff --git a/lib/search/indexes/github-docs-3.1-ja.json.br b/lib/search/indexes/github-docs-3.1-ja.json.br index f908bfb3ee..e9ab18a50b 100644 --- a/lib/search/indexes/github-docs-3.1-ja.json.br +++ b/lib/search/indexes/github-docs-3.1-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:58ee435f8493df69e0db01590a338af6dcc046c1129f609a754c3d45fa2be3e4 -size 3073608 +oid sha256:573945e3902fb977b439b0815e41337a65a08f24781a3c6869ddbdd91332b34f +size 3074252 diff --git a/lib/search/indexes/github-docs-3.1-pt-records.json.br b/lib/search/indexes/github-docs-3.1-pt-records.json.br index c05eaffade..3ead91e239 100644 --- a/lib/search/indexes/github-docs-3.1-pt-records.json.br +++ b/lib/search/indexes/github-docs-3.1-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7e258eaf818c974da57c5d348359e5e20e222bda61be8d0fa945ebcbacaa8fb4 -size 487223 +oid sha256:b3d56a097257ad0a5053d1df396e94e5f108f99ee321a300dd8ad6c8a88531db +size 487143 diff --git a/lib/search/indexes/github-docs-3.1-pt.json.br b/lib/search/indexes/github-docs-3.1-pt.json.br index a24230e93f..0c8e032cf0 100644 --- a/lib/search/indexes/github-docs-3.1-pt.json.br +++ b/lib/search/indexes/github-docs-3.1-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f018d3a08a09c4e708c94477cad1e50e0a6424ae5773b9f4e0b9ae5f0b40af7b -size 2036343 +oid sha256:10165275524de967426912c1168d1a5ee24937bf00f08c2b893163e83dabac50 +size 2037088 diff --git a/lib/search/indexes/github-docs-3.2-cn-records.json.br b/lib/search/indexes/github-docs-3.2-cn-records.json.br index c17b93585d..06a11db6db 100644 --- a/lib/search/indexes/github-docs-3.2-cn-records.json.br +++ b/lib/search/indexes/github-docs-3.2-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f639e18af0f10e4d3e3fd3a75e0e865cb0bcca1b30acaa3a92adc2d9da8bcef1 -size 567991 +oid sha256:917997928a1a9ad79fb088af7f386c87ba5fe897a95e7b1a3c501a801aa4e205 +size 567854 diff --git a/lib/search/indexes/github-docs-3.2-cn.json.br b/lib/search/indexes/github-docs-3.2-cn.json.br index fcbfe33c50..ec35fd4895 100644 --- a/lib/search/indexes/github-docs-3.2-cn.json.br +++ b/lib/search/indexes/github-docs-3.2-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7c51adeb90f772f779ee9d07c0c264faadd64f3410f1d4dc4e035db558fedfe2 -size 948883 +oid sha256:02cdd4dec93e5b6cea5bb8916114dc76c4c11e3eee784ea9d3e1ac1d267270fc +size 949299 diff --git a/lib/search/indexes/github-docs-3.2-de-records.json.br b/lib/search/indexes/github-docs-3.2-de-records.json.br index 3ce26fa3cb..869e7d6364 100644 --- a/lib/search/indexes/github-docs-3.2-de-records.json.br +++ b/lib/search/indexes/github-docs-3.2-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:55ced6f594891748c1f9b12d300b9c25a36a08bcb93124fb4528423c8e4d7436 -size 517640 +oid sha256:7204feba67427f060228892734c3d5f72e15330ba302e4e75acebd07624020f4 +size 517642 diff --git a/lib/search/indexes/github-docs-3.2-de.json.br b/lib/search/indexes/github-docs-3.2-de.json.br index e632111094..6481dd21c3 100644 --- a/lib/search/indexes/github-docs-3.2-de.json.br +++ b/lib/search/indexes/github-docs-3.2-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e98505a08a7aa99326182d580fd8e74505c550a825ba6751594f6c5886d8f635 -size 2332458 +oid sha256:819d728984ce724fc83ec6b3eea4eb54bbba12760f68dd726ed3df29134d140c +size 2333118 diff --git a/lib/search/indexes/github-docs-3.2-en-records.json.br b/lib/search/indexes/github-docs-3.2-en-records.json.br index c712fd50e4..8be41023ac 100644 --- a/lib/search/indexes/github-docs-3.2-en-records.json.br +++ b/lib/search/indexes/github-docs-3.2-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:752e411b9781f6ed04421e84bbf5e7ea7b59484317056cac327f4a3c70cb6de1 -size 470578 +oid sha256:938a3b6cdf940d998c7967033e0da779518404aaa7a5cb21b1d27e7636d3b052 +size 472921 diff --git a/lib/search/indexes/github-docs-3.2-en.json.br b/lib/search/indexes/github-docs-3.2-en.json.br index 21f684736a..e0a2eea797 100644 --- a/lib/search/indexes/github-docs-3.2-en.json.br +++ b/lib/search/indexes/github-docs-3.2-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b580446492439c10830e82df784b9ae51ebd99d0e9dfc84c4e2e6bd35091179e -size 1837601 +oid sha256:08abb8df2fdb7342368a6eaa044c5c2eb751533b78ab84381e7e1e70141bbb48 +size 1845491 diff --git a/lib/search/indexes/github-docs-3.2-es-records.json.br b/lib/search/indexes/github-docs-3.2-es-records.json.br index c11d05e3f4..cef60cbe6f 100644 --- a/lib/search/indexes/github-docs-3.2-es-records.json.br +++ b/lib/search/indexes/github-docs-3.2-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8b1e5f442286f359edae735cb5aa734715092f91c0bf9b5f451966e8a86cc9d -size 193623 +oid sha256:6441754ce97f1c2cc7cdc56c46576790ba771a542844cfbccde12c04ddf29daf +size 193563 diff --git a/lib/search/indexes/github-docs-3.2-es.json.br b/lib/search/indexes/github-docs-3.2-es.json.br index f9f83187ca..66fb57d7e0 100644 --- a/lib/search/indexes/github-docs-3.2-es.json.br +++ b/lib/search/indexes/github-docs-3.2-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:dcee8f4de2c5c68ec0398ab42b56fa260dd221b74b2d8af1479867483fd04866 -size 694265 +oid sha256:90ca8025913ba8310255195a5830ae51bc8221a2e7c4fc6417b0fe862c48777b +size 694371 diff --git a/lib/search/indexes/github-docs-3.2-ja-records.json.br b/lib/search/indexes/github-docs-3.2-ja-records.json.br index 782f66755a..2fc007743b 100644 --- a/lib/search/indexes/github-docs-3.2-ja-records.json.br +++ b/lib/search/indexes/github-docs-3.2-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:21e91105029496724f2f82ba2000ba65eaa5329bed583b4e7f2c11d39f497942 -size 590355 +oid sha256:dbcf387680785da76cfe0d1c88a114dfbe82592e057d61a1dad3cc0c8e047de5 +size 590531 diff --git a/lib/search/indexes/github-docs-3.2-ja.json.br b/lib/search/indexes/github-docs-3.2-ja.json.br index 06cd24fe66..201c902163 100644 --- a/lib/search/indexes/github-docs-3.2-ja.json.br +++ b/lib/search/indexes/github-docs-3.2-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6e61b40d7c866e660e30b09ec1a575f9f1388b211c75c2968e418890aacc9ca6 -size 3139802 +oid sha256:0328aae7ed17d573e7056d71c83f1ad93e63c3cefff50f5490b010be29fa3a65 +size 3141216 diff --git a/lib/search/indexes/github-docs-3.2-pt-records.json.br b/lib/search/indexes/github-docs-3.2-pt-records.json.br index 33d1b16070..0fa7e7355d 100644 --- a/lib/search/indexes/github-docs-3.2-pt-records.json.br +++ b/lib/search/indexes/github-docs-3.2-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:09f632ae8796b8f5c1845c89d319935a188a1641f1ab65cb05a0e9f91c6c6c2e -size 496563 +oid sha256:35ea12734eb072c8fc455594bf9e6ab158c89932520efb720741a08d2cf7849c +size 496648 diff --git a/lib/search/indexes/github-docs-3.2-pt.json.br b/lib/search/indexes/github-docs-3.2-pt.json.br index a5cfe1d4e0..d7dca5e161 100644 --- a/lib/search/indexes/github-docs-3.2-pt.json.br +++ b/lib/search/indexes/github-docs-3.2-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8d67d4d22c177a7b0ba24ffe243b9d62773710ac68fdf65235eef18435504438 -size 2078064 +oid sha256:06411283bc246062b3f5fdd0983e004197c3cd4de7ef6159d4b0af7bb5ebbe5c +size 2078555 diff --git a/lib/search/indexes/github-docs-dotcom-cn-records.json.br b/lib/search/indexes/github-docs-dotcom-cn-records.json.br index fe60285cca..0508ef02c3 100644 --- a/lib/search/indexes/github-docs-dotcom-cn-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41b1cc4a802ea385979c392523bf971cc7c3ec938b1e9204caafe571c158dcbc -size 770867 +oid sha256:fc12d04bc7e405999033e7c0aad4a619eaec6a6a6f2ee4dbbab4324ce05cb1b5 +size 770878 diff --git a/lib/search/indexes/github-docs-dotcom-cn.json.br b/lib/search/indexes/github-docs-dotcom-cn.json.br index b23e202ef7..48a85097c1 100644 --- a/lib/search/indexes/github-docs-dotcom-cn.json.br +++ b/lib/search/indexes/github-docs-dotcom-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a794aad29a10a55d1808133f201af9a84120baab06aa5ca6528b561ec0e02191 -size 1171975 +oid sha256:89e2cfd98427c83deff17d953ecccc51680258c4cf58eb7be4bf65ebc7135786 +size 1171829 diff --git a/lib/search/indexes/github-docs-dotcom-de-records.json.br b/lib/search/indexes/github-docs-dotcom-de-records.json.br index 5478b99f74..192ea481f9 100644 --- a/lib/search/indexes/github-docs-dotcom-de-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8b7204fc53e0fb66bfa17ec8146182d5e9a101f0ce7f79bd69097184a1a2d81d -size 690488 +oid sha256:a0317da926ab47cee5f387062ea307ce44587280b26ce489c96a29a88bd35aac +size 691015 diff --git a/lib/search/indexes/github-docs-dotcom-de.json.br b/lib/search/indexes/github-docs-dotcom-de.json.br index 53150bdb28..28d8dfa89c 100644 --- a/lib/search/indexes/github-docs-dotcom-de.json.br +++ b/lib/search/indexes/github-docs-dotcom-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cdc586417bb82419c73bb97e06f053dc67c3b1a6545b85a65d4927c54f13f222 -size 3124134 +oid sha256:aadf161948579c1b667aedafb29fe9c7865491c8afa00c466d4f865722d4064b +size 3126159 diff --git a/lib/search/indexes/github-docs-dotcom-en-records.json.br b/lib/search/indexes/github-docs-dotcom-en-records.json.br index fccd06127c..bbf161bf41 100644 --- a/lib/search/indexes/github-docs-dotcom-en-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:323cdec00093da4bdae83801ff99b25c14675130a5c39775e13b3e24a360fb19 -size 636380 +oid sha256:8d6d41b22d89aae6e1227495276b989104900af4e5c3831b5326facefaf884f5 +size 638540 diff --git a/lib/search/indexes/github-docs-dotcom-en.json.br b/lib/search/indexes/github-docs-dotcom-en.json.br index 60efc10f50..372c17e06b 100644 --- a/lib/search/indexes/github-docs-dotcom-en.json.br +++ b/lib/search/indexes/github-docs-dotcom-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f65f5e0c97318bbcbb572029d65958af88acbc6fe91a3be1eeb43bd1fd5f549a -size 2419325 +oid sha256:cb976659507f1e9b55940a590f1097d792cf399b64c8366f4de9d7a880e03f7b +size 2426632 diff --git a/lib/search/indexes/github-docs-dotcom-es-records.json.br b/lib/search/indexes/github-docs-dotcom-es-records.json.br index e12956fb21..a34400a77a 100644 --- a/lib/search/indexes/github-docs-dotcom-es-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ad355cc33f19caa65db451708b90aa3ff71fc0166360a9c38a53e414977ae625 -size 205209 +oid sha256:e1265f2e1f1755bbdf69987ee81f0d3210ec80c174f82ebd80b05860d1065755 +size 205316 diff --git a/lib/search/indexes/github-docs-dotcom-es.json.br b/lib/search/indexes/github-docs-dotcom-es.json.br index a73a3fbe10..daf3d22f28 100644 --- a/lib/search/indexes/github-docs-dotcom-es.json.br +++ b/lib/search/indexes/github-docs-dotcom-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c12de3c0ef9cea4bbb7a44032b810970f11c8d3a7a4aa64ae65030cf97251d10 -size 651254 +oid sha256:2767ffb511df6c27a3eb97da5d5fa3b27015640ae6ebe3104c00a10a66a643f3 +size 651528 diff --git a/lib/search/indexes/github-docs-dotcom-ja-records.json.br b/lib/search/indexes/github-docs-dotcom-ja-records.json.br index bd021062c0..5f13b606e4 100644 --- a/lib/search/indexes/github-docs-dotcom-ja-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:40d34b94f1e8c1bc486057b29de0d0f17d58b022f4fdc0a17ff1ae338ed6424f -size 795235 +oid sha256:841fcad09edad52a10254d14a8bb4e9be8947332ac81a02a9692b1ada0bf9ecd +size 795398 diff --git a/lib/search/indexes/github-docs-dotcom-ja.json.br b/lib/search/indexes/github-docs-dotcom-ja.json.br index ec82f6651f..d4877b319d 100644 --- a/lib/search/indexes/github-docs-dotcom-ja.json.br +++ b/lib/search/indexes/github-docs-dotcom-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:29580572fcd363168719010f2d06a067a6b2dbe718fe2fc33bae7c995936f5d9 -size 4151082 +oid sha256:ad8adaa7c6ef50c465c14984fc980dd2dd97db3cc6de9a58583666ad92087995 +size 4151239 diff --git a/lib/search/indexes/github-docs-dotcom-pt-records.json.br b/lib/search/indexes/github-docs-dotcom-pt-records.json.br index b063ef0e29..0680eec4b9 100644 --- a/lib/search/indexes/github-docs-dotcom-pt-records.json.br +++ b/lib/search/indexes/github-docs-dotcom-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8a8cc3dcdbb5fb8cee6db148f34387dd04e97de205d2700b70fc170529c98fa6 -size 669799 +oid sha256:cd67a6a7dff3c8285ea42240bf2239413458f77a5c0e9bb48e5a6da5a2d2a246 +size 670239 diff --git a/lib/search/indexes/github-docs-dotcom-pt.json.br b/lib/search/indexes/github-docs-dotcom-pt.json.br index 1c9885199a..ab6b7eaf2e 100644 --- a/lib/search/indexes/github-docs-dotcom-pt.json.br +++ b/lib/search/indexes/github-docs-dotcom-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5c0ebf0a075601dda156efd63cc7bdb3df318c080ace8106321ab59836623e8 -size 2751097 +oid sha256:2549359fd05934f9800bf00d7b7fa8810a4ebecebe8ed4c082541514d88d5161 +size 2753364 diff --git a/lib/search/indexes/github-docs-ghae-cn-records.json.br b/lib/search/indexes/github-docs-ghae-cn-records.json.br index 91516a9813..9dfde72596 100644 --- a/lib/search/indexes/github-docs-ghae-cn-records.json.br +++ b/lib/search/indexes/github-docs-ghae-cn-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ff85b5a41019647a259e6119e47d190de59b75eade046eafeec6d50da93f89c0 -size 433797 +oid sha256:a62589ad297e32ab68edb83d69b32a3f3a3fc028497849f8f5f86eedd5ce34cb +size 433867 diff --git a/lib/search/indexes/github-docs-ghae-cn.json.br b/lib/search/indexes/github-docs-ghae-cn.json.br index 142d187151..c1e21e4c64 100644 --- a/lib/search/indexes/github-docs-ghae-cn.json.br +++ b/lib/search/indexes/github-docs-ghae-cn.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e0b1fe3d194bc281c8e8189f701c5ef16311860228da5531ed5d4f3642b2aae5 -size 691631 +oid sha256:a3882f9e115d82807b444f97de03b0ea4795ed77f93b95ef67a8bd5512a2b7b1 +size 691775 diff --git a/lib/search/indexes/github-docs-ghae-de-records.json.br b/lib/search/indexes/github-docs-ghae-de-records.json.br index 804df307ee..041198f6a0 100644 --- a/lib/search/indexes/github-docs-ghae-de-records.json.br +++ b/lib/search/indexes/github-docs-ghae-de-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c3acd02c1ad6e26b25aa43f22fe451be9e655f3ec70b7ade4dba271b210b578 -size 400644 +oid sha256:6c867fb983591b36ed7d7257d11a93506fa2124072da7283d0046ca9c874cb75 +size 400769 diff --git a/lib/search/indexes/github-docs-ghae-de.json.br b/lib/search/indexes/github-docs-ghae-de.json.br index 2d70589e49..8422168caa 100644 --- a/lib/search/indexes/github-docs-ghae-de.json.br +++ b/lib/search/indexes/github-docs-ghae-de.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f01ae7c51133cefaeabcc5fb247eecbe0e4b043080d072675eb47b2817660f7a -size 1741820 +oid sha256:5e33635b23d2c098ec25f054c36042de12725769234064989d9f9e5497c0516a +size 1742391 diff --git a/lib/search/indexes/github-docs-ghae-en-records.json.br b/lib/search/indexes/github-docs-ghae-en-records.json.br index 5c5e1ea8da..2b3366ae13 100644 --- a/lib/search/indexes/github-docs-ghae-en-records.json.br +++ b/lib/search/indexes/github-docs-ghae-en-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:63a3ca75e3ea6f44d5ac0169b55819db81f8b158b2e7aec5ccd2c2accaf0fd88 -size 363656 +oid sha256:fe56466dd3388a8c9dfc334ff6c25f3c1d5793e61740a31d7427d0d93c3bbec2 +size 365404 diff --git a/lib/search/indexes/github-docs-ghae-en.json.br b/lib/search/indexes/github-docs-ghae-en.json.br index 1ef63562fc..99b6a95ab5 100644 --- a/lib/search/indexes/github-docs-ghae-en.json.br +++ b/lib/search/indexes/github-docs-ghae-en.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4eb922c2cfcc1b9382b172d0445472d523dad84af79351071ca4f1c5394af924 -size 1350074 +oid sha256:10cb356d9a785253c1f590dff8bd81f34c466a981cb741aeda7311c3c0da29ad +size 1356662 diff --git a/lib/search/indexes/github-docs-ghae-es-records.json.br b/lib/search/indexes/github-docs-ghae-es-records.json.br index b39844cbf9..4365cbfed0 100644 --- a/lib/search/indexes/github-docs-ghae-es-records.json.br +++ b/lib/search/indexes/github-docs-ghae-es-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:24bf7b1e7f067e5f4b5e5def8ca72a70b7776d7dd313f9452e4a4afa3cc2992d -size 130867 +oid sha256:61b05e22a6934d1a6717b9b11abd7851cb0bfe5d79f689d21aba70f38227f092 +size 130796 diff --git a/lib/search/indexes/github-docs-ghae-es.json.br b/lib/search/indexes/github-docs-ghae-es.json.br index 61a083f55d..d0663af302 100644 --- a/lib/search/indexes/github-docs-ghae-es.json.br +++ b/lib/search/indexes/github-docs-ghae-es.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0427921a031e7a4818cf35f23ff90595f3a7e9b700c7e1baf55395cd5dabff3c -size 420360 +oid sha256:40cf0f30b1a24c242798f0a1d3522ad2c7aadeb588754716a183677c08a46ed4 +size 420297 diff --git a/lib/search/indexes/github-docs-ghae-ja-records.json.br b/lib/search/indexes/github-docs-ghae-ja-records.json.br index 602e60d439..44b3e954c8 100644 --- a/lib/search/indexes/github-docs-ghae-ja-records.json.br +++ b/lib/search/indexes/github-docs-ghae-ja-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f8e34654c36fe982b2a05825d77310caf5cd0000a3ece7769059a15bb70c3cd3 -size 453099 +oid sha256:0ec9ec70c52f2ce9da48d316af483ebb67fcf1aff21ed24ccbe0871f234f78fc +size 453116 diff --git a/lib/search/indexes/github-docs-ghae-ja.json.br b/lib/search/indexes/github-docs-ghae-ja.json.br index e1a588062c..2c06ba0fec 100644 --- a/lib/search/indexes/github-docs-ghae-ja.json.br +++ b/lib/search/indexes/github-docs-ghae-ja.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fb8ce68ccb3db93c28b0234576db6b80d7987aeeafb74d3f7454698984a062fb -size 2297222 +oid sha256:04539b71e872c15d430da9d98fddbc49fe1b777fb6a886db4cc5057e61521de5 +size 2296708 diff --git a/lib/search/indexes/github-docs-ghae-pt-records.json.br b/lib/search/indexes/github-docs-ghae-pt-records.json.br index 7602050eb4..72a6ca8f44 100644 --- a/lib/search/indexes/github-docs-ghae-pt-records.json.br +++ b/lib/search/indexes/github-docs-ghae-pt-records.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:501dfc39d329958d1e77c2c06717cc96a2edd3cce11b3bc057da7f432c3383c0 -size 385061 +oid sha256:294380fd1d8cf6581c6dddd4d896a8db6ad215e83e09dd4e863e44433f3e8144 +size 384794 diff --git a/lib/search/indexes/github-docs-ghae-pt.json.br b/lib/search/indexes/github-docs-ghae-pt.json.br index dd84a8ffc9..c98d8fab70 100644 --- a/lib/search/indexes/github-docs-ghae-pt.json.br +++ b/lib/search/indexes/github-docs-ghae-pt.json.br @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97a5632936885ea1f7b31e15bd23d1e2fcba13f8a04cd66954535e332d03a77b -size 1536660 +oid sha256:b6a57ef28937a8a06cbb7856d67759a63852b76ce7e06044780049453e161fc6 +size 1537121 diff --git a/script/deployment/create-app.js b/script/deployment/create-app.js deleted file mode 100644 index 6d60058394..0000000000 --- a/script/deployment/create-app.js +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env node -import Heroku from 'heroku-client' -import createAppName from './create-staging-app-name.js' - -export default async function createApp(pullRequest) { - // Extract some important properties from the PR - const { - number: pullNumber, - base: { - repo: { - name: repo, - owner: { login: owner }, - }, - }, - head: { ref: branch }, - user: author, - } = pullRequest - - const appName = createAppName({ prefix: 'ghd', repo, pullNumber, branch }) - - // Put together application configuration variables - const isPrivateRepo = owner === 'github' && repo === 'docs-internal' - const { HYDRO_ENDPOINT, HYDRO_SECRET } = process.env - const appConfigVars = { - // These values are usually set in app.json but we need to set them - // ourselves for Docker image deployment. - NODE_ENV: 'production', - ENABLED_LANGUAGES: 'en', - WEB_CONCURRENCY: '1', - // IMPORTANT: These secrets should only be set in the private repo! - // These are required for Hydro event tracking - ...(isPrivateRepo && HYDRO_ENDPOINT && HYDRO_SECRET && { HYDRO_ENDPOINT, HYDRO_SECRET }), - } - - // Check if there's already a Heroku App for this PR, if not create one - let appExists = true - const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN }) - - try { - await heroku.get(`/apps/${appName}`) - } catch (error) { - announceIfHerokuIsDown(error) - appExists = false - } - - if (!appExists) { - try { - const newApp = await heroku.post('/apps', { - body: { - name: appName, - }, - }) - - console.log('Heroku App created', newApp) - } catch (error) { - announceIfHerokuIsDown(error) - throw new Error(`Failed to create Heroku App ${appName}. Error: ${error}`) - } - - // Add PR author (if staff) as a collaborator on the new staging app - try { - if (author.site_admin === true) { - await heroku.post(`/apps/${appName}/collaborators`, { - body: { - user: `${author.login}@github.com`, - // We don't want an email invitation for every new staging app - silent: true, - }, - }) - console.log(`Added PR author @${author.login} as a Heroku app collaborator`) - } - } catch (error) { - announceIfHerokuIsDown(error) - // It's fine if this fails, it shouldn't block the app from deploying! - console.warn(`Warning: failed to add PR author as a Heroku app collaborator. Error: ${error}`) - } - } else { - console.log(`Heroku App ${appName} already exists.`) - } - - // Set/reconfigure environment variables - // https://devcenter.heroku.com/articles/platform-api-reference#config-vars-update - try { - await heroku.patch(`/apps/${appName}/config-vars`, { - body: appConfigVars, - }) - } catch (error) { - announceIfHerokuIsDown(error) - throw new Error(`Failed to update Heroku app configuration variables. Error: ${error}`) - } - - return appName -} - -function announceIfHerokuIsDown(error) { - if (error && error.statusCode === 503) { - console.error('💀 Heroku may be down! Please check its Status page: https://status.heroku.com/') - } -} diff --git a/script/deployment/create-staging-app-name.js b/script/deployment/create-staging-app-name.js index 8cb3076adc..cee33514bc 100644 --- a/script/deployment/create-staging-app-name.js +++ b/script/deployment/create-staging-app-name.js @@ -3,9 +3,9 @@ const slugify = GithubSlugger.slug const APP_NAME_MAX_LENGTH = 30 -export default function ({ prefix = 'gha', repo, pullNumber, branch }) { +export default function ({ prefix = '', repo, pullNumber, branch }) { return ( - `${prefix}-${repo}-${pullNumber}--${slugify(branch)}` + `${prefix}${repo}-${pullNumber}--${slugify(branch)}` // Shorten the string to the max allowed length .slice(0, APP_NAME_MAX_LENGTH) // Convert underscores to dashes