diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 4c6ff3c4fd..f54c51ee4e 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -11,7 +11,6 @@
/script/ @github/docs-engineering
/includes/ @github/docs-engineering
/lib/search/popular-pages.json @github/docs-engineering
-app.json @github/docs-engineering
Dockerfile @github/docs-engineering
package-lock.json @github/docs-engineering
package.json @github/docs-engineering
diff --git a/.github/actions-scripts/prod-deploy.js b/.github/actions-scripts/prod-deploy.js
deleted file mode 100755
index 387e1397be..0000000000
--- a/.github/actions-scripts/prod-deploy.js
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env node
-
-import getOctokit from '../../script/helpers/github.js'
-import deployToProduction from '../../script/deployment/deploy-to-production.js'
-
-const {
- GITHUB_TOKEN,
- HEROKU_API_TOKEN,
- HEROKU_PRODUCTION_APP_NAME,
- SOURCE_BLOB_URL,
- DELAY_FOR_PREBOOT,
- RUN_ID,
-} = process.env
-
-// Exit if GitHub Actions PAT is not found
-if (!GITHUB_TOKEN) {
- throw new Error('You must supply a GITHUB_TOKEN environment variable!')
-}
-
-// Exit if Heroku API token is not found
-if (!HEROKU_API_TOKEN) {
- throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
-}
-
-// Exit if Heroku App name is not found
-if (!HEROKU_PRODUCTION_APP_NAME) {
- throw new Error('You must supply a HEROKU_PRODUCTION_APP_NAME environment variable!')
-}
-
-if (!RUN_ID) {
- throw new Error('$RUN_ID not set')
-}
-
-// This helper uses the `GITHUB_TOKEN` implicitly!
-// We're using our usual version of Octokit vs. the provided `github`
-// instance to avoid versioning discrepancies.
-const octokit = getOctokit()
-
-try {
- await deployToProduction({
- octokit,
- includeDelayForPreboot: DELAY_FOR_PREBOOT !== 'false',
- // These parameters will ONLY be set by Actions
- sourceBlobUrl: SOURCE_BLOB_URL,
- runId: RUN_ID,
- })
-} catch (error) {
- console.error(`Failed to deploy to production: ${error.message}`)
- console.error(error)
- throw error
-}
diff --git a/.github/actions-scripts/staging-commit-status-success.js b/.github/actions-scripts/staging-commit-status-success.js
deleted file mode 100755
index e7e1a6ba97..0000000000
--- a/.github/actions-scripts/staging-commit-status-success.js
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env node
-
-import * as github from '@actions/github'
-
-import getOctokit from '../../script/helpers/github.js'
-
-const { GITHUB_TOKEN } = process.env
-
-// Exit if GitHub Actions PAT is not found
-if (!GITHUB_TOKEN) {
- throw new Error('You must supply a GITHUB_TOKEN environment variable!')
-}
-
-// This helper uses the `GITHUB_TOKEN` implicitly!
-// We're using our usual version of Octokit vs. the provided `github`
-// instance to avoid versioning discrepancies.
-const octokit = getOctokit()
-
-const { CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
-if (!CONTEXT_NAME) {
- throw new Error('$CONTEXT_NAME not set')
-}
-if (!ACTIONS_RUN_LOG) {
- throw new Error('$ACTIONS_RUN_LOG not set')
-}
-if (!HEAD_SHA) {
- throw new Error('$HEAD_SHA not set')
-}
-
-const { context } = github
-const owner = context.repo.owner
-const repo = context.payload.repository.name
-
-await octokit.repos.createCommitStatus({
- owner,
- repo,
- sha: HEAD_SHA,
- context: CONTEXT_NAME,
- state: 'success',
- description: 'Successfully deployed! See logs.',
- target_url: ACTIONS_RUN_LOG,
-})
diff --git a/.github/actions-scripts/staging-deploy.js b/.github/actions-scripts/staging-deploy.js
deleted file mode 100755
index 26dadc4157..0000000000
--- a/.github/actions-scripts/staging-deploy.js
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/usr/bin/env node
-
-import parsePrUrl from '../../script/deployment/parse-pr-url.js'
-import getOctokit from '../../script/helpers/github.js'
-import deployToStaging from '../../script/deployment/deploy-to-staging.js'
-
-const { GITHUB_TOKEN, HEROKU_API_TOKEN } = process.env
-
-// Exit if GitHub Actions PAT is not found
-if (!GITHUB_TOKEN) {
- throw new Error('You must supply a GITHUB_TOKEN environment variable!')
-}
-
-// Exit if Heroku API token is not found
-if (!HEROKU_API_TOKEN) {
- throw new Error('You must supply a HEROKU_API_TOKEN environment variable!')
-}
-
-// This helper uses the `GITHUB_TOKEN` implicitly!
-// We're using our usual version of Octokit vs. the provided `github`
-// instance to avoid versioning discrepancies.
-const octokit = getOctokit()
-
-const { RUN_ID, PR_URL, SOURCE_BLOB_URL } = process.env
-if (!RUN_ID) {
- throw new Error('$RUN_ID not set')
-}
-if (!PR_URL) {
- throw new Error('$PR_URL not set')
-}
-if (!SOURCE_BLOB_URL) {
- throw new Error('$SOURCE_BLOB_URL not set')
-}
-
-const { owner, repo, pullNumber } = parsePrUrl(PR_URL)
-if (!owner || !repo || !pullNumber) {
- throw new Error(
- `'pullRequestUrl' input must match URL format 'https://github.com/github/(docs|docs-internal)/pull/123' but was '${PR_URL}'`
- )
-}
-
-const { data: pullRequest } = await octokit.pulls.get({
- owner,
- repo,
- pull_number: pullNumber,
-})
-
-await deployToStaging({
- octokit,
- pullRequest,
- forceRebuild: false,
- // These parameters will ONLY be set by Actions
- sourceBlobUrl: SOURCE_BLOB_URL,
- runId: RUN_ID,
-})
diff --git a/.github/workflows/hubber-contribution-help.yml b/.github/workflows/hubber-contribution-help.yml
index 8f84d851e8..7aa4d0d7f4 100644
--- a/.github/workflows/hubber-contribution-help.yml
+++ b/.github/workflows/hubber-contribution-help.yml
@@ -41,7 +41,7 @@ jobs:
run: |
gh pr comment $PR --body "Thanks so much for opening this PR and contributing to GitHub Docs!
- - When you're ready for the Docs team to review this PR, apply the **ready-for-doc-review** label and your PR will be added to the [Docs Content review board](https://github.com/orgs/github/memexes/901?layout=table&groupedBy%5BcolumnId%5D=11024). **Please factor in at least 72 hours for a review, even longer if this is a substantial change.**
+ - When you're ready for the Docs team to review this PR, request a review by *docs-content* and your PR will be added to the [Docs Content review board](https://github.com/orgs/github/memexes/901?layout=table&groupedBy%5BcolumnId%5D=11024). **Please factor in at least 72 hours for a review, even longer if this is a substantial change.**
- If this is a major update to the docs, you might want to go back and open an [issue](https://github.com/github/docs-content/issues/new/choose) to ensure we've covered all areas of the docs in these updates. Not doing so may result in delays or inaccurate documentation."
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/ping-staging-apps.yml b/.github/workflows/ping-staging-apps.yml
deleted file mode 100644
index b5654ff1e2..0000000000
--- a/.github/workflows/ping-staging-apps.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-name: Ping staging apps
-
-# **What it does**: This keeps our staging applications from automatically spinning down.
-# **Why we have it**: Staging applications can hiberate without use.
-# **Who does it impact**: Anyone with a pull request in docs-internal.
-
-on:
- schedule:
- - cron: '10,30,50 * * * *' # every twenty minutes
-
-permissions:
- contents: read
-
-jobs:
- ping_staging_apps:
- name: Ping
- if: github.repository == 'github/docs-internal'
- runs-on: ubuntu-latest
- env:
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- steps:
- - uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
- - name: npm ci
- run: npm ci
- - name: Run script
- run: script/ping-staging-apps.js
diff --git a/.github/workflows/prod-build-deploy.yml b/.github/workflows/prod-build-deploy.yml
deleted file mode 100644
index 31094bf7db..0000000000
--- a/.github/workflows/prod-build-deploy.yml
+++ /dev/null
@@ -1,199 +0,0 @@
-name: Production - Build and Deploy
-
-# **What it does**: Builds and deploys the default branch to production
-# **Why we have it**: To enable us to deploy the latest to production whenever necessary rather than relying on PR merges.
-# **Who does it impact**: All contributors.
-
-on:
- push:
- branches:
- - main
- workflow_dispatch:
-
-permissions:
- contents: read
- deployments: write
-
-# This allows a subsequently queued workflow run to take priority over
-# previously queued runs but NOT interrupt currently executing runs
-concurrency:
- group: '${{ github.workflow }}'
- cancel-in-progress: false
-
-jobs:
- build-and-deploy:
- if: ${{ github.repository == 'github/docs-internal'}}
- runs-on: ubuntu-latest
- timeout-minutes: 15
- steps:
- - name: Check out repo
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- with:
- persist-credentials: 'false'
- lfs: 'true'
-
- - name: Check out LFS objects
- run: git lfs checkout
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- # Required for `npm pkg ...` command support
- - name: Update to npm@^7.20.0
- run: npm install --global npm@^7.20.0
-
- - name: Install dependencies
- run: npm ci
-
- - name: Clone early access
- run: node script/early-access/clone-for-build.js
- env:
- DOCUBOT_REPO_PAT: ${{ secrets.DOCUBOT_REPO_PAT }}
- GIT_BRANCH: main
-
- - name: Cache nextjs build
- uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed
- with:
- path: .next/cache
- key: ${{ runner.os }}-nextjs-${{ hashFiles('package*.json') }}
-
- - name: Build
- run: npm run build
-
- - name: Remove development-only dependencies
- run: npm prune --production
-
- - name: Remove all npm scripts
- run: npm pkg delete scripts
-
- - name: Set npm script for Heroku build to noop
- run: npm set-script heroku-postbuild "echo 'Application was pre-built!'"
-
- - name: Create a gzipped archive
- run: |
- tar -cz --file=app.tar.gz \
- node_modules/ \
- .next/ \
- assets/ \
- content/ \
- data/ \
- includes/ \
- lib/ \
- middleware/ \
- translations/ \
- server.mjs \
- package*.json \
- .npmrc \
- feature-flags.json \
- next.config.js \
- app.json \
- Procfile
-
- - name: Install the development dependencies again
- run: npm install
-
- - name: Create a Heroku build source
- id: build-source
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- with:
- script: |
- const { owner, repo } = context.repo
-
- if (owner !== 'github') {
- throw new Error(`Repository owner must be 'github' but was: ${owner}`)
- }
- if (repo !== 'docs-internal') {
- throw new Error(`Repository name must be 'docs-internal' but was: ${repo}`)
- }
-
- const Heroku = require('heroku-client')
- const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
-
- try {
- const { source_blob: sourceBlob } = await heroku.post('/sources')
- const { put_url: uploadUrl, get_url: downloadUrl } = sourceBlob
-
- core.setOutput('upload_url', uploadUrl)
- core.setOutput('download_url', downloadUrl)
- } catch (error) {
- if (error.statusCode === 503) {
- console.error('💀 Heroku may be down! Please check its Status page: https://status.heroku.com/')
- }
- throw error
- }
-
- # See: https://devcenter.heroku.com/articles/build-and-release-using-the-api#sources-endpoint
- - name: Upload to the Heroku build source
- env:
- UPLOAD_URL: ${{ steps.build-source.outputs.upload_url }}
- run: |
- curl "$UPLOAD_URL" \
- -X PUT \
- -H 'Content-Type:' \
- --data-binary @app.tar.gz
-
- - name: Deploy
- id: deploy
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- HEROKU_PRODUCTION_APP_NAME: ${{ secrets.HEROKU_PRODUCTION_APP_NAME }}
- HYDRO_ENDPOINT: ${{ secrets.HYDRO_ENDPOINT }}
- HYDRO_SECRET: ${{ secrets.HYDRO_SECRET }}
- SOURCE_BLOB_URL: ${{ steps.build-source.outputs.download_url }}
- DELAY_FOR_PREBOOT: 'true'
- ALLOWED_POLLING_FAILURES_PER_PHASE: '15'
- RUN_ID: ${{ github.run_id }}
- run: .github/actions-scripts/prod-deploy.js
-
- - name: Mark the deployment as inactive if timed out
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- if: ${{ steps.deploy.outcome == 'cancelled' }}
- env:
- DEPLOYMENT_ID: ${{ steps.deploy.outputs.deploymentId }}
- LOG_URL: ${{ steps.deploy.outputs.logUrl }}
- with:
- script: |
- const { DEPLOYMENT_ID, LOG_URL } = process.env
- const { owner, repo } = context.repo
-
- if (!DEPLOYMENT_ID) {
- throw new Error('A deployment wasn't created before a timeout occurred!')
- }
-
- await github.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: DEPLOYMENT_ID,
- state: 'error',
- description: 'The deployment step timed out. See workflow logs.',
- log_url: LOG_URL,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
- console.log('⏲️ Deployment status: error - The deployment timed out...')
-
- # - name: Purge Fastly edge cache
- # env:
- # FASTLY_TOKEN: ${{ secrets.FASTLY_TOKEN }}
- # FASTLY_SERVICE_ID: ${{ secrets.FASTLY_SERVICE_ID }}
- # FASTLY_SURROGATE_KEY: 'every-deployment'
- # run: .github/actions-scripts/purge-fastly-edge-cache.js
-
- - name: Send Slack notification if workflow failed
- uses: someimportantcompany/github-actions-slack-message@f8d28715e7b8a4717047d23f48c39827cacad340
- if: ${{ failure() }}
- with:
- channel: ${{ secrets.DOCS_ALERTS_SLACK_CHANNEL_ID }}
- bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
- color: failure
- text: Production deployment failed at commit ${{ github.sha }}. See https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
diff --git a/.github/workflows/ready-for-doc-review.yml b/.github/workflows/ready-for-doc-review.yml
index 6959b98158..34a4c006fa 100644
--- a/.github/workflows/ready-for-doc-review.yml
+++ b/.github/workflows/ready-for-doc-review.yml
@@ -1,12 +1,12 @@
name: Ready for docs-content review
-# **What it does**: Adds pull requests in the docs-internal repository to the docs-content review board when the "ready-for-doc-review" label is added
+# **What it does**: Adds pull requests in the docs-internal repository to the docs-content review board when the "ready-for-doc-review" label is added or when a review by docs-content is requested
# **Why we have it**: So that other GitHub teams can easily request reviews from the docs-content team, and so that writers can see when a PR is ready for review
# **Who does it impact**: Writers working in the docs-internal repository
on:
pull_request_target:
- types: [labeled]
+ types: [labeled, review_requested]
permissions:
contents: read
@@ -14,7 +14,9 @@ permissions:
jobs:
request_doc_review:
name: Request a review from the docs-content team
- if: github.event.label.name == 'ready-for-doc-review' && github.repository == 'github/docs-internal'
+ if: >-
+ github.repository == 'github/docs-internal' &&
+ (github.event.label.name == 'ready-for-doc-review' || github.event.requested_team.name == 'docs-content')
runs-on: ubuntu-latest
steps:
- name: Check out repo content
diff --git a/.github/workflows/remove-stale-staging-resources.yml b/.github/workflows/remove-stale-staging-resources.yml
deleted file mode 100644
index 5375869132..0000000000
--- a/.github/workflows/remove-stale-staging-resources.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: Remove stale staging resources
-
-# **What it does**:
-# This cleans up any rogue staging applications and environments that outlasted
-# the closure of their corresponding pull requests.
-# **Why we have it**:
-# Staging applications and environments should be destroyed after their
-# corresponding pull request is closed or merged, especially to save money spent
-# on Heroku App staging deployments for closed PRs.
-# **Who does it impact**:
-# Anyone with a closed, spammy, or deleted pull request in docs or docs-internal.
-
-on:
- schedule:
- - cron: '15,45 * * * *' # every thirty minutes at :15 and :45
-
-permissions:
- actions: read
- contents: read
- deployments: write
- pull-requests: write
-
-jobs:
- remove_stale_staging_apps:
- name: Remove stale staging apps
- if: ${{ github.repository == 'github/docs-internal' }}
- runs-on: ubuntu-latest
- steps:
- - name: Check out repo's default branch
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
-
- - name: Setup Node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- - name: Install dependencies
- run: npm ci
-
- - name: Run script
- run: script/remove-stale-staging-apps.js
- env:
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- remove_stale_staging_envs:
- name: Remove stale staging environments
- runs-on: ubuntu-latest
- steps:
- - name: Check out repo's default branch
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
-
- - name: Setup Node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- - name: Install dependencies
- run: npm ci
-
- - name: Run script
- run: script/remove-stale-staging-envs.js
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- ELEVATED_TOKEN: ${{ secrets.DOCS_BOT_FR }}
- REPO: ${{ github.repository }}
- RUN_ID: ${{ github.run_id }}
diff --git a/.github/workflows/staging-build-and-deploy-pr.yml b/.github/workflows/staging-build-and-deploy-pr.yml
deleted file mode 100644
index 45db1bf149..0000000000
--- a/.github/workflows/staging-build-and-deploy-pr.yml
+++ /dev/null
@@ -1,210 +0,0 @@
-name: Staging - Build and Deploy PR (fast and private-only)
-
-# **What it does**: Builds and deploys PRs to staging but ONLY for docs-internal
-# **Why we have it**: Most PRs are made on the private repo. Let's make those extra fast if we can worry less about security.
-# **Who does it impact**: All staff.
-
-# This whole workflow is only guaranteed to be secure in the *private
-# repo* and because we repo-sync these files over the to the public one,
-# IT'S IMPORTANT THAT THIS WORKFLOW IS ONLY ENABLED IN docs-internal!
-
-on:
- # The advantage of 'pull_request' over 'pull_request_target' is that we
- # can make changes to this file and test them in a pull request, instead
- # of relying on landing it in 'main' first.
- # From a security point of view, its arguably safer this way because
- # unlike 'pull_request_target', these only have secrets if the pull
- # request creator has permission to access secrets.
- pull_request:
-
-permissions:
- actions: read
- contents: read
- deployments: write
- pull-requests: read
- statuses: write
-
-# This allows a subsequently queued workflow run to interrupt previous runs
-concurrency:
- group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
- cancel-in-progress: true
-
-jobs:
- build-and-deploy-pr:
- # Important. This whole file is only supposed to run in the PRIVATE repo.
- if: ${{ github.repository == 'github/docs-internal' }}
-
- # The assumption here is that self-hosted is faster (e.g CPU power)
- # that the regular ones. And it matters in this workflow because
- # we do heavy CPU stuff with `npm run build` and `tar`
- # runs-on: ubuntu-latest
- runs-on: self-hosted
-
- timeout-minutes: 5
-
- steps:
- - name: Check out repo
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- with:
- lfs: 'true'
- # To prevent issues with cloning early access content later
- persist-credentials: 'false'
-
- - name: Check out LFS objects
- run: git lfs checkout
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- - name: Install dependencies
- run: npm ci
-
- - name: Cache nextjs build
- uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed
- with:
- path: .next/cache
- key: ${{ runner.os }}-nextjs-${{ hashFiles('package*.json') }}
-
- - name: Build
- run: npm run build
-
- - name: Clone early access
- run: node script/early-access/clone-for-build.js
- env:
- DOCUBOT_REPO_PAT: ${{ secrets.DOCUBOT_REPO_PAT }}
- GIT_BRANCH: ${{ github.head_ref || github.ref }}
-
- - name: Create a Heroku build source
- id: build-source
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- with:
- script: |
- const { owner, repo } = context.repo
-
- if (owner !== 'github') {
- throw new Error(`Repository owner must be 'github' but was: ${owner}`)
- }
- if (repo !== 'docs-internal') {
- throw new Error(`Repository name must be 'docs-internal' but was: ${repo}`)
- }
-
- const Heroku = require('heroku-client')
- const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
-
- try {
- const { source_blob: sourceBlob } = await heroku.post('/sources')
- const { put_url: uploadUrl, get_url: downloadUrl } = sourceBlob
-
- core.setOutput('upload_url', uploadUrl)
- core.setOutput('download_url', downloadUrl)
- } catch (error) {
- if (error.statusCode === 503) {
- console.error('💀 Heroku may be down! Please check its Status page: https://status.heroku.com/')
- }
- throw error
- }
-
- - name: Remove development-only dependencies
- run: npm prune --production
-
- - name: Remove all npm scripts
- run: npm pkg delete scripts
-
- - name: Set npm script for Heroku build to noop
- run: npm set-script heroku-postbuild "echo 'Application was pre-built!'"
-
- - name: Delete heavy things we won't need deployed
- run: |
-
- # The dereferenced file is not used in runtime once the
- # decorated file has been created from it.
- rm -rf lib/rest/static/dereferenced
-
- # Translations are never tested in Staging builds
- # but let's keep the empty directory.
- rm -rf translations
- mkdir translations
-
- # Delete all the big search indexes that are NOT English (`*-en-*`)
- pushd lib/search/indexes
- ls | grep -ve '\-en\b' | xargs rm
- popd
-
- # Note! Some day it would be nice to be able to delete
- # all the heavy assets because they bloat the tarball.
- # But it's not obvious how to test it then. For now, we'll have
- # to accept that every staging build has a copy of the images.
-
- # The assumption here is that a staging build will not
- # need these legacy redirects. Only the redirects from
- # front-matter will be at play.
- # These static redirects json files are notoriously large
- # and they make the tarball unnecessarily large.
- echo '[]' > lib/redirects/static/archived-frontmatter-fallbacks.json
- echo '{}' > lib/redirects/static/developer.json
- echo '{}' > lib/redirects/static/archived-redirects-from-213-to-217.json
-
- # This will turn every `lib/**/static/*.json` into
- # an equivalent `lib/**/static/*.json.br` file.
- # Once the server starts, it'll know to fall back to reading
- # the `.br` equivalent if the `.json` file isn't present.
- node .github/actions-scripts/compress-large-files.js
-
- - name: Make the tarball for Heroku
- run: |
- # We can't delete the .next/cache directory from the workflow
- # because it's needed for caching, but we can at least exclude it
- # from the tarball. Then it can be cached but not weigh down the
- # tarball we intend to deploy.
- tar -zc --exclude=.next/cache --file=app.tar.gz \
- node_modules/ \
- .next/ \
- assets/ \
- content/ \
- data/ \
- includes/ \
- lib/ \
- middleware/ \
- translations/ \
- server.mjs \
- package*.json \
- .npmrc \
- feature-flags.json \
- next.config.js \
- app.json \
- Procfile
-
- du -sh app.tar.gz
-
- # See: https://devcenter.heroku.com/articles/build-and-release-using-the-api#sources-endpoint
- - name: Upload to the Heroku build source
- env:
- UPLOAD_URL: ${{ steps.build-source.outputs.upload_url }}
- run: |
- curl "$UPLOAD_URL" \
- -X PUT \
- -H 'Content-Type:' \
- --data-binary @app.tar.gz
-
- # 'npm install' is faster than 'npm ci' because it only needs to
- # *append* what's missing from ./node_modules/
- - name: Re-install dependencies so we get devDependencies back
- run: npm install --no-audit --no-fund --only=dev
-
- - name: Deploy
- id: deploy
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- HYDRO_ENDPOINT: ${{ secrets.HYDRO_ENDPOINT }}
- HYDRO_SECRET: ${{ secrets.HYDRO_SECRET }}
- PR_URL: ${{ github.event.pull_request.html_url }}
- SOURCE_BLOB_URL: ${{ steps.build-source.outputs.download_url }}
- ALLOWED_POLLING_FAILURES_PER_PHASE: '15'
- RUN_ID: ${{ github.run_id }}
- run: .github/actions-scripts/staging-deploy.js
diff --git a/.github/workflows/staging-build-pr.yml b/.github/workflows/staging-build-pr.yml
deleted file mode 100644
index 91c54cc037..0000000000
--- a/.github/workflows/staging-build-pr.yml
+++ /dev/null
@@ -1,135 +0,0 @@
-name: Staging - Build PR
-
-# **What it does**: Builds PRs before deploying them.
-# **Why we have it**: Because it's not safe to share our deploy secrets with forked repos: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
-# **Who does it impact**: All contributors.
-
-# IT'S CRUCIALLY IMPORTANT THAT THIS WORKFLOW IS ONLY ENABLED IN docs!
-
-on:
- pull_request:
-
-permissions:
- contents: read
-
-# This allows a subsequently queued workflow run to interrupt previous runs
-# These are different from the concurrency in that here it checks if the
-# whole workflow runs again. The "inner concurrency" is used for
-# undeployments to cleaning up resources.
-concurrency:
- group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
- cancel-in-progress: true
-
-jobs:
- build-pr:
- # Important. This whole file is only supposed to run in the PUBLIC repo.
- if: ${{ github.repository == 'github/docs' }}
-
- runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
- timeout-minutes: 5
- # This interrupts Build and Deploy workflow runs in progress for this PR branch.
- concurrency:
- group: 'PR Staging @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
- cancel-in-progress: true
- steps:
- - name: Check out repo
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
-
- # Make sure only approved files are changed if it's in github/docs
- - name: Check changed files
- if: ${{ github.event.pull_request.user.login != 'Octomerger' }}
- uses: dorny/paths-filter@eb75a1edc117d3756a18ef89958ee59f9500ba58
- id: filter
- with:
- # Base branch used to get changed files
- base: 'main'
-
- # Enables setting an output in the format in `${FILTER_NAME}_files
- # with the names of the matching files formatted as JSON array
- list-files: json
-
- # Returns list of changed files matching each filter
- filters: |
- notAllowed:
- - '*.js'
- - '*.mjs'
- - '*.cjs'
- - '*.ts'
- - '*.tsx'
- - '*.json'
- - '.npmrc'
- - '.babelrc*'
- - '.env*'
- - 'script/**'
- - 'Procfile'
-
- # When there are changes to files we can't accept
- - name: Fail when disallowed files are changed
- if: ${{ steps.filter.outputs.notAllowed == 'true' }}
- run: exit 1
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- # Required for `npm pkg ...` command support
- - name: Update to npm@^7.20.0
- run: npm install --global npm@^7.20.0
-
- - name: Install dependencies
- run: npm ci
-
- - name: Cache nextjs build
- uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed
- with:
- path: .next/cache
- key: ${{ runner.os }}-nextjs-${{ hashFiles('package*.json') }}
-
- - name: Build
- run: npm run build
-
- - name: Remove development-only dependencies
- run: npm prune --production
-
- - name: Remove all npm scripts
- run: npm pkg delete scripts
-
- - name: Set npm script for Heroku build to noop
- run: npm set-script heroku-postbuild "echo 'Application was pre-built!'"
-
- - name: Create an archive
- run: |
- tar -c --file=app.tar \
- node_modules/ \
- .next/ \
- assets/ \
- content/ \
- data/ \
- includes/ \
- lib/ \
- middleware/ \
- translations/ \
- server.mjs \
- package*.json \
- .npmrc \
- feature-flags.json \
- next.config.js \
- app.json \
- Procfile
-
- # We can't delete the .next/cache directory from the workflow
- # because it's needed for caching, but we can at least delete it
- # from within the tarball. Then it can be cached but not
- # weigh down the tarball we intend to deploy.
- tar --delete --file=app.tar .next/cache
-
- # Upload only the files needed to run this application.
- # We are not willing to trust the rest (e.g. script/) for the remainder
- # of the deployment process.
- - name: Upload build artifact
- uses: actions/upload-artifact@82c141cc518b40d92cc801eee768e7aafc9c2fa2
- with:
- name: pr_build
- path: app.tar
diff --git a/.github/workflows/staging-deploy-pr.yml b/.github/workflows/staging-deploy-pr.yml
deleted file mode 100644
index 52c382a675..0000000000
--- a/.github/workflows/staging-deploy-pr.yml
+++ /dev/null
@@ -1,466 +0,0 @@
-name: Staging - Deploy PR
-
-# **What it does**: To deploy PRs to a Heroku staging environment.
-# **Why we have it**: To deploy with high visibility in case of failures.
-# **Who does it impact**: All contributors.
-
-# IT'S CRUCIALLY IMPORTANT THAT THIS WORKFLOW IS ONLY ENABLED IN docs!
-
-on:
- workflow_run:
- workflows:
- - 'Staging - Build PR'
- types:
- - completed
-
-permissions:
- actions: read
- contents: read
- deployments: write
- pull-requests: read
- statuses: write
-
-# IMPORTANT: Intentionally OMIT a `concurrency` configuration from this workflow's
-# top-level as we do not have any guarantee of identifying values being available
-# within the `github.event` context for PRs from forked repos!
-#
-# The implication of this shortcoming is that we may have multiple workflow runs
-# of this running at the same time for different commits within the same PR.
-# However, once they reach the `concurrency` configurations deeper down within
-# this workflow's jobs, then we can expect concurrent short-circuiting to begin.
-
-env:
- CONTEXT_NAME: '${{ github.workflow }} / deploy (${{ github.event.workflow_run.event }})'
- ACTIONS_RUN_LOG: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}
- BUILD_ACTIONS_RUN_ID: ${{ github.event.workflow_run.id }}
- BUILD_ACTIONS_RUN_LOG: https://github.com/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}
-
-jobs:
- pr-metadata:
- # This is needed because the workflow we depend on
- # (see on.workflow_run.workflows) might be running from pushes on
- # main. That's because it needs to do that to popular the cache.
- if: >-
- ${{
- github.repository == 'github/docs' &&
- github.event.workflow_run.event == 'pull_request' &&
- github.event.workflow_run.conclusion == 'success'
- }}
- runs-on: ubuntu-latest
- outputs:
- number: ${{ steps.pr.outputs.number }}
- url: ${{ steps.pr.outputs.url }}
- state: ${{ steps.pr.outputs.state }}
- head_sha: ${{ steps.pr.outputs.head_sha }}
- head_branch: ${{ steps.pr.outputs.head_branch }}
- head_label: ${{ steps.pr.outputs.head_label }}
- head_ref: ${{ steps.pr.outputs.head_ref }}
- steps:
- - name: Find the originating pull request
- id: pr
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- BUILD_ACTIONS_RUN_ID: ${{ env.BUILD_ACTIONS_RUN_ID }}
- with:
- script: |
-
- // Curious about what version of node you get
- console.log('Node version:', process.version)
-
- // In order to find out the PR info for a forked repo, we must query
- // the API for more info based on the originating workflow run
- const { BUILD_ACTIONS_RUN_ID } = process.env
- const { owner, repo } = context.repo
- const { data: run } = await github.actions.getWorkflowRun({
- owner,
- repo,
- run_id: BUILD_ACTIONS_RUN_ID,
- })
-
- // Gather PR-identifying information from the workflow run
- const {
- head_branch: headBranch,
- head_sha: headSha,
- head_repository: {
- owner: { login: prRepoOwner },
- name: prRepoName
- }
- } = run
-
- const prIsInternal = owner === prRepoOwner && repo === prRepoName
- let headLabel = `${prRepoOwner}:${headBranch}`
-
- // If the PR is external, prefix its head branch name with the
- // forked repo owner's login and their fork repo name e.g.
- // "octocat/my-fork:docs". We need to include the fork repo
- // name as well to account for an API issue (this will work fine
- // if they don't have a different fork repo name).
- if (!prIsInternal) {
- headLabel = `${prRepoOwner}/${prRepoName}:${headBranch}`
- }
-
- // If the PR is external, prefix its head branch name with the
- // forked repo owner's login, e.g. "octocat:docs"
- const headRef = prIsInternal ? headBranch : headLabel
-
- // Retrieve matching PRs (up to 30)
- const { data: pulls } = await github.pulls.list({
- owner,
- repo,
- head: headLabel,
- sort: 'updated',
- direction: 'desc',
- per_page: 30
- })
-
- // Find the open PR, if any, otherwise choose the most recently updated
- const targetPull = pulls.find(pr => pr.state === 'open') || pulls[0] || {}
-
- const pullNumber = targetPull.number || 0
- const pullUrl = targetPull.html_url || 'about:blank'
- const pullState = targetPull.state || 'closed'
-
- core.setOutput('number', pullNumber.toString())
- core.setOutput('url', pullUrl)
- core.setOutput('state', pullState)
- core.setOutput('head_sha', headSha)
- core.setOutput('head_branch', headBranch)
- core.setOutput('head_label', headLabel)
- core.setOutput('head_ref', headRef)
-
- debug-originating-trigger:
- needs: pr-metadata
- runs-on: ubuntu-latest
- steps:
- - name: Dump info about the originating workflow run
- env:
- PR_NUMBER: ${{ needs.pr-metadata.outputs.number }}
- PR_URL: ${{ needs.pr-metadata.outputs.url }}
- PR_STATE: ${{ needs.pr-metadata.outputs.state }}
- HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
- HEAD_BRANCH: ${{ needs.pr-metadata.outputs.head_branch }}
- HEAD_LABEL: ${{ needs.pr-metadata.outputs.head_label }}
- HEAD_REF: ${{ needs.pr-metadata.outputs.head_ref }}
- BUILD_ACTIONS_RUN_ID: ${{ env.BUILD_ACTIONS_RUN_ID }}
- BUILD_ACTIONS_RUN_LOG: ${{ env.BUILD_ACTIONS_RUN_LOG }}
- run: |
- echo "Originating workflow info:"
- echo " - PR_NUMBER = $PR_NUMBER"
- echo " - PR_URL = $PR_URL"
- echo " - PR_STATE = $PR_STATE"
- echo " - HEAD_SHA = $HEAD_SHA"
- echo " - HEAD_BRANCH = $HEAD_BRANCH"
- echo " - HEAD_LABEL = $HEAD_LABEL"
- echo " - HEAD_REF = $HEAD_REF"
- echo " - BUILD_ACTIONS_RUN_ID = $BUILD_ACTIONS_RUN_ID"
- echo " - BUILD_ACTIONS_RUN_LOG = $BUILD_ACTIONS_RUN_LOG"
-
- notify-of-failed-builds:
- needs: pr-metadata
- if: >-
- ${{
- needs.pr-metadata.outputs.number != '0' &&
- github.event.workflow_run.conclusion == 'failure'
- }}
- runs-on: ubuntu-latest
- timeout-minutes: 1
- # Specifically omitting a concurrency group here in case the build was not
- # successful BECAUSE a subsequent build already canceled it
- steps:
- - name: Verify build workflow run was not cancelled
- id: check-workflow-run
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- BUILD_ACTIONS_RUN_ID: ${{ env.BUILD_ACTIONS_RUN_ID }}
- with:
- script: |
- const { owner, repo } = context.repo
- const { data: { jobs: buildJobs } } = await github.actions.listJobsForWorkflowRun({
- owner,
- repo,
- run_id: process.env.BUILD_ACTIONS_RUN_ID,
- filter: 'latest'
- })
- const wasCancelled = (
- buildJobs.length > 0 &&
- buildJobs.every(({ status, conclusion }) => {
- return status === 'completed' && conclusion === 'cancelled'
- })
- )
- core.setOutput('cancelled', wasCancelled.toString())
-
- - if: ${{ steps.check-workflow-run.outputs.cancelled == 'false' }}
- name: Send Slack notification if build workflow failed
- uses: someimportantcompany/github-actions-slack-message@f8d28715e7b8a4717047d23f48c39827cacad340
- with:
- channel: ${{ secrets.DOCS_STAGING_DEPLOYMENT_FAILURES_SLACK_CHANNEL_ID }}
- bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
- color: failure
- text: Staging build failed for PR ${{ needs.pr-metadata.outputs.url }} at commit ${{ needs.pr-metadata.outputs.head_sha }}. See ${{ env.BUILD_ACTIONS_RUN_LOG }}. This run was ${{ env.ACTIONS_RUN_LOG }}.
-
- prepare-for-deploy:
- needs: pr-metadata
- if: ${{ needs.pr-metadata.outputs.state == 'open' }}
- runs-on: ubuntu-latest
- timeout-minutes: 5
- # This interrupts Build and Deploy workflow runs in progress for this PR branch.
- concurrency:
- group: 'PR Staging @ ${{ needs.pr-metadata.outputs.head_label }}'
- cancel-in-progress: true
- outputs:
- source_blob_url: ${{ steps.build-source.outputs.download_url }}
- steps:
- - name: Create initial status
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- CONTEXT_NAME: ${{ env.CONTEXT_NAME }}
- ACTIONS_RUN_LOG: ${{ env.ACTIONS_RUN_LOG }}
- HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
- with:
- script: |
- const { CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
- const { owner, repo } = context.repo
- await github.repos.createCommitStatus({
- owner,
- repo,
- sha: HEAD_SHA,
- context: CONTEXT_NAME,
- state: 'pending',
- description: 'The app is being deployed. See logs.',
- target_url: ACTIONS_RUN_LOG
- })
-
- - name: Check out repo's default branch
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- with:
- # To prevent issues with cloning early access content later
- persist-credentials: 'false'
- lfs: 'true'
-
- - name: Check out LFS objects
- run: git lfs checkout
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- # Install any additional dependencies *before* downloading the build artifact
- - name: Install Heroku client development-only dependency
- run: npm install --no-save heroku-client
-
- # Download the previously built "app.tar"
- - name: Download build artifact
- uses: dawidd6/action-download-artifact@af92a8455a59214b7b932932f2662fdefbd78126
- with:
- workflow: ${{ github.event.workflow_run.workflow_id }}
- run_id: ${{ env.BUILD_ACTIONS_RUN_ID }}
- name: pr_build
- path: ${{ runner.temp }}
-
- # gzip the app.tar to meet Heroku's expected format
- - name: Create a gzipped archive (docs)
- run: gzip -9 < "$RUNNER_TEMP/app.tar" > app.tar.gz
-
- - name: Create a Heroku build source
- id: build-source
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- with:
- script: |
- const { owner, repo } = context.repo
-
- if (owner !== 'github') {
- throw new Error(`Repository owner must be 'github' but was: ${owner}`)
- }
- if (repo !== 'docs') {
- throw new Error(`Repository name must be 'docs' but was: ${repo}`)
- }
-
- const Heroku = require('heroku-client')
- const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
-
- try {
- const { source_blob: sourceBlob } = await heroku.post('/sources')
- const { put_url: uploadUrl, get_url: downloadUrl } = sourceBlob
-
- core.setOutput('upload_url', uploadUrl)
- core.setOutput('download_url', downloadUrl)
- } catch (error) {
- if (error.statusCode === 503) {
- console.error('💀 Heroku may be down! Please check its Status page: https://status.heroku.com/')
- }
- throw error
- }
-
- # See: https://devcenter.heroku.com/articles/build-and-release-using-the-api#sources-endpoint
- - name: Upload to the Heroku build source
- env:
- UPLOAD_URL: ${{ steps.build-source.outputs.upload_url }}
- run: |
- curl "$UPLOAD_URL" \
- -X PUT \
- -H 'Content-Type:' \
- --data-binary @app.tar.gz
-
- - name: Create failure status
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- if: ${{ failure() }}
- env:
- CONTEXT_NAME: ${{ env.CONTEXT_NAME }}
- ACTIONS_RUN_LOG: ${{ env.ACTIONS_RUN_LOG }}
- HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
- with:
- script: |
- const { CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
- const { owner, repo } = context.repo
- await github.repos.createCommitStatus({
- owner,
- repo,
- sha: HEAD_SHA,
- context: CONTEXT_NAME,
- state: 'error',
- description: 'Failed to deploy. See logs.',
- target_url: ACTIONS_RUN_LOG
- })
-
- - name: Send Slack notification if deployment preparation job failed
- uses: someimportantcompany/github-actions-slack-message@f8d28715e7b8a4717047d23f48c39827cacad340
- if: ${{ failure() }}
- with:
- channel: ${{ secrets.DOCS_STAGING_DEPLOYMENT_FAILURES_SLACK_CHANNEL_ID }}
- bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
- color: failure
- text: Staging preparation failed for PR ${{ needs.pr-metadata.outputs.url }} at commit ${{ needs.pr-metadata.outputs.head_sha }}. See ${{ env.ACTIONS_RUN_LOG }}.
-
- check-pr-before-deploy:
- needs: [pr-metadata, prepare-for-deploy]
- runs-on: ubuntu-latest
- timeout-minutes: 1
- # This interrupts Build and Deploy workflow runs in progress for this PR branch.
- concurrency:
- group: 'PR Staging @ ${{ needs.pr-metadata.outputs.head_label }}'
- cancel-in-progress: true
- outputs:
- pull_request_state: ${{ steps.check-pr.outputs.state }}
- steps:
- - name: Check pull request state
- id: check-pr
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- env:
- PR_NUMBER: ${{ needs.pr-metadata.outputs.number }}
- with:
- script: |
- const { owner, repo } = context.repo
- const { data: pullRequest } = await github.pulls.get({
- owner,
- repo,
- pull_number: process.env.PR_NUMBER
- })
- core.setOutput('state', pullRequest.state)
-
- deploy:
- needs: [pr-metadata, prepare-for-deploy, check-pr-before-deploy]
- if: ${{ needs.check-pr-before-deploy.outputs.pull_request_state == 'open' }}
- runs-on: ubuntu-latest
- timeout-minutes: 10
- # This interrupts Build and Deploy workflow runs in progress for this PR branch.
- concurrency:
- group: 'PR Staging @ ${{ needs.pr-metadata.outputs.head_label }}'
- cancel-in-progress: true
- steps:
- - name: Check out repo's default branch
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- - name: Install dependencies
- run: npm ci
-
- - name: Deploy
- id: deploy
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }}
- HYDRO_ENDPOINT: ${{ secrets.HYDRO_ENDPOINT }}
- HYDRO_SECRET: ${{ secrets.HYDRO_SECRET }}
- PR_URL: ${{ needs.pr-metadata.outputs.url }}
- SOURCE_BLOB_URL: ${{ needs.prepare-for-deploy.outputs.source_blob_url }}
- ALLOWED_POLLING_FAILURES_PER_PHASE: '15'
- RUN_ID: ${{ github.run_id }}
- run: .github/actions-scripts/staging-deploy.js
-
- - name: Create successful commit status
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- CONTEXT_NAME: ${{ env.CONTEXT_NAME }}
- ACTIONS_RUN_LOG: ${{ env.ACTIONS_RUN_LOG }}
- HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
- run: .github/actions-scripts/staging-commit-status-success.js
-
- - name: Mark the deployment as inactive if timed out
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- if: ${{ steps.deploy.outcome == 'cancelled' }}
- env:
- DEPLOYMENT_ID: ${{ steps.deploy.outputs.deploymentId }}
- LOG_URL: ${{ steps.deploy.outputs.logUrl }}
- with:
- script: |
- const { DEPLOYMENT_ID, LOG_URL } = process.env
- const { owner, repo } = context.repo
-
- if (!DEPLOYMENT_ID) {
- throw new Error('A deployment wasn't created before a timeout occurred!')
- }
-
- await github.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: DEPLOYMENT_ID,
- state: 'error',
- description: 'The deployment step timed out. See workflow logs.',
- log_url: LOG_URL,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
- console.log('⏲️ Deployment status: error - The deployment timed out...')
-
- - name: Create failure status
- uses: actions/github-script@2b34a689ec86a68d8ab9478298f91d5401337b7d
- if: ${{ failure() }}
- env:
- CONTEXT_NAME: ${{ env.CONTEXT_NAME }}
- ACTIONS_RUN_LOG: ${{ env.ACTIONS_RUN_LOG }}
- HEAD_SHA: ${{ needs.pr-metadata.outputs.head_sha }}
- with:
- script: |
- const { CONTEXT_NAME, ACTIONS_RUN_LOG, HEAD_SHA } = process.env
- const { owner, repo } = context.repo
- await github.repos.createCommitStatus({
- owner,
- repo,
- sha: HEAD_SHA,
- context: CONTEXT_NAME,
- state: 'error',
- description: 'Failed to deploy. See logs.',
- target_url: ACTIONS_RUN_LOG
- })
-
- - name: Send Slack notification if deployment job failed
- uses: someimportantcompany/github-actions-slack-message@f8d28715e7b8a4717047d23f48c39827cacad340
- if: ${{ failure() }}
- with:
- channel: ${{ secrets.DOCS_STAGING_DEPLOYMENT_FAILURES_SLACK_CHANNEL_ID }}
- bot-token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
- color: failure
- text: Staging deployment failed for PR ${{ needs.pr-metadata.outputs.url }} at commit ${{ needs.pr-metadata.outputs.head_sha }}. See ${{ env.ACTIONS_RUN_LOG }}.
diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml
deleted file mode 100644
index 52d77dd42c..0000000000
--- a/.github/workflows/test-windows.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-# NOTE: Changes to this file should also be applied to './test.yml'
-
-name: Node.js Tests - Windows
-
-# **What it does**: This runs our tests on Windows.
-# **Why we have it**: We want to support Windows contributors to docs.
-# **Who does it impact**: Anyone working on docs on a Windows device.
-
-on:
- workflow_dispatch:
- pull_request:
- schedule:
- - cron: '50 19 * * *' # once a day at 19:50 UTC / 11:50 PST
-
-permissions:
- contents: read
-
-# This allows a subsequently queued workflow run to interrupt previous runs
-concurrency:
- group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
- cancel-in-progress: true
-
-jobs:
- test:
- runs-on: windows-latest
- if: (github.event_name != 'pull_request') || (github.event_name == 'pull_request' && (contains(github.event.pull_request.labels.*.name, 'Windows') || contains(github.event.pull_request.labels.*.name, 'windows')))
- timeout-minutes: 60
- strategy:
- fail-fast: false
- matrix:
- test-group:
- [
- content,
- graphql,
- meta,
- rendering,
- routing,
- unit,
- linting,
- translations,
- ]
- steps:
- - name: Check out repo
- uses: actions/checkout@ec3a7ce113134d7a93b817d10a8272cb61118579
- with:
- # Enables cloning the Early Access repo later with the relevant PAT
- persist-credentials: 'false'
-
- - name: Setup node
- uses: actions/setup-node@1f8c6b94b26d0feae1e387ca63ccbdc44d27b561
- with:
- node-version: 16.13.x
- cache: npm
-
- - name: Install dependencies
- run: npm ci
-
- - name: Cache nextjs build
- uses: actions/cache@937d24475381cd9c75ae6db12cb4e79714b926ed
- with:
- path: .next/cache
- key: ${{ runner.os }}-nextjs-${{ hashFiles('package*.json') }}
-
- - if: ${{ github.repository == 'github/docs-internal' }}
- name: Clone early access
- run: npm run heroku-postbuild
- env:
- DOCUBOT_REPO_PAT: ${{ secrets.DOCUBOT_REPO_PAT }}
- GIT_BRANCH: ${{ github.head_ref || github.ref }}
-
- - if: ${{ github.repository != 'github/docs-internal' }}
- name: Run build script
- run: npm run build
-
- - name: Run tests
- run: npm test -- tests/${{ matrix.test-group }}/
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b080e73df7..1db6685fae 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,5 +1,3 @@
-# NOTE: Changes to this file should also be applied to './test-windows.yml'
-
name: Node.js Tests
# **What it does**: Runs our tests.
diff --git a/.github/workflows/triage-unallowed-contributions.yml b/.github/workflows/triage-unallowed-contributions.yml
index 0cb30cdd6f..caae155b4a 100644
--- a/.github/workflows/triage-unallowed-contributions.yml
+++ b/.github/workflows/triage-unallowed-contributions.yml
@@ -10,7 +10,6 @@ on:
- '.github/actions-scripts/**'
- '.github/workflows/**'
- '.github/CODEOWNERS'
- - 'app.json'
- 'assets/fonts/**'
- 'data/graphql/**'
- 'Dockerfile*'
@@ -20,7 +19,6 @@ on:
- 'lib/webhooks/**'
- 'lib/search/indexes/**'
- 'package*.json'
- - 'Procfile'
- 'script/**'
- 'translations/**'
@@ -58,7 +56,6 @@ jobs:
- '.github/actions-scripts/**'
- '.github/workflows/**'
- '.github/CODEOWNERS'
- - 'app.json'
- 'assets/fonts/**'
- 'data/graphql/**'
- 'Dockerfile*'
@@ -68,7 +65,6 @@ jobs:
- 'lib/webhooks/**'
- 'lib/search/indexes/**'
- 'package*.json'
- - 'Procfile'
- 'scripts/**'
- 'translations/**'
@@ -83,7 +79,6 @@ jobs:
'.github/actions-scripts/**',
'.github/workflows/**',
'.github/CODEOWNERS',
- 'app.json',
'assets/fonts/**',
'data/graphql/**',
'Dockerfile*',
@@ -93,7 +88,6 @@ jobs:
'lib/webhooks/**',
'lib/search/indexes/**',
'package*.json',
- 'Procfile',
'scripts/**',
'translations/**',
]
@@ -111,7 +105,7 @@ jobs:
body: reviewMessage,
})
- workflowFailMessage = `${workflowFailMessage} Please see ${createdComment.data.html_url} for details.`
+ workflowFailMessage = `${workflowFailMessage} Please see ${createdComment.data.html_url} for details.`
} catch(err) {
console.log("Error creating comment.", err)
}
diff --git a/.github/workflows/triage-unallowed-internal-changes.yml b/.github/workflows/triage-unallowed-internal-changes.yml
index f839c016e9..4a505b2afc 100644
--- a/.github/workflows/triage-unallowed-internal-changes.yml
+++ b/.github/workflows/triage-unallowed-internal-changes.yml
@@ -1,7 +1,7 @@
name: Check for unallowed internal changes
-# **What it does**: If someone changes app.json or search indexes, we fail the check.
-# **Why we have it**: app.json should rarely be edited, so we'll require an admin merge if the file really needs to be changed. The search indexes are synced every 4 hours, so changes should not need to be made.
+# **What it does**: If someone changes search indexes, we fail the check.
+# **Why we have it**: The search indexes are synced every 4 hours, so changes should not need to be made.
# **Who does it impact**: Docs engineering and content writers.
on:
@@ -44,19 +44,8 @@ jobs:
# Returns list of changed files matching each filter
filters: |
- notAllowed:
- - 'app.json'
notAllowedSearchSyncLabel:
- 'lib/search/indexes/**'
- notAllowed:
- needs: check-internal-changes
- if: ${{ needs.check-internal-changes.outputs.notAllowed == 'true' }}
- runs-on: ubuntu-latest
- steps:
- - name: Fail if unallowed changes were made
- run: |
- echo "Please admin merge if you really need to update app.json!"
- exit 1
notAllowedSearchSyncLabel:
needs: check-internal-changes
if: ${{ needs.check-internal-changes.outputs.notAllowedSearchSyncLabel == 'true' }}
diff --git a/Dockerfile b/Dockerfile
index 985bde3af7..cad07f06c9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,4 @@
-# This Dockerfile can be used for docker-based deployments to platforms
-# like Now or Moda, but it is currently _not_ used by our Heroku deployments
-# It uses two multi-stage builds: `install` and the main build to keep the image size down.
+# This Dockerfile is used for docker-based deployments to Azure for both preview environments and production
# --------------------------------------------------------------------------------
# BASE IMAGE
diff --git a/Procfile b/Procfile
deleted file mode 100644
index 4bec004287..0000000000
--- a/Procfile
+++ /dev/null
@@ -1 +0,0 @@
-web: NODE_ENV=production node server.mjs
diff --git a/app.json b/app.json
deleted file mode 100644
index 14f8ba9f54..0000000000
--- a/app.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "docs.github.com",
- "env": {
- "NODE_ENV": "production",
- "ENABLED_LANGUAGES": "en",
- "WEB_CONCURRENCY": "1"
- },
- "buildpacks": [
- { "url": "heroku/nodejs" }
- ],
- "formation": {
- "web": {
- "quantity": 1,
- "size": "standard-2x"
- }
- }
-}
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 2f9c75a350..7b7e760784 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:47f2a1bb71c44eb3c14690449ffc37eafb1684500109ff16eb534a993a1ab4e2
-size 660732
+oid sha256:7356142eb5f683543608aa6945677669a8f5d590371f97055a4c1168b66721bc
+size 662137
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 e68bd8a880..7014460d41 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:4a9da08bd9e586ce171f93454eac32c2885c741e7ac774ed397e0ea3fb0c9308
-size 1377623
+oid sha256:b36331649995ed8e01abb4ad255a2bd657382b5eeac8f4511ac2aa28013af577
+size 1377774
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 c2c45e9135..6b9134f704 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:c8b98f298f8c276301a1eb4f0d599b794d8dc950ec13c229ed53d431b387374c
-size 980831
+oid sha256:b795db885b235044454d19063c5cba86b89f9ce829a5bbe59830dbb83ce1a6ee
+size 981612
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 adb1ffa749..985146d4d3 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:b1ca84b937c9dd0aa0eb580638c887f7af43135dde7700fe9a797a79eeaacbb5
-size 3989912
+oid sha256:a053ec609ff920be2a0b2769c0b334a4b5128d5ec792edab6a089fc3b5f57d26
+size 3990367
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 a776c78ca4..8ed2cd24af 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:32978fe3141fee7148015cc9051fe4f9c550faaf1b4bc42c8bc181c2bf7ebe2d
-size 614498
+oid sha256:12cdfa4b8bc08fbd2cef74464481de9ea4a0c74cc959435dc6c3e861d76d305d
+size 615099
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 58439eefad..31225cb22a 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:a1b13e1411ad4db2b7592dd952ab4702c7be942635045b9ce09fab80108e06b7
-size 2572359
+oid sha256:67346d89fc6d3c46de1bee915bd92d5f607a5a8cc91a2c1ecf0b15897ef296d9
+size 2574490
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 4800d5cae8..34f81352c2 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:2e41390628d2a6af9fa323fcc78b96b1fa867f2337a8a1d68a9a414916cfa0a8
-size 680711
+oid sha256:d1a2f6836e7728d29ff8464579ce31025448ab2c1ef5593b85db87b57c94226a
+size 680421
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 3b950b0912..c1ef700538 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:4056ffa70370838f88b9fe2694e257c4692bcd29a0a6693a0fe969b5d03d68d4
-size 3602301
+oid sha256:f26bf5dd1f95ae8723041295c10d1b4d04b5d76bb3a9a8b3f6ee00ef876cc26d
+size 3600871
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 5b725e221f..ca73404382 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:1318284320faf8b349cc340d983cab28fc11ef18e0698d81c5fa2fa93566a4c6
-size 605075
+oid sha256:4348b4e119bce443c6568bb74edc7b8319e64a06c6f678a45e375a64bbdf71ab
+size 606348
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 c75e11788e..80ffa1d5e2 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:5f95b862e592737ec7372226f74f6e88576a6819715de17641238337fcc6a990
-size 2468070
+oid sha256:3da10d0fa14bf33a18c03678d2face01b4dc448e458dc9c9890fe66ea3cc342b
+size 2471041
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 54acb07ef7..485359eaf8 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:eddf78f62bffcadb7942c66be544a78c076e5cabc04c4e208f84e9f22ce8224b
-size 675183
+oid sha256:ccc6983ef150a64d1652bac036ff580de022de3e292b3783b09056d8c73b49ec
+size 675779
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 d7b35dfbf1..18cb2870e9 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:4d84604ee31476e632a44a9424a1b1f5beb7db2cdae9d4550ae11b84e5251d38
-size 1413778
+oid sha256:1a637aae29d1cab8b290b561bd883775dd395d30125927f60613658a803b8265
+size 1414600
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 7da0340f6f..d195c096cc 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:488e795fdf2c77ec061c6ec97623e297e3c657a02321538a9ec59d1f3ca98f69
-size 1006261
+oid sha256:96ae5da8a4c8cfda98315233e50558168599f472ab80b370735ec3cac16a2966
+size 1005190
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 fcc1aa688a..15a43696e5 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:923e43b3a50c22d686834c514dd02c381ded234cdc53f5deefec92806fb2e285
-size 4079033
+oid sha256:dacbee2d29f41affa66845c48f197b4e846909386b93bb01573b5e5d9fbceaf5
+size 4080098
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 cb2f0d2f98..370deb9129 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:0011455a5d11bc33ba2af5c5703da6698ae6b9d746a89ae88a68c4cca1664185
-size 627075
+oid sha256:d3a995ea1c11379384c0036dda12cd766519a9103455c59bb44fa22a55de54d4
+size 627171
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 cd2aee087b..3c8f692a74 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:f6b547cf671384d5e632f5c75a289a462b4b4db8d8c417ce2469bf88a3bcd503
-size 2632887
+oid sha256:defcc4883b7253bf806e281d857c8cfde0c381d413592c3bd29cf454abc6868a
+size 2633152
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 2e5a952e8c..0938767eb4 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:30794b66196dca5d7cd844e7a1ec9c7ff64fec8d566db0860fdda0c4db2ac500
-size 694092
+oid sha256:8e13999abeac41661730a2b4dab9a44c12dd6ad938340c46e3639e33f8521ca0
+size 694630
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 41f57e86a4..ee335bb616 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:bafc02f6e8e424b0cf7be57da2083b8e91f809698e3d44e835d5c80d662fa88c
-size 3680366
+oid sha256:0e8dc0b27b360b2e8199810845238143ace60fe3ef42ada56cfc4fa2d817ce78
+size 3682104
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 c6e3272dc8..b471c3dc37 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:92d1fa4bd98655c1957297d7206be6953527255bae9740c851fea9412144958e
-size 617448
+oid sha256:8d8a2779291b95ca1d4940cc421ef65748fe815216231c832d201e8f3fd0454e
+size 618252
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 2e58628d72..164fbaa9f2 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:d767f63307ac25a99e08d07ef484fe69c7e3805ebe9959d67f636847cb6876fc
-size 2519795
+oid sha256:fed218f56f9daf0a504c87343c3396355e5c290a3f8a8a4e0ead1fd431994a2a
+size 2522625
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 b16bfe13be..7d4082c4ac 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:34829eb8612d1f810af323f5581eb62e33cd0763ca0787d76847bd923674c818
-size 691980
+oid sha256:482755e1168d9e73d8df073ec79560ffc5f69fa882e07edff6134b6ca315e7f4
+size 691594
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 278efdccba..f48fa98c9d 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:1e9af186991894f3b9dfaadb97e5ae577944ce8bf918c4a342e1f5b5e57154a7
-size 1446142
+oid sha256:c4b89668c97dd7ef21ab342468892dfa52fb09d9ee51d2b145891a763ff501ed
+size 1447911
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 d7cdf912ce..05fcfd098a 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:bf7e6e4e93c01d6345b1a08da2750b2253fda1ba9c0510aa6238edd2ed708d38
-size 1039550
+oid sha256:8b89722fb30f6f53033127057725c6639fb332daca518a3e4163451f65944739
+size 1038865
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 ad9fa71d20..b9980b7be6 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:3223e5113f0e3b18e10aa0a9b350609495aa608291e285a3457c1d0f37db0e8d
-size 4214510
+oid sha256:8711bebcd7f090825807a47e0218e999c68c038808d9a1c9941622afbc90841b
+size 4211921
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 dbd86d63c3..b49a4be467 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:d2701762992d04ae5a4256235dc5a8322028ca01071f9b947253ee5e66dc6676
-size 641530
+oid sha256:9dbefa51ee57ccb221d93e8f5a6cbc6fdbd53ee5d711a81740eaa7e49d55d348
+size 641099
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 b38aeec215..c7ca36d3e0 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:e24e0061ac20fb620e949c00c7fdbbc063236400cc8e7074ff1a5160873eea5e
-size 2696420
+oid sha256:c949ea4d0a2482442ef195ba163a0c5ad7e59d176b4a3506f3bfdb4121a0e1ab
+size 2696601
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 c0f8bc855c..5cc46b15e2 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:78b5354fd197efc35df0c812472479e001e29d8e307fccb5a54c7f734c3d7632
-size 708963
+oid sha256:4aac6fb7f729a01138ccc200b0493f56627f99b5f674c7a2af56480de5e78189
+size 708562
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 4e4912cfe0..99e906906e 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:ca0907e1983c6cad844d4f51413a8e836900f3c5535e082cfce9b251e782b974
-size 3765008
+oid sha256:f774d8575eb04036558c179ac0ca2a158db142d3463fa0f34aa36ca01fa4fec4
+size 3765281
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 681c997769..6687a27797 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:beab35c298cf0ceaaae95fcf8a0366c0610f58368f79851ff835c7d1dd9279d6
-size 632967
+oid sha256:0774cb1fecdfea4aeb4f286f8ea24058d91bece75846786c7a4b801afe769ca7
+size 631909
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 9c042fce4c..afdab61df9 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:1fe6ecafeb217e7ce74fe7cf2a38b15e263f04a0ba823cbae20f4caeb116edea
-size 2580079
+oid sha256:a1b4086a220ca1f3e9d98970451d06c48ba9ab5c866539751ea01dc2e6ea3857
+size 2581243
diff --git a/lib/search/indexes/github-docs-3.3-cn-records.json.br b/lib/search/indexes/github-docs-3.3-cn-records.json.br
index 5062a07caf..e28ea81b6f 100644
--- a/lib/search/indexes/github-docs-3.3-cn-records.json.br
+++ b/lib/search/indexes/github-docs-3.3-cn-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3bbf2f35668d8050bf520aca714d861fbc22fd4a102895280b395985466deaa4
-size 712820
+oid sha256:f08a8b7c6e655ee64fb99accadf7f5a176bad0beb88931456fb4d44eef420b94
+size 713733
diff --git a/lib/search/indexes/github-docs-3.3-cn.json.br b/lib/search/indexes/github-docs-3.3-cn.json.br
index 82d132e442..b35786b55c 100644
--- a/lib/search/indexes/github-docs-3.3-cn.json.br
+++ b/lib/search/indexes/github-docs-3.3-cn.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:0cef26bbf55015e1be4e51a5ac11530b9611633cbf6985e3e2562f2ba605f0b0
-size 1505929
+oid sha256:2471af115b4077bb54c4f01aaf517ba8d00b7a1c23ac66b08cb0ba23e1c7d67b
+size 1507298
diff --git a/lib/search/indexes/github-docs-3.3-en-records.json.br b/lib/search/indexes/github-docs-3.3-en-records.json.br
index dc06f04ae0..3ee85c2bc6 100644
--- a/lib/search/indexes/github-docs-3.3-en-records.json.br
+++ b/lib/search/indexes/github-docs-3.3-en-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1e124cd6fcaa95e2df0edd42426c82d395b9f74a69e49ab4d64db9d70b9d9235
-size 1079134
+oid sha256:4d52fe248c8b398e4367c25eabfc03a457594388a4351558fb86eb5f3e61a90b
+size 1077256
diff --git a/lib/search/indexes/github-docs-3.3-en.json.br b/lib/search/indexes/github-docs-3.3-en.json.br
index a8873c67da..d87923dbe8 100644
--- a/lib/search/indexes/github-docs-3.3-en.json.br
+++ b/lib/search/indexes/github-docs-3.3-en.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c98b85d478d58207e212583715b6e6c1b4048c27316f5c6af1a3eca6dad52198
-size 4315518
+oid sha256:10b00bee0d8617c73b9d30d89e3ea4fed8331080ab0185fb5dc23804205581ce
+size 4312929
diff --git a/lib/search/indexes/github-docs-3.3-es-records.json.br b/lib/search/indexes/github-docs-3.3-es-records.json.br
index fc6babe2a7..460dc1617e 100644
--- a/lib/search/indexes/github-docs-3.3-es-records.json.br
+++ b/lib/search/indexes/github-docs-3.3-es-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bd30526d5517c1c32711708f15073af206a954fd870b21fb1bb5ae672331beba
-size 661016
+oid sha256:3cb1af9567e9cda9aff6c9a91520e1e673b3e8c7091f57dc2c5603e103fde55a
+size 661535
diff --git a/lib/search/indexes/github-docs-3.3-es.json.br b/lib/search/indexes/github-docs-3.3-es.json.br
index 576f25f1e9..cf787a3ff4 100644
--- a/lib/search/indexes/github-docs-3.3-es.json.br
+++ b/lib/search/indexes/github-docs-3.3-es.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:de49151c9f250aa5aa6ae7aa10eb82a86c49a5c3f60e7450658cee4bec699b25
-size 2797541
+oid sha256:d9112a43e1f06143ed7a7a7a443533231eab5670c4225fcf58b1cb8bb80bda61
+size 2798892
diff --git a/lib/search/indexes/github-docs-3.3-ja-records.json.br b/lib/search/indexes/github-docs-3.3-ja-records.json.br
index b4c54efb02..939f11d928 100644
--- a/lib/search/indexes/github-docs-3.3-ja-records.json.br
+++ b/lib/search/indexes/github-docs-3.3-ja-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:13330f28c9e496df248bd006e3b0bb3d825bf1578b62c604e70e2e3ee00da218
-size 732092
+oid sha256:ad37553f8d2069a29a2e2b8e7f75ab7817f0db0e36108f76027525b4474d02d7
+size 731797
diff --git a/lib/search/indexes/github-docs-3.3-ja.json.br b/lib/search/indexes/github-docs-3.3-ja.json.br
index ca6a870124..c25c82ea3d 100644
--- a/lib/search/indexes/github-docs-3.3-ja.json.br
+++ b/lib/search/indexes/github-docs-3.3-ja.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f9f5e19dd7f1c7780e4f9aab9647cb98de82c4d7d958556b665f0ff73084cbf4
-size 3891349
+oid sha256:e65dceda472aa770c190d24b63896d9a0d6dadfa7cf761c3843388ba99de6930
+size 3889921
diff --git a/lib/search/indexes/github-docs-3.3-pt-records.json.br b/lib/search/indexes/github-docs-3.3-pt-records.json.br
index ce6b769928..76b1b32e30 100644
--- a/lib/search/indexes/github-docs-3.3-pt-records.json.br
+++ b/lib/search/indexes/github-docs-3.3-pt-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f56744f881b0257b612aeec6fe657870327d53ce5d69e9582a9c863f3bdb9b8a
-size 650798
+oid sha256:e289e8ac79e2add7f6c65ba0432ae8193b71d3838bedf718617d5b21311dbf15
+size 651325
diff --git a/lib/search/indexes/github-docs-3.3-pt.json.br b/lib/search/indexes/github-docs-3.3-pt.json.br
index 38b406f19e..1784475619 100644
--- a/lib/search/indexes/github-docs-3.3-pt.json.br
+++ b/lib/search/indexes/github-docs-3.3-pt.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:11cc0508cc1ad069ffe751d3e0ae676ae949aeaa0e57fd2b5ba002a6a2ba5ce5
-size 2661406
+oid sha256:c5d6824b506fb9682657a28b48dde0939dec0f23edee1996c7bb1f0282bbfcdb
+size 2664654
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 7c7f76190f..d26cb40aa9 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:751deeb265410a437d6aaea7b61d1ef8f8ea761e08231c13ad6608add4d610c2
-size 914158
+oid sha256:de353673fab57fc2465cc4c4e745086dd197403d78eee3f67caaac1554515d8b
+size 914893
diff --git a/lib/search/indexes/github-docs-dotcom-cn.json.br b/lib/search/indexes/github-docs-dotcom-cn.json.br
index bf887e0ba5..40ab42ccdb 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:2774a524a7d307eb599fec438272dcbba4620ed18fc419103efa4df8388146e5
-size 1681024
+oid sha256:dfa36a6a4d35f775e88c41f4421164fc86ccd633642a0ff493fcc7a7ebaa6570
+size 1685433
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 be66c28cca..b30c191ace 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:76a3fabbb2c816e60d0f1856ae8a4f7b63aa657790209871367af7ebd33995b1
-size 1366262
+oid sha256:4a133dfef252d9601f7cce4b9d5d53674c107f9c159e8042033dbe6808fdf004
+size 1363989
diff --git a/lib/search/indexes/github-docs-dotcom-en.json.br b/lib/search/indexes/github-docs-dotcom-en.json.br
index 283ea2d37a..dea1582492 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:831f2c630befa95f7b0dc1195244bede9c1242a8d240ae033ad4c475dabc88b6
-size 5205576
+oid sha256:db5a9e90c56db3a7885de4afbed18522575a6b6f7918ae50a542f36389da0748
+size 5203168
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 90b88fd5b1..e83abec586 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:8c256c303a2065ef015f03b4726cef00d7516f948f38896b5acdfea23664867a
-size 830646
+oid sha256:a04e41be3bf8f2a98d09da880a845045db112e00363e7d467fcaeb9b740c2c7a
+size 831469
diff --git a/lib/search/indexes/github-docs-dotcom-es.json.br b/lib/search/indexes/github-docs-dotcom-es.json.br
index 86599dbde1..5f80016ac4 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:820e67288c8ede26cafa5481db87db665d8c2c0d505985a75d62d4455ad671fb
-size 3348903
+oid sha256:8193d4bf1f0bdb5d98fa2f7ef4d81f7c555c25208c715fbdd9e31ff42763c0fe
+size 3353235
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 a364c04ce6..d00c5b02f8 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:5d789fb3a6eeda67b45e715cfa15764e605fc0a2c1fd0e211b7c2d82446fa4c9
-size 933494
+oid sha256:2cd262884ec326f03d314107fbcf564a25e6e596a757ac213f0a5f06c1db78aa
+size 934090
diff --git a/lib/search/indexes/github-docs-dotcom-ja.json.br b/lib/search/indexes/github-docs-dotcom-ja.json.br
index 1405858fa6..43f0717cbf 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:e20f510633d1a7c158b6d7bf53c80538713d92f66aa79310c17e1b412a5a9426
-size 4751551
+oid sha256:3ac0ecf879ca198f7b2f127b3c4311944e7d34901ff69aec0c7c914991f45308
+size 4751090
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 b214b91fac..0db4c320da 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:eb79a4c7712539d04ffcf6723f5a72c348aad81b363a8993a6b95552d788d87c
-size 820063
+oid sha256:c9dba70d670b6958d1d903e53f0592d0a88e260c1fb3c6fd453b78548b54506d
+size 821229
diff --git a/lib/search/indexes/github-docs-dotcom-pt.json.br b/lib/search/indexes/github-docs-dotcom-pt.json.br
index 4f8ad22cf5..3d9231112d 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:da8a5dc9ac23bc19b0ba2201c8b19bc252a7d92a4db02a0d9fb708f62aba2afd
-size 3199105
+oid sha256:9e818f759277d2f8b0cc6aa0cd5988c299f8e0a6c45a162320825fbb46d977da
+size 3203205
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 59cb8c3a0c..462da26a52 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:523c008ead84776d546b2295dc26933ded47bcc1be4bbd1d4ae28f77f580550a
-size 559246
+oid sha256:eca4697702566b320d2b4380f0dff07f0719b73f4fc4b5e1d4afcac724f122b0
+size 559235
diff --git a/lib/search/indexes/github-docs-ghae-cn.json.br b/lib/search/indexes/github-docs-ghae-cn.json.br
index dfbeee4974..cfd4f4754a 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:e9706d9c59162558b254fc5813830ac8ca11ed4611c6cc19af1e360612daf1f8
-size 1127281
+oid sha256:75d838f241103a19812be7f45b14fef065cfbf2c837f61826c4ca9e3acd70285
+size 1128046
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 6a1baba942..1ffd25f2b6 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:dbd9c5ab249a73d044d984f08977aeadfcaf6c001fa598f7d29e27158c98db68
-size 857900
+oid sha256:8c6e7617aedc957bf91483c0f4acf39932ebbf738fd6d5f52f989414ec233a9d
+size 858470
diff --git a/lib/search/indexes/github-docs-ghae-en.json.br b/lib/search/indexes/github-docs-ghae-en.json.br
index 682a72ae01..99ad74f8cb 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:be65f4807bdd555bd89024d1077a6e7e7de6c56af3f49c00ede7b26b9998a751
-size 3436123
+oid sha256:37ca3069f02f462c6ce3c0ff11d0f3b36c9d1f9857b6a459957f123d09dd5827
+size 3435122
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 9d6cbb3a32..034b7e4d13 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:10bbd20fd9ffea263a4a6a0a5ae846c0981743c0eaa301d6984c6689039f61f4
-size 520267
+oid sha256:4de094eae68079cd4dd2750ed64cceee5450bd9bd3d9783c5837b1cd5f3dd8e2
+size 520464
diff --git a/lib/search/indexes/github-docs-ghae-es.json.br b/lib/search/indexes/github-docs-ghae-es.json.br
index 57d4a4655f..c18c396cb4 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:a7333febe7ffe6bcb0176ddad6a57dab5d1c36017e0f0934f614a2c32f7e1fd8
-size 2117042
+oid sha256:22ce992544e111667dd2ce917f375cdf45318f94ecd93776a2d4bfdc4c656c1d
+size 2117652
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 ee41bccd07..a78eef2d9b 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:adad47de10961bcfe088d7192c6d29f7719bc95a6b1fb109d1de99080f43a807
-size 572337
+oid sha256:c0462ff5d136c0472ddc0ab18011881c20ab2128fa1b7db51a5246843a7c87c1
+size 573186
diff --git a/lib/search/indexes/github-docs-ghae-ja.json.br b/lib/search/indexes/github-docs-ghae-ja.json.br
index 64c7521529..815f1db426 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:af9b793135c26c3bef76a83fe5675817354ecec19ddb0cc61ebb1d54eebbe47f
-size 2933511
+oid sha256:c123c5b6489b5677ea74163e0d1d94dbd84c48273f1a719a04cebc4c08552a0f
+size 2934307
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 99701f6313..aa86f93fb1 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:04a911707894a670345c525a13e99285f954e969f7d24ec72be4177f7ca9c9b1
-size 513120
+oid sha256:ff49a5872ae2e7274c1cbe4dfb753e70d9c2fc3edc3f7a2a7387b3e30fbfc6cc
+size 512919
diff --git a/lib/search/indexes/github-docs-ghae-pt.json.br b/lib/search/indexes/github-docs-ghae-pt.json.br
index a2c06e9751..74695b9b49 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:f01d21d21ecabfb4a22bb46d77d04c4ede421de43dc97133daad3586f8b5d202
-size 2011354
+oid sha256:33c11cdbf43cd58fd9ce69f6462d66ff0ffb0c23ac9c004a4ec699243e002909
+size 2010917
diff --git a/lib/search/indexes/github-docs-ghec-cn-records.json.br b/lib/search/indexes/github-docs-ghec-cn-records.json.br
index 5f88e897e6..79e8b99680 100644
--- a/lib/search/indexes/github-docs-ghec-cn-records.json.br
+++ b/lib/search/indexes/github-docs-ghec-cn-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2d158e4655e7dc176ccfdbb332127244e5db2e4714109786527a9b4899a2aeb5
-size 841139
+oid sha256:2ab19f1c1360e3e481c8b831537f1449c8a82bb2ea6ee3ce8c60be169be43e9d
+size 840211
diff --git a/lib/search/indexes/github-docs-ghec-cn.json.br b/lib/search/indexes/github-docs-ghec-cn.json.br
index 8d00b71695..3cb9b3d614 100644
--- a/lib/search/indexes/github-docs-ghec-cn.json.br
+++ b/lib/search/indexes/github-docs-ghec-cn.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4a12223ff160d45727ca3e8e34f0037d4eee674e2aed5ddd38b86daf47f510a7
-size 1750468
+oid sha256:bbb7aa7a87808cc2efb28b2d8ed3e3998548af9fc6178ac1f5d50044ab2f8030
+size 1752585
diff --git a/lib/search/indexes/github-docs-ghec-en-records.json.br b/lib/search/indexes/github-docs-ghec-en-records.json.br
index 7a68c9f415..0af3c2e305 100644
--- a/lib/search/indexes/github-docs-ghec-en-records.json.br
+++ b/lib/search/indexes/github-docs-ghec-en-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:8c18c7caaa4ee265bdab64886f3bcf5ee8dd7cf8035b8412a27a82e05dca82ec
-size 1240503
+oid sha256:1e9ea551626c7eb1c2108a8f15d83cb4ad328c4c00f2a0485dc4a455354fc0a8
+size 1240842
diff --git a/lib/search/indexes/github-docs-ghec-en.json.br b/lib/search/indexes/github-docs-ghec-en.json.br
index 2d63282116..2616ea904e 100644
--- a/lib/search/indexes/github-docs-ghec-en.json.br
+++ b/lib/search/indexes/github-docs-ghec-en.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e45f77dcc6138aba633fb7ac1d8cf78b8673e3b0f86bff1eacba2a4d07548b03
-size 4986557
+oid sha256:e216157635ab5494fa125996a442445cbfc4b6824a60fad1d62b9affbfc3009e
+size 4988077
diff --git a/lib/search/indexes/github-docs-ghec-es-records.json.br b/lib/search/indexes/github-docs-ghec-es-records.json.br
index 5b1f9d71b7..2bf26478b0 100644
--- a/lib/search/indexes/github-docs-ghec-es-records.json.br
+++ b/lib/search/indexes/github-docs-ghec-es-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6b44f7963559dcaaea15d840de2ba347f4c0c7f6b55df6097b70d20b0769d7d4
-size 788407
+oid sha256:51aa67b19215044c97a15096027e0e42182d42aa5b011969986b3464b1a2796f
+size 789421
diff --git a/lib/search/indexes/github-docs-ghec-es.json.br b/lib/search/indexes/github-docs-ghec-es.json.br
index 47eb5dd0b1..f5da2356db 100644
--- a/lib/search/indexes/github-docs-ghec-es.json.br
+++ b/lib/search/indexes/github-docs-ghec-es.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:7aa2764125d915c8a7456dba422f7d948e6dcdc6995609b6f629d860d9811f9d
-size 3338450
+oid sha256:116faa0d8ae25bb8ce6c2bb3fded65f2d8b1f9c58caa0b9c1102203d1050accd
+size 3342070
diff --git a/lib/search/indexes/github-docs-ghec-ja-records.json.br b/lib/search/indexes/github-docs-ghec-ja-records.json.br
index 987567dc32..dc90806cdc 100644
--- a/lib/search/indexes/github-docs-ghec-ja-records.json.br
+++ b/lib/search/indexes/github-docs-ghec-ja-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b7d793bd277c6ef95acff91b5ed05b545f78378c01b34ec3b33ace9e8f10dc2f
-size 863368
+oid sha256:55894044b4033924a0e197315d48cc1921f81661f96586b952930eb5febb1807
+size 862776
diff --git a/lib/search/indexes/github-docs-ghec-ja.json.br b/lib/search/indexes/github-docs-ghec-ja.json.br
index 92174892ff..cfb9533415 100644
--- a/lib/search/indexes/github-docs-ghec-ja.json.br
+++ b/lib/search/indexes/github-docs-ghec-ja.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:9407d83306f92fdeedfe304a7eb6faab2166dcb854e760002108ae4c14591b55
-size 4619826
+oid sha256:ef645d4b12584cd96a1057a029a58016c905fa1f6e8d928444786e5597140271
+size 4619997
diff --git a/lib/search/indexes/github-docs-ghec-pt-records.json.br b/lib/search/indexes/github-docs-ghec-pt-records.json.br
index 9cc63553e5..8d769783c4 100644
--- a/lib/search/indexes/github-docs-ghec-pt-records.json.br
+++ b/lib/search/indexes/github-docs-ghec-pt-records.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f97d40dd41595c76a7de608873e70795dab88038dd784973c08b243322e98de0
-size 778310
+oid sha256:89467e79729c853cfef26d15fba1e2892cd64adf7ab12f626678763d017863a4
+size 778203
diff --git a/lib/search/indexes/github-docs-ghec-pt.json.br b/lib/search/indexes/github-docs-ghec-pt.json.br
index cb476eeefc..024e08f2e4 100644
--- a/lib/search/indexes/github-docs-ghec-pt.json.br
+++ b/lib/search/indexes/github-docs-ghec-pt.json.br
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:40f8fdfc6fe07fb00a40e3268c43db774ff7fca8edc4b1c4d3bf0a9602502010
-size 3178281
+oid sha256:9920d55016900c54d3d785b44989d3bed3e88294d5e084d31ac93ccbb6e3780d
+size 3181671
diff --git a/package-lock.json b/package-lock.json
index ffb2aff60c..785d7798dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -135,7 +135,6 @@
"git-diff": "^2.0.6",
"glob": "^7.2.0",
"graphql": "^16.3.0",
- "heroku-client": "^3.1.0",
"http-status-code": "^2.1.0",
"husky": "^7.0.4",
"japanese-characters": "^1.1.0",
@@ -10576,19 +10575,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/heroku-client": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/heroku-client/-/heroku-client-3.1.0.tgz",
- "integrity": "sha512-UfGKwUm5duzzSVI8uUXlNAE1mus6uPxmZPji4vuG1ArV5DYL1rXsZShp0OoxraWdEwYoxCUrM6KGztC68x5EZQ==",
- "dev": true,
- "dependencies": {
- "is-retry-allowed": "^1.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
@@ -11433,15 +11419,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-shared-array-buffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
@@ -21037,18 +21014,6 @@
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
},
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -30703,16 +30668,6 @@
"resolved": "https://registry.npmjs.org/helmet/-/helmet-4.6.0.tgz",
"integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg=="
},
- "heroku-client": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/heroku-client/-/heroku-client-3.1.0.tgz",
- "integrity": "sha512-UfGKwUm5duzzSVI8uUXlNAE1mus6uPxmZPji4vuG1ArV5DYL1rXsZShp0OoxraWdEwYoxCUrM6KGztC68x5EZQ==",
- "dev": true,
- "requires": {
- "is-retry-allowed": "^1.0.0",
- "tunnel-agent": "^0.6.0"
- }
- },
"hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
@@ -31292,12 +31247,6 @@
"has-tostringtag": "^1.0.0"
}
},
- "is-retry-allowed": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz",
- "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==",
- "dev": true
- },
"is-shared-array-buffer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz",
@@ -38575,15 +38524,6 @@
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"dev": true
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
diff --git a/package.json b/package.json
index 59dba3dcf7..d4414fcf92 100644
--- a/package.json
+++ b/package.json
@@ -137,7 +137,6 @@
"git-diff": "^2.0.6",
"glob": "^7.2.0",
"graphql": "^16.3.0",
- "heroku-client": "^3.1.0",
"http-status-code": "^2.1.0",
"husky": "^7.0.4",
"japanese-characters": "^1.1.0",
@@ -193,7 +192,6 @@
"build": "next build",
"debug": "cross-env NODE_ENV=development ENABLED_LANGUAGES='en,ja' nodemon --inspect server.mjs",
"dev": "npm start",
- "heroku-postbuild": "node script/early-access/clone-for-build.js && npm run build",
"lint": "eslint '**/*.{js,mjs,ts,tsx}'",
"lint-translation": "cross-env NODE_OPTIONS=--experimental-vm-modules TEST_TRANSLATION=true jest tests/linting/lint-files.js",
"pa11y-ci": "pa11y-ci",
diff --git a/script/deployment/create-staging-app-name.js b/script/deployment/create-staging-app-name.js
deleted file mode 100644
index cee33514bc..0000000000
--- a/script/deployment/create-staging-app-name.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import GithubSlugger from 'github-slugger'
-const slugify = GithubSlugger.slug
-
-const APP_NAME_MAX_LENGTH = 30
-
-export default function ({ prefix = '', repo, pullNumber, branch }) {
- return (
- `${prefix}${repo}-${pullNumber}--${slugify(branch)}`
- // Shorten the string to the max allowed length
- .slice(0, APP_NAME_MAX_LENGTH)
- // Convert underscores to dashes
- .replace(/_/g, '-')
- // Remove trailing dashes
- .replace(/-+$/, '')
- // Make it all lowercase
- .toLowerCase()
- )
-}
diff --git a/script/deployment/deploy-to-production.js b/script/deployment/deploy-to-production.js
deleted file mode 100755
index b23482bc98..0000000000
--- a/script/deployment/deploy-to-production.js
+++ /dev/null
@@ -1,465 +0,0 @@
-#!/usr/bin/env node
-import got from 'got'
-import Heroku from 'heroku-client'
-import { setOutput } from '@actions/core'
-
-const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
-
-const SLEEP_INTERVAL = 5000
-const HEROKU_LOG_LINES_TO_SHOW = 25
-const DELAY_FOR_PREBOOT_SWAP = 135000 // 2:15
-
-// Allow for a few 404 (Not Found), 429 (Too Many Requests), etc. responses from
-// the semi-unreliable Heroku API when we're polling for status updates
-const ALLOWED_MISSING_RESPONSE_COUNT =
- parseInt(process.env.ALLOWED_POLLING_FAILURES_PER_PHASE, 10) || 10
-const ALLOWABLE_ERROR_CODES = [404, 429, 500, 503]
-
-export default async function deployToProduction({
- octokit,
- includeDelayForPreboot = true,
- // These parameters will only be set by Actions
- sourceBlobUrl = null,
- runId = null,
-}) {
- // Start a timer so we can report how long the deployment takes
- const startTime = Date.now()
- const [owner, repo, branch] = ['github', 'docs-internal', 'main']
-
- let sha
- try {
- const {
- data: { sha: latestSha },
- } = await octokit.repos.getCommit({
- owner,
- repo,
- ref: branch,
- })
- sha = latestSha
-
- if (!sha) {
- throw new Error('Latest commit SHA could not be found')
- }
- } catch (error) {
- console.error(`Error: ${error}`)
- console.log(`🛑 There was an error getting latest commit.`)
- process.exit(1)
- }
-
- // Put together application configuration variables
- const isPrebuilt = !!sourceBlobUrl
- const { DOCUBOT_REPO_PAT } = process.env
- const appConfigVars = {
- // Track the git branch
- GIT_BRANCH: branch,
- // If prebuilt: prevent the Heroku Node.js buildpack from installing devDependencies
- NPM_CONFIG_PRODUCTION: isPrebuilt.toString(),
- // If prebuilt: prevent the Heroku Node.js buildpack from using `npm ci` as it would
- // delete all of the vendored "node_modules/" directory.
- USE_NPM_INSTALL: isPrebuilt.toString(),
- // If not prebuilt, include the PAT required for cloning the `docs-early-access` repo.
- // Otherwise, set it to `null` to unset it from the environment for security.
- DOCUBOT_REPO_PAT: (!isPrebuilt && DOCUBOT_REPO_PAT) || null,
- }
-
- const workflowRunLog = runId ? `https://github.com/${owner}/${repo}/actions/runs/${runId}` : null
- let deploymentId = null
- let logUrl = workflowRunLog
-
- const appName = process.env.HEROKU_PRODUCTION_APP_NAME
- const environment = 'production'
- const homepageUrl = 'https://docs.github.com/'
-
- try {
- const title = `branch '${branch}' at commit '${sha}' in the '${environment}' environment`
-
- console.log(`About to deploy ${title}...`)
-
- // Kick off a pending GitHub Deployment right away, so the PR author
- // will have instant feedback that their work is being deployed.
- const { data: deployment } = await octokit.repos.createDeployment({
- owner,
- repo,
- description: `Deploying ${title}`,
- ref: sha,
-
- // In the GitHub API, there can only be one active deployment per environment.
- environment,
-
- // The status contexts to verify against commit status checks. If you omit
- // this parameter, GitHub verifies all unique contexts before creating a
- // deployment. To bypass checking entirely, pass an empty array. Defaults
- // to all unique contexts.
- required_contexts: [],
-
- // Do not try to merge the base branch into the feature branch
- auto_merge: false,
- })
- console.log('GitHub Deployment created', deployment)
-
- // Store this ID for later updating
- deploymentId = deployment.id
-
- // Set some output variables for workflow steps that run after this script
- if (process.env.GITHUB_ACTIONS) {
- setOutput('deploymentId', deploymentId)
- setOutput('logUrl', logUrl)
- }
-
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'in_progress',
- description: 'Deploying the app...',
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
- console.log('🚀 Deployment status: in_progress - Preparing to deploy the app...')
-
- // Time to talk to Heroku...
- const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
- let build = null
-
- if (!sourceBlobUrl) {
- try {
- sourceBlobUrl = await getTarballUrl({
- octokit,
- owner,
- repo,
- sha,
- })
- } catch (error) {
- throw new Error(`Failed to generate source blob URL. Error: ${error}`)
- }
- }
-
- console.log('Updating Heroku app configuration variables...')
-
- // 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}`)
- }
-
- console.log('Reconfigured')
- console.log('Building Heroku app...')
-
- try {
- build = await heroku.post(`/apps/${appName}/builds`, {
- body: {
- source_blob: {
- url: sourceBlobUrl,
- },
- },
- })
- } catch (error) {
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to create Heroku build. Error: ${error}`)
- }
-
- console.log('Heroku build created', build)
-
- const buildStartTime = Date.now() // Close enough...
- const buildId = build.id
- logUrl = build.output_stream_url
-
- console.log('🚀 Deployment status: in_progress - Building a new Heroku slug...')
-
- // Poll until the Build's status changes from "pending" to "succeeded" or "failed".
- let buildAcceptableErrorCount = 0
- while (!build || !build.release || !build.release.id) {
- await sleep(SLEEP_INTERVAL)
- try {
- build = await heroku.get(`/apps/${appName}/builds/${buildId}`)
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- buildAcceptableErrorCount += 1
- if (buildAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${buildAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to get build status. Error: ${error}`)
- }
-
- if (build && build.status === 'failed') {
- throw new Error(
- `Failed to build after ${Math.round(
- (Date.now() - buildStartTime) / 1000
- )} seconds. See Heroku logs for more information:\n${logUrl}`
- )
- }
-
- console.log(
- `Heroku build status: ${(build || {}).status} (after ${Math.round(
- (Date.now() - buildStartTime) / 1000
- )} seconds)`
- )
- }
-
- console.log(
- `Finished Heroku build after ${Math.round((Date.now() - buildStartTime) / 1000)} seconds.`,
- build
- )
- console.log('Heroku release detected', build.release)
-
- const releaseStartTime = Date.now() // Close enough...
- const releaseId = build.release.id
- let release = null
-
- // Poll until the associated Release's status changes from "pending" to "succeeded" or "failed".
- let releaseAcceptableErrorCount = 0
- while (!release || release.status === 'pending') {
- await sleep(SLEEP_INTERVAL)
- try {
- const result = await heroku.get(`/apps/${appName}/releases/${releaseId}`)
-
- // Update the deployment status but only on the first retrieval
- if (!release) {
- logUrl = result.output_stream_url
-
- console.log('Heroku Release created', result)
-
- console.log('🚀 Deployment status: in_progress - Releasing the built Heroku slug...')
- }
-
- release = result
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- releaseAcceptableErrorCount += 1
- if (releaseAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${releaseAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to get release status. Error: ${error}`)
- }
-
- if (release && release.status === 'failed') {
- throw new Error(
- `Failed to release after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds. See Heroku logs for more information:\n${logUrl}`
- )
- }
-
- console.log(
- `Release status: ${(release || {}).status} (after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds)`
- )
- }
-
- console.log(
- `Finished Heroku release after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds.`,
- release
- )
-
- // Monitor dyno state for this release to ensure it reaches "up" rather than crashing.
- // This will help us catch issues with faulty startup code and/or the package manifest.
- const dynoBootStartTime = Date.now()
- console.log('Checking Heroku dynos...')
- logUrl = workflowRunLog
-
- console.log('🚀 Deployment status: in_progress - Monitoring the Heroku dyno start-up...')
-
- // Keep checking while there are still dynos in non-terminal states
- let newDynos = []
- let dynoAcceptableErrorCount = 0
- while (newDynos.length === 0 || newDynos.some((dyno) => dyno.state === 'starting')) {
- await sleep(SLEEP_INTERVAL)
- try {
- const dynoList = await heroku.get(`/apps/${appName}/dynos`)
- const dynosForThisRelease = dynoList.filter((dyno) => dyno.release.id === releaseId)
-
- // To track them afterward
- newDynos = dynosForThisRelease
-
- console.log(
- `Dyno states: ${JSON.stringify(newDynos.map((dyno) => dyno.state))} (after ${Math.round(
- (Date.now() - dynoBootStartTime) / 1000
- )} seconds)`
- )
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- dynoAcceptableErrorCount += 1
- if (dynoAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${dynoAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to find dynos for this release. Error: ${error}`)
- }
- }
-
- const crashedDynos = newDynos.filter((dyno) => ['crashed', 'restarting'].includes(dyno.state))
- const runningDynos = newDynos.filter((dyno) => dyno.state === 'up')
-
- // If any dynos crashed on start-up, fail the deployment
- if (crashedDynos.length > 0) {
- const errorMessage = `At least ${crashedDynos.length} Heroku dyno(s) crashed on start-up!`
-
- console.error(errorMessage)
-
- // Attempt to dump some of the Heroku log here for debugging
- try {
- const logSession = await heroku.post(`/apps/${appName}/log-sessions`, {
- body: {
- dyno: crashedDynos[0].name,
- lines: HEROKU_LOG_LINES_TO_SHOW,
- tail: false,
- },
- })
-
- logUrl = logSession.logplex_url
-
- const logText = await got(logUrl).text()
- console.error(
- `Here are the last ${HEROKU_LOG_LINES_TO_SHOW} lines of the Heroku log:\n\n${logText}`
- )
- } catch (error) {
- announceIfHerokuIsDown(error)
- // Don't fail because of this error
- console.error(`Failed to retrieve the Heroku logs for the crashed dynos. Error: ${error}`)
- }
-
- throw new Error(errorMessage)
- }
-
- console.log(
- `At least ${runningDynos.length} Heroku dyno(s) are ready after ${Math.round(
- (Date.now() - dynoBootStartTime) / 1000
- )} seconds.`
- )
-
- // IMPORTANT:
- // If Heroku Preboot is enabled, then there is an additional delay of at
- // least 2 minutes before the new dynos are swapped into active serving.
- // If we move off Heroku in the future, this should be revisited and
- // updated/removed as relevant to align with the new hosting platform.
- if (includeDelayForPreboot) {
- console.log(`Waiting for Heroku Preboot to swap dynos (${DELAY_FOR_PREBOOT_SWAP} ms)...`)
- await sleep(DELAY_FOR_PREBOOT_SWAP)
-
- // TODO:
- // Is there a faster alternative than this arbitrary delay? For example,
- // is there some Heroku API we can query to see when this release is
- // considered to be the live one, or when the old dynos are shut down?
- } else {
- console.warn(
- '⚠️ Bypassing the wait for Heroku Preboot....\nPlease understand that your changes will not be visible for at least another 2 minutes!'
- )
- }
-
- // Report success!
- const successMessage = `Deployment succeeded after ${Math.round(
- (Date.now() - startTime) / 1000
- )} seconds.`
- console.log(successMessage)
-
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'success',
- description: successMessage,
- ...(logUrl && { log_url: logUrl }),
- environment_url: homepageUrl,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
-
- console.log(`🚀 Deployment status: success - ${successMessage}`)
- console.log(`Visit the newly deployed app at: ${homepageUrl}`)
- } catch (error) {
- // Report failure!
- const failureMessage = `Deployment failed after ${Math.round(
- (Date.now() - startTime) / 1000
- )} seconds. See logs for more information.`
- console.error(failureMessage)
-
- try {
- if (deploymentId) {
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'error',
- description: failureMessage,
- ...(logUrl && { log_url: logUrl }),
- environment_url: homepageUrl,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
-
- console.log(
- `🚀 Deployment status: error - ${failureMessage}` + (logUrl ? ` Logs: ${logUrl}` : '')
- )
- }
- } catch (error) {
- console.error(`Failed to finalize GitHub Deployment Status as a failure. Error: ${error}`)
- }
-
- // Re-throw the error to bubble up
- throw error
- }
-}
-
-async function getTarballUrl({ octokit, owner, repo, sha }) {
- // Get a URL for the tarballed source code bundle
- const {
- headers: { location: tarballUrl },
- } = await octokit.repos.downloadTarballArchive({
- owner,
- repo,
- ref: sha,
- // Override the underlying `node-fetch` module's `redirect` option
- // configuration to prevent automatically following redirects.
- request: {
- redirect: 'manual',
- },
- })
- return tarballUrl
-}
-
-function isAllowableHerokuError(error) {
- return error && ALLOWABLE_ERROR_CODES.includes(error.statusCode)
-}
-
-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/deploy-to-staging.js b/script/deployment/deploy-to-staging.js
deleted file mode 100644
index 5e3df9a09b..0000000000
--- a/script/deployment/deploy-to-staging.js
+++ /dev/null
@@ -1,680 +0,0 @@
-#!/usr/bin/env node
-import got from 'got'
-import Heroku from 'heroku-client'
-import { setOutput } from '@actions/core'
-import createStagingAppName from './create-staging-app-name.js'
-
-// Equivalent of the 'await-sleep' module without the install
-const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms))
-
-const SLEEP_INTERVAL = 5000
-const HEROKU_LOG_LINES_TO_SHOW = 25
-
-// Allow for a few 404 (Not Found), 429 (Too Many Requests), etc. responses from
-// the semi-unreliable Heroku API when we're polling for status updates
-const ALLOWED_MISSING_RESPONSE_COUNT =
- parseInt(process.env.ALLOWED_POLLING_FAILURES_PER_PHASE, 10) || 10
-const ALLOWABLE_ERROR_CODES = [404, 429, 500, 503]
-
-export default async function deployToStaging({
- octokit,
- pullRequest,
- forceRebuild = false,
- // These parameters will only be set by Actions
- sourceBlobUrl = null,
- runId = null,
-}) {
- // Start a timer so we can report how long the deployment takes
- const startTime = Date.now()
-
- // Extract some important properties from the PR
- const {
- number: pullNumber,
- base: {
- repo: {
- name: repo,
- owner: { login: owner },
- },
- },
- state,
- head: { ref: branch, sha },
- user: author,
- } = pullRequest
-
- // Verify the PR is still open
- if (state !== 'open') {
- throw new Error(`This pull request is not open. State is: '${state}'`)
- }
-
- // Put together application configuration variables
- const isPrivateRepo = owner === 'github' && repo === 'docs-internal'
- const isPrebuilt = !!sourceBlobUrl
- const { DOCUBOT_REPO_PAT, HYDRO_ENDPOINT, HYDRO_SECRET } = process.env
- const appConfigVars = {
- // Track the git branch
- GIT_BRANCH: branch,
- // If prebuilt: prevent the Heroku Node.js buildpack from installing devDependencies
- NPM_CONFIG_PRODUCTION: isPrebuilt.toString(),
- // If prebuilt: prevent the Heroku Node.js buildpack from using `npm ci` as it would
- // delete all of the vendored "node_modules/" directory.
- USE_NPM_INSTALL: isPrebuilt.toString(),
- // IMPORTANT: This secret should only be set in the private repo!
- // If not prebuilt, include the PAT required for cloning the `docs-early-access` repo.
- // Otherwise, set it to `null` to unset it from the environment for security.
- DOCUBOT_REPO_PAT: (isPrivateRepo && !isPrebuilt && DOCUBOT_REPO_PAT) || null,
- // 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 }),
- }
-
- const workflowRunLog = runId ? `https://github.com/${owner}/${repo}/actions/runs/${runId}` : null
- let deploymentId = null
- let logUrl = workflowRunLog
- let appIsNewlyCreated = false
-
- const appName = createStagingAppName({ repo, pullNumber, branch })
- const environment = appName
- const homepageUrl = `https://${appName}.herokuapp.com/`
-
- try {
- const title = `branch '${branch}' at commit '${sha}' in the '${environment}' staging environment`
-
- console.log(`About to deploy ${title}...`)
-
- // Kick off a pending GitHub Deployment right away, so the PR author
- // will have instant feedback that their work is being deployed.
- const { data: deployment } = await octokit.repos.createDeployment({
- owner,
- repo,
-
- description: `Deploying ${title}`,
-
- // Use a commit SHA instead of a branch name as the ref for more precise
- // feedback, and also because the branch may have already been deleted.
- ref: sha,
-
- // In the GitHub API, there can only be one active deployment per environment.
- // For our many staging apps, we must use the unique appName as the environment.
- environment,
-
- // The status contexts to verify against commit status checks. If you omit
- // this parameter, GitHub verifies all unique contexts before creating a
- // deployment. To bypass checking entirely, pass an empty array. Defaults
- // to all unique contexts.
- required_contexts: [],
-
- // Do not try to merge the base branch into the feature branch
- auto_merge: false,
- })
- console.log('GitHub Deployment created', deployment)
-
- // Store this ID for later updating
- deploymentId = deployment.id
-
- // Set some output variables for workflow steps that run after this script
- if (process.env.GITHUB_ACTIONS) {
- setOutput('deploymentId', deploymentId)
- setOutput('logUrl', logUrl)
- }
-
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'in_progress',
- description: 'Deploying the app...',
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
- console.log('🚀 Deployment status: in_progress - Preparing to deploy the app...')
-
- // Time to talk to Heroku...
- const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
- let appSetup = null
- let build = null
-
- // Is there already a Heroku App for this PR?
- let appExists = true
- try {
- await heroku.get(`/apps/${appName}`)
- } catch (error) {
- announceIfHerokuIsDown(error)
- appExists = false
- }
-
- // If there is an existing app but we want to forcibly rebuild, delete the app first
- if (appExists && forceRebuild) {
- console.log('🚀 Deployment status: in_progress - Destroying existing Heroku app...')
-
- try {
- await heroku.delete(`/apps/${appName}`)
- appExists = false
-
- console.log(`Heroku app '${appName}' deleted for forced rebuild`)
- } catch (error) {
- announceIfHerokuIsDown(error)
- throw new Error(
- `Failed to delete Heroku app '${appName}' for forced rebuild. Error: ${error}`
- )
- }
- }
-
- if (!sourceBlobUrl) {
- try {
- sourceBlobUrl = await getTarballUrl({
- octokit,
- owner,
- repo,
- sha,
- })
- } catch (error) {
- throw new Error(`Failed to generate source blob URL. Error: ${error}`)
- }
- }
-
- // If an app does not exist, create one!
- // This action will also trigger a build as a by-product.
- if (!appExists) {
- appIsNewlyCreated = true
-
- console.log(`Heroku app '${appName}' does not exist. Creating a new AppSetup...`)
-
- console.log('🚀 Deployment status: in_progress - Creating a new Heroku app...')
-
- const appSetupStartTime = Date.now()
- try {
- appSetup = await heroku.post('/app-setups', {
- body: {
- app: {
- name: appName,
- },
- source_blob: {
- url: sourceBlobUrl,
- },
-
- // Pass some environment variables to staging apps via Heroku
- // config variables.
- overrides: {
- // AppSetup API cannot handle `null` values for config vars
- env: removeEmptyProperties(appConfigVars),
- },
- },
- })
- console.log('Heroku AppSetup created', appSetup)
-
- // This probably will not be available yet
- build = appSetup.build
- } 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}`
- )
- }
-
- // A new Build is created as a by-product of creating an AppSetup.
- // Poll until there is a Build object attached to the AppSetup.
- let setupAcceptableErrorCount = 0
- while (!appSetup || !build || !build.id) {
- await sleep(SLEEP_INTERVAL)
- try {
- appSetup = await heroku.get(`/app-setups/${appSetup.id}`)
- build = appSetup.build
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- setupAcceptableErrorCount += 1
- if (setupAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${setupAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to get AppSetup status. Error: ${error}`)
- }
-
- if (appSetup && appSetup.status === 'failed') {
- const manifestErrors = appSetup.manifest_errors || []
- const hasManifestErrors = Array.isArray(manifestErrors) && manifestErrors.length > 0
- const manifestErrorMessage = hasManifestErrors
- ? `\nManifest errors:\n - ${manifestErrors.join('\n - ')}`
- : ''
- throw new Error(
- `Failed to setup app after ${Math.round(
- (Date.now() - appSetupStartTime) / 1000
- )} seconds.
-Reason: ${appSetup.failure_message}${manifestErrorMessage}
-See Heroku logs for more information:\n${logUrl}`
- )
- }
-
- console.log(
- `AppSetup status: ${appSetup.status} (after ${Math.round(
- (Date.now() - appSetupStartTime) / 1000
- )} seconds)`
- )
- }
-
- console.log('Heroku AppSetup finished', appSetup)
- console.log('Heroku build detected', build)
- } else {
- // If the app does exist, just manually trigger a new build
- console.log(`Heroku app '${appName}' already exists.`)
-
- console.log('Updating Heroku app configuration variables...')
-
- // 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}`)
- }
-
- console.log('Reconfigured')
- console.log('Building Heroku app...')
-
- try {
- build = await heroku.post(`/apps/${appName}/builds`, {
- body: {
- source_blob: {
- url: sourceBlobUrl,
- },
- },
- })
- } catch (error) {
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to create Heroku build. Error: ${error}`)
- }
-
- console.log('Heroku build created', build)
- }
-
- const buildStartTime = Date.now() // Close enough...
- const buildId = build.id
- logUrl = build.output_stream_url
-
- console.log('🚀 Deployment status: in_progress - Building a new Heroku slug...')
-
- // Poll until the Build's status changes from "pending" to "succeeded" or "failed".
- let buildAcceptableErrorCount = 0
- while (!build || !build.release || !build.release.id) {
- await sleep(SLEEP_INTERVAL)
- try {
- build = await heroku.get(`/apps/${appName}/builds/${buildId}`)
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- buildAcceptableErrorCount += 1
- if (buildAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${buildAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to get build status. Error: ${error}`)
- }
-
- if (build && build.status === 'failed') {
- throw new Error(
- `Failed to build after ${Math.round(
- (Date.now() - buildStartTime) / 1000
- )} seconds. See Heroku logs for more information:\n${logUrl}`
- )
- }
-
- console.log(
- `Heroku build status: ${(build || {}).status} (after ${Math.round(
- (Date.now() - buildStartTime) / 1000
- )} seconds)`
- )
- }
-
- console.log(
- `Finished Heroku build after ${Math.round((Date.now() - buildStartTime) / 1000)} seconds.`,
- build
- )
- console.log('Heroku release detected', build.release)
-
- const releaseStartTime = Date.now() // Close enough...
- let releaseId = build.release.id
- let release = null
-
- // Poll until the associated Release's status changes from "pending" to "succeeded" or "failed".
- let releaseAcceptableErrorCount = 0
- while (!release || release.status === 'pending') {
- await sleep(SLEEP_INTERVAL)
- try {
- const result = await heroku.get(`/apps/${appName}/releases/${releaseId}`)
-
- // Update the deployment status but only on the first retrieval
- if (!release) {
- logUrl = result.output_stream_url
-
- console.log('Heroku Release created', result)
-
- console.log('🚀 Deployment status: in_progress - Releasing the built Heroku slug...')
- }
-
- release = result
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- releaseAcceptableErrorCount += 1
- if (releaseAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${releaseAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to get release status. Error: ${error}`)
- }
-
- if (release && release.status === 'failed') {
- throw new Error(
- `Failed to release after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds. See Heroku logs for more information:\n${logUrl}`
- )
- }
-
- console.log(
- `Release status: ${(release || {}).status} (after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds)`
- )
- }
-
- console.log(
- `Finished Heroku release after ${Math.round(
- (Date.now() - releaseStartTime) / 1000
- )} seconds.`,
- release
- )
-
- // Monitor dyno state for this release to ensure it reaches "up" rather than crashing.
- // This will help us catch issues with faulty startup code and/or the package manifest.
- const dynoBootStartTime = Date.now()
- console.log('Checking Heroku dynos...')
- logUrl = workflowRunLog
-
- console.log('🚀 Deployment status: in_progress - Monitoring the Heroku dyno start-up...')
-
- // Keep checking while there are still dynos in non-terminal states
- let newDynos = []
- let dynoAcceptableErrorCount = 0
- while (newDynos.length === 0 || newDynos.some((dyno) => dyno.state === 'starting')) {
- await sleep(SLEEP_INTERVAL)
- try {
- const dynoList = await heroku.get(`/apps/${appName}/dynos`)
- const dynosForThisRelease = dynoList.filter((dyno) => dyno.release.id === releaseId)
-
- // To track them afterward
- newDynos = dynosForThisRelease
-
- // Dynos for this release OR a newer release
- const relevantDynos = dynoList.filter((dyno) => dyno.release.version >= release.version)
-
- // If this Heroku app was just newly created, often a secondary release
- // is requested to enable automatically managed SSL certificates. The
- // release description will read:
- // "Enable allow-multiple-sni-endpoints feature"
- //
- // If that is the case, we need to update to monitor that secondary
- // release instead.
- if (relevantDynos.length > 0 && dynosForThisRelease.length === 0) {
- // If the app is NOT newly created, fail fast!
- if (!appIsNewlyCreated) {
- throw new Error('The dynos for this release disappeared unexpectedly')
- }
-
- // Check for the secondary release
- let nextRelease = null
- try {
- nextRelease = await heroku.get(`/apps/${appName}/releases/${release.version + 1}`)
- } catch (error) {
- announceIfHerokuIsDown(error)
- throw new Error(
- `Could not find a secondary release to explain the disappearing dynos. Error: ${error}`
- )
- }
-
- if (nextRelease) {
- if (nextRelease.description === 'Enable allow-multiple-sni-endpoints feature') {
- // Track dynos for the next release instead
- release = nextRelease
- releaseId = nextRelease.id
-
- console.warn('Switching to monitor secondary release...')
-
- // Allow the loop to repeat to fetch the dynos for the secondary release
- } else {
- // Otherwise, assume another release replaced this one but it
- // PROBABLY would've succeeded...?
- newDynos.forEach((dyno) => {
- dyno.state = 'up'
- })
- }
- }
- // else just keep monitoring and hope for the best
- }
-
- console.log(
- `Dyno states: ${JSON.stringify(newDynos.map((dyno) => dyno.state))} (after ${Math.round(
- (Date.now() - dynoBootStartTime) / 1000
- )} seconds)`
- )
- } catch (error) {
- // Allow for a few bad responses from the Heroku API
- if (isAllowableHerokuError(error)) {
- dynoAcceptableErrorCount += 1
- if (dynoAcceptableErrorCount <= ALLOWED_MISSING_RESPONSE_COUNT) {
- console.warn(
- `Ignoring allowable Heroku error #${dynoAcceptableErrorCount}: ${error.statusCode}`
- )
- continue
- }
- }
- announceIfHerokuIsDown(error)
- throw new Error(`Failed to find dynos for this release. Error: ${error}`)
- }
- }
-
- const crashedDynos = newDynos.filter((dyno) => ['crashed', 'restarting'].includes(dyno.state))
- const runningDynos = newDynos.filter((dyno) => dyno.state === 'up')
-
- // If any dynos crashed on start-up, fail the deployment
- if (crashedDynos.length > 0) {
- const errorMessage = `At least ${crashedDynos.length} Heroku dyno(s) crashed on start-up!`
-
- console.error(errorMessage)
-
- // Attempt to dump some of the Heroku log here for debugging
- try {
- const logSession = await heroku.post(`/apps/${appName}/log-sessions`, {
- body: {
- dyno: crashedDynos[0].name,
- lines: HEROKU_LOG_LINES_TO_SHOW,
- tail: false,
- },
- })
-
- logUrl = logSession.logplex_url
-
- const logText = await got(logUrl).text()
- console.error(
- `Here are the last ${HEROKU_LOG_LINES_TO_SHOW} lines of the Heroku log:\n\n${logText}`
- )
- } catch (error) {
- announceIfHerokuIsDown(error)
- // Don't fail because of this error
- console.error(`Failed to retrieve the Heroku logs for the crashed dynos. Error: ${error}`)
- }
-
- throw new Error(errorMessage)
- }
-
- console.log(
- `At least ${runningDynos.length} Heroku dyno(s) are ready after ${Math.round(
- (Date.now() - dynoBootStartTime) / 1000
- )} seconds.`
- )
-
- // Send a series of requests to trigger the server warmup routines
- console.log('🚀 Deployment status: in_progress - Triggering server warmup routines...')
-
- const warmupStartTime = Date.now()
- console.log(`Making warmup requests to: ${homepageUrl}`)
- try {
- await got(homepageUrl, {
- timeout: 10000, // Maximum 10 second timeout per request
- retry: {
- limit: 7, // About 2 minutes 7 seconds of delay, plus active request time for 8 requests
- statusCodes: [404, 421].concat(got.defaults.options.retry.statusCodes), // prepend extras
- },
- hooks: {
- beforeRetry: [
- (options, error = {}, retryCount = '?') => {
- const statusCode = error.statusCode || (error.response || {}).statusCode || -1
- console.log(
- `Retrying after warmup request attempt #${retryCount} (${statusCode}) after ${Math.round(
- (Date.now() - warmupStartTime) / 1000
- )} seconds...`
- )
- },
- ],
- },
- })
- console.log(
- `Warmup requests passed after ${Math.round((Date.now() - warmupStartTime) / 1000)} seconds`
- )
- } catch (error) {
- throw new Error(
- `Warmup requests failed after ${Math.round(
- (Date.now() - warmupStartTime) / 1000
- )} seconds. Error: ${error}`
- )
- }
-
- // Report success!
- const successMessage = `Deployment succeeded after ${Math.round(
- (Date.now() - startTime) / 1000
- )} seconds.`
- console.log(successMessage)
-
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'success',
- description: successMessage,
- ...(logUrl && { log_url: logUrl }),
- environment_url: homepageUrl,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
-
- console.log(`🚀 Deployment status: success - ${successMessage}`)
- console.log(`Visit the newly deployed app at: ${homepageUrl}`)
- } catch (error) {
- // Report failure!
- const failureMessage = `Deployment failed after ${Math.round(
- (Date.now() - startTime) / 1000
- )} seconds. See logs for more information.`
- console.error(failureMessage)
-
- try {
- if (deploymentId) {
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deploymentId,
- state: 'error',
- description: failureMessage,
- ...(logUrl && { log_url: logUrl }),
- environment_url: homepageUrl,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
-
- console.log(
- `🚀 Deployment status: error - ${failureMessage}` + (logUrl ? ` Logs: ${logUrl}` : '')
- )
- }
- } catch (error) {
- console.error(`Failed to finalize GitHub DeploymentStatus as a failure. Error: ${error}`)
- }
-
- // Re-throw the error to bubble up
- throw error
- }
-}
-
-async function getTarballUrl({ octokit, owner, repo, sha }) {
- // Get a URL for the tarballed source code bundle
- const {
- headers: { location: tarballUrl },
- } = await octokit.repos.downloadTarballArchive({
- owner,
- repo,
- ref: sha,
- // Override the underlying `node-fetch` module's `redirect` option
- // configuration to prevent automatically following redirects.
- request: {
- redirect: 'manual',
- },
- })
- return tarballUrl
-}
-
-function isAllowableHerokuError(error) {
- return error && ALLOWABLE_ERROR_CODES.includes(error.statusCode)
-}
-
-function announceIfHerokuIsDown(error) {
- if (error && error.statusCode === 503) {
- console.error('💀 Heroku may be down! Please check its Status page: https://status.heroku.com/')
- }
-}
-
-function removeEmptyProperties(obj) {
- return Object.fromEntries(Object.entries(obj).filter(([key, val]) => val != null))
-}
diff --git a/script/deployment/parse-pr-url.js b/script/deployment/parse-pr-url.js
deleted file mode 100644
index af7f876dff..0000000000
--- a/script/deployment/parse-pr-url.js
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env node
-const USERNAME_FORMAT = '([A-Za-z0-9-]+)'
-const REPO_NAME_FORMAT = '([A-Za-z0-9._-]+)'
-const PR_NUMBER_FORMAT = '(\\d+)'
-
-const ALLOWED_PR_URL_FORMAT = new RegExp(
- '^' +
- '[\'"]?' +
- `https://github\\.com/${USERNAME_FORMAT}/${REPO_NAME_FORMAT}/pull/${PR_NUMBER_FORMAT}` +
- '[\'"]?' +
- '$'
-)
-
-export default function parsePullRequestUrl(prUrl) {
- const [, /* fullMatch */ owner, repo, pr] = (prUrl || '').match(ALLOWED_PR_URL_FORMAT) || []
- return {
- owner,
- repo,
- pullNumber: parseInt(pr, 10) || undefined,
- }
-}
diff --git a/script/early-access/clone-for-build.js b/script/early-access/clone-for-build.js
deleted file mode 100755
index 5a2be19625..0000000000
--- a/script/early-access/clone-for-build.js
+++ /dev/null
@@ -1,140 +0,0 @@
-#!/usr/bin/env node
-
-// [start-readme]
-//
-// This script is run as a postbuild script during staging and deployments on Heroku. It clones a branch
-// in the early-access repo that matches the current branch in the docs repo; if one can't be found, it
-// clones the `main` branch.
-//
-// [end-readme]
-
-import dotenv from 'dotenv'
-import { execSync } from 'child_process'
-import rimraf from 'rimraf'
-import fs from 'fs'
-import path from 'path'
-import os from 'os'
-
-dotenv.config()
-const {
- DOCUBOT_REPO_PAT,
- HEROKU_PRODUCTION_APP,
- GIT_BRANCH, // Set by Actions and/or the deployer with the name of the docs-internal branch
-} = process.env
-
-// Exit if PAT is not found
-if (!DOCUBOT_REPO_PAT) {
- console.log('Skipping early access, not authorized')
- process.exit(0)
-}
-
-const EA_PRODUCTION_BRANCH = 'main'
-
-// If a branch name is not provided in the environment, attempt to get
-// the local branch name; or default to 'main'
-let currentBranch = (GIT_BRANCH || '').replace(/^refs\/heads\//, '')
-if (!currentBranch) {
- try {
- currentBranch = execSync('git branch --show-current').toString()
- } catch (err) {
- // Ignore but log
- console.warn('Error checking for local branch:', err.message)
- }
-}
-if (!currentBranch) {
- currentBranch = EA_PRODUCTION_BRANCH
-}
-
-// Early Access details
-const earlyAccessOwner = 'github'
-const earlyAccessRepoName = 'docs-early-access'
-const earlyAccessDirName = 'early-access'
-const earlyAccessFullRepo = `https://${DOCUBOT_REPO_PAT}@github.com/${earlyAccessOwner}/${earlyAccessRepoName}`
-
-// On our Azure self-hosted runners, os.tmpdir() doesn't work reliably. On Heroku, os.homedir doesn't work reliably.
-const earlyAccessCloningParentDir = process.env.CI ? os.homedir() : os.tmpdir()
-const earlyAccessCloningDir = path.join(earlyAccessCloningParentDir, earlyAccessRepoName)
-
-const destinationDirNames = ['content', 'data', 'assets/images']
-const destinationDirsMap = destinationDirNames.reduce((map, dirName) => {
- map[dirName] = path.join(process.cwd(), dirName, earlyAccessDirName)
- return map
-}, {})
-
-// Production vs. staging environment
-// TODO test that this works as expected
-const environment = HEROKU_PRODUCTION_APP ? 'production' : 'staging'
-
-// Early access branch to clone
-let earlyAccessBranch = HEROKU_PRODUCTION_APP ? EA_PRODUCTION_BRANCH : currentBranch
-
-// Confirm that the branch exists in the remote
-let branchExists = execSync(
- `git ls-remote --heads ${earlyAccessFullRepo} ${earlyAccessBranch}`
-).toString()
-
-// If the branch did NOT exist, try checking for the default branch instead
-if (!branchExists && earlyAccessBranch !== EA_PRODUCTION_BRANCH) {
- console.warn(
- `The branch '${earlyAccessBranch}' was not found in ${earlyAccessOwner}/${earlyAccessRepoName}!`
- )
- console.warn(`Attempting the default branch ${EA_PRODUCTION_BRANCH} instead...`)
-
- earlyAccessBranch = EA_PRODUCTION_BRANCH
- branchExists = execSync(
- `git ls-remote --heads ${earlyAccessFullRepo} ${earlyAccessBranch}`
- ).toString()
-}
-
-// If no suitable branch was found, bail out now
-if (!branchExists) {
- console.error(
- `The branch '${earlyAccessBranch}' was not found in ${earlyAccessOwner}/${earlyAccessRepoName}!`
- )
- console.error('Exiting!')
- process.exit(1)
-}
-
-// Remove any previously cloned copies of the early access repo
-rimraf.sync(earlyAccessCloningDir)
-
-// Clone the repo
-console.log(`Setting up: ${earlyAccessCloningDir}`)
-execSync(
- `git clone --single-branch --branch ${earlyAccessBranch} ${earlyAccessFullRepo} ${earlyAccessRepoName}`,
- {
- cwd: earlyAccessCloningParentDir,
- }
-)
-console.log(`Using early-access ${environment} branch: '${earlyAccessBranch}'`)
-
-// Remove all existing early access directories from this repo
-destinationDirNames.forEach((key) => rimraf.sync(destinationDirsMap[key]))
-
-// Move the latest early access source directories into this repo
-destinationDirNames.forEach((dirName) => {
- const sourceDir = path.join(earlyAccessCloningDir, dirName)
- const destDir = destinationDirsMap[dirName]
-
- // If the source directory doesn't exist, skip it
- if (!fs.existsSync(sourceDir)) {
- console.warn(`Early access directory '${dirName}' does not exist. Skipping...`)
- return
- }
-
- // Ensure the base directory exists
- fs.mkdirSync(path.join(process.cwd(), dirName), { recursive: true })
-
- // Move the directory from the cloned source to the destination
- fs.renameSync(sourceDir, destDir)
-
- // Confirm the newly moved directory exist
- if (fs.existsSync(destDir)) {
- console.log(`Successfully moved early access directory '${dirName}' into this repo`)
- } else {
- throw new Error(`Failed to move early access directory '${dirName}'!`)
- }
-})
-
-// Remove the source content again for good hygiene
-rimraf.sync(earlyAccessCloningDir)
diff --git a/script/ping-staging-apps.js b/script/ping-staging-apps.js
deleted file mode 100755
index d919013597..0000000000
--- a/script/ping-staging-apps.js
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env node
-
-// [start-readme]
-//
-// This script finds all Heroku staging apps and pings them to make sure they're always "warmed" and responsive to requests.
-//
-// [end-readme]
-
-import dotenv from 'dotenv'
-import assert from 'assert'
-import got from 'got'
-import { chain } from 'lodash-es'
-import chalk from 'chalk'
-import Heroku from 'heroku-client'
-
-dotenv.config()
-
-assert(process.env.HEROKU_API_TOKEN)
-
-const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
-
-main()
-
-async function main() {
- const apps = chain(await heroku.get('/apps'))
- .orderBy('name')
- .value()
-
- async function ping(app) {
- // ?warmup param has no effect but makes it easier to find these requests in the logs
- const url = `https://${app.name}.herokuapp.com/en?warmup`
- try {
- const response = await got(url)
- console.log(chalk.green(url, response.statusCode))
- } catch (error) {
- console.log(chalk.red(url, error.response.statusCode))
- }
- }
-
- Promise.all(apps.map(ping))
-}
diff --git a/script/remove-stale-staging-apps.js b/script/remove-stale-staging-apps.js
deleted file mode 100755
index 37be1c475f..0000000000
--- a/script/remove-stale-staging-apps.js
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/env node
-
-// [start-readme]
-//
-// This script removes all stale Heroku staging apps that outlasted the closure
-// of their corresponding pull requests, or correspond to spammy pull requests.
-//
-// [end-readme]
-
-import dotenv from 'dotenv'
-import { chain } from 'lodash-es'
-import chalk from 'chalk'
-import Heroku from 'heroku-client'
-import getOctokit from './helpers/github.js'
-
-dotenv.config()
-
-// Check for required Heroku API token
-if (!process.env.HEROKU_API_TOKEN) {
- console.error(
- 'Error! You must have a HEROKU_API_TOKEN environment variable for deployer-level access.'
- )
- process.exit(1)
-}
-// Check for required GitHub PAT
-if (!process.env.GITHUB_TOKEN) {
- console.error('Error! You must have a GITHUB_TOKEN environment variable for repo access.')
- process.exit(1)
-}
-
-const heroku = new Heroku({ token: process.env.HEROKU_API_TOKEN })
-// This helper uses the `GITHUB_TOKEN` implicitly
-const octokit = getOctokit()
-
-const protectedAppNames = ['help-docs']
-
-main()
-
-async function main() {
- const apps = chain(await heroku.get('/apps'))
- .orderBy('name')
- .value()
-
- const prInfoMatch = /^(?:gha-|ghd-)?(?docs(?:-internal)?)-(?\d+)--.*$/
-
- const appsPlusPullIds = apps.map((app) => {
- const match = prInfoMatch.exec(app.name)
- const { repo, pullNumber } = (match || {}).groups || {}
-
- return {
- app,
- repo,
- pullNumber: parseInt(pullNumber, 10) || null,
- }
- })
-
- const appsWithPullIds = appsPlusPullIds.filter((appi) => appi.repo && appi.pullNumber > 0)
-
- const nonMatchingAppNames = appsPlusPullIds
- .filter((appi) => !(appi.repo && appi.pullNumber > 0))
- .map((appi) => appi.app.name)
- .filter((name) => !protectedAppNames.includes(name))
-
- let staleCount = 0
- let spammyCount = 0
- for (const awpi of appsWithPullIds) {
- const { isStale, isSpammy } = await assessPullRequest(awpi.repo, awpi.pullNumber)
-
- if (isSpammy) spammyCount++
- if (isStale) staleCount++
-
- if (isSpammy || isStale) {
- await deleteHerokuApp(awpi.app.name)
- }
- }
-
- const matchingCount = appsWithPullIds.length
- const counts = {
- total: matchingCount,
- alive: matchingCount - staleCount,
- stale: {
- total: staleCount,
- spammy: spammyCount,
- closed: staleCount - spammyCount,
- },
- }
- console.log(`🧮 COUNTS!\n${JSON.stringify(counts, null, 2)}`)
-
- const nonMatchingCount = nonMatchingAppNames.length
- if (nonMatchingCount > 0) {
- console.log(
- '⚠️ 👀',
- chalk.yellow(
- `Non-matching app names (${nonMatchingCount}):\n - ${nonMatchingAppNames.join('\n - ')}`
- )
- )
- }
-}
-
-function displayParams(params) {
- const { owner, repo, pull_number: pullNumber } = params
- return `${owner}/${repo}#${pullNumber}`
-}
-
-async function assessPullRequest(repo, pullNumber) {
- const params = {
- owner: 'github',
- repo: repo,
- pull_number: pullNumber,
- }
-
- let isStale = false
- let isSpammy = false
- try {
- const { data: pullRequest } = await octokit.pulls.get(params)
-
- if (pullRequest && pullRequest.state === 'closed') {
- isStale = true
- console.debug(chalk.green(`STALE: ${displayParams(params)} is closed`))
- }
- } catch (error) {
- // Using a standard GitHub PAT, PRs from spammy users will respond as 404
- if (error.status === 404) {
- isStale = true
- isSpammy = true
- console.debug(chalk.yellow(`STALE: ${displayParams(params)} is spammy or deleted`))
- } else {
- console.debug(chalk.red(`ERROR: ${displayParams(params)} - ${error.message}`))
- }
- }
-
- return { isStale, isSpammy }
-}
-
-async function deleteHerokuApp(appName) {
- try {
- await heroku.delete(`/apps/${appName}`)
- console.log('✅', chalk.green(`Removed stale app "${appName}"`))
- } catch (error) {
- console.log(
- '❌',
- chalk.red(`ERROR: Failed to remove stale app "${appName}" - ${error.message}`)
- )
- }
-}
diff --git a/script/remove-stale-staging-envs.js b/script/remove-stale-staging-envs.js
deleted file mode 100755
index d10f4742fa..0000000000
--- a/script/remove-stale-staging-envs.js
+++ /dev/null
@@ -1,266 +0,0 @@
-#!/usr/bin/env node
-
-// [start-readme]
-//
-// This script removes all stale GitHub deployment environments that outlasted
-// the closure of their corresponding pull requests, or correspond to spammy
-// pull requests.
-//
-// [end-readme]
-
-import dotenv from 'dotenv'
-import chalk from 'chalk'
-import getOctokit from './helpers/github.js'
-
-dotenv.config()
-
-// Check for required GitHub PAT
-if (!process.env.GITHUB_TOKEN) {
- console.error('Error! You must have a GITHUB_TOKEN environment variable for repo access.')
- process.exit(1)
-}
-
-if (!process.env.ELEVATED_TOKEN) {
- console.error(
- 'Error! You must have a ELEVATED_TOKEN environment variable for removing deployment environments.'
- )
- process.exit(1)
-}
-
-if (!process.env.REPO) {
- console.error('Error! You must have a REPO environment variable.')
- process.exit(1)
-}
-
-if (!process.env.RUN_ID) {
- console.error('Error! You must have a RUN_ID environment variable.')
- process.exit(1)
-}
-
-// This helper uses the `GITHUB_TOKEN` implicitly
-const octokit = getOctokit()
-
-const protectedEnvNames = ['production']
-const maxEnvironmentsToProcess = 50
-
-// How long must a PR be closed without being merged to be considered stale?
-const ONE_HOUR = 60 * 60 * 1000
-const prClosureStaleTime = 2 * ONE_HOUR
-
-main()
-
-async function main() {
- const owner = 'github'
- const [repoOwner, repo] = (process.env.REPO || '').split('/')
-
- if (repoOwner !== owner) {
- console.error(`Error! The repository owner must be "${owner}" but was "${repoOwner}".`)
- process.exit(1)
- }
-
- const logUrl = `https://github.com/${owner}/${repo}/actions/runs/${process.env.RUN_ID}`
-
- const prInfoMatch = /^(?:gha-|ghd-)?(?docs(?:-internal)?)-(?\d+)--.*$/
-
- let exceededLimit = false
- let matchingCount = 0
- let staleCount = 0
- let spammyCount = 0
- const nonMatchingEnvNames = []
-
- for await (const response of octokit.paginate.iterator(octokit.repos.getAllEnvironments, {
- owner,
- repo,
- })) {
- const { data: environments } = response
-
- const envsPlusPullIds = environments.map((env) => {
- const match = prInfoMatch.exec(env.name)
- const { repo: repoName, pullNumber } = (match || {}).groups || {}
-
- return {
- env,
- repo: repoName,
- pullNumber: parseInt(pullNumber, 10) || null,
- }
- })
-
- const envsWithPullIds = envsPlusPullIds.filter(
- (eppi) => eppi.repo === repo && eppi.pullNumber > 0
- )
- matchingCount += envsWithPullIds.length
-
- nonMatchingEnvNames.push(
- ...envsPlusPullIds
- .filter((eppi) => !(eppi.repo && eppi.pullNumber > 0))
- .map((eppi) => eppi.env.name)
- .filter((name) => !protectedEnvNames.includes(name))
- )
-
- for (const ewpi of envsWithPullIds) {
- const { isStale, isSpammy } = await assessPullRequest(ewpi.pullNumber)
-
- if (isSpammy) spammyCount++
- if (isStale) staleCount++
-
- if (isSpammy || isStale) {
- await deleteEnvironment(ewpi.env.name)
- }
-
- if (spammyCount + staleCount >= maxEnvironmentsToProcess) {
- exceededLimit = true
- break
- }
- }
-
- if (exceededLimit) {
- console.log(
- '🛑',
- chalk.bgRed(`STOP! Exceeded limit, halting after ${maxEnvironmentsToProcess}.`)
- )
- break
- }
- }
-
- const counts = {
- total: matchingCount,
- alive: matchingCount - staleCount,
- stale: {
- total: staleCount,
- spammy: spammyCount,
- closed: staleCount - spammyCount,
- },
- }
- console.log(`🧮 COUNTS!\n${JSON.stringify(counts, null, 2)}`)
-
- const nonMatchingCount = nonMatchingEnvNames.length
- if (nonMatchingCount > 0) {
- console.log(
- '⚠️ 👀',
- chalk.yellow(
- `Non-matching env names (${nonMatchingCount}):\n - ${nonMatchingEnvNames.join('\n - ')}`
- )
- )
- }
-
- function displayParams(params) {
- const { owner, repo, pull_number: pullNumber } = params
- return `${owner}/${repo}#${pullNumber}`
- }
-
- async function assessPullRequest(pullNumber) {
- const params = {
- owner,
- repo,
- pull_number: pullNumber,
- }
-
- let isStale = false
- let isSpammy = false
- try {
- const { data: pullRequest } = await octokit.pulls.get(params)
-
- if (pullRequest && pullRequest.state === 'closed') {
- const isMerged = pullRequest.merged === true
- const closureAge = Date.now() - Date.parse(pullRequest.closed_at)
- isStale = isMerged || closureAge >= prClosureStaleTime
-
- if (isStale) {
- console.debug(chalk.green(`STALE: ${displayParams(params)} is closed`))
- } else {
- console.debug(
- chalk.blue(`NOT STALE: ${displayParams(params)} is closed but not yet stale`)
- )
- }
- }
- } catch (error) {
- // Using a standard GitHub PAT, PRs from spammy users will respond as 404
- if (error.status === 404) {
- isStale = true
- isSpammy = true
- console.debug(chalk.yellow(`STALE: ${displayParams(params)} is spammy or deleted`))
- } else {
- console.debug(chalk.red(`ERROR: ${displayParams(params)} - ${error.message}`))
- }
- }
-
- return { isStale, isSpammy }
- }
-
- async function deleteEnvironment(envName) {
- try {
- let deploymentCount = 0
-
- // Get all of the Deployments to signal this environment's complete deactivation
- for await (const response of octokit.paginate.iterator(octokit.repos.listDeployments, {
- owner,
- repo,
-
- // In the GitHub API, there can only be one active deployment per environment.
- // For our many staging apps, we must use the unique appName as the environment.
- environment: envName,
- })) {
- const { data: deployments } = response
-
- // Deactivate ALL of the deployments
- for (const deployment of deployments) {
- // Deactivate this Deployment with an 'inactive' DeploymentStatus
- await octokit.repos.createDeploymentStatus({
- owner,
- repo,
- deployment_id: deployment.id,
- state: 'inactive',
- description: 'The app was undeployed',
- log_url: logUrl,
- // The 'ant-man' preview is required for `state` values of 'inactive', as well as
- // the use of the `log_url`, `environment_url`, and `auto_inactive` parameters.
- // The 'flash' preview is required for `state` values of 'in_progress' and 'queued'.
- mediaType: {
- previews: ['ant-man', 'flash'],
- },
- })
-
- // Delete this Deployment
- await octokit.repos.deleteDeployment({
- owner,
- repo,
- deployment_id: deployment.id,
- })
-
- deploymentCount++
- }
- }
-
- // Delete this Environment
- try {
- await octokit.repos.deleteAnEnvironment({
- // Must use a PAT with more elevated permissions than GITHUB_TOKEN can achieve!
- headers: {
- authorization: `token ${process.env.ELEVATED_TOKEN}`,
- },
- owner,
- repo,
- environment_name: envName,
- })
- } catch (error) {
- if (error.status !== 404) {
- throw error
- }
- }
-
- console.log(
- '✅',
- chalk.green(
- `Removed stale deployment environment "${envName}" (${deploymentCount} deployments)`
- )
- )
- } catch (error) {
- console.log(
- '❌',
- chalk.red(
- `ERROR: Failed to remove stale deployment environment "${envName}" - ${error.message}`
- )
- )
- }
- }
-}
diff --git a/tests/rendering/robots-txt.js b/tests/rendering/robots-txt.js
index d7319d663f..c7e3871e93 100644
--- a/tests/rendering/robots-txt.js
+++ b/tests/rendering/robots-txt.js
@@ -35,9 +35,9 @@ describe('robots.txt', () => {
})
})
- it('disallows indexing of herokuapp.com domains', async () => {
+ it('disallows indexing of azurecontainer.io domains', async () => {
const req = {
- hostname: 'docs-internal-12345--my-branch.herokuapp.com',
+ hostname: 'docs-internal-preview-12345-asdfz.azurecontainer.io',
path: '/robots.txt',
}
const res = new MockExpressResponse()
diff --git a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
index 664c43aab5..b66f6d180b 100644
--- a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
+++ b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
@@ -38,7 +38,7 @@ Si eres un miembro de una {% data variables.product.prodname_emu_enterprise %},
1. Solicita el nombre de usuario de la persona a la que estás invitando como colaborador.{% ifversion fpt or ghec %} Si aún no tiene un nombre de usuario, puede registrarse para {% data variables.product.prodname_dotcom %} Para obtener más información, consulta "[Registrar una cuenta {% data variables.product.prodname_dotcom %} nueva](/articles/signing-up-for-a-new-github-account)".{% endif %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658%}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658%}
{% data reusables.repositories.click-collaborators-teams %}
1. Da clic en **Invitar un colaborador**. 
2. En el campo de búsqueda, comienza a teclear el nombre de la persona que quieres invitar, luego da clic en un nombre de la lista de resultados. 
diff --git a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
index 027c3629b8..9c9e625b8d 100644
--- a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
+++ b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
@@ -30,7 +30,7 @@ Aunque se borren las bifurcaciones de los repositorios privados cuando se elimin
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
4. Da clic en {% octicon "trash" aria-label="The trash icon" %} a la derecha del colaborador que quieres eliminar. 
{% else %}
diff --git a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
index 3be45c2a1b..4dfccdaf02 100644
--- a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
+++ b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
@@ -21,7 +21,7 @@ shortTitle: Eliminarte a ti mismo
---
{% data reusables.user_settings.access_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
2. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "repo" aria-label="The repo icon" %} Repositories**.
{% else %}
2. En la barra lateral izquierda, haz clic en **Repositories** (Repositorios). 
diff --git a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
index d8335fc89f..5c314444e4 100644
--- a/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
+++ b/translations/es-ES/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
@@ -22,7 +22,7 @@ You may want to use a dark theme to reduce power consumption on certain devices,
{% note %}
-**Note:** The colorblind themes and light high contrast theme are currently in public beta. For more information on enabling features in public beta, see "[Exploring early access releases with feature preview](/get-started/using-github/exploring-early-access-releases-with-feature-preview)."
+**Note:** The colorblind themes are currently in public beta. For more information on enabling features in public beta, see "[Exploring early access releases with feature preview](/get-started/using-github/exploring-early-access-releases-with-feature-preview)."
{% endnote %}
diff --git a/translations/es-ES/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md b/translations/es-ES/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
index 36a4e1b60b..d2da20b22b 100644
--- a/translations/es-ES/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
+++ b/translations/es-ES/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
@@ -69,7 +69,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
```
@@ -106,7 +106,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Run the Gradle package task
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: -b ci.gradle package
```
@@ -135,7 +135,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
- uses: actions/upload-artifact@v2
diff --git a/translations/es-ES/content/actions/creating-actions/dockerfile-support-for-github-actions.md b/translations/es-ES/content/actions/creating-actions/dockerfile-support-for-github-actions.md
index 6ca54788a1..3795a144fd 100644
--- a/translations/es-ES/content/actions/creating-actions/dockerfile-support-for-github-actions.md
+++ b/translations/es-ES/content/actions/creating-actions/dockerfile-support-for-github-actions.md
@@ -47,7 +47,7 @@ Si defines el `entrypoint` en un archivo de metadatos de una acción, este inval
La instrucción `ENTRYPOINT` de Docker tiene una forma de _shell_ y una de _exec_. La documentación de `ENTRYPOINT` de Docker recomienda utilizar la forma de _exec_ de la instrucción `ENTRYPOINT`. Para obtener más información acerca de las formas _exec_ y _shell_, consulta la sección [ENTRYPOINT reference](https://docs.docker.com/engine/reference/builder/#entrypoint) en la documentación de Docker.
-You should not use `WORKDIR` to specify your entrypoint in your Dockerfile. Instead, you should use an absolute path. For more information, see [WORKDIR](#workdir).
+No deberías utilizar `WORKDIR` para especificar el punto de entrada en tu Dockerfile. En vez de esto, deberías utilizar una ruta absoluta. Para obtener más información, consulta la sección [WORKDIR](#workdir).
Si configuras tu contenedor para que utilice la forma _exec_ de la instrucción `ENTRYPOINT`, entonces el `args` configurado en el archivo de metadatos de la acción no se ejecutará en un shell de comandos. Si el `args` de la accion contiene una variable de ambiente, ésta no se sustituirá. Por ejemplo, utilizar el siguiente formato _exec_ no imprimirá los valores almacenados en `$GITHUB_SHA`, si no que imprimirá `"$GITHUB_SHA"`.
@@ -101,7 +101,7 @@ Error response from daemon: OCI runtime create failed: container_linux.go:348: s
### CMD
-If you define `args` in the action's metadata file, `args` will override the `CMD` instruction specified in the `Dockerfile`. Para obtener más información, consulta la sección "[Sintaxis de metadatos para {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions#runsargs)".
+Si defines el `args` en el archivo de metadatos de la acción, `args` invalidará la instrucción `CMD` especificada en el `Dockerfile`. Para obtener más información, consulta la sección "[Sintaxis de metadatos para {% data variables.product.prodname_actions %}](/actions/creating-actions/metadata-syntax-for-github-actions#runsargs)".
Si utilizas `CMD` en tu `Dockerfile`, sigue estos lineamientos:
diff --git a/translations/es-ES/content/actions/creating-actions/metadata-syntax-for-github-actions.md b/translations/es-ES/content/actions/creating-actions/metadata-syntax-for-github-actions.md
index 2eaa836207..3427268d05 100644
--- a/translations/es-ES/content/actions/creating-actions/metadata-syntax-for-github-actions.md
+++ b/translations/es-ES/content/actions/creating-actions/metadata-syntax-for-github-actions.md
@@ -21,7 +21,7 @@ miniTocMaxHeadingLevel: 4
## Acerca de la nueva sintaxis YAML para {% data variables.product.prodname_actions %}
-All actions require a metadata file. El nombre del archivo de metadatos debe ser `action.yml` o `action.yaml`. The data in the metadata file defines the inputs, outputs, and runs configuration for your action.
+Todas las acciones requieren un archivo de metadatos. El nombre del archivo de metadatos debe ser `action.yml` o `action.yaml`. Los datos en el archivo de metadatos definen las configuraciones de entradas, salidas y ejecuciones de tu acción.
Los archivos de metadatos de acción usan la sintaxis YAML. Si eres nuevo en YAML, puedes leer "[Aprender YAML en cinco minutos](https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes)".
@@ -41,7 +41,7 @@ Los archivos de metadatos de acción usan la sintaxis YAML. Si eres nuevo en YAM
**Opcional** Los parámetros de entrada te permiten especificar datos que la acción espera para usar durante el tiempo de ejecución. {% data variables.product.prodname_dotcom %} almacena parámetros de entrada como variables de entorno. Las Id de entrada con letras mayúsculas se convierten a minúsculas durante el tiempo de ejecución. Recomendamos usar Id de entrada en minúsculas.
-### Example: Specifying inputs
+### Ejemplo: Especificar las entradas
Este ejemplo configura dos entradas: numOctocats y octocatEyeColor. La entrada numOctocats no se requiere y se predeterminará a un valor de '1'. Se requiere la entrada octocatEyeColor y no tiene un valor predeterminado. Los archivos de flujo de trabajo que usan esta acción deben usar la palabra clave `with` (con) para establecer un valor de entrada para octocatEyeColor. Para obtener información sobre la sintaxis `with` (con), consulta "[Sintaxis de flujo de trabajo para {% data variables.product.prodname_actions %}](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepswith)".
@@ -84,13 +84,13 @@ Por ejemplo, si un flujo de trabajo definió las entradas de `numOctocats` y `oc
**Opcional** Si se utiliza el parámetro de entrada, esta `string` se registrará como un mensaje de advertencia. Puedes utilizar esta advertencia para notificar a los usuarios que la entrada es obsoleta y mencionar cualquier alternativa.
-## `outputs` for Docker container and JavaScript actions
+## `outputs` para las acciones de contenedores de Docker y JavaScript
**Opcional** Los parámetros de salida te permiten declarar datos que una acción establece. Las acciones que se ejecutan más tarde en un flujo de trabajo pueden usar el conjunto de datos de salida en acciones de ejecución anterior. Por ejemplo, si tuviste una acción que realizó la adición de dos entradas (x + y = z), la acción podría dar como resultado la suma (z) para que otras acciones la usen como entrada.
Si no declaras una salida en tu archivo de metadatos de acción, todavía puedes configurar las salidas y utilizarlas en un flujo de trabajo. Para obtener más información acerca de la configuración de salidas en una acción, consulta "[Comandos de flujo de trabajo para {% data variables.product.prodname_actions %}](/actions/reference/workflow-commands-for-github-actions/#setting-an-output-parameter)".
-### Example: Declaring outputs for Docker container and JavaScript actions
+### Ejemplo: Declarar las salidas para las acciones de contenedores de Docker y JavaScript
```yaml
outputs:
@@ -108,9 +108,9 @@ outputs:
## `outputs` para las acciones compuestas
-**Optional** `outputs` use the same parameters as `outputs.` and `outputs..description` (see "[`outputs` for Docker container and JavaScript actions](#outputs-for-docker-container-and-javascript-actions)"), but also includes the `value` token.
+Las `outputs` **opcionales** utilizan los mismos parámetros que `outputs.` y `outputs..description` (consulta la sección de "[`outputs` para acciones de contenedores de Docker y JavaScript](#outputs-for-docker-container-and-javascript-actions)"), pero también incluye el token `value`.
-### Example: Declaring outputs for composite actions
+### Ejemplo: Declarar las salidas para las acciones compuestas
{% raw %}
```yaml
@@ -135,13 +135,13 @@ Para obtener más información sobre cómo utilizar la sintaxis de contexto, con
## `runs`
-**Required** Specifies whether this is a JavaScript action, a composite action, or a Docker container action and how the action is executed.
+**Requerido** Especifica si es una acción de JavaScript, una acción compuesta o una acción de contenedor de Docker y cómo se ejecuta esta.
## `runs` para acciones de JavaScript
**Requerido** Configura la ruta al código de la acción y el tiempo de ejecución que se utiliza para ejecutarlo.
-### Example: Using Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}v16{% else %}v12{% endif %}
+### Ejemplo: Utilizar Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}v16{% else %}v12{% endif %}
```yaml
runs:
@@ -162,7 +162,7 @@ runs:
### `runs.pre`
-**Opcional** Te permite ejecutar un script al inicio de un job, antes de que la acción `main:` comience. Por ejemplo, puedes utilizar `pre:` para ejecutar un script de configuración de pre-requisitos. El tiempo de ejecución que ese especifica con la sintaxis de [`using`](#runsusing) ejecutará este archivo. The `pre:` action always runs by default but you can override this using [`runs.pre-if`](#runspre-if).
+**Opcional** Te permite ejecutar un script al inicio de un job, antes de que la acción `main:` comience. Por ejemplo, puedes utilizar `pre:` para ejecutar un script de configuración de pre-requisitos. El tiempo de ejecución que ese especifica con la sintaxis de [`using`](#runsusing) ejecutará este archivo. La acción `pre` siempre se ejecuta predeterminadamente, pero puedes invalidar esto utilizando [`runs.pre-if`](#runspre-if).
En este ejemplo, la acción `pre:` ejecuta un script llamado `setup.js`:
@@ -365,11 +365,11 @@ runs:
```
{% endif %}
-## `runs` for Docker container actions
+## `runs` para las acciones de contenedores de Docker
-**Required** Configures the image used for the Docker container action.
+**Requerido** Configura la imagen que se utiliza para la acción de contenedores de Docker.
-### Example: Using a Dockerfile in your repository
+### Ejemplo: Utilizar un Dockerfile en tu repositorio
```yaml
runs:
@@ -377,7 +377,7 @@ runs:
image: 'Dockerfile'
```
-### Example: Using public Docker registry container
+### Ejemplo: Utilizar un contenedor de registro público de Docker
```yaml
runs:
@@ -391,7 +391,7 @@ runs:
### `runs.pre-entrypoint`
-**Opcional** Te permite ejecutar un script antes de que comience la acción `entrypoint`. Por ejemplo, puedes utilizar `pre-entrypoint` para ejecutar un script de configuración de pre-requisitos. {% data variables.product.prodname_actions %} utiliza `docker run` para lanzar esta acción, y ejecuta el script dentro de un contenedor nuevo que utiliza la misma imagen base. Esto significa que el estado del tiempo de ejecución difiere de el contenedor principal `entrypoint`, y se deberá acceder a cualquier estado que requieras ya sea en el espacio de trabajo, `HOME`, o como una variable `STATE_`. The `pre-entrypoint:` action always runs by default but you can override this using [`runs.pre-if`](#runspre-if).
+**Opcional** Te permite ejecutar un script antes de que comience la acción `entrypoint`. Por ejemplo, puedes utilizar `pre-entrypoint` para ejecutar un script de configuración de pre-requisitos. {% data variables.product.prodname_actions %} utiliza `docker run` para lanzar esta acción, y ejecuta el script dentro de un contenedor nuevo que utiliza la misma imagen base. Esto significa que el estado del tiempo de ejecución difiere de el contenedor principal `entrypoint`, y se deberá acceder a cualquier estado que requieras ya sea en el espacio de trabajo, `HOME`, o como una variable `STATE_`. La acción `pre-entrypoint:` siempre se ejecuta predeterminadamente, pero puedes anular esto utilizando [`runs.pre-if`](#runspre-if).
El tiempo de ejecución que ese especifica con la sintaxis de [`using`](#runsusing) ejecutará este archivo.
@@ -423,7 +423,7 @@ Para obtener más información acerca de cómo se ejecuta el `entrypoint`, consu
### `post-entrypoint`
-**Opcional** Te permite ejecutar un script de limpieza una vez que se haya completado la acción de `runs.entrypoint`. {% data variables.product.prodname_actions %} utiliza `docker run` para lanzar esta acción. Ya que {% data variables.product.prodname_actions %} ejecuta el script dentro de un contenedor nuevo utilizando la misma imagen base, el estado de tiempo de ejecución es diferente del contenedor principal de `entrypoint`. Puedes acceder a cualquier estado que necesites, ya sea en el espacio de trabajo, `HOME`, o como una variable `STATE_`. The `post-entrypoint:` action always runs by default but you can override this using [`runs.post-if`](#runspost-if).
+**Opcional** Te permite ejecutar un script de limpieza una vez que se haya completado la acción de `runs.entrypoint`. {% data variables.product.prodname_actions %} utiliza `docker run` para lanzar esta acción. Ya que {% data variables.product.prodname_actions %} ejecuta el script dentro de un contenedor nuevo utilizando la misma imagen base, el estado de tiempo de ejecución es diferente del contenedor principal de `entrypoint`. Puedes acceder a cualquier estado que necesites, ya sea en el espacio de trabajo, `HOME`, o como una variable `STATE_`. La acción `post-entrypoint:` siempre se ejecuta predeterminadamente, pero puedes anular esto utilizando [`runs.post-if`](#runspost-if).
```yaml
runs:
@@ -447,7 +447,7 @@ Si necesitas pasar variables de ambiente a una acción, asegúrate que ésta eje
Para obtener más información sobre el uso de la instrucción `CMD` con {% data variables.product.prodname_actions %}, consulta la sección "[Soporte de Dockerfile para {% data variables.product.prodname_actions %}](/actions/creating-actions/dockerfile-support-for-github-actions/#cmd)".
-#### Example: Defining arguments for the Docker container
+#### Ejemplo: Definir argumentos para el contenedor de Docker
{% raw %}
```yaml
@@ -465,7 +465,7 @@ runs:
Puedes usar un color y un icono de [Pluma](https://feathericons.com/) para crear una insignia que personalice y diferencie tu acción. Los distintivos se muestran junto al nombre de tu acción en [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions).
-### Example: Configuring branding for an action
+### Ejemplo: Configurar la personalización de una acción
```yaml
branding:
diff --git a/translations/es-ES/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md b/translations/es-ES/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
index b1bd8075ff..52cc87e50c 100644
--- a/translations/es-ES/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
+++ b/translations/es-ES/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
@@ -37,19 +37,18 @@ For more information, see "[About self-hosted runners](/github/automating-your-w
You can add self-hosted runners to a single repository. To add a self-hosted runner to a user repository, you must be the repository owner. For an organization repository, you must be an organization owner or have admin access to the repository. For information about how to add a self-hosted runner with the REST API, see "[Self-hosted runners](/rest/reference/actions#self-hosted-runners)."
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
1. Click **New self-hosted runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. Under {% ifversion fpt or ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
+1. Under {% ifversion ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
{% data reusables.github-actions.self-hosted-runner-check-installation-success %}
@@ -58,19 +57,18 @@ You can add self-hosted runners to a single repository. To add a self-hosted run
You can add self-hosted runners at the organization level, where they can be used to process jobs for multiple repositories in an organization. To add a self-hosted runner to an organization, you must be an organization owner. For information about how to add a self-hosted runner with the REST API, see "[Self-hosted runners](/rest/reference/actions#self-hosted-runners)."
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
1. Click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. Under {% ifversion fpt or ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
+1. Under {% ifversion ghes > 3.1 or ghae %}"Runners", click **Add new**, then click **New runner**.{% elsif ghes < 3.2 %}"Self-hosted runners", click **Add runner**."{% endif %}
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
@@ -86,7 +84,7 @@ You can add self-hosted runners at the organization level, where they can be use
New runners are assigned to the default group. You can modify the runner's group after you've registered the runner. For more information, see "[Managing access to self-hosted runners](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)."
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
To add a self-hosted runner to an enterprise account, you must be an enterprise owner. For information about how to add a self-hosted runner with the REST API, see the [Enterprise Administration GitHub Actions APIs](/rest/reference/enterprise-admin#github-actions).
{% data reusables.enterprise-accounts.access-enterprise %}
@@ -95,8 +93,7 @@ To add a self-hosted runner to an enterprise account, you must be an enterprise
{% data reusables.enterprise-accounts.actions-runners-tab %}
1. Click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
To add a self-hosted runner at the enterprise level of {% data variables.product.product_location %}, you must be a site administrator.
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
@@ -105,11 +102,9 @@ To add a self-hosted runner at the enterprise level of {% data variables.product
1. Click **Add new**, then click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
-{% ifversion ghec or ghae or ghes %}
{% data reusables.github-actions.self-hosted-runner-check-installation-success %}
{% data reusables.github-actions.self-hosted-runner-public-repo-access %}
-{% endif %}
### Making enterprise runners available to repositories
diff --git a/translations/es-ES/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md b/translations/es-ES/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
index ebeb8d58da..12f78de075 100644
--- a/translations/es-ES/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
+++ b/translations/es-ES/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
@@ -46,7 +46,7 @@ Los ejecutores auto-hospedados se asignan automáticamente al grupo predetermina
Cuando creas un grupo, debes elegir una política que defina qué repositorios tienen acceso al grupo ejecutor.
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runner-groups %}
@@ -61,12 +61,11 @@ Cuando creas un grupo, debes elegir una política que defina qué repositorios t
{% endwarning %}
{% data reusables.github-actions.self-hosted-runner-create-group %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. En la sección de "Ejecutores auto-hospedados", haz clic en **Agregar nuevo** y luego en **Grupo nuevo**.
+1. Under {% ifversion ghes > 3.1 or ghae %}"Runners"{% elsif ghes < 3.2 %}"Self-hosted runners"{% endif %}, click **Add new**, and then **New group**.

1. Ingresa un nombre para tu grupo de ejecutores y asigna una política para el acceso al repositorio.
@@ -95,7 +94,7 @@ Los ejecutores auto-hospedados se asignan automáticamente al grupo predetermina
Cuando creas un grupo, debes elegir la política que defina qué organizaciones tienen acceso al grupo de ejecutores.
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
@@ -113,8 +112,7 @@ Cuando creas un grupo, debes elegir la política que defina qué organizaciones
{% endwarning %}
{% data reusables.github-actions.self-hosted-runner-create-group %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
@@ -144,7 +142,7 @@ Cuando creas un grupo, debes elegir la política que defina qué organizaciones
## Cambiar la política de acceso de un grupo de ejecutores auto-hospedados
Puedes actualizar la política de acceso de un grupo ejecutor o renombrarlo.
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-groups-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-groups-selection %}
1. Modifica las opciones de acceso o cambia el nombre del grupo de ejecutores.
@@ -158,8 +156,7 @@ Puedes actualizar la política de acceso de un grupo ejecutor o renombrarlo.
Para obtener más información, consulta "[Acerca de los ejecutores autoalojados](/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories)."
{% endwarning %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-configure-runner-group-access %}
{% endif %}
@@ -181,17 +178,18 @@ Could not find any self-hosted runner group named "rg-runnergroup".
## Mover un ejecutor auto-hospedado a un grupo
Si no especificas un grupo de ejecutores durante el proceso de registro, tus ejecutores auto-hospedados nuevos se asignarán automáticamente al grupo predeterminado y después se moverán a otro grupo.
-{% ifversion ghec or ghes > 3.1 or ghae %}
+
{% data reusables.github-actions.self-hosted-runner-navigate-to-org-enterprise %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
1. En la lista de "Ejecutores", haz clic en aquél que quieras configurar.
2. Selecciona el menú desplegable del grupo de ejecutores.
3. En "Mover el ejecutor al grupo", elige un grupo destino para el ejecutor.
-{% endif %}
-{% ifversion ghes < 3.2 or ghae %}
-1. En la sección de "Ejecutores auto-hospedados" de la página de configuración, ubica el grupo actual del ejecutor que quieres mover y expande la lista de miembros del grupo. 
+{% elsif ghae or ghes < 3.4 %}
+1. In the {% ifversion ghes > 3.1 or ghae %}"Runner groups"{% elsif ghes < 3.2 %}"Self-hosted runners"{% endif %} section of the settings page, locate the current group of the runner you want to move and expand the list of group members. 
2. Selecciona la casilla junto al ejecutor auto-hospedado y da clic en **Mover a grupo** para ver los destinos disponibles. 
3. Para mover el ejecutor, da clic en el grupo de destino. 
{% endif %}
+
## Eliminar un grupo de ejecutores auto-hospedados
Los ejecutores auto-hospedados se devuelven automáticamente al grupo predeterminado cuando su grupo se elimina.
@@ -201,8 +199,7 @@ Los ejecutores auto-hospedados se devuelven automáticamente al grupo predetermi
1. En la lista de grupos, a la derecha del grupo que quieras borrar, haz clic en {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
2. Para eliminar el grupo, da clic en **Eliminar grupo**.
3. Revisa el mensaje de confirmación y da clic en **Eliminar este grupo de ejecutores**.
-{% endif %}
-{% ifversion ghes < 3.2 or ghae %}
+{% elsif ghes < 3.2 %}
1. En la sección de "Ejecutores auto-hospedados" de la página de ajustes, ubica el grupo que quieras borrar y haz clic en el botón {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}. 
1. Para eliminar el grupo, da clic en **Eliminar grupo**. 
diff --git a/translations/es-ES/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md b/translations/es-ES/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
index 60cdee66e1..aad261e14c 100644
--- a/translations/es-ES/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
+++ b/translations/es-ES/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
@@ -30,20 +30,20 @@ shortTitle: Elimina ejecutores auto-hospedados
Para eliminar un ejecutor autoalojado de un repositorio de usuario, debes ser el propietario del repositorio. Para los repositorios organizacionales, debes ser el propietario de la organización o tener acceso de administrador a éste. Recomendamos que también tengas acceso a la máquina del ejecutor auto-hospedado. Para obtener más información sobre cómo eliminar un ejecutor auto-hospedado con la API de REST, consulta la sección "[Ejecutores auto-hospedados](/rest/reference/actions#self-hosted-runners)".
{% data reusables.github-actions.self-hosted-runner-reusing %}
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner %}
{% endif %}
+
## Eliminar el ejecutor de una organización
{% note %}
@@ -57,19 +57,20 @@ Para eliminar un ejecutor autoalojado de un repositorio de usuario, debes ser el
Para eliminar el ejecutor auto-hospedado de una organización, debes ser el propietario de la misma. Recomendamos que también tengas acceso a la máquina del ejecutor auto-hospedado. Para obtener más información sobre cómo eliminar un ejecutor auto-hospedado con la API de REST, consulta la sección "[Ejecutores auto-hospedados](/rest/reference/actions#self-hosted-runners)".
{% data reusables.github-actions.self-hosted-runner-reusing %}
-{% ifversion fpt or ghes > 3.1 or ghae or ghec %}
+{% ifversion fpt or ghes > 3.3 or ghec %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% else %}
+{% elsif ghes < 3.4 or ghae %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner %}
{% endif %}
+
## Eliminar un ejecutor de una empresa
{% ifversion fpt %}
@@ -85,19 +86,17 @@ Si utilizas
{% endnote %}
-{% data reusables.github-actions.self-hosted-runner-reusing %}
+To remove a self-hosted runner from an enterprise, you must be an enterprise owner. Recomendamos que también tengas acceso a la máquina del ejecutor auto-hospedado. For information about how to remove a self-hosted runner with the REST API, see the [Enterprise Administration GitHub Actions APIs](/rest/reference/enterprise-admin#github-actions).
-{% ifversion ghec %}
-Para eliminar a un ejecutor auot-hospedado de una cuenta empresarial, debes ser un propietario de la empresa. Recomendamos que también tengas acceso a la máquina del ejecutor auto-hospedado. Para obtener más información sobre cómo agregar un ejecutor auto-hospedado con la API de REST, consulta las [API de GitHub Actions para la Administración Empresarial](/rest/reference/enterprise-admin#github-actions).
+{% data reusables.github-actions.self-hosted-runner-reusing %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
{% data reusables.enterprise-accounts.actions-runners-tab %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% elsif ghae or ghes %}
-Para eliminar un ejecutor auto-hospedado a nivel empresarial de
-{% data variables.product.product_location %}, debes ser un propietario de empresa. Recomendamos que también tengas acceso a la máquina del ejecutor auto-hospedado.
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
diff --git a/translations/es-ES/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md b/translations/es-ES/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
index b1e805297d..e3b4ce03b5 100644
--- a/translations/es-ES/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
+++ b/translations/es-ES/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
@@ -19,13 +19,13 @@ Para obtener información sobre cómo utilizar las etiquetas para rutear jobs a
{% data reusables.github-actions.self-hosted-runner-management-permissions-required %}
## Crear una etiqueta personalizada
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
1. En la sección de "Etiquetas", haz clic en {% octicon "gear" aria-label="The Gear icon" %}.
1. En el campo de "Encuentra o crea una etiqueta", teclea el nombre de tu etiqueta nueva y haz clic en **Crear etiqueta nueva**. La etiqueta personalizada se creará y asignará al ejecutor auto-hospedado. Las etiquetas personalizadas pueden eliminarse de los ejecutores auto-hospedados, pero actualmente no pueden eliminarse manualmente. {% data reusables.github-actions.actions-unused-labels %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
@@ -34,35 +34,38 @@ Para obtener información sobre cómo utilizar las etiquetas para rutear jobs a
La etiqueta personalizada se creará y asignará al ejecutor auto-hospedado. Las etiquetas personalizadas pueden eliminarse de los ejecutores auto-hospedados, pero actualmente no pueden eliminarse manualmente. {% data reusables.github-actions.actions-unused-labels %}
{% endif %}
+
## Asignar una etiqueta a un ejecutor auto-hospedado
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.runner-label-settings %}
1. Para asignar una etiqueta a tu ejecutor auto-hospedado, en el campo de "Encuentra o crea una etiqueta", haz clic en ella.
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %}
1. Da clic en la etiqueta para asignarla a tu ejecutor auto-hospedado.
{% endif %}
+
## Eliminar una etiqueta personalizada de un ejecutor auto-hospedado
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.runner-label-settings %}
1. En el campo "Encuentra o crea una etiqueta", las etiquetas asignadas se marcan con el
icono {% octicon "check" aria-label="The Check icon" %}. Haz clic en una etiqueta marcada para desasignarla de tu ejecutor auto-hospedado.
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %}
1. Da clic en la etiqueta asignada para eliminarla de tu ejecutor auto-hospedado. {% data reusables.github-actions.actions-unused-labels %}
{% endif %}
+
## Utilizar el script de configuración para crear y asignar etiquetas
Puedes utilizar el script de configuración en el ejecutor auto-hospedado para crear y asignar etiquetas personalizadas. Por ejemplo, este comando asigna una etiqueta llamada `gpu` al ejecutor auto-hospedado.
diff --git a/translations/es-ES/content/actions/learn-github-actions/expressions.md b/translations/es-ES/content/actions/learn-github-actions/expressions.md
index 091664c3ff..dc9f053988 100644
--- a/translations/es-ES/content/actions/learn-github-actions/expressions.md
+++ b/translations/es-ES/content/actions/learn-github-actions/expressions.md
@@ -50,12 +50,12 @@ env:
Como parte de una expresión, puedes usar tipos de datos `boolean`, `null`, `number` o `string`.
-| Tipo de datos | Valor literal |
-| ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `boolean` | `verdadero` o `falso` |
-| `null` | `null` |
-| `number` | Cualquier formato de número compatible con JSON. |
-| `secuencia` | You don't need to enclose strings in {% raw %}${{{% endraw %} and {% raw %}}}{% endraw %}. However, if you do, you must use single quotes around the string and escape literal single quotes with an additional single quote. |
+| Tipo de datos | Valor literal |
+| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `boolean` | `verdadero` o `falso` |
+| `null` | `null` |
+| `number` | Cualquier formato de número compatible con JSON. |
+| `secuencia` | You don't need to enclose strings in `{% raw %}${{{% endraw %}` and `{% raw %}}}{% endraw %}`. However, if you do, you must use single quotes (`'`) around the string. To use a literal single quote, escape the literal single quote using an additional single quote (`''`). Wrapping with double quotes (`"`) will throw an error. |
#### Ejemplo
diff --git a/translations/es-ES/content/actions/publishing-packages/publishing-java-packages-with-gradle.md b/translations/es-ES/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
index 12d581031b..c1397f7825 100644
--- a/translations/es-ES/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
+++ b/translations/es-ES/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
@@ -96,7 +96,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env:
@@ -167,7 +167,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env:
@@ -246,7 +246,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env: {% raw %}
diff --git a/translations/es-ES/content/actions/security-guides/automatic-token-authentication.md b/translations/es-ES/content/actions/security-guides/automatic-token-authentication.md
index b86900fd20..8394d835de 100644
--- a/translations/es-ES/content/actions/security-guides/automatic-token-authentication.md
+++ b/translations/es-ES/content/actions/security-guides/automatic-token-authentication.md
@@ -85,8 +85,8 @@ The following table shows the permissions granted to the `GITHUB_TOKEN` by defau
| actions | read/write | none | read |
| checks | read/write | none | read |
| contents | read/write | read | read |
-| deployments | read/write | none | read |
-| id-token | read/write | none | read |
+| deployments | read/write | none | read |{% ifversion fpt or ghec %}
+| id-token | read/write | none | read |{% endif %}
| issues | read/write | none | read |
| metadata | read | read | read |
| packages | read/write | none | read |
diff --git a/translations/es-ES/content/actions/security-guides/security-hardening-for-github-actions.md b/translations/es-ES/content/actions/security-guides/security-hardening-for-github-actions.md
index 80516f0aec..b9f7499abf 100644
--- a/translations/es-ES/content/actions/security-guides/security-hardening-for-github-actions.md
+++ b/translations/es-ES/content/actions/security-guides/security-hardening-for-github-actions.md
@@ -202,6 +202,10 @@ El mismo principio que se describió anteriormente para utilizar acciones de ter
{% data reusables.actions.outside-collaborators-internal-actions %} Para obtener más información, consulta la sección "[Compartir acciones y flujos de trabajo con tu empresa](/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise)".
{% endif %}
+## Using OpenSSF Scorecards to secure workflows
+
+[Scorecards](https://github.com/ossf/scorecard) is an automated security tool that flags risky supply chain practices. You can use the [Scorecards action](https://github.com/marketplace/actions/ossf-scorecard-action) and [starter workflow](https://github.com/actions/starter-workflows) to follow best security practices. Once configured, the Scorecards action runs automatically on repository changes, and alerts developers about risky supply chain practices using the built-in code scanning experience. The Scorecards project runs a number of checks, including script injection attacks, token permissions, and pinned actions.
+
## Impacto potencial de un ejecutor puesto en riesgo
Estas secciones consideran algunos de los pasos que puede llevar a cabo un atacante si pueden ejecutar comandos malintencionados en un ejecutor de {% data variables.product.prodname_actions %}.
diff --git a/translations/es-ES/content/actions/using-workflows/events-that-trigger-workflows.md b/translations/es-ES/content/actions/using-workflows/events-that-trigger-workflows.md
index 92fad1018d..4425732fab 100644
--- a/translations/es-ES/content/actions/using-workflows/events-that-trigger-workflows.md
+++ b/translations/es-ES/content/actions/using-workflows/events-that-trigger-workflows.md
@@ -917,8 +917,6 @@ on:
```yaml
on:
push:
- types:
- - opened
branches:
- 'releases/**'
paths:
@@ -960,8 +958,6 @@ on:
```yaml
on:
push:
- types:
- - opened
branches:
- 'releases/**'
paths:
@@ -996,9 +992,9 @@ on:
### `lanzamiento`
-| Carga del evento Webhook | Tipos de actividad | `GITHUB_SHA` | `GITHUB_REF` |
-| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------- |
-| [`lanzamiento`](/developers/webhooks-and-events/webhooks/webhook-events-and-payloads/#release) | - `published`
- `unpublished`
- `created`
- `edited`
- `deleted`
- `prereleased`
- `released` | Última confirmación en el lanzamiento etiquetado | Etiqueta de lanzamiento |
+| Carga del evento Webhook | Tipos de actividad | `GITHUB_SHA` | `GITHUB_REF` |
+| ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------- |
+| [`lanzamiento`](/developers/webhooks-and-events/webhooks/webhook-events-and-payloads/#release) | - `published`
- `unpublished`
- `created`
- `edited`
- `deleted`
- `prereleased`
- `released` | Última confirmación en el lanzamiento etiquetado | Tag ref of release `refs/tags/` |
{% note %}
diff --git a/translations/es-ES/content/actions/using-workflows/workflow-syntax-for-github-actions.md b/translations/es-ES/content/actions/using-workflows/workflow-syntax-for-github-actions.md
index 2d62328779..f3c3379e0b 100644
--- a/translations/es-ES/content/actions/using-workflows/workflow-syntax-for-github-actions.md
+++ b/translations/es-ES/content/actions/using-workflows/workflow-syntax-for-github-actions.md
@@ -830,7 +830,7 @@ services:
image: ghcr.io/owner/myservice1
credentials:
username: ${{ github.actor }}
- password: ${{ secrets.ghcr_token }}
+ password: ${{ secrets.github_token }}
myservice2:
image: dockerhub_org/myservice2
credentials:
diff --git a/translations/es-ES/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md b/translations/es-ES/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
index 61e750cc30..6afb61b812 100644
--- a/translations/es-ES/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
+++ b/translations/es-ES/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
@@ -699,7 +699,7 @@ All Storage tests passed
`ghe-migrator` is a hi-fidelity tool to help you migrate from one GitHub instance to another. You can consolidate your instances or move your organization, users, teams, and repositories from GitHub.com to {% data variables.product.prodname_enterprise %}.
-For more information, please see our guide on [migrating user, organization, and repository data](/enterprise/admin/guides/migrations/).
+For more information, please see our guides on [migrating data to and from your enterprise](/enterprise/admin/user-management/migrating-data-to-and-from-your-enterprise/).
### git-import-detect
diff --git a/translations/es-ES/content/admin/enterprise-management/configuring-clustering/differences-between-clustering-and-high-availability-ha.md b/translations/es-ES/content/admin/enterprise-management/configuring-clustering/differences-between-clustering-and-high-availability-ha.md
index 81a40ba9f7..31a26cb6ef 100644
--- a/translations/es-ES/content/admin/enterprise-management/configuring-clustering/differences-between-clustering-and-high-availability-ha.md
+++ b/translations/es-ES/content/admin/enterprise-management/configuring-clustering/differences-between-clustering-and-high-availability-ha.md
@@ -34,7 +34,7 @@ High Availability (HA) and Clustering both provide redundancy by eliminating the
## Backups and disaster recovery
-Neither HA or Clustering should be considered a replacement for regular backups. For more information, see "[Configuring backups on your appliance](/enterprise/admin/guides/installation/configuring-backups-on-your-appliance)."
+Neither HA nor Clustering should be considered a replacement for regular backups. For more information, see "[Configuring backups on your appliance](/enterprise/admin/guides/installation/configuring-backups-on-your-appliance)."
## Monitoring
diff --git a/translations/es-ES/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md b/translations/es-ES/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
index 0a28fc6e08..13fc45c5ab 100644
--- a/translations/es-ES/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
+++ b/translations/es-ES/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
@@ -47,7 +47,7 @@ Probamos y damos compatibilidad oficial de los siguientes IdP. Para el SSO de SA
| -------------------------------------------- |:--------------------------------------------------------------:|:-------------------------------------------------------------:|
| Active Directory Federation Services (AD FS) | {% octicon "check-circle-fill" aria-label= "The check icon" %} | |
| Azure Active Directory (Azure AD) | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %}
-| Okta | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %}
+| Okta | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| OneLogin | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| PingOne | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| Shibboleth | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
diff --git a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
index 4b55fc72f2..d36d729ba3 100644
--- a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
+++ b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
@@ -18,7 +18,7 @@ shortTitle: Llaves de implementación
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
3. In the "Security" section of the sidebar, click **{% octicon "key" aria-label="The key icon" %} Deploy keys**.
{% else %}
3. En la barra lateral izquierda, haz clic en **Deploy keys** (Llaves de implementación). 
diff --git a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
index fd74f77479..d71f381530 100644
--- a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
+++ b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
@@ -22,7 +22,7 @@ shortTitle: Registro de seguridad
La bitácora de seguridad lista todas las acciones que se llevaron a cabo en los últimos 90 días.
{% data reusables.user_settings.access_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
1. En la barra lateral de la configuración de usuario, da clic en **Registro de Seguridad**. 
diff --git a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
index df9cf5e4e1..8c0f496ee8 100644
--- a/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
+++ b/translations/es-ES/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
@@ -24,7 +24,7 @@ shortTitle: Actualizar las credenciales de acceso
1. Para solicitar una contraseña nueva, visita {% ifversion fpt or ghec %}https://{% data variables.product.product_url %}/password_reset{% else %}`https://{% data variables.product.product_url %}/password_reset`{% endif %}.
2. Ingresa la dirección de correo electrónico asociada con tu cuenta de {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} y luego haz clic en **Enviar correo electrónico para restablecer contraseña.** El correo electrónico se enviará a la dirección de respaldo en caso de que la hayas configurado. 
3. Te enviaremos por correo electrónico un enlace que te permitirá restablecer la contraseña. Debes hacer clic en este enlace dentro de las 3 horas posteriores a haber recibido el correo electrónico. Si no recibiste un correo electrónico de nuestra parte, asegúrate de revisar la carpeta de spam.
-4. Si habilitaste la autenticación bifactorial, se te pedirán tus credenciales de 2FA. Teclea tus credenciales bifactoriales o uno de tus códigos de recuperación de 2FA y haz clic en **Verificar**. 
+4. Si habilitaste la autenticación bifactorial, se te pedirán tus credenciales de 2FA. Type your authentication code or one of your recovery codes and click **Verify**. If you have added a security key to your account, you can insert the key and click **Use security key** instead of typing an authentication code. 
5. Teclea una contraseña nueva, confírmala y haz clic en **Cambiar contraseña**. Para recibir ayuda para crear una contraseña segura, consulta "[Crear una contraseña segura](/articles/creating-a-strong-password)."
{% ifversion fpt or ghec %}{% else %}
{% endif %}
diff --git a/translations/es-ES/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md b/translations/es-ES/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
index da0a24aa20..afa9fa9f67 100644
--- a/translations/es-ES/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
+++ b/translations/es-ES/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
@@ -20,7 +20,10 @@ shortTitle: Recuperar una cuenta con 2FA
{% warning %}
-**Advertencia**: {% data reusables.two_fa.support-may-not-help %}
+**Advertencias**:
+
+- {% data reusables.two_fa.support-may-not-help %}
+- {% data reusables.accounts.you-must-know-your-password %}
{% endwarning %}
@@ -28,12 +31,21 @@ shortTitle: Recuperar una cuenta con 2FA
## Utilizar un código de recuperación de autenticación de dos factores
-Utiliza uno de tus códigos de recuperación para recuperar automáticamente el ingreso a tu cuenta. Es posible que hayas guardado tus códigos de recuperación en un administrador de contraseñas o en la carpeta de descargas de tu computadora. El nombre de archivo por defecto para códigos de recuperación es `github-recovery-codes.txt`. Para obtener más información acerca de códigos de recuperación, consulta "[Configurar métodos de recuperación de autenticación de dos factores](/articles/configuring-two-factor-authentication-recovery-methods#downloading-your-two-factor-authentication-recovery-codes)."
+Utiliza uno de tus códigos de recuperación para recuperar automáticamente el ingreso a tu cuenta. Es posible que hayas guardado tus códigos de recuperación en un administrador de contraseñas o en la carpeta de descargas de tu computadora. El nombre de archivo por defecto para códigos de recuperación es `github-recovery-codes.txt`. Para obtener más información acerca de códigos de recuperación, consulta "[Configurar métodos de recuperación de autenticación de dos factores](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication-recovery-methods#downloading-your-two-factor-authentication-recovery-codes)."
-{% data reusables.two_fa.username-password %}{% ifversion fpt or ghec %}
-2. Da clic en **Ingresar un código de recuperación de dos factores** debajo de "¿Tienes Problemas?". {% else %}
-2. En la página 2FA, dentro de "Don't have your phone?" (¿No tienes tu teléfono?), haz clic en **Enter a two-factor recovery code (Ingresar un código de recuperación de dos factores)**. {% endif %}
-3. Escribe uno de tus códigos de recuperación, después haz clic en **Verify (Verificar)**. 
+{% data reusables.two_fa.username-password %}
+
+{% ifversion fpt or ghec %}
+1. Under "Having problems?", click **Use a recovery code or request a reset**.
+
+ 
+{%- else %}
+1. En la página 2FA, dentro de "Don't have your phone?" (¿No tienes tu teléfono?), haz clic en **Enter a two-factor recovery code (Ingresar un código de recuperación de dos factores)**.
+
+ {% endif %}
+1. Escribe uno de tus códigos de recuperación, después haz clic en **Verify (Verificar)**.
+
+ 
{% ifversion fpt or ghec %}
## Autenticar con un número de reserva
@@ -43,38 +55,52 @@ Si pierdes el acceso a tu app TOTP principal o número de teléfono, puedes prop
## Autenticar con una clave de seguridad
-Si has configurado autenticación de dos factores utilizando una clave de seguridad, puedes utilizar tu clave de seguridad como un método de autenticación secundario para obtener acceso a tu cuenta automáticamente. Para obtener más información, consulta "[Configurar autenticación de dos factores](/articles/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)".
+Si has configurado autenticación de dos factores utilizando una clave de seguridad, puedes utilizar tu clave de seguridad como un método de autenticación secundario para obtener acceso a tu cuenta automáticamente. Para obtener más información, consulta "[Configurar autenticación de dos factores](/authentication/securing-your-account-with-two-factor-authentication-2fa/configuring-two-factor-authentication#configuring-two-factor-authentication-using-a-security-key)".
{% ifversion fpt or ghec %}
## Autentificarse con un dispositivo verificado, token SSH, o token de acceso personal
-Si conoces tu contraseña de {% data variables.product.product_name %} pero no tienes credenciales o códigos de autenticación bifactorial, se te puede enviar una contraseña de única ocasión a tu dirección de correo electrónico verificada para comenzar con el proceso de verificación y volver a obtener acceso a tu cuenta.
+If you know your password for {% data variables.product.product_location %} but don't have the two-factor authentication credentials or your two-factor authentication recovery codes, you can have a one-time password sent to your verified email address to begin the verification process and regain access to your account.
{% note %}
-**Nota**: Por razones de seguridad, recobrar el acceso a tu cuenta autenticándose con una contraseña de una sola ocasión puede demorar de 3 a 5 días hábiles. Las solicitudes adicionales emitidas durante este periodo no se revisarán.
+**Note**: For security reasons, regaining access to your account by authenticating with a one-time password can take up to three business days. {% data variables.product.company_short %} will not review additional requests submitted during this time.
{% endnote %}
Puedes utilizar tus credenciales de autenticación de dos factores para recobrar el acceso a tu cuenta en cualquier momento durante el periodo de espera de 3 a 5 días.
-1. Teclea tu nombre de usuario y contraseña en el prompt de autenticación. Si no conoces tu contraseña de {% data variables.product.product_name %}, no podrás generar una contraseña de una sola ocasión.
-2. Da clic en **¿No puedes acceder a tu dispositivo de dos factores o a tus códigos de recuperación válidos?** debajo de "¿Tienes Problemas 
-3. Da clic en **Entiendo, comenzar** para solicitar un restablecimiento de tu configuración de autenticación. 
-4. Da clic en **Enviar contraseña de una sola vez** para enviarla a todas las direcciones de correo electrónico asociadas con tu cuenta. 
-5. Debajo de "Contraseña de una sola vez", teclea la contraseña temporal del correo electrónico de recuperación que envió {% data variables.product.prodname_dotcom %}. 
-6. Da clic en **Verificar dirección de correo electrónico**.
-7. Escoge un factor de verificación alterno.
+1. Teclea tu nombre de usuario y contraseña en el prompt de autenticación.
+
+ {% warning %}
+
+ **Advertencia**: {% data reusables.accounts.you-must-know-your-password %}
+
+ {% endwarning %}
+1. Under "Having problems?", click **Use a recovery code or request a reset**.
+
+ 
+1. To the right of "Locked out?", click **Try recovering your account**.
+
+ 
+1. Da clic en **Entiendo, comenzar** para solicitar un restablecimiento de tu configuración de autenticación.
+
+ 
+1. Click **Send one-time password** to send a one-time password to all eligible addresses associated with your account. Only verified emails are eligible for account recovery. If you've restricted password resets to your primary and/or backup addresses, these addresses are the only addresses eligible for account recovery.
+
+ 
+1. Debajo de "Contraseña de una sola vez", teclea la contraseña temporal del correo electrónico de recuperación que envió {% data variables.product.prodname_dotcom %}.
+
+ 
+1. Da clic en **Verificar dirección de correo electrónico**.
+
+ 
+1. Escoge un factor de verificación alterno.
- Si utilizaste tu dispositivo actual para ingresar en esta cuenta anteriormente y te gustaría utilizarlo para verificación, haz clic en **Verificar con este dispositivo**.
- Si has configurado una llave SSH previamente en esta cuenta y quieres utilizarla para verificación, da clic en **Llave SSH**.
- - Si configuraste un token de acceso personal previamente y te gustaría utilizarlo para verificación, da clic en **Token de acceso personal**. 
-8. Un miembro de {% data variables.contact.github_support %} revisará tu solicitud y te enviará un mensaje de correo electrónico dentro de los siguientes 3 a 5 días. Si se aprueba tu solicitud, recibirás un enlace para completar el proceso de recuperación de tu cuenta. Si se te niega la solicitud, el mensaje incluirá un medio para contactar a soporte con cualquier pregunta adicional.
+ - Si configuraste un token de acceso personal previamente y te gustaría utilizarlo para verificación, da clic en **Token de acceso personal**.
+
+ 
+1. A member of {% data variables.contact.github_support %} will review your request and email you within three business days. Si se aprueba tu solicitud, recibirás un enlace para completar el proceso de recuperación de tu cuenta. Si se te niega la solicitud, el mensaje incluirá un medio para contactar a soporte con cualquier pregunta adicional.
{% endif %}
-
-## Leer más
-
-- "[Acerca de la autenticación de dos factores](/articles/about-two-factor-authentication)"
-- [Configurar autenticación de dos factores](/articles/configuring-two-factor-authentication)"
-- [Configurar métodos de recuperación de autenticación de dos factores](/articles/configuring-two-factor-authentication-recovery-methods)"
-- "[Acceder {% data variables.product.prodname_dotcom %} utilizando autenticación de dos factores](/articles/accessing-github-using-two-factor-authentication)"
diff --git a/translations/es-ES/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md b/translations/es-ES/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
index aad0d4625e..5a6a77e511 100644
--- a/translations/es-ES/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
+++ b/translations/es-ES/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
@@ -76,7 +76,7 @@ Al final de cada mes, {% data variables.product.prodname_dotcom %} calcula el co
### Ejemplo de cálculos de costo por minuto
-Por ejemplo, si tu organización utiliza {% data variables.product.prodname_team %} y permite gastos ilimitados, utilizar 15,000 minutos podría tener un costo extra de almacenamiento y minutos de $56 USD dependiendo de los sistemas operativos que se utilizan para ejecutar jobs.
+Por ejemplo, si tu organización utiliza {% data variables.product.prodname_team %} y permite gastos ilimitados, utilizar 5,000 minutos podría tener un costo extra de almacenamiento y minutos de $56 USD dependiendo de los sistemas operativos que se utilizan para ejecutar jobs.
- 5,000 minutos (3,000 de Linux y 2,000 de Windows) = $56 USD ($24 USD + $32 USD).
- 3,000 minutos de Linux a $0.008 USD por minuto = $24 USD.
diff --git a/translations/es-ES/content/code-security/getting-started/github-security-features.md b/translations/es-ES/content/code-security/getting-started/github-security-features.md
index 646ed3ccd5..b4db279d0b 100644
--- a/translations/es-ES/content/code-security/getting-started/github-security-features.md
+++ b/translations/es-ES/content/code-security/getting-started/github-security-features.md
@@ -25,7 +25,7 @@ The {% data variables.product.prodname_advisory_database %} contains a curated l
{% endif %}
{% ifversion fpt or ghes > 3.0 or ghae or ghec %}
### Security policy
-
+
Make it easy for your users to confidentially report security vulnerabilities they've found in your repository. For more information, see "[Adding a security policy to your repository](/code-security/getting-started/adding-a-security-policy-to-your-repository)."
{% endif %}
@@ -74,7 +74,7 @@ Automatically detect security vulnerabilities and coding errors in new or modifi
### {% data variables.product.prodname_secret_scanning_caps %}
-Automatically detect tokens or credentials that have been checked into a repository. {% ifversion fpt or ghec %}For secrets identified in public repositories, the service is informed that the secret may be compromised.{% endif %}
+Automatically detect tokens or credentials that have been checked into a repository. {% ifversion fpt or ghec %}For secrets identified in public repositories, the service is informed that the secret may be compromised.{% endif %}
{%- ifversion ghec or ghes or ghae %}
{% ifversion ghec %}For private repositories, you can view {% elsif ghes or ghae %}View {% endif %}any secrets that {% data variables.product.company_short %} has found in your code. You should treat tokens or credentials that have been checked into the repository as compromised.{% endif %} For more information, see "[About secret scanning](/github/administering-a-repository/about-secret-scanning)."
@@ -84,6 +84,12 @@ Automatically detect tokens or credentials that have been checked into a reposit
Show the full impact of changes to dependencies and see details of any vulnerable versions before you merge a pull request. For more information, see "[About dependency review](/code-security/supply-chain-security/about-dependency-review)."
{% endif %}
+{% ifversion ghec or ghes > 3.1 %}
+### Security overview
+
+Review the security configuration and alerts for your organization and identify the repositories at greatest risk. For more information, see "[About the security overview](/code-security/security-overview/about-the-security-overview)."
+{% endif %}
+
## Further reading
- "[{% data variables.product.prodname_dotcom %}'s products](/github/getting-started-with-github/githubs-products)"
- "[{% data variables.product.prodname_dotcom %} language support](/github/getting-started-with-github/github-language-support)"
diff --git a/translations/es-ES/content/code-security/getting-started/securing-your-organization.md b/translations/es-ES/content/code-security/getting-started/securing-your-organization.md
index 25412c70df..d27d4e08ce 100644
--- a/translations/es-ES/content/code-security/getting-started/securing-your-organization.md
+++ b/translations/es-ES/content/code-security/getting-started/securing-your-organization.md
@@ -36,7 +36,7 @@ You can create a default security policy that will display in any of your organi
{% ifversion fpt or ghes > 2.22 or ghae-issue-4864 or ghec %}
## Managing {% data variables.product.prodname_dependabot_alerts %} and the dependency graph
-{% ifversion fpt or ghec %}By default, {% data variables.product.prodname_dotcom %} detects vulnerabilities in public repositories and generates {% data variables.product.prodname_dependabot_alerts %} and a dependency graph. You can enable or disable {% data variables.product.prodname_dependabot_alerts %} and the dependency graph for all private repositories owned by your organization.
+{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerabilities in public repositories and displays the dependency graph. You can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all public repositories owned by your organization. You can enable or disable {% data variables.product.prodname_dependabot_alerts %} and the dependency graph for all private repositories owned by your organization.
1. Click your profile photo, then click **Organizations**.
2. Click **Settings** next to your organization.
diff --git a/translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md b/translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
index a4c299c3dd..9b97e577a9 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
@@ -30,11 +30,17 @@ shortTitle: Use Dependabot with Actions
{% data variables.product.prodname_dependabot %} is able to trigger {% data variables.product.prodname_actions %} workflows on its pull requests and comments; however, certain events are treated differently.
-For workflows initiated by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request`, `pull_request_review`, `pull_request_review_comment`, and `push` events, the following restrictions apply:
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5792 %}
+For workflows initiated by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request`, `pull_request_review`, `pull_request_review_comment`, `push`, `create`, `deployment`, and `deployment_status` events, the following restrictions apply:
+{% endif %}
- {% ifversion ghes = 3.3 %}`GITHUB_TOKEN` has read-only permissions, unless your administrator has removed restrictions.{% else %}`GITHUB_TOKEN` has read-only permissions by default.{% endif %}
- {% ifversion ghes = 3.3 %}Secrets are inaccessible, unless your administrator has removed restrictions.{% else %}Secrets are populated from {% data variables.product.prodname_dependabot %} secrets. {% data variables.product.prodname_actions %} secrets are not available.{% endif %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5792 %}
+For workflows initiated by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request_target` event, if the base ref of the pull request was created by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`), the `GITHUB_TOKEN` will be read-only and secrets are not available.
+{% endif %}
+
For more information, see ["Keeping your GitHub Actions and workflows secure: Preventing pwn requests"](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/).
{% ifversion fpt or ghec or ghes > 3.3 %}
diff --git a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
index 8b835ed644..9a41ccbd2a 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
@@ -58,7 +58,7 @@ For a list of the ecosystems that {% data variables.product.product_name %} can
{% data reusables.repositories.enable-security-alerts %}
-{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and generates {% data variables.product.prodname_dependabot_alerts %} by default. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories.
+{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and displays the dependency graph, but does not generate {% data variables.product.prodname_dependabot_alerts %} by default. Repository owners or people with admin access can enable {% data variables.product.prodname_dependabot_alerts %} for public repositories. Owners of private repositories, or people with admin access, can enable {% data variables.product.prodname_dependabot_alerts %} by enabling the dependency graph and {% data variables.product.prodname_dependabot_alerts %} for their repositories.
You can also enable or disable {% data variables.product.prodname_dependabot_alerts %} for all repositories owned by your user account or organization. For more information, see "[Managing security and analysis settings for your user account](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" or "[Managing security and analysis settings for your organization](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization)."
diff --git a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
index 6d2de3a534..f0e5dc57aa 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
@@ -46,8 +46,6 @@ There are three reasons why an alert may have no pull request link:
If an error blocked {% data variables.product.prodname_dependabot %} from creating a pull request, you can display details of the error by clicking the alert.
-
-
## Investigating errors with {% data variables.product.prodname_dependabot_version_updates %}
When {% data variables.product.prodname_dependabot %} is blocked from creating a pull request to update a dependency in an ecosystem, it posts the error icon on the manifest file. The manifest files that are managed by {% data variables.product.prodname_dependabot %} are listed on the {% data variables.product.prodname_dependabot %} tab. To access this tab, on the **Insights** tab for the repository click **Dependency graph**, and then click the **{% data variables.product.prodname_dependabot %}** tab.
diff --git a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
index 2e0ad140d1..4a967cf2fb 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
@@ -103,17 +103,17 @@ Since {% data variables.product.prodname_dependabot %} uses curated data in the
{% ifversion fpt or ghec %}
## Does each dependency vulnerability generate a separate alert?
-When a dependency has multiple vulnerabilities, only one aggregated alert is generated for that dependency, instead of one alert per vulnerability.
+When a dependency has multiple vulnerabilities, an alert is generated for each vulnerability at the level of advisory plus manifest.
-The {% data variables.product.prodname_dependabot_alerts %} count in {% data variables.product.prodname_dotcom %} shows a total for the number of alerts, that is, the number of dependencies with vulnerabilities, not the number of vulnerabilities.
+
-
+Legacy {% data variables.product.prodname_dependabot_alerts %} were grouped into a single aggregated alert with all the vulnerabilities for the same dependency. If you navigate to a link to a legacy {% data variables.product.prodname_dependabot %} alert, you will be redirected to the {% data variables.product.prodname_dependabot_alerts %} tab filtered to display vulnerabilities for that dependent package and manifest.
-When you click to display the alert details, you can see how many vulnerabilities are included in the alert.
+
-
+The {% data variables.product.prodname_dependabot_alerts %} count in {% data variables.product.prodname_dotcom %} shows a total for the number of alerts, which is the number of vulnerabilities, not the number of dependencies.
-**Check**: If there is a discrepancy in the totals you are seeing, check that you are not comparing alert numbers with vulnerability numbers.
+**Check**: If there is a discrepancy in the totals you are seeing, check that you are not comparing alert numbers with dependency numbers. Also check that you are viewing all alerts and not a subset of filtered alerts.
{% endif %}
## Further reading
diff --git a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
index c2a6b0c128..4029faa7f6 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
@@ -25,7 +25,7 @@ topics:
{% data reusables.dependabot.beta-security-and-version-updates %}
{% data reusables.dependabot.enterprise-enable-dependabot %}
-Your repository's {% data variables.product.prodname_dependabot_alerts %} tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %}{% ifversion fpt or ghec or ghes > 3.2 %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. You can sort the list of alerts by selecting the drop-down menu, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."
+Your repository's {% data variables.product.prodname_dependabot_alerts %} tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %}{% ifversion fpt or ghec or ghes > 3.2 %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. You can{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %} filter alerts by package, ecosystem, or manifest. You can also{% endif %} sort the list of alerts, and you can click into specific alerts for more details. For more information, see "[About alerts for vulnerable dependencies](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)."
{% ifversion fpt or ghec or ghes > 3.2 %}
You can enable automatic security updates for any repository that uses {% data variables.product.prodname_dependabot_alerts %} and the dependency graph. For more information, see "[About {% data variables.product.prodname_dependabot_security_updates %}](/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates)."
@@ -37,11 +37,30 @@ You can enable automatic security updates for any repository that uses {% data v
## About updates for vulnerable dependencies in your repository
{% data variables.product.product_name %} generates {% data variables.product.prodname_dependabot_alerts %} when we detect that your codebase is using dependencies with known vulnerabilities. For repositories where {% data variables.product.prodname_dependabot_security_updates %} are enabled, when {% data variables.product.product_name %} detects a vulnerable dependency in the default branch, {% data variables.product.prodname_dependabot %} creates a pull request to fix it. The pull request will upgrade the dependency to the minimum possible secure version needed to avoid the vulnerability.
+
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %}You can sort and filter {% data variables.product.prodname_dependabot_alerts %} with the dropdown menus in the {% data variables.product.prodname_dependabot_alerts %} tab or by typing filters as `key:value` pairs into the search bar. The available filters are repository (for example, `repo:my-repository`), package (for example, `package:django`), ecosystem (for example, `ecosystem:npm`), manifest (for example, `manifest:webwolf/pom.xml`), state (for example, `is:open`), and whether an advisory has a patch (for example, `has: patch`).
+
+Each {% data variables.product.prodname_dependabot %} alert has a unique numeric identifier and the {% data variables.product.prodname_dependabot_alerts %} tab lists an alert for every detected vulnerability. Legacy {% data variables.product.prodname_dependabot_alerts %} grouped vulnerabilities by dependency and generated a single alert per dependency. If you navigate to a legacy {% data variables.product.prodname_dependabot %} alert, you will be redirected to a {% data variables.product.prodname_dependabot_alerts %} tab filtered for that package. {% endif %}
{% endif %}
## Viewing and updating vulnerable dependencies
-{% ifversion fpt or ghec or ghes > 3.2 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %}
+{% data reusables.repositories.navigate-to-repo %}
+{% data reusables.repositories.sidebar-security %}
+{% data reusables.repositories.sidebar-dependabot-alerts %}
+1. Optionally, to filter alerts, select the **Repository**, **Package**, **Ecosystem**, or **Manifest** dropdown menu then click the filter that you would like to apply. You can also type filters into the search bar. For example, `ecosystem:npm` or `has:patch`. To sort alerts, select the **Sort** dropdown menu then click the option that you would like to sort by.
+ 
+1. Click the alert that you would like to view.
+ 
+1. Review the details of the vulnerability and, if available, the pull request containing the automated security update.
+1. Optionally, if there isn't already a {% data variables.product.prodname_dependabot_security_updates %} update for the alert, to create a pull request to resolve the vulnerability, click **Create {% data variables.product.prodname_dependabot %} security update**.
+ 
+1. When you're ready to update your dependency and resolve the vulnerability, merge the pull request. Each pull request raised by {% data variables.product.prodname_dependabot %} includes information on commands you can use to control {% data variables.product.prodname_dependabot %}. For more information, see "[Managing pull requests for dependency updates](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)."
+1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, select the "Dismiss" drop-down, and click a reason for dismissing the alert.
+ 
+
+{% elsif ghes = 3.3 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-dependabot-alerts %}
@@ -54,7 +73,7 @@ You can enable automatic security updates for any repository that uses {% data v
1. Optionally, if the alert is being fixed, if it's incorrect, or located in unused code, select the "Dismiss" drop-down, and click a reason for dismissing the alert.

-{% elsif ghes > 3.0 or ghae-issue-4864 %}
+{% elsif ghes = 3.1 or ghes = 3.2 or ghae-issue-4864 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-dependabot-alerts %}
diff --git a/translations/es-ES/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/translations/es-ES/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
index 9dfc90486b..0956aede41 100644
--- a/translations/es-ES/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
+++ b/translations/es-ES/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
@@ -88,7 +88,7 @@ The recommended formats explicitly define which versions are used for all direct
| Maven | Java, Scala | `pom.xml` | `pom.xml` |
| npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`|
| Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`{% if github-actions-in-dependency-graph %}[2]{% else %}[1]{% endif %} |
-{%- ifversion fpt or ghes > 3.3 %}
+{%- ifversion fpt or ghec or ghes > 3.3 or ghae-issue-4752 %}
| Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` |{% endif %}
| RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` |
| Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` |
diff --git a/translations/es-ES/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md b/translations/es-ES/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
index e34257a9bd..4cd476335b 100644
--- a/translations/es-ES/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
+++ b/translations/es-ES/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
@@ -21,6 +21,8 @@ Puedes reportar a los usuarios que hayan violado las condiciones de servicio o l
Si se ha habilitado la capacidad para reportar contenido en un repositorio público, también puedes reportarlo directamente a los mantenedores del mismo.
+Users in India can contact GitHub's Grievance Officer for India [here](https://support.github.com/contact/india-grievance-officer).
+
## Informar un usuario
{% data reusables.profile.user_profile_page_navigation %}
diff --git a/translations/es-ES/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md b/translations/es-ES/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
index 2d6b79b8a3..1bfa020663 100644
--- a/translations/es-ES/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
+++ b/translations/es-ES/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
@@ -293,10 +293,10 @@ El parámetro `redirect_uri` es opcional. Si se deja fuera, GitHub redireccionar
El parámetro opcional `redirect_uri` también puede utilizarse para las URL de localhost. Si la aplicación especifica una URL y puerto de localhost, entonces, después de autorizar la aplicación, los usuarios se redireccionarán al puerto y URL proporcionados. La `redirect_uri` no necesita empatar con el puerto especificado en la url de rellamado para la app.
-Para la URL de rellamado de `http://localhost/path`, puedes utilizar esta `redirect_uri`:
+For the `http://127.0.0.1/path` callback URL, you can use this `redirect_uri`:
```
-http://localhost:1234/path
+http://127.0.0.1:1234/path
```
## Crear tokens múltiples para Apps de OAuth
diff --git a/translations/es-ES/content/developers/overview/managing-deploy-keys.md b/translations/es-ES/content/developers/overview/managing-deploy-keys.md
index a0c48a6bdd..6a10d1d0c6 100644
--- a/translations/es-ES/content/developers/overview/managing-deploy-keys.md
+++ b/translations/es-ES/content/developers/overview/managing-deploy-keys.md
@@ -34,11 +34,11 @@ En muchos casos, especialmente al inicio de un proyecto, el reenvío del agente
#### Configuración
1. Habilita el reenvío de agente localmente. Consulta [nuestra guía sobre el redireccionamiento del agente SSH][ssh-agent-forwarding] para obtener más información.
-2. Configura tus scripts de despliegue para utilizar el reenvío de agente. For example, on a bash script, enabling agent forwarding would look something like this: `ssh -A serverA 'bash -s' < deploy.sh`
+2. Configura tus scripts de despliegue para utilizar el reenvío de agente. Por ejemplo, en un script de bash, el habilitar el reenvío de agentes se verá más o menos así: `ssh -A serverA 'bash -s' < deploy.sh`
## Clonado de HTTPS con tokens de OAuth
-If you don't want to use SSH keys, you can use HTTPS with OAuth tokens.
+Si no quieres utilizar llaves SSH, puedes utilizar HTTPS con tokens de OAuth.
#### Pros
@@ -57,7 +57,7 @@ If you don't want to use SSH keys, you can use HTTPS with OAuth tokens.
#### Configuración
-See [our guide on creating a personal access token](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
+Consulta [nuestra guía para crear tokens de acceso personal](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token).
## Llaves de implementación
@@ -78,7 +78,7 @@ See [our guide on creating a personal access token](/authentication/keeping-your
#### Configuración
-1. [Run the `ssh-keygen` procedure][generating-ssh-keys] on your server, and remember where you save the generated public and private rsa key pair key pair.
+1. [Ejecuta el procedimiento `ssh-keygen`][generating-ssh-keys] en tu servidor y recuerda dónde guardaste l par de llaves pública y privada de RSA generado.
2. En la esquina superior derecha de cualquier página de {% data variables.product.product_name %}, da clic en tu foto de perfil y luego da clic en **Tu perfil**. 
3. En tu página de perfil, da clic en **Repositorios** y luego en el nombre de tu repositorio. 
4. Desde tu repositorio, da clic en **Configuración**. 
diff --git a/translations/es-ES/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md b/translations/es-ES/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
index cd5871557a..2b722e32b8 100644
--- a/translations/es-ES/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
+++ b/translations/es-ES/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
@@ -46,10 +46,10 @@ Puedes integrar tu cuenta organizacional o personal en {% data variables.product
### Integración con Slack y con {% data variables.product.product_name %}
-Puedes suscribirte a tus repositorios u organizaciones y obtener actualizaciones en tiempo real sobre propuestas, solicitudes de cambio, confirmaciones, lanzamientos, revisiones y estados de despliegues. También puedes llevar a cabo actividades como cerrar o abrir propuestas y proporcionar referencias enriquecidas para las propuestas y solicitudes de cambios sin salir de Slack.
+You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, discussions, releases, deployment reviews and deployment statuses. También puedes llevar a cabo actividades como cerrar o abrir propuestas y proporcionar referencias enriquecidas para las propuestas y solicitudes de cambios sin salir de Slack.
The {% data variables.product.prodname_dotcom %} app is also compatible with [Slack Enterprise Grid](https://slack.com/intl/en-in/help/articles/360000281563-Manage-apps-on-Enterprise-Grid). Para obtener más información, visita la [App de integración de Slack](https://github.com/marketplace/slack-github) en Marketplace.
### Microsoft Teams y su integración con {% data variables.product.product_name %}
-Puedes suscribirte a tus repositorios u organizaciones y obtener actualizaciones en tiempo real sobre propuestas, solicitudes de cambios, confirmaciones, revisiones y estados de despliegues. También puedes llevar a cabo actividades como cerrar o abrir propuestas, comentar en tus propuestas o solicitudes de cambios y proporcionar referencias enriquecidas para las propuestas y solicitudes de cambios sin salir de Microsoft Teams. Para obtener más información, visita la [App de integración de Microsoft Teams](https://appsource.microsoft.com/en-us/product/office/WA200002077) en Microsoft AppsSource.
+You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, discussions, releases, deployment reviews and deployment statuses. También puedes llevar a cabo actividades como cerrar o abrir propuestas, comentar en tus propuestas o solicitudes de cambios y proporcionar referencias enriquecidas para las propuestas y solicitudes de cambios sin salir de Microsoft Teams. Para obtener más información, visita la [App de integración de Microsoft Teams](https://appsource.microsoft.com/en-us/product/office/WA200002077) en Microsoft AppsSource.
diff --git a/translations/es-ES/content/get-started/getting-started-with-git/managing-remote-repositories.md b/translations/es-ES/content/get-started/getting-started-with-git/managing-remote-repositories.md
index 22af3c0bee..f41b494f8a 100644
--- a/translations/es-ES/content/get-started/getting-started-with-git/managing-remote-repositories.md
+++ b/translations/es-ES/content/get-started/getting-started-with-git/managing-remote-repositories.md
@@ -195,6 +195,8 @@ Utiliza el comando `git remote rm` para eliminar una URL remota de tu repositori
El comando `git remote rm` toma un argumento:
* El nombre de un remoto, por ejemplo `destination` (destino)
+Removing the remote URL from your repository only unlinks the local and remote repositories. It does not delete the remote repository.
+
## Ejemplo
Estos ejemplos asumen que estás[clonando con HTTPS](/github/getting-started-with-github/about-remote-repositories/#cloning-with-https-urls), lo cual se recomienda.
@@ -217,7 +219,7 @@ $ git remote -v
{% warning %}
-**Nota**: `git remote rm` no elimina el repositorio remoto del servidor. Simplemente, elimina de tu repositorio local el remoto y sus referencias.
+**Note**: `git remote rm` does not delete the remote repository from the server. Simplemente, elimina de tu repositorio local el remoto y sus referencias.
{% endwarning %}
diff --git a/translations/es-ES/content/get-started/learning-about-github/about-github-advanced-security.md b/translations/es-ES/content/get-started/learning-about-github/about-github-advanced-security.md
index 7f19a514f0..9d2a6a3c80 100644
--- a/translations/es-ES/content/get-started/learning-about-github/about-github-advanced-security.md
+++ b/translations/es-ES/content/get-started/learning-about-github/about-github-advanced-security.md
@@ -37,10 +37,29 @@ Una licencia de {% data variables.product.prodname_GH_advanced_security %} propo
- **Resumen de seguridad** - Revisa la configuración de seguridad y las alertas para una organización e identifica los repositorios que tienen un riesgo mayor. Para obtener más información, consulta la sección "[Acerca del resumen de seguridad](/code-security/security-overview/about-the-security-overview)".
{% endif %}
+{% ifversion fpt or ghec %}
+The table below summarizes the availability of {% data variables.product.prodname_GH_advanced_security %} features for public and private repositories. |{% ifversion fpt %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %}
+|:------------------------:|:------------------------------------:|:------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------:|
+| Escaneo de código | Sí | No | Sí |
+| Escaneo de secretos | Yes **(limited functionality only)** | No | Sí |
+| Revisión de dependencias | Sí | No | Sí |{% endif %}
+|
+{% ifversion ghec %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %}
+|:------------------------:|:------------------------------------:|:------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------:|
+| Escaneo de código | Sí | No | Sí |
+| Escaneo de secretos | Yes **(limited functionality only)** | No | Sí |
+| Revisión de dependencias | Sí | No | Sí |
+| Resumen de seguridad | No | No | Sí |
+{% endif %}
+
+{% endif %}
+
Para obtener más información sobre las características de {% data variables.product.prodname_advanced_security %} que se encuentran en desarrollo, consulta la sección "[Plan de trabajo de {% data variables.product.prodname_dotcom %}](https://github.com/github/roadmap)". Para obtener un resumen de todas las características de seguridad, consulta la sección "[Características de seguridad de {% data variables.product.prodname_dotcom %}](/code-security/getting-started/github-security-features)".
{% ifversion fpt or ghec %}
-Las características de la {% data variables.product.prodname_GH_advanced_security %} se encuentran habilitadas para todos los repositorios públicos de {% data variables.product.prodname_dotcom_the_website %}. Las organizaciones que utilizan {% data variables.product.prodname_ghe_cloud %} con la {% data variables.product.prodname_advanced_security %} pueden habilitar estas características adicionalmente para repositorios privados e internos. También tienen acceso a un resumen de seguridad a nivel organizacional. {% ifversion fpt %}Para obtener más información, consulta la [documentación de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
+{% data variables.product.prodname_GH_advanced_security %} features are enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghec %}, except for the security overview{% endif %}. Las organizaciones que utilizan {% data variables.product.prodname_ghe_cloud %} con la {% data variables.product.prodname_advanced_security %} pueden habilitar estas características adicionalmente para repositorios privados e internos. They also have access to an organization-level security overview. {% ifversion fpt %}Para obtener más información, consulta la [documentación de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
{% endif %}
{% ifversion ghes or ghec %}
diff --git a/translations/es-ES/content/github/site-policy/github-community-guidelines.md b/translations/es-ES/content/github/site-policy/github-community-guidelines.md
index ca8f4e0b39..0b69762ebc 100644
--- a/translations/es-ES/content/github/site-policy/github-community-guidelines.md
+++ b/translations/es-ES/content/github/site-policy/github-community-guidelines.md
@@ -22,7 +22,7 @@ El propósito principal de la comunidad de GitHub es colaborar en proyectos de s
* **Se cordial y de mentalidad abierta** - Otros colaboradores pueden no tener el mismo nivel de experiencia o antecedentes que tú, pero eso no significa que no tengan buenas ideas para aportar. Te invitamos a dar la bienvenida a los nuevos miembros y a los que están empezando a trabajar.
-* **Respeto unos a otros.** Nada sabotea una conversación saludable como la rudeza. Se cortés y profesional y no publiques nada que una persona razonable consideraría ofensivo, abusivo o un discurso de odio. No acoses ni molestes a nadie. Trato mutuo con dignidad y consideración en todas las interacciones.
+* **Respect each other** - Nothing sabotages healthy conversation like rudeness. Se cortés y profesional y no publiques nada que una persona razonable consideraría ofensivo, abusivo o un discurso de odio. No acoses ni molestes a nadie. Trato mutuo con dignidad y consideración en todas las interacciones.
Es probable que desees responder a algo discrepándolo. Está bien. Pero recuerda criticar las ideas, no a las personas. Evita ataques usando el nombre, ad hominem, respondiendo al tono de un post en lugar de su contenido real y contradicción reactiva. En lugar de ello, proporciona contra-argumentos razonados que mejoran la conversación.
diff --git a/translations/es-ES/content/github/site-policy/submitting-content-removal-requests.md b/translations/es-ES/content/github/site-policy/submitting-content-removal-requests.md
index c82741151b..2a4f9e4f65 100644
--- a/translations/es-ES/content/github/site-policy/submitting-content-removal-requests.md
+++ b/translations/es-ES/content/github/site-policy/submitting-content-removal-requests.md
@@ -23,3 +23,5 @@ La Política de Marcas de GitHub se puede utilizar para informar del contenido q
## [Política de Eliminación de Información Privada de GitHub](/github/site-policy/github-private-information-removal-policy)
La Política de Eliminación de Información Privada de GitHub puede utilizarse para reportar datos que sean privados (confidenciales y que posean un riesgo de seguridad), pero que no se protege necesariamente por derechos de autor o comerciales.
+
+Users in India can contact GitHub's Grievance Officer [here](https://support.github.com/contact/india-grievance-officer).
diff --git a/translations/es-ES/content/graphql/overview/about-the-graphql-api.md b/translations/es-ES/content/graphql/overview/about-the-graphql-api.md
index 0219a1d363..c3e47bffc1 100644
--- a/translations/es-ES/content/graphql/overview/about-the-graphql-api.md
+++ b/translations/es-ES/content/graphql/overview/about-the-graphql-api.md
@@ -12,7 +12,7 @@ topics:
## Resumen
-Aquí hay algunos enlaces rápidos para ponerte en marcha con la API de GraphQL v4:
+Here are some quick links to get you up and running with the GraphQL API:
* [Autenticación](/graphql/guides/forming-calls-with-graphql#authenticating-with-graphql)
* [Terminal raíz](/graphql/guides/forming-calls-with-graphql#the-graphql-endpoint)
@@ -36,9 +36,9 @@ El lenguaje de consulta de [GraphQL](https://graphql.github.io/) es:
## Por qué GitHub utiliza GraphQL
-GitHub eligió GraphQL para la API v4 porque ofrece significativamente más flexibilidad para nuestros intregradores. La capacidad de definir precisamente los datos que quieres —y _únicamente_ estos— es una ventaja poderosa sobre las terminales de la API de REST v3. GraphQL te permite reemplazar varias solicitudes de REST con _una sola llamada_ para agregar los datos que especifiques.
+GitHub chose GraphQL because it offers significantly more flexibility for our integrators. The ability to define precisely the data you want—and _only_ the data you want—is a powerful advantage over traditional REST API endpoints. GraphQL te permite reemplazar varias solicitudes de REST con _una sola llamada_ para agregar los datos que especifiques.
-Para obtener más detalles acerca de por qué GitHub se ha migrado a GraphQL, consulta la[publicación de anuncios del blog](https://githubengineering.com/the-github-graphql-api/).
+For more details about why GitHub invested in GraphQL, see the original [announcement blog post](https://github.blog/2016-09-14-the-github-graphql-api/).
## Acerca de la referencia del modelo de GraphQL
diff --git a/translations/es-ES/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md b/translations/es-ES/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
index 9b7a3176c5..09ced50e76 100644
--- a/translations/es-ES/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
+++ b/translations/es-ES/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
@@ -19,9 +19,9 @@ shortTitle: Revisar las integraciones instaladas
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "apps" aria-label="The apps icon" %} {% data variables.product.prodname_github_apps %}**.
-{% elsif ghae or ghes < 3.4 %}
+{% else %}
1. En la barra lateral izquierda, haz clic en **{% data variables.product.prodname_github_apps %} Instaladas**. 
{% endif %}
2. Al lado de la {% data variables.product.prodname_github_app %} que quieras revisar, haz clic en **Configure** (Configurar). 
diff --git a/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md b/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
index 172b741d51..e08fcb498f 100644
--- a/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
+++ b/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
@@ -40,7 +40,7 @@ To further support your team's collaboration abilities, you can upgrade to {% da
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
{% data reusables.organizations.invite-teams-or-people %}
5. In the search field, start typing the name of person you want to invite, then click a name in the list of matches.
diff --git a/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md b/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
index a2e83c9e8c..0912210e99 100644
--- a/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
+++ b/translations/es-ES/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
@@ -28,9 +28,9 @@ Cuando eliminas a un colaborador de un repositorio en tu organización, el colab
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
{% data reusables.repositories.navigate-to-manage-access %}
{% endif %}
{% data reusables.organizations.invite-teams-or-people %}
diff --git a/translations/es-ES/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md b/translations/es-ES/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
index 2daf35b81f..830749095f 100644
--- a/translations/es-ES/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
+++ b/translations/es-ES/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
@@ -24,7 +24,7 @@ Cuando inhabilitas los tableros de proyecto, ya no ves la información de los ta
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "table" aria-label="The table icon" %} Projects**.
{% endif %}
1. Decide si deseas inhabilitar los tableros de proyecto que se usan en toda la organización, los tableros de proyecto de los repositorios de la organización, o ambos. Luego, en "Proyectos":
diff --git a/translations/es-ES/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md b/translations/es-ES/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
index f17db4ef13..30bfbd3d25 100644
--- a/translations/es-ES/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
+++ b/translations/es-ES/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
@@ -10,12 +10,12 @@ versions:
shortTitle: Integrar Jira
---
-{% ifversion ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
1. In the left sidebar, select **{% octicon "code" aria-label="The code icon" %} Developer settings**, then click **OAuth Apps**. 
1. Da clic en **Nueva App de OAuth**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
{% data reusables.user_settings.access_settings %}
1. En la barra lateral izquierda en **Organization settings** (Configuraciones de la organización), haz clic en el nombre de tu organización. 
1. En la barra lateral de **Developer settings** (Configuraciones del programador), haz clic en **OAuth applications** (Aplicaciones OAuth). 
diff --git a/translations/es-ES/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md b/translations/es-ES/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
index a6fab36ae1..b7b22e5688 100644
--- a/translations/es-ES/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
+++ b/translations/es-ES/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
@@ -15,11 +15,15 @@ topics:
shortTitle: Restringir la creación de repositorios
---
-Puedes elegir si los miembros pueden crear repositorios en tu organización o no. Si permites que los miembros creen repositorios, puedes elegir qué tipos de repositorios pueden crear.{% ifversion fpt or ghec %} Para permitir que los miembros creen solo repositorios privados, tu organización debe utilizar {% data variables.product.prodname_ghe_cloud %}.{% endif %}{% ifversion fpt %} Para obtener más información, consulta la sección "[Acerca de los repositorios](/enterprise-cloud@latest/repositories/creating-and-managing-repositories/about-repositories)" en la documentación de {% data variables.product.prodname_ghe_cloud %}{% endif %}.
+Puedes elegir si los miembros pueden crear repositorios en tu organización o no. {% ifversion ghec or ghes or ghae %}If you allow members to create repositories, you can choose which types of repositories members can create.{% elsif fpt %}If you allow members to create repositories, you can choose whether members can create both public and private repositories or public repositories only.{% endif %} Organization owners can always create any type of repository.
+
+{% ifversion fpt %}
+Organizations using {% data variables.product.prodname_ghe_cloud %} can also restrict members to creating private repositories only. Para obtener más información, consulta la [documentación de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization).
+{% endif %}
-Los propietarios de la organización siempre pueden crear cualquier tipo de repositorio.
{% ifversion ghec or ghae or ghes %}
-{% ifversion ghec or ghae %}Los propietarios de empresas{% elsif ghes %}Los administradores de sitio{% endif %} pueden restringir las opciones que tienes disponibles para la política de creación de repositorios de tu organización. {% ifversion ghec or ghes or ghae %} Para obtener más información, consulta la sección "[Restringir la creación de repositorios en tu empresa.](/admin/policies/enforcing-repository-management-policies-in-your-enterprise#setting-a-policy-for-repository-creation)".{% endif %}{% endif %}
+Enterprise owners can restrict the options you have available for your organization's repository creation policy. Para obtener más información, consulta la sección "[Requerir políticas de administración de repositorios en tu empresa](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-creation)".
+{% endif %}
{% warning %}
@@ -36,5 +40,12 @@ Los propietarios de la organización siempre pueden crear cualquier tipo de repo

{%- elsif fpt %}

+
+ {% note %}
+
+ **Note:** To restrict members to creating private repositories only, your organization must use {% data variables.product.prodname_ghe_cloud %}.
+
+ {% endnote %}
{%- endif %}
+
6. Haz clic en **Save ** (guardar).
diff --git a/translations/es-ES/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md b/translations/es-ES/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
index 8cb00329e2..4e14267508 100644
--- a/translations/es-ES/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
+++ b/translations/es-ES/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
@@ -57,7 +57,7 @@ Any team members that have set their status to "Busy" will not be selected for r
{% data reusables.user_settings.access_org %}
{% data reusables.organizations.specific_team %}
{% data reusables.organizations.team_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
{% else %}
1. In the left sidebar, click **Code review**
@@ -73,7 +73,7 @@ Any team members that have set their status to "Busy" will not be selected for r
{% data reusables.user_settings.access_org %}
{% data reusables.organizations.specific_team %}
{% data reusables.organizations.team_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
{% else %}
1. In the left sidebar, click **Code review**
diff --git a/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md b/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
index 1408b3e897..fb1dedf12d 100644
--- a/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
+++ b/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
@@ -21,7 +21,7 @@ topics:
**Note:** When working with pull requests, keep the following in mind:
* If you're working in the [shared repository model](/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models), we recommend that you use a topic branch for your pull request. While you can send pull requests from any branch or commit, with a topic branch you can push follow-up commits if you need to update your proposed changes.
-* When pushing commits to a pull request, don't force push. Force pushing changes the repository history and can corrupt your pull request. If other collaborators branch the project before a force push, the force push may overwrite commits that collaborators based their work on.
+* Be very careful when force pushing commits to a pull request. Force pushing changes the repository history and can corrupt your pull request. If other collaborators branch the project before a force push, the force push may overwrite commits that collaborators based their work on.
{% endnote %}
diff --git a/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
index f9a5eda3a6..6a9ee0d344 100644
--- a/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
+++ b/translations/es-ES/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
@@ -16,7 +16,7 @@ topics:
---
Forking a repository is similar to copying a repository, with two major differences:
-* You can use a pull request to suggest changes from your user-owned fork to the original repository, also known as the *upstream* repository.
+* You can use a pull request to suggest changes from your user-owned fork to the original repository in its GitHub instance, also known as the *upstream* repository.
* You can bring changes from the upstream repository to your local fork by synchronizing your fork with the upstream repository.
{% data reusables.repositories.you-can-fork %}
diff --git a/translations/es-ES/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md b/translations/es-ES/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
index 79122863a5..7cd3d1e498 100644
--- a/translations/es-ES/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
+++ b/translations/es-ES/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
@@ -22,7 +22,7 @@ Si usas Zendesk para hacer el seguimiento de los tickets informados por el usuar
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "cross-reference" aria-label="The cross-reference icon" %} Autolink references**.
{% else %}
1. En la barra lateral izquierda, haz clic en **Autolink references** (Referencias de enlace automático). 
diff --git a/translations/es-ES/content/rest/reference/billing.md b/translations/es-ES/content/rest/reference/billing.md
index 8876b25d3f..fe0cf42be4 100644
--- a/translations/es-ES/content/rest/reference/billing.md
+++ b/translations/es-ES/content/rest/reference/billing.md
@@ -4,6 +4,7 @@ intro: 'With the Billing API, you can monitor the charges and usage {% data vari
versions:
fpt: '*'
ghec: '*'
+ ghes: '>=3.4'
topics:
- API
miniTocMaxHeadingLevel: 3
diff --git a/translations/es-ES/content/rest/reference/enterprise-admin.md b/translations/es-ES/content/rest/reference/enterprise-admin.md
index d903396303..230e3f76b5 100644
--- a/translations/es-ES/content/rest/reference/enterprise-admin.md
+++ b/translations/es-ES/content/rest/reference/enterprise-admin.md
@@ -68,7 +68,7 @@ You can also read the current version by calling the [meta endpoint](/rest/refer
{% endif %}
-{% ifversion fpt or ghec or ghes > 3.2 %}
+{% ifversion fpt or ghec or ghes > 3.2 or ghae-issue-5528 %}
## Audit log
@@ -78,7 +78,7 @@ You can also read the current version by calling the [meta endpoint](/rest/refer
{% endif %}
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 %}
## Billing
{% for operation in currentRestOperations %}
diff --git a/translations/es-ES/content/rest/reference/permissions-required-for-github-apps.md b/translations/es-ES/content/rest/reference/permissions-required-for-github-apps.md
index 3a5a6c13cc..7e8bf148cb 100644
--- a/translations/es-ES/content/rest/reference/permissions-required-for-github-apps.md
+++ b/translations/es-ES/content/rest/reference/permissions-required-for-github-apps.md
@@ -921,6 +921,9 @@ _Equipos_
{% ifversion fpt or ghes > 3.0 or ghae -%}
- [`GET /repos/:owner/:repo/code-scanning/sarifs/:sarif_id`](/rest/reference/code-scanning#get-information-about-a-sarif-upload) (:read)
{% endif -%}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5435 -%}
+- [`GET /orgs/:org/code-scanning/alerts`](/rest/reference/code-scanning#list-code-scanning-alerts-by-organization) (:read)
+{% endif -%}
{% ifversion fpt or ghes or ghec %}
### Permiso sobre los "ejecutores auto-hospedados"
diff --git a/translations/es-ES/data/reusables/accounts/you-must-know-your-password.md b/translations/es-ES/data/reusables/accounts/you-must-know-your-password.md
new file mode 100644
index 0000000000..f4795c3909
--- /dev/null
+++ b/translations/es-ES/data/reusables/accounts/you-must-know-your-password.md
@@ -0,0 +1 @@
+If you protect your personal account with two-factor authentication but do not know your password, you will not be able to generate a one-time password to recover your account. {% data variables.product.company_short %} can send a password reset email to a verified address associated with your account. For more information, see "[Updating your {% data variables.product.prodname_dotcom %} access credentials](/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials#requesting-a-new-password)."
diff --git a/translations/es-ES/data/reusables/actions/jobs/section-running-jobs-in-a-container-credentials.md b/translations/es-ES/data/reusables/actions/jobs/section-running-jobs-in-a-container-credentials.md
index d697ff8f8c..d645231024 100644
--- a/translations/es-ES/data/reusables/actions/jobs/section-running-jobs-in-a-container-credentials.md
+++ b/translations/es-ES/data/reusables/actions/jobs/section-running-jobs-in-a-container-credentials.md
@@ -8,6 +8,6 @@ container:
image: ghcr.io/owner/image
credentials:
username: ${{ github.actor }}
- password: ${{ secrets.ghcr_token }}
+ password: ${{ secrets.github_token }}
```
{% endraw %}
diff --git a/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md b/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
index 3570a95f99..b657745630 100644
--- a/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
+++ b/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
1. En la barra lateral de Parámetros, haz clic en **Audit Log (Registro de auditoría)**. 
diff --git a/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md b/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
index 5fa3e3d89e..a765d398be 100644
--- a/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
+++ b/translations/es-ES/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
3. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
3. En la barra lateral izquierda, haz clic en **Audit Log (Registro de auditoría)**. 
diff --git a/translations/es-ES/data/reusables/dependabot/dependabot-secrets-button.md b/translations/es-ES/data/reusables/dependabot/dependabot-secrets-button.md
index 622983c8bc..ea5f3fdc9f 100644
--- a/translations/es-ES/data/reusables/dependabot/dependabot-secrets-button.md
+++ b/translations/es-ES/data/reusables/dependabot/dependabot-secrets-button.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, select **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets**, then click **{% data variables.product.prodname_dependabot %}**.
-{% elsif ghes > 3.2%}
+{% else %}
1. En la barra lateral, haz clic en **{% data variables.product.prodname_dependabot %}**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/github-actions/github-token-available-permissions.md b/translations/es-ES/data/reusables/github-actions/github-token-available-permissions.md
index 8c23fd1fdb..313c4302de 100644
--- a/translations/es-ES/data/reusables/github-actions/github-token-available-permissions.md
+++ b/translations/es-ES/data/reusables/github-actions/github-token-available-permissions.md
@@ -5,8 +5,8 @@ permissions:
actions: read|write|none
checks: read|write|none
contents: read|write|none
- deployments: read|write|none
- id-token: read|write|none
+ deployments: read|write|none{% ifversion fpt or ghec %}
+ id-token: read|write|none{% endif %}
issues: read|write|none
discussions: read|write|none
packages: read|write|none
diff --git a/translations/es-ES/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md b/translations/es-ES/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
index 711516a636..984c076d12 100644
--- a/translations/es-ES/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
+++ b/translations/es-ES/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
@@ -12,6 +12,6 @@
2. En la barra lateral izquierda, da clic en **Resumen empresarial**.
3. En la barra lateral de la empresa, haz clic en {% octicon "law" aria-label="The law icon" %} **Políticas**.{% endif %}
2. Navega a los ajustes de los "Grupos de ejecutores":
- * **En una organización**: Haz clic en **Acciones** en la barra lateral izquierda{% ifversion fpt or ghec %} y luego en **Grupos de ejecutores** debajo de ella{% endif %}.{% ifversion ghec or ghes or ghae %}
- * {% ifversion ghec %}**Si estás utilizand una cuenta empresarial**:{% elsif ghes or ghae %}**Si estás utilizando un ejecutor a nivel empresarial**:{% endif %} Haz clic en **Acciones** debajo de "{% octicon "law" aria-label="The law icon" %} Políticas"{% ifversion ghec %}, y luego en la pestaña de **Grupos de ejecutores** {% endif %}.{% endif %}
+ * **In an organization**: Click **Actions** in the left sidebar, then click {% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}**Runner groups**{% elsif ghae or ghes < 3.4 %}**Runners**{% endif %} below it.{% ifversion ghec or ghes or ghae %}
+ * {% ifversion ghec %}**If using an enterprise account**:{% elsif ghes or ghae %}**If using an enterprise-level runner**:{% endif %} Click **Actions** under "{% octicon "law" aria-label="The law icon" %} Policies", then click the {% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}**Runners groups**{% elsif ghae or ghes < 3.4 %}**Runners**{% endif %} tab.{% endif %}
{% endif %}
diff --git a/translations/es-ES/data/reusables/github-actions/sidebar-secret.md b/translations/es-ES/data/reusables/github-actions/sidebar-secret.md
index a2074b1dd5..0c5a37b1e5 100644
--- a/translations/es-ES/data/reusables/github-actions/sidebar-secret.md
+++ b/translations/es-ES/data/reusables/github-actions/sidebar-secret.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda, haz clic en **Secrets** (Secretos).
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/billing_plans.md b/translations/es-ES/data/reusables/organizations/billing_plans.md
index 4debbde75b..60b7acac48 100644
--- a/translations/es-ES/data/reusables/organizations/billing_plans.md
+++ b/translations/es-ES/data/reusables/organizations/billing_plans.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "credit-card" aria-label="The credit card icon" %} Billing and plans**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral de configuración de tu organización, haz clic en **Planes & facturación**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/github-apps-settings-sidebar.md b/translations/es-ES/data/reusables/organizations/github-apps-settings-sidebar.md
index f897834b74..982008d449 100644
--- a/translations/es-ES/data/reusables/organizations/github-apps-settings-sidebar.md
+++ b/translations/es-ES/data/reusables/organizations/github-apps-settings-sidebar.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, select **{% octicon "code" aria-label="The code icon" %} Developer settings** then click **{% data variables.product.prodname_github_apps %}**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda, haz clic en **{% data variables.product.prodname_github_apps %}**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/member-privileges.md b/translations/es-ES/data/reusables/organizations/member-privileges.md
index bf781907c4..19bfc3fae5 100644
--- a/translations/es-ES/data/reusables/organizations/member-privileges.md
+++ b/translations/es-ES/data/reusables/organizations/member-privileges.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "people" aria-label="The people icon" %} Member privileges**.
-{% elsif ghae or ghes < 3.4 %}
+{% else %}
4. En la barra lateral izquierda, da clic en **Privilegios de los miembros**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/repository-defaults.md b/translations/es-ES/data/reusables/organizations/repository-defaults.md
index b94201e0c1..4353dc97f8 100644
--- a/translations/es-ES/data/reusables/organizations/repository-defaults.md
+++ b/translations/es-ES/data/reusables/organizations/repository-defaults.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code, planning, and automation" section of the sidebar, select **{% octicon "repo" aria-label="The repo icon" %} Repository**, then click **Repository defaults**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda da clic en **Predeterminados del repositorio**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/security-and-analysis.md b/translations/es-ES/data/reusables/organizations/security-and-analysis.md
index 3a4f474484..6cfb829475 100644
--- a/translations/es-ES/data/reusables/organizations/security-and-analysis.md
+++ b/translations/es-ES/data/reusables/organizations/security-and-analysis.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "codescan" aria-label="The codescan icon" %} Code security and analysis**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda, da clic en **Seguridad & análisis**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/organizations/security.md b/translations/es-ES/data/reusables/organizations/security.md
index cbd048958c..c0e89bec63 100644
--- a/translations/es-ES/data/reusables/organizations/security.md
+++ b/translations/es-ES/data/reusables/organizations/security.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Authentication security**.
{% else %}
1. En la barra lateral izquierda, da clic en **Seguridad de la organización**.
diff --git a/translations/es-ES/data/reusables/organizations/teams_sidebar.md b/translations/es-ES/data/reusables/organizations/teams_sidebar.md
index 082f84c9a5..59d119121d 100644
--- a/translations/es-ES/data/reusables/organizations/teams_sidebar.md
+++ b/translations/es-ES/data/reusables/organizations/teams_sidebar.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "comment-discussion" aria-label="The comment-discussion icon" %} Team discussions**.
{% else %}
1. En la barra lateral de Configuración, da clic en **Equipos**. 
diff --git a/translations/es-ES/data/reusables/organizations/verified-domains.md b/translations/es-ES/data/reusables/organizations/verified-domains.md
index 7702d9adbc..8a89d9f17c 100644
--- a/translations/es-ES/data/reusables/organizations/verified-domains.md
+++ b/translations/es-ES/data/reusables/organizations/verified-domains.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "verified" aria-label="The verified icon" %} Verified and approved domains**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda, haz clic en **Dominios verificados & aprobados**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/pages/sidebar-pages.md b/translations/es-ES/data/reusables/pages/sidebar-pages.md
index 5744bf07f6..98cf17070e 100644
--- a/translations/es-ES/data/reusables/pages/sidebar-pages.md
+++ b/translations/es-ES/data/reusables/pages/sidebar-pages.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghes > 3.3 or ghec or ghae-issue-5658 %}
+{% ifversion fpt or ghes > 3.4 or ghec or ghae-issue-5658 %}
1. In the "Code & operations" section of the sidebar, click **{% octicon "browser" aria-label="The browser icon" %} Pages**.
{% else %}
1. En la barra lateral izquierda, da clic en **Páginas**. 
diff --git a/translations/es-ES/data/reusables/repositories/actions-scheduled-workflow-example.md b/translations/es-ES/data/reusables/repositories/actions-scheduled-workflow-example.md
index 3dac684983..13dd07c7a0 100644
--- a/translations/es-ES/data/reusables/repositories/actions-scheduled-workflow-example.md
+++ b/translations/es-ES/data/reusables/repositories/actions-scheduled-workflow-example.md
@@ -1,4 +1,4 @@
-Puedes programar un flujo de trabajo para que se ejecute en horarios UTC específicos usando [sintaxis de cron POSIX](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Los flujos de trabajo programados se ejecutan en la confirmación más reciente en la rama base o en la rama por defecto. El intervalo más corto en el que puedes programar flujos de trabajo es cada 15 minutos.
+Puedes programar un flujo de trabajo para que se ejecute en horarios UTC específicos usando [sintaxis de cron POSIX](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07). Los flujos de trabajo programados se ejecutan en la confirmación más reciente en la rama base o en la rama por defecto. El intervalo más corto en el que puedes programar flujos de trabajo es cada 5 minutos.
Este ejemplo activa el flujo de trabajo diariamente a las 5:30 y 17:30 UTC:
diff --git a/translations/es-ES/data/reusables/repositories/navigate-to-security-and-analysis.md b/translations/es-ES/data/reusables/repositories/navigate-to-security-and-analysis.md
index 692a3dfcbe..d8fe749521 100644
--- a/translations/es-ES/data/reusables/repositories/navigate-to-security-and-analysis.md
+++ b/translations/es-ES/data/reusables/repositories/navigate-to-security-and-analysis.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Security & analysis**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En la barra lateral izquierda, da clic en **Seguridad & análisis**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/repositories/repository-branches.md b/translations/es-ES/data/reusables/repositories/repository-branches.md
index 3d0f401d22..8d0c4d1ece 100644
--- a/translations/es-ES/data/reusables/repositories/repository-branches.md
+++ b/translations/es-ES/data/reusables/repositories/repository-branches.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code & operations" section of the sidebar, click **{% octicon "git-branch" aria-label="The git-branch icon" %} Branches**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. En el menú izquierdo, da clic en **Ramas**. 
{% endif %}
diff --git a/translations/es-ES/data/reusables/repositories/sidebar-notifications.md b/translations/es-ES/data/reusables/repositories/sidebar-notifications.md
index eb6745e85c..93a4ef9a2c 100644
--- a/translations/es-ES/data/reusables/repositories/sidebar-notifications.md
+++ b/translations/es-ES/data/reusables/repositories/sidebar-notifications.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "mail" aria-label="The mail icon" %} Email notifications**.
{% else %}
1. Da clic en **Notificaciones**. 
diff --git a/translations/es-ES/data/reusables/user_settings/access_applications.md b/translations/es-ES/data/reusables/user_settings/access_applications.md
index 2fe392350c..766d040d6c 100644
--- a/translations/es-ES/data/reusables/user_settings/access_applications.md
+++ b/translations/es-ES/data/reusables/user_settings/access_applications.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "apps" aria-label="The apps icon" %} Applications**.
{% else %}
1. En la barra lateral izquierda, haz clic en **Applications** (Aplicaciones). 
diff --git a/translations/es-ES/data/reusables/user_settings/account_settings.md b/translations/es-ES/data/reusables/user_settings/account_settings.md
index 6adb2aee80..bd0c4ea2bc 100644
--- a/translations/es-ES/data/reusables/user_settings/account_settings.md
+++ b/translations/es-ES/data/reusables/user_settings/account_settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-next %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-next %}
1. En la barra lateral izquierda, haz clic en **{% octicon "gear" aria-label="The gear icon" %} Account** (Cuenta).
{% else %}
1. En la barra lateral izquierda, da clic en **Cuenta**. 
diff --git a/translations/es-ES/data/reusables/user_settings/appearance-settings.md b/translations/es-ES/data/reusables/user_settings/appearance-settings.md
index 5b3fb50d32..ef71e7c1e9 100644
--- a/translations/es-ES/data/reusables/user_settings/appearance-settings.md
+++ b/translations/es-ES/data/reusables/user_settings/appearance-settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "paintbrush" aria-label="The paintbrush icon" %} Appearance**.
{% else %}
1. En la barra lateral de configuración de usuario, da clic en **Apariencia**.
diff --git a/translations/es-ES/data/reusables/user_settings/developer_settings.md b/translations/es-ES/data/reusables/user_settings/developer_settings.md
index 2313297a74..ba2bf33f9f 100644
--- a/translations/es-ES/data/reusables/user_settings/developer_settings.md
+++ b/translations/es-ES/data/reusables/user_settings/developer_settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code" aria-label="The code icon" %} Developer settings**.
{% else %}
1. En la barra lateral izquierda, haz clic en **Developer settings** (Parámetros del desarrollador). 
diff --git a/translations/es-ES/data/reusables/user_settings/emails.md b/translations/es-ES/data/reusables/user_settings/emails.md
index 4701b9b984..88122b4e3b 100644
--- a/translations/es-ES/data/reusables/user_settings/emails.md
+++ b/translations/es-ES/data/reusables/user_settings/emails.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "mail" aria-label="The mail icon" %} Emails**.
{% else %}
1. En la barra lateral izquierda, da clic en **Correos Electrónicos**. 
diff --git a/translations/es-ES/data/reusables/user_settings/organizations.md b/translations/es-ES/data/reusables/user_settings/organizations.md
index 0a19839a55..adb1d43dc5 100644
--- a/translations/es-ES/data/reusables/user_settings/organizations.md
+++ b/translations/es-ES/data/reusables/user_settings/organizations.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "organization" aria-label="The organization icon" %} Organizations**.
{% else %}
1. En la barra lateral de configuración de usuario, da clic en **Organizaciones**. 
diff --git a/translations/es-ES/data/reusables/user_settings/repo-tab.md b/translations/es-ES/data/reusables/user_settings/repo-tab.md
index 07a8e9af62..f4567a37a5 100644
--- a/translations/es-ES/data/reusables/user_settings/repo-tab.md
+++ b/translations/es-ES/data/reusables/user_settings/repo-tab.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "repo" aria-label="The repo icon" %} Repositories**.
{% else %}
1. En la barra lateral izquierda, haz clic en **Repositories** (Repositorios). 
diff --git a/translations/es-ES/data/reusables/user_settings/saved_replies.md b/translations/es-ES/data/reusables/user_settings/saved_replies.md
index b47b23628e..ef142883b7 100644
--- a/translations/es-ES/data/reusables/user_settings/saved_replies.md
+++ b/translations/es-ES/data/reusables/user_settings/saved_replies.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "reply" aria-label="The reply icon" %} Saved replies**.
{% else %}
1. En la barra lateral izquierda, da clic en **Respuestas guardadas**. 
diff --git a/translations/es-ES/data/reusables/user_settings/security-analysis.md b/translations/es-ES/data/reusables/user_settings/security-analysis.md
index c54b43346e..73dd008738 100644
--- a/translations/es-ES/data/reusables/user_settings/security-analysis.md
+++ b/translations/es-ES/data/reusables/user_settings/security-analysis.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Code security and analysis**.
{% else %}
1. En la barra lateral izquierda, da clic en **Seguridad & análisis**. 
diff --git a/translations/es-ES/data/reusables/user_settings/security.md b/translations/es-ES/data/reusables/user_settings/security.md
index ef37e871ec..93faa88e31 100644
--- a/translations/es-ES/data/reusables/user_settings/security.md
+++ b/translations/es-ES/data/reusables/user_settings/security.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Password and authentication**.
{% else %}
1. En la barra lateral izquierda, da clic en **Seguridad de cuenta**. 
diff --git a/translations/es-ES/data/reusables/user_settings/ssh.md b/translations/es-ES/data/reusables/user_settings/ssh.md
index 44d51f35ff..da561daf8d 100644
--- a/translations/es-ES/data/reusables/user_settings/ssh.md
+++ b/translations/es-ES/data/reusables/user_settings/ssh.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "key" aria-label="The key icon" %} SSH and GPG keys**.
{% else %}
1. En la barra lateral de configuración de usuario, da clic en **Llaves SSH y GPG**. 
diff --git a/translations/ja-JP/content/actions/security-guides/automatic-token-authentication.md b/translations/ja-JP/content/actions/security-guides/automatic-token-authentication.md
index b86900fd20..8394d835de 100644
--- a/translations/ja-JP/content/actions/security-guides/automatic-token-authentication.md
+++ b/translations/ja-JP/content/actions/security-guides/automatic-token-authentication.md
@@ -85,8 +85,8 @@ The following table shows the permissions granted to the `GITHUB_TOKEN` by defau
| actions | read/write | none | read |
| checks | read/write | none | read |
| contents | read/write | read | read |
-| deployments | read/write | none | read |
-| id-token | read/write | none | read |
+| deployments | read/write | none | read |{% ifversion fpt or ghec %}
+| id-token | read/write | none | read |{% endif %}
| issues | read/write | none | read |
| metadata | read | read | read |
| packages | read/write | none | read |
diff --git a/translations/ja-JP/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md b/translations/ja-JP/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
index 61e750cc30..6afb61b812 100644
--- a/translations/ja-JP/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
+++ b/translations/ja-JP/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
@@ -699,7 +699,7 @@ All Storage tests passed
`ghe-migrator` is a hi-fidelity tool to help you migrate from one GitHub instance to another. You can consolidate your instances or move your organization, users, teams, and repositories from GitHub.com to {% data variables.product.prodname_enterprise %}.
-For more information, please see our guide on [migrating user, organization, and repository data](/enterprise/admin/guides/migrations/).
+For more information, please see our guides on [migrating data to and from your enterprise](/enterprise/admin/user-management/migrating-data-to-and-from-your-enterprise/).
### git-import-detect
diff --git a/translations/ja-JP/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md b/translations/ja-JP/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
index 70e03b1efa..cca33717f5 100644
--- a/translations/ja-JP/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
+++ b/translations/ja-JP/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
@@ -64,7 +64,7 @@ If you know your password for {% data variables.product.product_location %} but
{% note %}
-**注釈**: セキュリティ上の理由から、ワンタイムパスワードで認証してアカウントへのアクセスを回復するには、1〜3 営業日かかる場合があります。 {% data variables.product.company_short %} will not review additional requests submitted during this time.
+**Note**: For security reasons, regaining access to your account by authenticating with a one-time password can take up to three business days. {% data variables.product.company_short %} will not review additional requests submitted during this time.
{% endnote %}
@@ -101,6 +101,6 @@ If you know your password for {% data variables.product.product_location %} but
- If you've previously set up a personal access token and would like to use the personal access token for verification, click **Personal access token**.

-1. {% data variables.contact.github_support %}のメンバーがリクエストをレビューし、1〜3 営業日以内にメールでお知らせします。 リクエストが承認されると、アカウントリカバリプロセスを完了するためのリンクが送信されます。 リクエストが拒否された場合、追加の質問がある場合のサポートへの問い合わせ方法がメールに記載されます。
+1. A member of {% data variables.contact.github_support %} will review your request and email you within three business days. リクエストが承認されると、アカウントリカバリプロセスを完了するためのリンクが送信されます。 リクエストが拒否された場合、追加の質問がある場合のサポートへの問い合わせ方法がメールに記載されます。
{% endif %}
diff --git a/translations/ja-JP/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md b/translations/ja-JP/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
index a8cc636585..cd495e0341 100644
--- a/translations/ja-JP/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
+++ b/translations/ja-JP/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
@@ -76,7 +76,7 @@ Microsoft Enterprise Agreement を通じて {% data variables.product.prodname_e
### Sample minutes cost calculation
-For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 15,000 minutes could have a total storage and minute overage cost of $56 USD, depending on the operating systems used to run jobs.
+For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 5,000 minutes could have a total storage and minute overage cost of $56 USD, depending on the operating systems used to run jobs.
- 5,000 (3,000 Linux and 2,000 Windows) minutes = $56 USD ($24 USD + $32 USD).
- 3,000 Linux minutes at $0.008 USD per minute = $24 USD.
diff --git a/translations/ja-JP/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md b/translations/ja-JP/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
index 89bcf4cde1..74c583d24e 100644
--- a/translations/ja-JP/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
+++ b/translations/ja-JP/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
@@ -21,6 +21,8 @@ You can report users that have violated {% data variables.product.prodname_dotco
If reported content is enabled for a public repository, you can also report content directly to repository maintainers.
+Users in India can contact GitHub's Grievance Officer for India [here](https://support.github.com/contact/india-grievance-officer).
+
## Reporting a user
{% data reusables.profile.user_profile_page_navigation %}
diff --git a/translations/ja-JP/content/get-started/getting-started-with-git/managing-remote-repositories.md b/translations/ja-JP/content/get-started/getting-started-with-git/managing-remote-repositories.md
index f90be1a859..6be7725c53 100644
--- a/translations/ja-JP/content/get-started/getting-started-with-git/managing-remote-repositories.md
+++ b/translations/ja-JP/content/get-started/getting-started-with-git/managing-remote-repositories.md
@@ -195,6 +195,8 @@ Use the `git remote rm` command to remove a remote URL from your repository.
`git remote rm` コマンドは 1 つの引数を取ります:
* リモート名 (`destination` など)
+Removing the remote URL from your repository only unlinks the local and remote repositories. It does not delete the remote repository.
+
## サンプル
次の例は (推奨されるとおり) [HTTPS を使用してクローンを作成](/github/getting-started-with-github/about-remote-repositories/#cloning-with-https-urls)したと想定しています。
@@ -217,7 +219,7 @@ $ git remote -v
{% warning %}
-**メモ**: `git remote rm` はリモートリポジトリをサーバから削除するわけではありません。 リモートとその参照をローカルリポジトリから削除するだけです。
+**Note**: `git remote rm` does not delete the remote repository from the server. リモートとその参照をローカルリポジトリから削除するだけです。
{% endwarning %}
diff --git a/translations/ja-JP/content/get-started/learning-about-github/about-github-advanced-security.md b/translations/ja-JP/content/get-started/learning-about-github/about-github-advanced-security.md
index c8b27e59df..0231b06a5a 100644
--- a/translations/ja-JP/content/get-started/learning-about-github/about-github-advanced-security.md
+++ b/translations/ja-JP/content/get-started/learning-about-github/about-github-advanced-security.md
@@ -36,10 +36,31 @@ A {% data variables.product.prodname_GH_advanced_security %} license provides th
- **Security overview** - Review the security configuration and alerts for an organization and identify the repositories at greatest risk. For more information, see "[About the security overview](/code-security/security-overview/about-the-security-overview)."
{% endif %}
+{% ifversion fpt or ghec %}
+The table below summarizes the availability of {% data variables.product.prodname_GH_advanced_security %} features for public and private repositories.
+
+{% ifversion fpt %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %} |
+| :-----------------: | :---------------------------: | :--------------------------------------------: | :-----------------------------------------: |
+| Code scanning | Yes | No | Yes |
+| Secret scanning | Yes **(limited functionality only)** | No | Yes |
+| Dependency review | Yes | No | Yes |
+{% endif %}
+{% ifversion ghec %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %} |
+| :-----------------: | :---------------------------: | :--------------------------------------------: | :-----------------------------------------: |
+| Code scanning | Yes | No | Yes |
+| Secret scanning | Yes **(limited functionality only)** | No | Yes |
+| Dependency review | Yes | No | Yes |
+| Security overview | No | No | Yes |
+{% endif %}
+
+{% endif %}
+
For information about {% data variables.product.prodname_advanced_security %} features that are in development, see "[{% data variables.product.prodname_dotcom %} public roadmap](https://github.com/github/roadmap)." For an overview of all security features, see "[{% data variables.product.prodname_dotcom %} security features](/code-security/getting-started/github-security-features)."
{% ifversion fpt or ghec %}
-{% data variables.product.prodname_GH_advanced_security %} features are enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}. Organizations that use {% data variables.product.prodname_ghe_cloud %} with {% data variables.product.prodname_advanced_security %} can additionally enable these features for private and internal repositories. They also have access an organization-level security overview. {% ifversion fpt %}For more information, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
+{% data variables.product.prodname_GH_advanced_security %} features are enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghec %}, except for the security overview{% endif %}. Organizations that use {% data variables.product.prodname_ghe_cloud %} with {% data variables.product.prodname_advanced_security %} can additionally enable these features for private and internal repositories. They also have access to an organization-level security overview. {% ifversion fpt %}For more information, see the [{% data variables.product.prodname_ghe_cloud %} documentation](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
{% endif %}
{% ifversion ghes or ghec %}
@@ -59,9 +80,9 @@ The site administrator must enable {% data variables.product.prodname_advanced_s
Once your system is set up, you can enable and disable these features at the organization or repository level.
{%- elsif ghec %}
-For public repositories these features are permanently on and can only be disabled if you change the visibility of the project so that the code is no longer public.
+For public repositories these features are permanently on and can only be disabled if you change the visibility of the project so that the code is no longer public.
-For other repositories, once you have a license for your enterprise account, you can enable and disable these features at the organization or repository level.
+For other repositories, once you have a license for your enterprise account, you can enable and disable these features at the organization or repository level.
{%- elsif ghae %}
You can enable and disable these features at the organization or repository level.
diff --git a/translations/ja-JP/content/github/site-policy/github-community-guidelines.md b/translations/ja-JP/content/github/site-policy/github-community-guidelines.md
index ef578e91c1..6989bc5a0e 100644
--- a/translations/ja-JP/content/github/site-policy/github-community-guidelines.md
+++ b/translations/ja-JP/content/github/site-policy/github-community-guidelines.md
@@ -22,7 +22,7 @@ GitHub コミュニティの主な目的は、ソフトウェアプロジェク
* **広い心で受け入れる** - 他のコラボレータとあなたとでは、経験値やバックグラウンドが異なるかもしれませんが、だからといって相手がコントリビューションにつながる良いアイデアを持っていないということにはなりません。 新たなコラボレータや、かけだしのユーザーは歓迎してあげましょう。
-* **お互いを尊重し合うこと。**無礼な態度ほど、健全な会話を妨げるものはありません。 礼儀正しく、大人の態度を保ちましょう。一般的に攻撃的、虐待的、ヘイトスピーチとみなされるような内容を投稿しないでください。 嫌がらせや、人が悲しむような行為は禁止されています。 あらゆるやり取りにおいて、お互いに品位と配慮をもって接しましょう。
+* **Respect each other** - Nothing sabotages healthy conversation like rudeness. 礼儀正しく、大人の態度を保ちましょう。一般的に攻撃的、虐待的、ヘイトスピーチとみなされるような内容を投稿しないでください。 嫌がらせや、人が悲しむような行為は禁止されています。 あらゆるやり取りにおいて、お互いに品位と配慮をもって接しましょう。
意見に反対したいこともあるでしょう。 それは全くかまいません。 ただし、批判すべきはアイデアであって、人ではありません。 悪口、個人攻撃、投稿の内容ではなく口調に対する応答、脊髄反射的な反論を行うのではなく、 会話の質を高めるような、理論的な反論を行いましょう。
diff --git a/translations/ja-JP/content/github/site-policy/submitting-content-removal-requests.md b/translations/ja-JP/content/github/site-policy/submitting-content-removal-requests.md
index a473a51ce0..e5d9e5cf14 100644
--- a/translations/ja-JP/content/github/site-policy/submitting-content-removal-requests.md
+++ b/translations/ja-JP/content/github/site-policy/submitting-content-removal-requests.md
@@ -23,3 +23,5 @@ GitHub トレードマークポリシーは、ブランドまたはビジネス
## [GitHub個人情報削除ポリシー](/github/site-policy/github-private-information-removal-policy)
GitHub個人情報削除ポリシーは、個人的 (機密性が高く、セキュリティリスクをもたらす) で、著作権または商標によって保護されていないデータの報告に使用できます。
+
+Users in India can contact GitHub's Grievance Officer [here](https://support.github.com/contact/india-grievance-officer).
diff --git a/translations/ja-JP/content/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue.md b/translations/ja-JP/content/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue.md
index 31fc46c1a1..0c6c4064ee 100644
--- a/translations/ja-JP/content/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue.md
+++ b/translations/ja-JP/content/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue.md
@@ -59,21 +59,21 @@ Pull Requestの説明またはコミットメッセージで、サポートさ
{% ifversion fpt or ghes or ghae or ghec %}手動でリンクを解除できるのは、手動でリンクされたPull Requestだけです。 キーワードを使用してリンクしたIssueのリンクを解除するには、Pull Requestの説明を編集してそのキーワードを削除する必要があります。{% endif %}
-クローズするキーワードは、コミットメッセージでも使用できます。 デフォルトブランチにコミットをマージするとIssueはクローズされますが、そのコミットを含むプルリクエストは、リンクされたプルリクエストとしてリストされません。
+クローズするキーワードは、コミットメッセージでも使用できます。 デフォルトブランチにコミットをマージするとIssueはクローズされますが、そのコミットを含むPull Requestは、リンクされたPull Requestとしてリストされません。
{% ifversion fpt or ghes or ghae or ghec %}
-## 手動でプルリクエストをIssueにリンクする
+## 手動でPull RequestをIssueにリンクする
-リポジトリへの書き込み権限があるユーザなら誰でも、手動でプルリクエストをIssueにリンクできます。
+リポジトリへの書き込み権限があるユーザなら誰でも、手動でPull RequestをIssueにリンクできます。
-手動で1つのプルリクエストごとに最大10個のIssueをリンクできます。 Issueとプルリクエストは同じリポジトリになければなりません。
+手動で1つのPull Requestごとに最大10個のIssueをリンクできます。 IssueとPull Requestは同じリポジトリになければなりません。
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-pr %}
-3. プルリクエストのリストで、Issueにリンクしたいプルリクエストをクリックします。
+3. Pull Requestのリストで、IssueにリンクしたいPull Requestをクリックします。
4. 右のサイドバーで、[**Linked issues**] をクリックします。 ![右サイドバーの [Linked issues]](/assets/images/help/pull_requests/linked-issues.png)
-5. プルリクエストにリンクするIssueをクリックします。 
+5. Pull RequestにリンクするIssueをクリックします。 
{% endif %}
## 参考リンク
diff --git a/translations/ja-JP/content/issues/tracking-your-work-with-issues/quickstart.md b/translations/ja-JP/content/issues/tracking-your-work-with-issues/quickstart.md
index d7f2c04d44..9ee10df6d4 100644
--- a/translations/ja-JP/content/issues/tracking-your-work-with-issues/quickstart.md
+++ b/translations/ja-JP/content/issues/tracking-your-work-with-issues/quickstart.md
@@ -20,7 +20,7 @@ topics:
## 必要な環境
-Issueを作成するにはリポジトリが必要です。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 {% data reusables.enterprise-accounts.emu-permission-repo %} The repository must have issues enabled. リポジトリの作成に関する詳細は「[新しいリポジトリの作成](/articles/creating-a-new-repository)」を参照してください。 リポジトリでIssueが無効化されている場合、Issueを有効化する方法に関する情報については「[Issueの無効化](/github/administering-a-repository/managing-repository-settings/disabling-issues)」を参照してください。
+Issueを作成するにはリポジトリが必要です。 書き込みアクセス権を持つ既存のリポジトリを利用することも、新しいリポジトリを作成することもできます。 {% data reusables.enterprise-accounts.emu-permission-repo %} リポジトリはIssueを有効化していなければなりません。 リポジトリの作成に関する詳細は「[新しいリポジトリの作成](/articles/creating-a-new-repository)」を参照してください。 リポジトリでIssueが無効化されている場合、Issueを有効化する方法に関する情報については「[Issueの無効化](/github/administering-a-repository/managing-repository-settings/disabling-issues)」を参照してください。
## 空のIssueのオープン
@@ -81,7 +81,7 @@ Issueを既存のプロジェクトに追加できます。 {% ifversion fpt or
## コミュニケーション
-Issueを作成した後は、そのIssueにコメントを追加して会話を続けてください。 コラボレータあるいはTeamを@メンションして、コメントに注意を惹きつけることができます。 同じリポジトリ内の関連するIssueをリンクするために、`#`につづいてIssueのタイトルの一部を続け、リンクしたいIssueをクリックできます。 くわしいじょうほうについては「[GitHubでの執筆](/github/writing-on-github)」を参照してください。
+Issueを作成した後は、そのIssueにコメントを追加して会話を続けてください。 コラボレータあるいはTeamを@メンションして、コメントに注意を惹きつけることができます。 同じリポジトリ内の関連するIssueをリンクするために、`#`につづいてIssueのタイトルの一部を続け、リンクしたいIssueをクリックできます。 くわしい情報については「[GitHubでの執筆](/github/writing-on-github)」を参照してください。

diff --git a/translations/ja-JP/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md b/translations/ja-JP/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md
index 115cd4d317..2fe8f14655 100644
--- a/translations/ja-JP/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md
+++ b/translations/ja-JP/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md
@@ -1,6 +1,6 @@
---
-title: 他のリポジトリへ Issue を移譲する
-intro: より適しているリポジトリに Issue を移動するため、オープン Issue を他のリポジトリに移譲できます。
+title: Transferring an issue to another repository
+intro: 'To move an issue to a better fitting repository, you can transfer open issues to other repositories.'
redirect_from:
- /github/managing-your-work-on-github/managing-your-work-with-issues-and-pull-requests/transferring-an-issue-to-another-repository
- /articles/transferring-an-issue-to-another-repository
@@ -13,27 +13,29 @@ versions:
ghec: '*'
topics:
- Pull requests
-shortTitle: Issueの移譲
+shortTitle: Transfer an issue
---
-
To transfer an open issue to another repository, you must have write access to the repository the issue is in and the repository you're transferring the issue to. For more information, see "[Repository roles for an organization](/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization)."
-同じユーザまたは Organization アカウントが所有するリポジトリ間においてのみ、Issue を移譲できます。 {% ifversion fpt or ghes or ghec %}プライベートリポジトリからパブリックリポジトリへIssueを移譲することはできません。{% endif %}
+You can only transfer issues between repositories owned by the same user or organization account. {% ifversion fpt or ghes or ghec %}You can't transfer an issue from a private repository to a public repository.{% endif %}
-Issueを委譲する場合、コメントとアサインされた人は保持されます。 Issue のラベルとマイルストーンは保持されません。 このIssueは、ユーザー所有または組織全体のプロジェクトボードにとどまり、リポジトリのプロジェクトボードから削除されます。 詳細は「[プロジェクトボードについて](/articles/about-project-boards)」を参照してください。
+When you transfer an issue, comments and assignees are retained. The issue's labels and milestones are not retained. This issue will stay on any user-owned or organization-wide project boards and be removed from any repository project boards. For more information, see "[About project boards](/articles/about-project-boards)."
-Issue でメンションされた人や Team は、Issue が新しいリポジトリに移譲されたことを知らせる通知を受け取ります。 当初の URL は、新しい Issue の URL にリダイレクトします。 新しいリポジトリの読み取り権限がない人には、アクセスできない新しいリポジトリに Issue が移譲されたことを知らせるバナーが表示されます。
+People or teams who are mentioned in the issue will receive a notification letting them know that the issue has been transferred to a new repository. The original URL redirects to the new issue's URL. People who don't have read permissions in the new repository will see a banner letting them know that the issue has been transferred to a new repository that they can't access.
-## 他のリポジトリへオープン Issue を移譲する
+## Transferring an open issue to another repository
{% webui %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-issues %}
-3. Issue のリストで、移譲したい Issue をクリックします。
-4. 右のサイドバーで [**Transfer this issue**] をクリックします。 
-5. [**Choose a repository**] ドロップダウンメニューで、Issue の移譲先にするリポジトリを選択します。 
-6. [**Transfer issue**] をクリックします。 
+3. In the list of issues, click the issue you'd like to transfer.
+4. In the right sidebar, click **Transfer issue**.
+
+5. Use the **Choose a repository** drop-down menu, and select the repository you want to transfer the issue to.
+
+6. Click **Transfer issue**.
+
{% endwebui %}
@@ -49,8 +51,8 @@ gh issue transfer issue {% ifversion ghes %}hostname/{% endif %}own
{% endcli %}
-## 参考リンク
+## Further reading
-- 「[Issue について](/articles/about-issues)」
-- 「[セキュリティログをレビューする](/articles/reviewing-your-security-log)」
-- 「[Organization の Audit log をレビューする](/organizations/keeping-your-organization-secure/reviewing-the-audit-log-for-your-organization)」
+- "[About issues](/articles/about-issues)"
+- "[Reviewing your security log](/articles/reviewing-your-security-log)"
+- "[Reviewing the audit log for your organization](/organizations/keeping-your-organization-secure/reviewing-the-audit-log-for-your-organization)"
diff --git a/translations/ja-JP/content/issues/tracking-your-work-with-issues/viewing-all-of-your-issues-and-pull-requests.md b/translations/ja-JP/content/issues/tracking-your-work-with-issues/viewing-all-of-your-issues-and-pull-requests.md
index d6e62f29c5..25bc309b45 100644
--- a/translations/ja-JP/content/issues/tracking-your-work-with-issues/viewing-all-of-your-issues-and-pull-requests.md
+++ b/translations/ja-JP/content/issues/tracking-your-work-with-issues/viewing-all-of-your-issues-and-pull-requests.md
@@ -25,4 +25,4 @@ Issue およびPull Requestダッシュボードは、すべてのページの
## 参考リンク
-- {% ifversion fpt or ghes or ghae or ghec %}"[Viewing your subscriptions](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions#reviewing-repositories-that-youre-watching){% else %}"[Listing the repositories you're watching](/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching){% endif %}"
+- {% ifversion fpt or ghes or ghae or ghec %}「[サブスクリプションを表示する](/github/managing-subscriptions-and-notifications-on-github/viewing-your-subscriptions#reviewing-repositories-that-youre-watching){% else %}「[Watch しているリポジトリのリスト](/github/receiving-notifications-about-activity-on-github/listing-the-repositories-youre-watching){% endif %}」
diff --git a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/about-projects.md b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/about-projects.md
index 2725039d36..7f9fccd8f3 100644
--- a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/about-projects.md
+++ b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/about-projects.md
@@ -29,7 +29,7 @@ topics:
- タスクの複雑さを追跡する数値フィールド
- タスクの優先度が低、中、高なのかを追跡するための単一選択フィールド
- クイックノートを追跡するテキストフィールド
-- an iteration field to plan work week-by-week
+- 週ごとの作業を計画するための繰り返しフィールド
### 様々な観点からプロジェクトを見る
@@ -47,13 +47,13 @@ topics:
詳しい情報については「[プロジェクトのビューのカスタマイズ](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)」を参照してください。
-### Working with the project command palette
+### プロジェクトコマンドパレットでの作業
-You can use the project command palette to quickly change views or add fields. コマンドパレットは、カスタムキーボードショートカットを覚えておかなくてもいいようにガイドしてくれます。 詳しい情報については「[プロジェクトのビューのカスタマイズ](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)」を参照してください。
+プロジェクトコマンドパレットを使って、素早くビューを切り替えたり、フィールドを追加したりできます。 コマンドパレットは、カスタムキーボードショートカットを覚えておかなくてもいいようにガイドしてくれます。 詳しい情報については「[プロジェクトのビューのカスタマイズ](/issues/trying-out-the-new-projects-experience/customizing-your-project-views)」を参照してください。
### プロジェクト管理タスクの自動化
-Projects (beta) offers built-in workflows. For example, when an issue is closed, you can automatically set the status to "Done." You can also use the GraphQL API and {% data variables.product.prodname_actions %} to automate routine project management tasks. For more information, see "[Automating projects](/issues/trying-out-the-new-projects-experience/automating-projects)" and "[Using the API to manage projects](/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)."
+プロジェクト(ベータ)は、組み込みのワークフローを提供します。 たとえば、Issueがクローズされると自動的にステータスを「Done」に設定できます。 GraphQL APIと{% data variables.product.prodname_actions %}を使って、ルーチンのプロジェクトタスクを自動化することもできます。 詳しい情報については「[プロジェクトの自動化](/issues/trying-out-the-new-projects-experience/automating-projects)」及び「[APIを使ったプロジェクトの管理](/issues/trying-out-the-new-projects-experience/using-the-api-to-manage-projects)」を参照してください。
## プロジェクト(ベータ)と非ベータのプロジェクトの比較
diff --git a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/automating-projects.md b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/automating-projects.md
index 374fe7d144..b0fa4bc80d 100644
--- a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/automating-projects.md
+++ b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/automating-projects.md
@@ -1,6 +1,6 @@
---
title: プロジェクト(ベータ)の自動化
-intro: 'You can use built-in workflows or the API and {% data variables.product.prodname_actions %} to manage your projects.'
+intro: '組み込みのワークフロー、あるいはAPIと{% data variables.product.prodname_actions %}を使ってプロジェクトを管理できます。'
allowTitleToDifferFromFilename: true
miniTocMaxHeadingLevel: 3
versions:
@@ -17,13 +17,13 @@ topics:
## はじめに
-You can add automation to help manage your project. Projects (beta) includes built-in workflows that you can configure through the UI. Additionally, you can write custom workflows with the GraphQL API and {% data variables.product.prodname_actions %}.
+プロジェクトの管理に役立つ自動化を追加できます。 プロジェクト(ベータ)には、UIを通じて設定できる組み込みのワークフローが含まれています。 加えて、GraphQL APIと{% data variables.product.prodname_actions %}でカスタムのワークフローを書くことができます。
-## Built-in workflows
+## 組み込みのワークフロー
{% data reusables.projects.about-workflows %}
-You can enable or disable the built-in workflows for your project.
+プロジェクトでは、組み込みのワークフローを有効化あるいは無効化できます。
{% data reusables.projects.enable-basic-workflow %}
diff --git a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/best-practices-for-managing-projects.md b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/best-practices-for-managing-projects.md
index 1f46ea5940..849048728c 100644
--- a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/best-practices-for-managing-projects.md
+++ b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/best-practices-for-managing-projects.md
@@ -49,7 +49,7 @@ IssueとPull Requestには、コラボレータと容易にコミュニケーシ
You can automate tasks to spend less time on busy work and more time on the project itself. 手動でやることを覚えておく必要が減れば、それだけプロジェクトは耐震の状態に保たれるようになります。
-Projects (beta) offers built-in workflows. For example, when an issue is closed, you can automatically set the status to "Done."
+プロジェクト(ベータ)は、組み込みのワークフローを提供します。 たとえば、Issueがクローズされると自動的にステータスを「Done」に設定できます。
Additionally, {% data variables.product.prodname_actions %} and the GraphQL API enable you to automate routine project management tasks. For example, to keep track of pull requests awaiting review, you can create a workflow that adds a pull request to a project and sets the status to "needs review"; this process can be automatically triggered when a pull request is marked as "ready for review."
diff --git a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/creating-a-project.md b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/creating-a-project.md
index 1a3f4355df..7e2f24fabc 100644
--- a/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/creating-a-project.md
+++ b/translations/ja-JP/content/issues/trying-out-the-new-projects-experience/creating-a-project.md
@@ -152,7 +152,7 @@ You can later edit the drop down options for single select and iteration fields.
{% data reusables.projects.about-workflows %}
-You can enable or disable the built-in workflows for your project.
+プロジェクトでは、組み込みのワークフローを有効化あるいは無効化できます。
{% data reusables.projects.enable-basic-workflow %}
diff --git a/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md b/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
index 52fbe44335..18f9b8bc2e 100644
--- a/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
+++ b/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
@@ -22,7 +22,7 @@ topics:
**メモ:** プルリクエストを使う際には以下のことを念頭に置いてください:
* [共有リポジトリモデル](/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models)で作業をしている場合、プルリクエストにはトピックブランチを使うことをおすすめします。 ブランチあるいはコミットからプルリクエストを送ることもできますが、トピックブランチを使えば提案した変更を更新する必要がある場合、フォローアップのコミットをプッシュできます。
-* プルリクエストにコミットをプッシュする場合、フォースプッシュはしないでください。 Force pushing changes the repository history and can corrupt your pull request. If other collaborators branch the project before a force push, the force push may overwrite commits that collaborators based their work on.
+* Be very careful when force pushing commits to a pull request. Force pushing changes the repository history and can corrupt your pull request. If other collaborators branch the project before a force push, the force push may overwrite commits that collaborators based their work on.
{% endnote %}
diff --git a/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
index 85c154a11d..e49a1ea145 100644
--- a/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
+++ b/translations/ja-JP/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
@@ -17,7 +17,7 @@ topics:
リポジトリのフォークはリポジトリのコピーと似ていますが、次の 2 つの大きな違いがあります。
-* プルリクエストを使ってユーザが所有するフォークからの変更をオリジナルのリポジトリ(*上流*のリポジトリとも呼ばれます)に提案できます。
+* You can use a pull request to suggest changes from your user-owned fork to the original repository in its GitHub instance, also known as the *upstream* repository.
* 上流のリポジトリと自分のフォークを同期させることで、上流のリポジトリからの変更を自分のローカルフォークへ持ち込めます。
{% data reusables.repositories.you-can-fork %}
diff --git a/translations/ja-JP/data/reusables/github-actions/github-token-available-permissions.md b/translations/ja-JP/data/reusables/github-actions/github-token-available-permissions.md
index acb289f986..5d51bf49fe 100644
--- a/translations/ja-JP/data/reusables/github-actions/github-token-available-permissions.md
+++ b/translations/ja-JP/data/reusables/github-actions/github-token-available-permissions.md
@@ -5,8 +5,8 @@ permissions:
actions: read|write|none
checks: read|write|none
contents: read|write|none
- deployments: read|write|none
- id-token: read|write|none
+ deployments: read|write|none{% ifversion fpt or ghec %}
+ id-token: read|write|none{% endif %}
issues: read|write|none
discussions: read|write|none
packages: read|write|none
diff --git a/translations/log/ja-resets.csv b/translations/log/ja-resets.csv
index 1cac04a053..1b4d54ed97 100644
--- a/translations/log/ja-resets.csv
+++ b/translations/log/ja-resets.csv
@@ -148,6 +148,7 @@ translations/ja-JP/content/get-started/quickstart/git-and-github-learning-resour
translations/ja-JP/content/get-started/using-github/github-mobile.md,broken liquid tags
translations/ja-JP/content/get-started/writing-on-github/editing-and-sharing-content-with-gists/creating-gists.md,broken liquid tags
translations/ja-JP/content/issues/tracking-your-work-with-issues/planning-and-tracking-work-for-your-team-or-project.md,broken liquid tags
+translations/ja-JP/content/issues/tracking-your-work-with-issues/transferring-an-issue-to-another-repository.md,broken liquid tags
translations/ja-JP/content/organizations/collaborating-with-your-team/about-team-discussions.md,Listed in localization-support#489
translations/ja-JP/content/organizations/managing-organization-settings/managing-the-default-branch-name-for-repositories-in-your-organization.md,broken liquid tags
translations/ja-JP/content/organizations/organizing-members-into-teams/about-teams.md,broken liquid tags
diff --git a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
index 6f18634301..19c4857233 100644
--- a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
+++ b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
@@ -38,7 +38,7 @@ Se você for integrante de um {% data variables.product.prodname_emu_enterprise
1. Pergunte o nome do usuário da pessoa que você está convidando a colaborar.{% ifversion fpt or ghec %} Caso a pessoa não tenha um nome de usuário ainda, deve se inscrever em {% data variables.product.prodname_dotcom %}. Para obter mais informações, consulte "[Inscrever-se em uma nova conta {% data variables.product.prodname_dotcom %}](/articles/signing-up-for-a-new-github-account)".{% endif %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658%}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658%}
{% data reusables.repositories.click-collaborators-teams %}
1. Clique em **Convidar um colaborador**. 
2. No campo de pesquisa, comece a digitar o nome da pessoa que deseja convidar e, em seguida, clique em um nome na lista de correspondências. 
diff --git a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
index f9c9852e15..c88edc9073 100644
--- a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
+++ b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
@@ -30,7 +30,7 @@ Apesar de as bifurcações de repositórios privados serem excluídas quando um
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
4. À direita do colaborador que deseja remover, clique em {% octicon "trash" aria-label="The trash icon" %}. 
{% else %}
diff --git a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
index 8a53be2b9a..5278adfb44 100644
--- a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
+++ b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
@@ -21,7 +21,7 @@ shortTitle: Remover-se
---
{% data reusables.user_settings.access_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
2. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "repo" aria-label="The repo icon" %} Repositories**.
{% else %}
2. Na barra lateral esquerda, clique em **Repositories** (Repositórios). 
diff --git a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
index 0b050c4a08..3897143cc3 100644
--- a/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
+++ b/translations/pt-BR/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
@@ -22,7 +22,7 @@ Você pode querer usar um tema escuro para reduzir o consumo de energia em certo
{% note %}
-**Nota:** Os temas para daltônicos e os temas com alto contraste de luz estão atualmente em beta público. Para obter mais informações sobre como habilitar funcionalidades no beta público, consulte "[Explorando versões de acesso antecipado com visualização de funcionalidades](/get-started/using-github/exploring-early-access-releases-with-feature-preview)".
+**Observação:** Os temas coloridos estão atualmente em beta público. Para obter mais informações sobre como habilitar funcionalidades no beta público, consulte "[Explorando versões de acesso antecipado com visualização de funcionalidades](/get-started/using-github/exploring-early-access-releases-with-feature-preview)".
{% endnote %}
diff --git a/translations/pt-BR/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md b/translations/pt-BR/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
index e907da9c49..40fbd049e1 100644
--- a/translations/pt-BR/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
+++ b/translations/pt-BR/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
@@ -69,7 +69,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
```
@@ -106,7 +106,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Run the Gradle package task
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: -b ci.gradle package
```
@@ -135,7 +135,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
- uses: actions/upload-artifact@v2
diff --git a/translations/pt-BR/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md b/translations/pt-BR/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
index b1bd8075ff..52cc87e50c 100644
--- a/translations/pt-BR/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
+++ b/translations/pt-BR/content/actions/hosting-your-own-runners/adding-self-hosted-runners.md
@@ -37,19 +37,18 @@ For more information, see "[About self-hosted runners](/github/automating-your-w
You can add self-hosted runners to a single repository. To add a self-hosted runner to a user repository, you must be the repository owner. For an organization repository, you must be an organization owner or have admin access to the repository. For information about how to add a self-hosted runner with the REST API, see "[Self-hosted runners](/rest/reference/actions#self-hosted-runners)."
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
1. Click **New self-hosted runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. Under {% ifversion fpt or ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
+1. Under {% ifversion ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
{% data reusables.github-actions.self-hosted-runner-check-installation-success %}
@@ -58,19 +57,18 @@ You can add self-hosted runners to a single repository. To add a self-hosted run
You can add self-hosted runners at the organization level, where they can be used to process jobs for multiple repositories in an organization. To add a self-hosted runner to an organization, you must be an organization owner. For information about how to add a self-hosted runner with the REST API, see "[Self-hosted runners](/rest/reference/actions#self-hosted-runners)."
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
1. Click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. Under {% ifversion fpt or ghes > 3.1 or ghae or ghec %}"Runners"{% else %}"Self-hosted runners"{% endif %}, click **Add runner**.
+1. Under {% ifversion ghes > 3.1 or ghae %}"Runners", click **Add new**, then click **New runner**.{% elsif ghes < 3.2 %}"Self-hosted runners", click **Add runner**."{% endif %}
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
@@ -86,7 +84,7 @@ You can add self-hosted runners at the organization level, where they can be use
New runners are assigned to the default group. You can modify the runner's group after you've registered the runner. For more information, see "[Managing access to self-hosted runners](/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups#moving-a-self-hosted-runner-to-a-group)."
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
To add a self-hosted runner to an enterprise account, you must be an enterprise owner. For information about how to add a self-hosted runner with the REST API, see the [Enterprise Administration GitHub Actions APIs](/rest/reference/enterprise-admin#github-actions).
{% data reusables.enterprise-accounts.access-enterprise %}
@@ -95,8 +93,7 @@ To add a self-hosted runner to an enterprise account, you must be an enterprise
{% data reusables.enterprise-accounts.actions-runners-tab %}
1. Click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
To add a self-hosted runner at the enterprise level of {% data variables.product.product_location %}, you must be a site administrator.
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
@@ -105,11 +102,9 @@ To add a self-hosted runner at the enterprise level of {% data variables.product
1. Click **Add new**, then click **New runner**.
{% data reusables.github-actions.self-hosted-runner-configure %}
{% endif %}
-{% ifversion ghec or ghae or ghes %}
{% data reusables.github-actions.self-hosted-runner-check-installation-success %}
{% data reusables.github-actions.self-hosted-runner-public-repo-access %}
-{% endif %}
### Making enterprise runners available to repositories
diff --git a/translations/pt-BR/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md b/translations/pt-BR/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
index f4f6d9c310..3d7f3f36e5 100644
--- a/translations/pt-BR/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
+++ b/translations/pt-BR/content/actions/hosting-your-own-runners/managing-access-to-self-hosted-runners-using-groups.md
@@ -46,7 +46,7 @@ Os executores auto-hospedados são automaticamente atribuídos ao grupo-padrão
Ao criar um grupo, você deverá escolher uma política que defina quais repositórios têm acesso ao grupo do executor.
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runner-groups %}
@@ -61,12 +61,11 @@ Ao criar um grupo, você deverá escolher uma política que defina quais reposit
{% endwarning %}
{% data reusables.github-actions.self-hosted-runner-create-group %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
-1. Na seção "Executores auto-hospedados", clique em **Adicionar novo** e, em seguida, **Novo grupo**.
+1. Under {% ifversion ghes > 3.1 or ghae %}"Runners"{% elsif ghes < 3.2 %}"Self-hosted runners"{% endif %}, click **Add new**, and then **New group**.

1. Insira um nome para o seu grupo de executor e atribua uma política para acesso ao repositório.
@@ -95,7 +94,7 @@ Os executores auto-hospedados são automaticamente atribuídos ao grupo-padrão
Ao criar um grupo, você deve escolher uma política que defina quais organizações têm acesso ao grupo de executores.
-{% ifversion ghec %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
@@ -113,8 +112,7 @@ Ao criar um grupo, você deve escolher uma política que defina quais organizaç
{% endwarning %}
{% data reusables.github-actions.self-hosted-runner-create-group %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
@@ -144,7 +142,7 @@ Ao criar um grupo, você deve escolher uma política que defina quais organizaç
## Alterar a política de acesso de um grupo de executores auto-hospedados
Você pode atualizar a política de acesso de um grupo de executores ou renomear um grupo de executores.
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-groups-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-groups-selection %}
1. Modifique as opções de acesso ou altere o nome do grupo dp executor.
@@ -158,8 +156,7 @@ Você pode atualizar a política de acesso de um grupo de executores ou renomear
Para obter mais informações, consulte "[Sobre os executores auto-hospedados](/actions/hosting-your-own-runners/about-self-hosted-runners#self-hosted-runner-security-with-public-repositories)."
{% endwarning %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-configure-runner-group-access %}
{% endif %}
@@ -181,17 +178,18 @@ Não foi possível encontrar nenhum grupo de executor auto-hospedado denominado
## Mover um executor auto-hospedado para um grupo
Se você não especificar o grupo de um executor durante o processo de registro, seus novos executores auto-hospedados são automaticamente atribuídos ao grupo padrão e poderão ser transferidos para outro grupo.
-{% ifversion ghec or ghes > 3.1 or ghae %}
+
{% data reusables.github-actions.self-hosted-runner-navigate-to-org-enterprise %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
1. Na lista de "Executores", clique no executor que você deseja configurar.
2. Selecione o menu suspenso do grupo do executor.
3. Em "Transferir executor para o grupo", escolha um grupo de destino para o executor.
-{% endif %}
-{% ifversion ghes < 3.2 or ghae %}
-1. Na seção "executores auto-hospedados" da página de configurações, localize o grupo atual do executor que deseja mover e expandir a lista de integrantes do grupo. 
+{% elsif ghae or ghes < 3.4 %}
+1. In the {% ifversion ghes > 3.1 or ghae %}"Runner groups"{% elsif ghes < 3.2 %}"Self-hosted runners"{% endif %} section of the settings page, locate the current group of the runner you want to move and expand the list of group members. 
2. Marque a caixa de seleção ao lado do executor auto-hospedado e, em seguida, clique em **Mover para o grupo** para ver os destinos disponíveis. 
3. Para mover o executor, clique no grupo de destino. 
{% endif %}
+
## Remover um grupo de executor auto-hospedado
Os executores auto-hospedados são retornados automaticamente ao grupo-padrão quando seu grupo é removido.
@@ -201,8 +199,7 @@ Os executores auto-hospedados são retornados automaticamente ao grupo-padrão q
1. Na lista de grupos, à direita do grupo que você deseja excluir, clique em {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %}.
2. Para remover o grupo, clique em **Remover grupo**.
3. Revise os avisos de confirmação e, em seguida, clique em **Remover este grupo de executores**.
-{% endif %}
-{% ifversion ghes < 3.2 or ghae %}
+{% elsif ghes < 3.2 %}
1. Na seção "Executores auto-hospedados" da página de configurações, localize o grupo que você deseja excluir e clique no botão {% octicon "kebab-horizontal" aria-label="The horizontal kebab icon" %} . 
1. Para remover o grupo, clique em **Remover grupo**. 
diff --git a/translations/pt-BR/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md b/translations/pt-BR/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
index cbc55ec1c3..38dedf5d04 100644
--- a/translations/pt-BR/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
+++ b/translations/pt-BR/content/actions/hosting-your-own-runners/removing-self-hosted-runners.md
@@ -30,20 +30,20 @@ shortTitle: Remover executores auto-hospedados
Para remover um executor auto-hospedado de um repositório de usuário, você deve ser o proprietário do repositório. Para um repositório da organização, você deve ser um proprietário da organização ou ter acesso de administrador ao repositório. Recomendamos que você também tenha acesso à máquina do executor auto-hospedado. Para obter informações sobre como remover um executor auto-hospedado com a API REST, consulte "[Executores auto-hospedados](/rest/reference/actions#self-hosted-runners)."
{% data reusables.github-actions.self-hosted-runner-reusing %}
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner %}
{% endif %}
+
## Remover um executor de uma organização
{% note %}
@@ -57,19 +57,20 @@ Para remover um executor auto-hospedado de um repositório de usuário, você de
Para remover um executor auto-hospedado de uma organização, você deve ser um proprietário da organização. Recomendamos que você também tenha acesso à máquina do executor auto-hospedado. Para obter informações sobre como remover um executor auto-hospedado com a API REST, consulte "[Executores auto-hospedados](/rest/reference/actions#self-hosted-runners)."
{% data reusables.github-actions.self-hosted-runner-reusing %}
-{% ifversion fpt or ghes > 3.1 or ghae or ghec %}
+{% ifversion fpt or ghes > 3.3 or ghec %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions %}
{% data reusables.github-actions.settings-sidebar-actions-runners-updated %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% else %}
+{% elsif ghes < 3.4 or ghae %}
{% data reusables.organizations.navigate-to-org %}
{% data reusables.organizations.org_settings %}
{% data reusables.github-actions.settings-sidebar-actions-runners %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner %}
{% endif %}
+
## Remover um executor de uma empresa
{% ifversion fpt %}
@@ -85,19 +86,17 @@ Se você usar
{% endnote %}
-{% data reusables.github-actions.self-hosted-runner-reusing %}
+To remove a self-hosted runner from an enterprise, you must be an enterprise owner. Recomendamos que você também tenha acesso à máquina do executor auto-hospedado. For information about how to remove a self-hosted runner with the REST API, see the [Enterprise Administration GitHub Actions APIs](/rest/reference/enterprise-admin#github-actions).
-{% ifversion ghec %}
-Para remover um executor auto-hospedado de uma conta corporativa, você deve ser um proprietário corporativo. Recomendamos que você também tenha acesso à máquina do executor auto-hospedado. Para obter informações sobre como adicionar um executor auto-hospedado com a API REST, consulte [as APIs do GitHub Actions da administração da empresa](/rest/reference/enterprise-admin#github-actions).
+{% data reusables.github-actions.self-hosted-runner-reusing %}
+{% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
{% data reusables.enterprise-accounts.actions-runners-tab %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.self-hosted-runner-removing-a-runner-updated %}
-{% elsif ghae or ghes %}
-Para remover um executor auto-hospedado no nível da empresa de
-{% data variables.product.product_location %}, você deve ser um proprietário corporativo. Recomendamos que você também tenha acesso à máquina do executor auto-hospedado.
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
{% data reusables.enterprise-accounts.actions-tab %}
diff --git a/translations/pt-BR/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md b/translations/pt-BR/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
index 573436c429..ceb170b4a8 100644
--- a/translations/pt-BR/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
+++ b/translations/pt-BR/content/actions/hosting-your-own-runners/using-labels-with-self-hosted-runners.md
@@ -19,13 +19,13 @@ Para obter informações sobre como usar etiquetas para encaminhar trabalhos par
{% data reusables.github-actions.self-hosted-runner-management-permissions-required %}
## Criar etiquetas personalizadas
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
1. Na seção "Etiquetas", clique em {% octicon "gear" aria-label="The Gear icon" %}.
1. No campo "Encontrar ou criar uma etiqueta", digite o nome da sua nova etiqueta e clique em **Criar nova etiqueta**. O rótulo personalizado é criado e atribuído ao executor auto-hospedado. É possível remover as etiquetas personalizadas dos executores auto-hospedados, mas não é possível excluí-las manualmente. {% data reusables.github-actions.actions-unused-labels %}
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
@@ -34,35 +34,38 @@ Para obter informações sobre como usar etiquetas para encaminhar trabalhos par
O rótulo personalizado é criado e atribuído ao executor auto-hospedado. É possível remover as etiquetas personalizadas dos executores auto-hospedados, mas não é possível excluí-las manualmente. {% data reusables.github-actions.actions-unused-labels %}
{% endif %}
+
## Atribuir uma etiqueta a um executor auto-hospedado
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.runner-label-settings %}
1. Para atribuir uma etiqueta ao executor auto-hospedado, no campo "Localizar ou criar uma etiqueta", clique na etiqueta.
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %}
1. Clique em uma etiqueta a ser atribuída ao seu executor auto-hospedado.
{% endif %}
+
## Remover uma etiqueta personalizada de um executor auto-hospedado
-{% ifversion fpt or ghec %}
+
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.settings-sidebar-actions-runner-selection %}
{% data reusables.github-actions.runner-label-settings %}
1. No campo "Encontre ou crie uma etiqueta", as etiquetas atribuídas são marcadas com a
Ícone de {% octicon "check" aria-label="The Check icon" %}. Clique em uma etiqueta marcada para cancelar a atribuição do seu executor auto-hospedado.
-{% endif %}
-{% ifversion ghae or ghes %}
+{% elsif ghae or ghes < 3.4 %}
{% data reusables.github-actions.self-hosted-runner-navigate-to-repo-org-enterprise %}
{% data reusables.github-actions.self-hosted-runner-list %}
{% data reusables.github-actions.self-hosted-runner-list-group %}
{% data reusables.github-actions.self-hosted-runner-labels-view-assigned-labels %}
1. Clique na etiqueta atribuída para removê-la do seu executor auto-hospedado. {% data reusables.github-actions.actions-unused-labels %}
{% endif %}
+
## Usar o script de configuração para criar e atribuir rótulos
Você pode usar o script de configuração no executor auto-hospedado para criar e atribuir etiquetas personalizadas. Por exemplo, este comando atribui ao executor auto-hospedado uma etiqueta denominada `gpu`.
diff --git a/translations/pt-BR/content/actions/publishing-packages/publishing-java-packages-with-gradle.md b/translations/pt-BR/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
index ff449845c9..d4617e6230 100644
--- a/translations/pt-BR/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
+++ b/translations/pt-BR/content/actions/publishing-packages/publishing-java-packages-with-gradle.md
@@ -96,7 +96,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env:
@@ -167,7 +167,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env:
@@ -246,7 +246,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Publish package
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: publish
env: {% raw %}
diff --git a/translations/pt-BR/content/actions/security-guides/automatic-token-authentication.md b/translations/pt-BR/content/actions/security-guides/automatic-token-authentication.md
index b7825a578f..cbb4a4a810 100644
--- a/translations/pt-BR/content/actions/security-guides/automatic-token-authentication.md
+++ b/translations/pt-BR/content/actions/security-guides/automatic-token-authentication.md
@@ -85,8 +85,9 @@ A tabela a seguir mostra as permissões concedidas ao `GITHUB_TOKEN` por padrão
| ações | leitura/gravação | nenhum | leitura |
| Verificações | leitura/gravação | nenhum | leitura |
| Conteúdo | leitura/gravação | leitura | leitura |
-| Implantações | leitura/gravação | nenhum | leitura |
-| id-token | leitura/gravação | nenhum | leitura |
+| Implantações | leitura/gravação | nenhum | read |{% ifversion fpt or ghec %}
+| id-token | leitura/gravação | nenhum | read
+{% endif %}
| Problemas | leitura/gravação | nenhum | leitura |
| metadados | leitura | leitura | leitura |
| pacotes | leitura/gravação | nenhum | leitura |
diff --git a/translations/pt-BR/content/actions/security-guides/security-hardening-for-github-actions.md b/translations/pt-BR/content/actions/security-guides/security-hardening-for-github-actions.md
index 72a7a8808f..9c467f797f 100644
--- a/translations/pt-BR/content/actions/security-guides/security-hardening-for-github-actions.md
+++ b/translations/pt-BR/content/actions/security-guides/security-hardening-for-github-actions.md
@@ -202,6 +202,10 @@ Os mesmos princípios descritos acima para o uso de ações de terceiros também
{% data reusables.actions.outside-collaborators-internal-actions %} Para obter mais informações, consulte "[Compartilhando ações e fluxos de trabalho com a sua empresa](/actions/creating-actions/sharing-actions-and-workflows-with-your-enterprise)".
{% endif %}
+## Using OpenSSF Scorecards to secure workflows
+
+[Scorecards](https://github.com/ossf/scorecard) is an automated security tool that flags risky supply chain practices. You can use the [Scorecards action](https://github.com/marketplace/actions/ossf-scorecard-action) and [starter workflow](https://github.com/actions/starter-workflows) to follow best security practices. Once configured, the Scorecards action runs automatically on repository changes, and alerts developers about risky supply chain practices using the built-in code scanning experience. The Scorecards project runs a number of checks, including script injection attacks, token permissions, and pinned actions.
+
## Possível impacto de um executor comprometido
Essas seções consideram alguns das etapas que um invasor pode dar se for capaz de executar comandos maliciosos em um executor de {% data variables.product.prodname_actions %}.
diff --git a/translations/pt-BR/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md b/translations/pt-BR/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
index c441c63d2a..b54496182e 100644
--- a/translations/pt-BR/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
+++ b/translations/pt-BR/content/admin/configuration/configuring-your-enterprise/command-line-utilities.md
@@ -700,7 +700,7 @@ Todos os testes de armazenamento aprovados
O `ghe-migrator` é uma ferramenta de alta fidelidade que ajuda a fazer migrações de uma instância do GitHub para outra. Você pode consolidar suas instâncias ou mover a organização, os usuários, as equipes e os repositórios do GitHub.com para o {% data variables.product.prodname_enterprise %}.
-Para obter mais informações, consulte nosso guia sobre [como migrar dados de usuário, organização e repositório](/enterprise/admin/guides/migrations/).
+For more information, please see our guides on [migrating data to and from your enterprise](/enterprise/admin/user-management/migrating-data-to-and-from-your-enterprise/).
### git-import-detect
diff --git a/translations/pt-BR/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md b/translations/pt-BR/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
index 5ca5675755..993c9e95cd 100644
--- a/translations/pt-BR/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
+++ b/translations/pt-BR/content/admin/identity-and-access-management/managing-iam-for-your-enterprise/about-identity-and-access-management-for-your-enterprise.md
@@ -47,7 +47,7 @@ Nós testamos e oferecemos compatibilidade oficial os seguintes IdPs. Para o SSO
| -------------------------------------------- |:--------------------------------------------------------------:|:-------------------------------------------------------------:|
| Active Directory Federation Services (AD FS) | {% octicon "check-circle-fill" aria-label= "The check icon" %} | |
| Azure Active Directory (Azure AD) | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %}
-| Okta | {% octicon "check-circle-fill" aria-label="The check icon" %} | {% octicon "check-circle-fill" aria-label="The check icon" %}
+| Okta | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| OneLogin | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| PingOne | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
| Shibboleth | {% octicon "check-circle-fill" aria-label="The check icon" %} | |
diff --git a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
index 1da8ac4c25..1e58e7774f 100644
--- a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
+++ b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-deploy-keys.md
@@ -18,7 +18,7 @@ shortTitle: Chaves de implantação
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
3. In the "Security" section of the sidebar, click **{% octicon "key" aria-label="The key icon" %} Deploy keys**.
{% else %}
3. Na barra lateral esquerda, clique em **Deploy keys** (Chaves de implantação). 
diff --git a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
index 4e8b030f51..c38bbf3ff3 100644
--- a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
+++ b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/reviewing-your-security-log.md
@@ -22,7 +22,7 @@ shortTitle: Log de segurança
O log de segurança lista todas as ações realizadas nos últimos 90 dias.
{% data reusables.user_settings.access_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
1. Na barra lateral de configurações do usuário, clique em **log de segurança**. 
diff --git a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
index 485706716c..be01a1879c 100644
--- a/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
+++ b/translations/pt-BR/content/authentication/keeping-your-account-and-data-secure/updating-your-github-access-credentials.md
@@ -24,7 +24,7 @@ shortTitle: Atualizar credenciais de acesso
1. Para solicitar uma nova senha, acesse {% ifversion fpt or ghec %}https://{% data variables.product.product_url %}/password_reset{% else %}`https://{% data variables.product.product_url %}/password_reset`{% endif %}.
2. Insira o endereço de e-mail associado à sua conta em {% ifversion ghae %}{% data variables.product.product_name %}{% else %}{% data variables.product.product_location %}{% endif %} e, em seguida, clique em **em Enviar e-mail de redefinição de senha.** O e-mail será enviado para o endereço de e-mail de backup, se você tiver um configurado. 
3. Nós enviaremos por e-mail um link para você redefinir sua senha. Clique nele em até 3 horas após o recebimento do e-mail. Se você não receber o e-mail com o link, verifique sua pasta de spam.
-4. Se você tiver habilitado a autenticação de dois fatores, será solicitado que você crie suas credenciais de 2FA. Digite as suas credenciais de 2FA ou um de seus códigos de recuperação de 2FA e clique em **Verificar**. 
+4. Se você tiver habilitado a autenticação de dois fatores, será solicitado que você crie suas credenciais de 2FA. Type your authentication code or one of your recovery codes and click **Verify**. If you have added a security key to your account, you can insert the key and click **Use security key** instead of typing an authentication code. 
5. Digite uma nova senha, confirme a sua nova senha e clique em **Alterar senha**. Para ajudar a criar uma senha forte, consulte "[Criar uma senha forte](/articles/creating-a-strong-password)".
{% ifversion fpt or ghec %}{% else %}
{% endif %}
diff --git a/translations/pt-BR/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md b/translations/pt-BR/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
index 4fac2ddf2f..5c6e408357 100644
--- a/translations/pt-BR/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
+++ b/translations/pt-BR/content/authentication/securing-your-account-with-two-factor-authentication-2fa/recovering-your-account-if-you-lose-your-2fa-credentials.md
@@ -64,7 +64,7 @@ If you know your password for {% data variables.product.product_location %} but
{% note %}
-**Observação**: Por razões de segurança, recuperar o acesso à sua conta efetuando a autenticação com uma senha única pode levar de 1 a 3 dias úteis. {% data variables.product.company_short %} will not review additional requests submitted during this time.
+**Note**: For security reasons, regaining access to your account by authenticating with a one-time password can take up to three business days. {% data variables.product.company_short %} will not review additional requests submitted during this time.
{% endnote %}
@@ -101,6 +101,6 @@ Você pode usar as suas credenciais de autenticação de dois fatores ou os cód
- Se você já configurou um token de acesso pessoal anteriormente e gostaria de usar o token de acesso pessoal para verificação, clique em **Token de acesso pessoal**.

-1. Um integrante do {% data variables.contact.github_support %} irá rever a sua solicitação e o seu endereço de e-mail de 1 a 3 dias úteis. Se a sua solicitação for aprovada, você receberá um link para concluir o processo de recuperação de conta. Se sua solicitação for negada, o e-mail incluirá uma forma de entrar em contato com o suporte para esclarecer outras dúvidas.
+1. A member of {% data variables.contact.github_support %} will review your request and email you within three business days. Se a sua solicitação for aprovada, você receberá um link para concluir o processo de recuperação de conta. Se sua solicitação for negada, o e-mail incluirá uma forma de entrar em contato com o suporte para esclarecer outras dúvidas.
{% endif %}
diff --git a/translations/pt-BR/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md b/translations/pt-BR/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
index f4a565e01c..4c757040af 100644
--- a/translations/pt-BR/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
+++ b/translations/pt-BR/content/billing/managing-billing-for-github-actions/about-billing-for-github-actions.md
@@ -76,7 +76,7 @@ No final do mês, {% data variables.product.prodname_dotcom %} calcula o custo d
### Cálculo de custo de amostra em minutos
-Por exemplo, se sua organização usa {% data variables.product.prodname_team %} e permite gastos ilimitados, usando 15.000 minutos, poderia ter um custo total de armazenamento e custo médio de minuto de US$ 56,00, dependendo dos sistemas operacionais usados para executar trabalhos.
+For example, if your organization uses {% data variables.product.prodname_team %} and allows unlimited spending, using 5,000 minutes could have a total storage and minute overage cost of $56 USD, depending on the operating systems used to run jobs.
- 5.000 (3.000 Linux e 2.000 Windows) minutos = US$ 56 (US$ 24 + US$ 32).
- 3.000 minutos de Linux por US$ 0,008 por minuto = US$ 24.
diff --git a/translations/pt-BR/content/code-security/getting-started/securing-your-organization.md b/translations/pt-BR/content/code-security/getting-started/securing-your-organization.md
index 25e29b59c1..11f4388dab 100644
--- a/translations/pt-BR/content/code-security/getting-started/securing-your-organization.md
+++ b/translations/pt-BR/content/code-security/getting-started/securing-your-organization.md
@@ -36,7 +36,7 @@ Você pode criar uma política de segurança padrão que será exibida em qualqu
{% ifversion fpt or ghes > 2.22 or ghae-issue-4864 or ghec %}
## Gerenciar {% data variables.product.prodname_dependabot_alerts %} e o gráfico de dependências
-{% ifversion fpt or ghec %}Por padrão, {% data variables.product.prodname_dotcom %} detecta vulnerabilidades nos repositórios públicos, gera {% data variables.product.prodname_dependabot_alerts %} e um gráfico de dependência. Você pode habilitar ou desabilitar {% data variables.product.prodname_dependabot_alerts %} e o gráfico de dependência de todos os repositórios privados da sua organização.
+{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerabilities in public repositories and displays the dependency graph. You can enable or disable {% data variables.product.prodname_dependabot_alerts %} for all public repositories owned by your organization. Você pode habilitar ou desabilitar {% data variables.product.prodname_dependabot_alerts %} e o gráfico de dependência de todos os repositórios privados da sua organização.
1. Clique na sua foto de perfil e clique em **Organizações**.
2. Clique em **Configurações** ao lado da sua organização.
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md b/translations/pt-BR/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
index 7df78c8222..2ab62b8045 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/automating-dependabot-with-github-actions.md
@@ -30,11 +30,17 @@ shortTitle: Use Dependabot with Actions
{% data variables.product.prodname_dependabot %} consegue acionar fluxos de trabalho de {% data variables.product.prodname_actions %} nos seus pull requests e comentários. No entanto, certos eventos são tratados de maneira diferente.
-Para fluxos de trabalho iniciados por eventos de {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request`, `pull_request_review`, `pull_request_review_comment` e `push`, aplicam-se as restrições a seguir:
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5792 %}
+For workflows initiated by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request`, `pull_request_review`, `pull_request_review_comment`, `push`, `create`, `deployment`, and `deployment_status` events, the following restrictions apply:
+{% endif %}
- {% ifversion ghes = 3.3 %}`GITHUB_TOKEN` tem permissões somente leitura, a menos que seu administrador tenha removido as restrições.{% else %}`GITHUB_TOKEN` tem permissões somente leitura por padrão.{% endif %}
- {% ifversion ghes = 3.3 %}Os segredos são inacessíveis, a menos que o seu administrador tenha removido restrições.{% else %}Os segredos são preenchidos a partir dos segredos de {% data variables.product.prodname_dependabot %}. Os segredos de {% data variables.product.prodname_actions %} não estão disponíveis.{% endif %}
+{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5792 %}
+For workflows initiated by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`) using the `pull_request_target` event, if the base ref of the pull request was created by {% data variables.product.prodname_dependabot %} (`github.actor == "dependabot[bot]"`), the `GITHUB_TOKEN` will be read-only and secrets are not available.
+{% endif %}
+
Para obter mais informações, consulte ["Manter seus GitHub Actions e fluxos de trabalho seguro: Evitando solicitações de pwn"](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/).
{% ifversion fpt or ghec or ghes > 3.3 %}
@@ -62,13 +68,13 @@ jobs:
{% endraw %}
-Para obter mais informações, consulte "[Modificar as permissões para o GITHUB_TOKEN](/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token)".
+For more information, see "[Modifying the permissions for the GITHUB_TOKEN](/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token)."
### Acessar segredos
-Quando um evento de {% data variables.product.prodname_dependabot %} aciona um fluxo de trabalho, os únicos segredos disponíveis para o fluxo de trabalho são segredos de {% data variables.product.prodname_dependabot %}. Os segredos de {% data variables.product.prodname_actions %} não estão disponíveis. Consequentemente, você deve armazenar todos os segredos que são usados por um fluxo de trabalho acionado por eventos {% data variables.product.prodname_dependabot %} como segredos de {% data variables.product.prodname_dependabot %}. Para obter mais informações, consulte "[Gerenciar segredos criptografados para o Dependabot](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-encrypted-secrets-for-dependabot). ".
+Quando um evento de {% data variables.product.prodname_dependabot %} aciona um fluxo de trabalho, os únicos segredos disponíveis para o fluxo de trabalho são segredos de {% data variables.product.prodname_dependabot %}. Os segredos de {% data variables.product.prodname_actions %} não estão disponíveis. Consequentemente, você deve armazenar todos os segredos que são usados por um fluxo de trabalho acionado por eventos {% data variables.product.prodname_dependabot %} como segredos de {% data variables.product.prodname_dependabot %}. For more information, see "[Managing encrypted secrets for Dependabot](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-encrypted-secrets-for-dependabot)".
-Os segredos de {% data variables.product.prodname_dependabot %} são adicionados ao contexto `segredos` e referenciados usando exatamente a mesma sintaxe que os segredos para {% data variables.product.prodname_actions %}. Para obter mais informações, consulte "[Segredos criptografados](/actions/security-guides/encrypted-secrets#using-encrypted-secrets-in-a-workflow)".
+Os segredos de {% data variables.product.prodname_dependabot %} são adicionados ao contexto `segredos` e referenciados usando exatamente a mesma sintaxe que os segredos para {% data variables.product.prodname_actions %}. For more information, see "[Encrypted secrets](/actions/security-guides/encrypted-secrets#using-encrypted-secrets-in-a-workflow)."
Se você tiver um fluxo de trabalho que será acionado por {% data variables.product.prodname_dependabot %} e também por outros atores, a solução mais simples é armazenar o token com as permissões necessárias em uma ação e em um segredo {% data variables.product.prodname_dependabot %} com nomes idênticos. Em seguida, o fluxo de trabalho pode incluir uma única chamada para esses segredos. Se o segredo de {% data variables.product.prodname_dependabot %} tiver um nome diferente, use condições para especificar os segredos corretos para diferentes atores. Para exemplos que usam condições, consulte "[automações comuns](#common-dependabot-automations)" abaixo.
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
index 982e9cd23f..7c6e0dff8c 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-alerts-for-vulnerable-dependencies.md
@@ -59,7 +59,7 @@ Para obter uma lista dos ecossistemas para os quais o {% data variables.product.
{% data reusables.repositories.enable-security-alerts %}
-{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detecta dependências vulneráveis em repositórios _públicos_ e gera {% data variables.product.prodname_dependabot_alerts %} por padrão. Os proprietários de repositórios privados ou pessoas com acesso de administrador, podem habilitar o {% data variables.product.prodname_dependabot_alerts %} ativando o gráfico de dependências e {% data variables.product.prodname_dependabot_alerts %} para seus repositórios.
+{% ifversion fpt or ghec %}{% data variables.product.prodname_dotcom %} detects vulnerable dependencies in _public_ repositories and displays the dependency graph, but does not generate {% data variables.product.prodname_dependabot_alerts %} by default. Repository owners or people with admin access can enable {% data variables.product.prodname_dependabot_alerts %} for public repositories. Os proprietários de repositórios privados ou pessoas com acesso de administrador, podem habilitar o {% data variables.product.prodname_dependabot_alerts %} ativando o gráfico de dependências e {% data variables.product.prodname_dependabot_alerts %} para seus repositórios.
Você também pode habilitar ou desabilitar {% data variables.product.prodname_dependabot_alerts %} para todos os repositórios pertencentes à sua conta de usuário ou organização. Para mais informações consulte "[Gerenciar as configurações de segurança e análise da sua conta de usuário](/github/setting-up-and-managing-your-github-user-account/managing-security-and-analysis-settings-for-your-user-account)" ou "[Gerenciar as configurações de segurança e análise da sua organização](/organizations/keeping-your-organization-secure/managing-security-and-analysis-settings-for-your-organization)".
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
index b34478a84c..2fd57be3ac 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-dependabot-errors.md
@@ -46,8 +46,6 @@ Há três razões pelas quais um alerta pode não ter link de um pull request:
Se um erro impediu que {% data variables.product.prodname_dependabot %} criasse um pull request, você pode exibir os detalhes do erro clicando no alerta.
-
-
## Investigar erros com {% data variables.product.prodname_dependabot_version_updates %}
Quando {% data variables.product.prodname_dependabot %} está impedido de criar um pull request para atualizar uma dependência em um ecossistema, ele posta o ícone de erro no arquivo de manifesto. Os arquivos de manifesto gerenciados por {% data variables.product.prodname_dependabot %} estão listados na aba {% data variables.product.prodname_dependabot %}. Para acessar essa aba, na aba **Insights** para o repositório, clique no **Gráfico de Dependências**, e, em seguida, clique na aba **{% data variables.product.prodname_dependabot %}**.
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
index 842cc5a243..8b52a6c881 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/troubleshooting-the-detection-of-vulnerable-dependencies.md
@@ -103,17 +103,17 @@ Uma vez que {% data variables.product.prodname_dependabot %} usa dados curados e
{% ifversion fpt or ghec %}
## Cada vulnerabilidade de dependência gera um alerta separado?
-Quando uma dependência tem várias vulnerabilidades, apenas um alerta agregado é gerado para essa dependência, em vez de um alerta por vulnerabilidade.
+When a dependency has multiple vulnerabilities, an alert is generated for each vulnerability at the level of advisory plus manifest.
-A contagem de {% data variables.product.prodname_dependabot_alerts %} em {% data variables.product.prodname_dotcom %} mostra um total para o número de alertas, ou seja, o número de dependências com vulnerabilidades, não o número de vulnerabilidades.
+
-
+Legacy {% data variables.product.prodname_dependabot_alerts %} were grouped into a single aggregated alert with all the vulnerabilities for the same dependency. If you navigate to a link to a legacy {% data variables.product.prodname_dependabot %} alert, you will be redirected to the {% data variables.product.prodname_dependabot_alerts %} tab filtered to display vulnerabilities for that dependent package and manifest.
-Ao clicar para exibir os detalhes de alerta, você pode ver quantas vulnerabilidades são incluídas no alerta.
+
-
+The {% data variables.product.prodname_dependabot_alerts %} count in {% data variables.product.prodname_dotcom %} shows a total for the number of alerts, which is the number of vulnerabilities, not the number of dependencies.
-**Verifique**: Se houver discrepância no total que você está vendo, verifique se você não está comparando números de alerta com números de vulnerabilidade.
+**Check**: If there is a discrepancy in the totals you are seeing, check that you are not comparing alert numbers with dependency numbers. Also check that you are viewing all alerts and not a subset of filtered alerts.
{% endif %}
## Leia mais
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
index 8c2421d757..f16fa4a212 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/viewing-and-updating-vulnerable-dependencies-in-your-repository.md
@@ -25,7 +25,7 @@ topics:
{% data reusables.dependabot.beta-security-and-version-updates %}
{% data reusables.dependabot.enterprise-enable-dependabot %}
-A aba de {% data variables.product.prodname_dependabot_alerts %} do seu repositório lista todos os {% data variables.product.prodname_dependabot_alerts %}{% ifversion fpt or ghec or ghes > 3.2 %} abertos e fechados correspondentes a {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. Você pode ordenar a lista de alertas selecionando o menu suspenso e você pode clicar em alertas específicos para obter mais detalhes. Para obter mais informações, consulte "[Sobre alertas para dependências vulneráveis](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)"
+Your repository's {% data variables.product.prodname_dependabot_alerts %} tab lists all open and closed {% data variables.product.prodname_dependabot_alerts %}{% ifversion fpt or ghec or ghes > 3.2 %} and corresponding {% data variables.product.prodname_dependabot_security_updates %}{% endif %}. You can{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %} filter alerts by package, ecosystem, or manifest. You can also{% endif %} sort the list of alerts, and you can click into specific alerts for more details. Para obter mais informações, consulte "[Sobre alertas para dependências vulneráveis](/code-security/supply-chain-security/about-alerts-for-vulnerable-dependencies)"
{% ifversion fpt or ghec or ghes > 3.2 %}
É possível habilitar atualizações de segurança automáticas para qualquer repositório que usa o {% data variables.product.prodname_dependabot_alerts %} e o gráfico de dependências. Para obter mais informações, consulte "[Sobre {% data variables.product.prodname_dependabot_security_updates %}](/code-security/supply-chain-security/managing-vulnerabilities-in-your-projects-dependencies/about-dependabot-security-updates)."
@@ -37,11 +37,26 @@ A aba de {% data variables.product.prodname_dependabot_alerts %} do seu reposit
## Sobre atualizações para dependências vulneráveis no seu repositório
{% data variables.product.product_name %} gera {% data variables.product.prodname_dependabot_alerts %} quando detectamos que sua base de código está usando dependências com vulnerabilidades conhecidas. Para repositórios em que {% data variables.product.prodname_dependabot_security_updates %} estão habilitados, quando {% data variables.product.product_name %} detecta uma dependência vulnerável no branch padrão, {% data variables.product.prodname_dependabot %} cria um pull request para corrigi-la. O pull request irá atualizar a dependência para a versão minimamente segura possível, o que é necessário para evitar a vulnerabilidade.
+
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %}You can sort and filter {% data variables.product.prodname_dependabot_alerts %} with the dropdown menus in the {% data variables.product.prodname_dependabot_alerts %} tab or by typing filters as `key:value` pairs into the search bar. The available filters are repository (for example, `repo:my-repository`), package (for example, `package:django`), ecosystem (for example, `ecosystem:npm`), manifest (for example, `manifest:webwolf/pom.xml`), state (for example, `is:open`), and whether an advisory has a patch (for example, `has: patch`).
+
+Each {% data variables.product.prodname_dependabot %} alert has a unique numeric identifier and the {% data variables.product.prodname_dependabot_alerts %} tab lists an alert for every detected vulnerability. Legacy {% data variables.product.prodname_dependabot_alerts %} grouped vulnerabilities by dependency and generated a single alert per dependency. If you navigate to a legacy {% data variables.product.prodname_dependabot %} alert, you will be redirected to a {% data variables.product.prodname_dependabot_alerts %} tab filtered for that package. {% endif %}
{% endif %}
## Visualizar e atualizar dependências vulneráveis
-{% ifversion fpt or ghec or ghes > 3.2 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5638 %}
+{% data reusables.repositories.navigate-to-repo %}
+{% data reusables.repositories.sidebar-security %}
+{% data reusables.repositories.sidebar-dependabot-alerts %}
+1. Optionally, to filter alerts, select the **Repository**, **Package**, **Ecosystem**, or **Manifest** dropdown menu then click the filter that you would like to apply. You can also type filters into the search bar. For example, `ecosystem:npm` or `has:patch`. To sort alerts, select the **Sort** dropdown menu then click the option that you would like to sort by. 
+1. Click the alert that you would like to view. 
+1. Revise as informações da vulnerabilidade e, se disponível, o pull request que contém a atualização de segurança automatizada.
+1. Opcionalmente, se ainda não houver uma atualização de {% data variables.product.prodname_dependabot_security_updates %} para o alerta, crie um pull request para resolver a vulnerabilidade. Clique em **Criar uma atualização de segurança de {% data variables.product.prodname_dependabot %}**. 
+1. Quando estiver pronto para atualizar a dependência e resolver a vulnerabilidade, faça merge da pull request. Cada pull request criado por {% data variables.product.prodname_dependabot %} inclui informações sobre os comandos que você pode usar para controlar {% data variables.product.prodname_dependabot %}. Para obter mais informações, consulte "[Gerenciar pull requests para atualizações de dependências](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)".
+1. Opcionalmente, se o alerta estiver sendo corrigido, se estiver incorreto, ou localizado em um código não utilizado, selecione o menu suspenso "Ignorar" e clique em um motivo para ignorar o alerta. 
+
+{% elsif ghes = 3.3 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-dependabot-alerts %}
@@ -51,7 +66,7 @@ A aba de {% data variables.product.prodname_dependabot_alerts %} do seu reposit
1. Quando estiver pronto para atualizar a dependência e resolver a vulnerabilidade, faça merge da pull request. Cada pull request criado por {% data variables.product.prodname_dependabot %} inclui informações sobre os comandos que você pode usar para controlar {% data variables.product.prodname_dependabot %}. Para obter mais informações, consulte "[Gerenciar pull requests para atualizações de dependências](/code-security/supply-chain-security/keeping-your-dependencies-updated-automatically/managing-pull-requests-for-dependency-updates#managing-dependabot-pull-requests-with-comment-commands)".
1. Opcionalmente, se o alerta estiver sendo corrigido, se estiver incorreto, ou localizado em um código não utilizado, selecione o menu suspenso "Ignorar" e clique em um motivo para ignorar o alerta. 
-{% elsif ghes > 3.0 or ghae-issue-4864 %}
+{% elsif ghes = 3.1 or ghes = 3.2 or ghae-issue-4864 %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-security %}
{% data reusables.repositories.sidebar-dependabot-alerts %}
diff --git a/translations/pt-BR/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md b/translations/pt-BR/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
index 65a374e371..4a148f0a3b 100644
--- a/translations/pt-BR/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
+++ b/translations/pt-BR/content/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph.md
@@ -90,11 +90,11 @@ Os formatos recomendados definem explicitamente quais versões são usadas para
| Go modules | Go | `go.mod` | `go.mod` |
{%- endif %}
| Maven | Java, Scala | `pom.xml` | `pom.xml` | | npm | JavaScript | `package-lock.json` | `package-lock.json`, `package.json`| | Python PIP | Python | `requirements.txt`, `pipfile.lock` | `requirements.txt`, `pipfile`, `pipfile.lock`, `setup.py`{% if github-actions-in-dependency-graph %}[2]{% else %}[1]{% endif %}
-{%- ifversion fpt or ghes > 3.3 %}
+{%- ifversion fpt or ghec or ghes > 3.3 or ghae-issue-4752 %}
| Python Poetry | Python | `poetry.lock` | `poetry.lock`, `pyproject.toml` |{% endif %} | RubyGems | Ruby | `Gemfile.lock` | `Gemfile.lock`, `Gemfile`, `*.gemspec` | | Yarn | JavaScript | `yarn.lock` | `package.json`, `yarn.lock` |
{% if github-actions-in-dependency-graph %}
-[1] Please note that {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies. For more information, see "[Workflow syntax for GitHub Actions](/actions/using-workflows/workflow-syntax-for-github-actions)."
+[1] Please note that {% data variables.product.prodname_actions %} workflows must be located in the `.github/workflows/` directory of a repository to be recognized as manifests. Any actions or workflows referenced using the syntax `jobs[*].steps[*].uses` or `jobs..uses` will be parsed as dependencies. Para obter mais informações, consulte "[Sintaxe do fluxo de trabalho para o GitHub Actions](/actions/using-workflows/workflow-syntax-for-github-actions)".
[2] If you list your Python dependencies within a `setup.py` file, we may not be able to parse and list every dependency in your project.
diff --git a/translations/pt-BR/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md b/translations/pt-BR/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
index f1f8f12a52..6ad3735102 100644
--- a/translations/pt-BR/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
+++ b/translations/pt-BR/content/communities/maintaining-your-safety-on-github/reporting-abuse-or-spam.md
@@ -21,6 +21,8 @@ Você pode denunciar usuários que violaram Diretrizes da comunidade ou Termos d
Se o conteúdo denunciado estiver ativado para um repositório público, você também poderá denunciar o conteúdo diretamente aos mantenedores do repositório.
+Users in India can contact GitHub's Grievance Officer for India [here](https://support.github.com/contact/india-grievance-officer).
+
## Denunciar um usuário
{% data reusables.profile.user_profile_page_navigation %}
diff --git a/translations/pt-BR/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md b/translations/pt-BR/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
index 8c73064975..b942f72cf4 100644
--- a/translations/pt-BR/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
+++ b/translations/pt-BR/content/developers/apps/building-oauth-apps/authorizing-oauth-apps.md
@@ -293,10 +293,10 @@ O parâmetro `redirect_uri` é opcional. Se ignorado, o GitHub redirecionará os
O parâmetro opcional `redirect_uri` também pode ser usado para URLs do localhhost. Se o aplicativo especificar uma URL do localhost e uma porta, após a autorização, os usuários do aplicativo serão redirecionados para a URL e porta fornecidas. O `redirect_uri` não precisa corresponder à porta especificada na URL de retorno de chamada do aplicativo.
-Para a URL de retorno de chamada `http://localhost/path`, você poderá usar este `redirect_uri`:
+For the `http://127.0.0.1/path` callback URL, you can use this `redirect_uri`:
```
-http://localhost:1234/path
+http://127.0.0.1:1234/path
```
## Criar vários tokens para aplicativos OAuth
diff --git a/translations/pt-BR/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md b/translations/pt-BR/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
index 086fc51c68..e477a3f6a3 100644
--- a/translations/pt-BR/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
+++ b/translations/pt-BR/content/get-started/customizing-your-github-workflow/exploring-integrations/github-extensions-and-integrations.md
@@ -45,10 +45,10 @@ You can integrate your personal or organization account on {% data variables.pro
### Slack and {% data variables.product.product_name %} integration
-You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, releases, deployment reviews and deployment statuses. You can also perform activities like close or open issues, and provide rich references to issues and pull requests without leaving Slack.
+You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, discussions, releases, deployment reviews and deployment statuses. You can also perform activities like close or open issues, and provide rich references to issues and pull requests without leaving Slack.
The {% data variables.product.prodname_dotcom %} app is also compatible with [Slack Enterprise Grid](https://slack.com/intl/en-in/help/articles/360000281563-Manage-apps-on-Enterprise-Grid). For more information, visit the [Slack integration app](https://github.com/marketplace/slack-github) in the marketplace.
### Microsoft Teams and {% data variables.product.product_name %} integration
-You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, deployment reviews and deployment statuses. You can also perform activities like close or open issues, comment on your issues and pull requests, and provide rich references to issues and pull requests without leaving Microsoft Teams. For more information, visit the [Microsoft Teams integration app](https://appsource.microsoft.com/en-us/product/office/WA200002077) in Microsoft AppSource.
+You can subscribe to your repositories or organizations and get realtime updates about issues, pull requests, commits, discussions, releases, deployment reviews and deployment statuses. You can also perform activities like close or open issues, comment on your issues and pull requests, and provide rich references to issues and pull requests without leaving Microsoft Teams. For more information, visit the [Microsoft Teams integration app](https://appsource.microsoft.com/en-us/product/office/WA200002077) in Microsoft AppSource.
diff --git a/translations/pt-BR/content/get-started/getting-started-with-git/managing-remote-repositories.md b/translations/pt-BR/content/get-started/getting-started-with-git/managing-remote-repositories.md
index 23d5fdc08f..6c86f05757 100644
--- a/translations/pt-BR/content/get-started/getting-started-with-git/managing-remote-repositories.md
+++ b/translations/pt-BR/content/get-started/getting-started-with-git/managing-remote-repositories.md
@@ -195,6 +195,8 @@ Use o comando `git remote rm` para remover uma URL remota do seu repositório.
O comando `git remote rm` tem um argumento:
* O nome de um remote, como `destination`
+Removing the remote URL from your repository only unlinks the local and remote repositories. It does not delete the remote repository.
+
## Exemplo
Estes exemplos supõem que você está [clonando usando HTTPS](/github/getting-started-with-github/about-remote-repositories/#cloning-with-https-urls), que é o método recomendado.
@@ -217,7 +219,7 @@ $ git remote -v
{% warning %}
-**Observação**: o comando `git remote rm` não exclui o repositório do remote no servidor. Ele simplesmente remove o remote e suas referências do repositório local.
+**Note**: `git remote rm` does not delete the remote repository from the server. Ele simplesmente remove o remote e suas referências do repositório local.
{% endwarning %}
diff --git a/translations/pt-BR/content/get-started/learning-about-github/about-github-advanced-security.md b/translations/pt-BR/content/get-started/learning-about-github/about-github-advanced-security.md
index 9fea8d3212..0333d708ca 100644
--- a/translations/pt-BR/content/get-started/learning-about-github/about-github-advanced-security.md
+++ b/translations/pt-BR/content/get-started/learning-about-github/about-github-advanced-security.md
@@ -37,10 +37,29 @@ Uma licença de {% data variables.product.prodname_GH_advanced_security %} forne
- **Visão geral de segurança** - Revise a configuração de segurança e os alertas para uma organização e identifique os repositórios com maior risco. Para obter mais informações, consulte "[Sobre a visão geral de segurança](/code-security/security-overview/about-the-security-overview)".
{% endif %}
+{% ifversion fpt or ghec %}
+The table below summarizes the availability of {% data variables.product.prodname_GH_advanced_security %} features for public and private repositories. |{% ifversion fpt %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %}
+|:----------------------:|:------------------------------------:|:------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------:|
+| Varredura de código | Sim | Não | Sim |
+| Varredura secreta | Yes **(limited functionality only)** | Não | Sim |
+| Revisão de dependência | Sim | Não | Sim |{% endif %}
+|
+{% ifversion ghec %}
+| | Public repository | Private repository without {% data variables.product.prodname_advanced_security %} | Private repository with {% data variables.product.prodname_advanced_security %}
+|:------------------------:|:------------------------------------:|:------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------:|
+| Varredura de código | Sim | Não | Sim |
+| Varredura secreta | Yes **(limited functionality only)** | Não | Sim |
+| Revisão de dependência | Sim | Não | Sim |
+| Visão geral da segurança | Não | Não | Sim |
+{% endif %}
+
+{% endif %}
+
Para obter informações sobre funcionalidades de {% data variables.product.prodname_advanced_security %} em desenvolvimento, consulte "[Plano de trabalho de {% data variables.product.prodname_dotcom %}](https://github.com/github/roadmap)". Para uma visão geral de todas as funcionalidades de segurança, consulte "[ funcionalidades de segurança de{% data variables.product.prodname_dotcom %}](/code-security/getting-started/github-security-features)".
{% ifversion fpt or ghec %}
-As funcionalidades de {% data variables.product.prodname_GH_advanced_security %} estão habilitadas para todos os repositórios públicos em {% data variables.product.prodname_dotcom_the_website %}. As organizações que usam {% data variables.product.prodname_ghe_cloud %} com {% data variables.product.prodname_advanced_security %} também podem habilitar essas funcionalidades para repositórios internos e privados. Eles também têm acesso a uma visão geral de segurança a nível da organização. {% ifversion fpt %}Para obter mais informações, consulte a [documentação de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
+{% data variables.product.prodname_GH_advanced_security %} features are enabled for all public repositories on {% data variables.product.prodname_dotcom_the_website %}{% ifversion ghec %}, except for the security overview{% endif %}. As organizações que usam {% data variables.product.prodname_ghe_cloud %} com {% data variables.product.prodname_advanced_security %} também podem habilitar essas funcionalidades para repositórios internos e privados. They also have access to an organization-level security overview. {% ifversion fpt %}Para obter mais informações, consulte a [documentação de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/get-started/learning-about-github/about-github-advanced-security#enabling-advanced-security-features).{% endif %}
{% endif %}
{% ifversion ghes or ghec %}
diff --git a/translations/pt-BR/content/github/site-policy/github-community-guidelines.md b/translations/pt-BR/content/github/site-policy/github-community-guidelines.md
index 37bb94b91a..16621eb4c5 100644
--- a/translations/pt-BR/content/github/site-policy/github-community-guidelines.md
+++ b/translations/pt-BR/content/github/site-policy/github-community-guidelines.md
@@ -22,7 +22,7 @@ A finalidade principal da comunidade do GitHub é colaborar em projetos de softw
* **Seja bem-vindo e venha com a mente aberta!** - Outros colaboradores podem não ter o mesmo nível de experiência ou o mesmo histórico que você, mas isso não significa que eles não tenham boas ideias para contribuir. Nós o encorajamos a receber com boas-vindas os novos colaboradores e aqueles que acabaram de chegar.
-* **Respeitem-se.** Nada sabota tanto as conversas saudáveis quanto a grosseria. Seja cordial e profissional, e não publique nada que uma pessoa de bom senso considere como discurso ofensivo, abusivo ou de ódio. Não assedie ou constranja ninguém. Trate uns aos outros com dignidade e consideração em todas as interações.
+* **Respect each other** - Nothing sabotages healthy conversation like rudeness. Seja cordial e profissional, e não publique nada que uma pessoa de bom senso considere como discurso ofensivo, abusivo ou de ódio. Não assedie ou constranja ninguém. Trate uns aos outros com dignidade e consideração em todas as interações.
Você pode querer responder a algo discordando sobre o assunto. Tudo bem. Mas lembre-se de criticar ideias, não pessoas. Evite xingamentos, ataques diretos ad hominem, respondendo ao tom de um post em vez de seu conteúdo real, e reações impulsivas. Em vez disso, forneça contra-argumentos fundamentados que melhorem a conversa.
diff --git a/translations/pt-BR/content/github/site-policy/submitting-content-removal-requests.md b/translations/pt-BR/content/github/site-policy/submitting-content-removal-requests.md
index 57477530ca..ee59c92225 100644
--- a/translations/pt-BR/content/github/site-policy/submitting-content-removal-requests.md
+++ b/translations/pt-BR/content/github/site-policy/submitting-content-removal-requests.md
@@ -23,3 +23,5 @@ A Política de Marca Registrada do GitHub pode ser utilizada para denunciar cont
## [Política de Remoção de Informações Privadas do GitHub](/github/site-policy/github-private-information-removal-policy)
A Política de Remoção de Informações Privadas do GitHub pode ser usada para relatar dados privados (confidenciais e apresenta um risco de segurança), mas isso não é necessariamente protegido por direitos de autor ou por marcas registradas.
+
+Users in India can contact GitHub's Grievance Officer [here](https://support.github.com/contact/india-grievance-officer).
diff --git a/translations/pt-BR/content/graphql/overview/about-the-graphql-api.md b/translations/pt-BR/content/graphql/overview/about-the-graphql-api.md
index d82f9de964..9456cad5a4 100644
--- a/translations/pt-BR/content/graphql/overview/about-the-graphql-api.md
+++ b/translations/pt-BR/content/graphql/overview/about-the-graphql-api.md
@@ -12,7 +12,7 @@ topics:
## Visão Geral
-Aqui estão alguns links rápidos para ajudá-lo colocar em funcionamento a API v4 do GraphQL:
+Here are some quick links to get you up and running with the GraphQL API:
* [Autenticação](/graphql/guides/forming-calls-with-graphql#authenticating-with-graphql)
* [Ponto de extremidade raiz](/graphql/guides/forming-calls-with-graphql#the-graphql-endpoint)
@@ -36,9 +36,9 @@ A linguagem de consulta de dados do [GraphQL](https://graphql.github.io/) é:
## Por que o GitHub está usando GraphQL
-O GitHub escolheu o GraphQL para a nossa API v4 porque ele oferece muito mais flexibilidade para os nossos integradores. A capacidade de definir precisamente os dados que você deseja—e _apenas_ os dados que você quer—é uma vantagem poderosa dos pontos de extremidades da API REST v3. O GraphQL permite que você substitua várias solicitações de REST por _uma única chamada_ para buscar os dados que você especificar.
+GitHub chose GraphQL because it offers significantly more flexibility for our integrators. The ability to define precisely the data you want—and _only_ the data you want—is a powerful advantage over traditional REST API endpoints. O GraphQL permite que você substitua várias solicitações de REST por _uma única chamada_ para buscar os dados que você especificar.
-Para obter mais informações sobre por que o GitHub fez a migração para o GraphQL, consulte o [post de anúncio do blogue](https://githubengineering.com/the-github-graphql-api/) original.
+For more details about why GitHub invested in GraphQL, see the original [announcement blog post](https://github.blog/2016-09-14-the-github-graphql-api/).
## Sobre a referência do esquema do GraphQL
diff --git a/translations/pt-BR/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md b/translations/pt-BR/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
index 96869d9fe2..808ca34918 100644
--- a/translations/pt-BR/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
+++ b/translations/pt-BR/content/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-your-organizations-installed-integrations.md
@@ -19,9 +19,9 @@ shortTitle: Revisar integrações instaladas
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "apps" aria-label="The apps icon" %} {% data variables.product.prodname_github_apps %}**.
-{% elsif ghae or ghes < 3.4 %}
+{% else %}
1. Na barra lateral esquerda, clique em **{% data variables.product.prodname_github_apps %} instalado**. 
{% endif %}
2. Próximo do {% data variables.product.prodname_github_app %} que deseja revisar, clique em **Configure** (Configurar). 
diff --git a/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md b/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
index 6c93e16be0..5747fb67d6 100644
--- a/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
+++ b/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/adding-outside-collaborators-to-repositories-in-your-organization.md
@@ -40,7 +40,7 @@ Para apoiar ainda mais as habilidades de colaboração da sua equipe, você pode
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
{% data reusables.organizations.invite-teams-or-people %}
5. No campo de pesquisa, comece a digitar o nome da pessoa que deseja convidar e, em seguida, clique em um nome na lista de correspondências. 
diff --git a/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md b/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
index 10bfe07afc..5c530ecbb0 100644
--- a/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
+++ b/translations/pt-BR/content/organizations/managing-access-to-your-organizations-repositories/managing-an-individuals-access-to-an-organization-repository.md
@@ -28,9 +28,9 @@ Ao remover um colaborador de um repositório de sua organização, o colaborador
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
{% data reusables.repositories.navigate-to-manage-access %}
{% endif %}
{% data reusables.organizations.invite-teams-or-people %}
diff --git a/translations/pt-BR/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md b/translations/pt-BR/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
index 08391639b1..7f6f020979 100644
--- a/translations/pt-BR/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
+++ b/translations/pt-BR/content/organizations/managing-organization-settings/disabling-project-boards-in-your-organization.md
@@ -24,7 +24,7 @@ Quando você desabilita quadros de projeto, deixa de ver informações relaciona
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "table" aria-label="The table icon" %} Projects**.
{% endif %}
1. Decida se deseja desabilitar quadros de projeto em toda a organização, desabilitar quadros de projeto de repositório na organização ou ambos. Em seguida, em "Projects" (Projetos):
diff --git a/translations/pt-BR/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md b/translations/pt-BR/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
index 0020d467c3..84ff510c04 100644
--- a/translations/pt-BR/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
+++ b/translations/pt-BR/content/organizations/managing-organization-settings/integrating-jira-with-your-organization-project-board.md
@@ -10,12 +10,12 @@ versions:
shortTitle: Integrate Jira
---
-{% ifversion ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
1. In the left sidebar, select **{% octicon "code" aria-label="The code icon" %} Developer settings**, then click **OAuth Apps**. 
1. Clique em **Novo aplicativo OAuth**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
{% data reusables.user_settings.access_settings %}
1. Na barra lateral esquerda, em **Organization settings** (Configurações da organização) clique no nome de sua organização. 
1. Na barra lateral esquerda, em **Developer settings** (Configurações do desenvolvedor), clique em **OAuth applications** (Aplicativos OAuth) 
diff --git a/translations/pt-BR/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md b/translations/pt-BR/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
index 49256606f0..8627a8be51 100644
--- a/translations/pt-BR/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
+++ b/translations/pt-BR/content/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization.md
@@ -15,11 +15,15 @@ topics:
shortTitle: Restringir criação de repositório
---
-Você pode escolher se os integrantes podem criar repositórios na sua organização. Se você permitir que os integrantes criem repositórios, você poderá escolher quais tipos de repositórios os integrantes poderão criar.{% ifversion fpt or ghec %} Para permitir que os integrantes criem apenas repositórios privados, a sua organização deve usar {% data variables.product.prodname_ghe_cloud %}.{% endif %}{% ifversion fpt %} Para obter mais informações, consulte "[Sobre repositórios](/enterprise-cloud@latest/repositories/creating-and-managing-repositories/about-repositories)" na documentação de {% data variables.product.prodname_ghe_cloud %}{% endif %}.
+Você pode escolher se os integrantes podem criar repositórios na sua organização. {% ifversion ghec or ghes or ghae %}If you allow members to create repositories, you can choose which types of repositories members can create.{% elsif fpt %}If you allow members to create repositories, you can choose whether members can create both public and private repositories or public repositories only.{% endif %} Organization owners can always create any type of repository.
+
+{% ifversion fpt %}
+Organizations using {% data variables.product.prodname_ghe_cloud %} can also restrict members to creating private repositories only. Para obter mais informações, consulte [a documentação de {% data variables.product.prodname_ghe_cloud %}](/enterprise-cloud@latest/organizations/managing-organization-settings/restricting-repository-creation-in-your-organization).
+{% endif %}
-Os proprietários da organização sempre podem criar qualquer tipo de repositório.
{% ifversion ghec or ghae or ghes %}
-{% ifversion ghec or ghae %}Proprietários corporativos{% elsif ghes %}administradores do site{% endif %} podem restringir as opções que você tem disponíveis para a política de criação de repositório da sua organização.{% ifversion ghec or ghes or ghae %} Para obter mais informações, consulte "[Restringindo a criação de repositório na sua empresa](/admin/policies/enforcing-repository-management-policies-in-your-enterprise#setting-a-policy-for-repository-creation)."{% endif %}{% endif %}
+Enterprise owners can restrict the options you have available for your organization's repository creation policy. Para obter mais informações, consulte "[Aplicar políticas de gerenciamento do repositório na sua empresa](/admin/policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-repository-creation)".
+{% endif %}
{% warning %}
@@ -36,5 +40,12 @@ Os proprietários da organização sempre podem criar qualquer tipo de repositó

{%- elsif fpt %}

+
+ {% note %}
+
+ **Note:** To restrict members to creating private repositories only, your organization must use {% data variables.product.prodname_ghe_cloud %}.
+
+ {% endnote %}
{%- endif %}
+
6. Clique em **Salvar**.
diff --git a/translations/pt-BR/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md b/translations/pt-BR/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
index 140910d545..f823d2feba 100644
--- a/translations/pt-BR/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
+++ b/translations/pt-BR/content/organizations/organizing-members-into-teams/managing-code-review-settings-for-your-team.md
@@ -57,7 +57,7 @@ Todos os integrantes da equipe que definiram seu status como "Ocupado" não ser
{% data reusables.user_settings.access_org %}
{% data reusables.organizations.specific_team %}
{% data reusables.organizations.team_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
{% else %}
1. Na barra lateral esquerda, clique em **Revisão de Código** 
@@ -71,7 +71,7 @@ Todos os integrantes da equipe que definiram seu status como "Ocupado" não ser
{% data reusables.user_settings.access_org %}
{% data reusables.organizations.specific_team %}
{% data reusables.organizations.team_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code-review" aria-label="The code-review icon" %} Code review**.
{% else %}
1. Na barra lateral esquerda, clique em **Revisão de Código** 
diff --git a/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md b/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
index b205d0b9da..bb1babbfdb 100644
--- a/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
+++ b/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests.md
@@ -22,7 +22,7 @@ topics:
**Observação:** ao trabalhar com pull requests, lembre-se do seguinte:
* Se estiver trabalhando no [modo de repositório compartilhado](/pull-requests/collaborating-with-pull-requests/getting-started/about-collaborative-development-models), é recomendável usar um branch de tópico para sua pull request. Embora você possa enviar pull requests de qualquer branch ou commit, com um branch de tópico, é possível fazer push de commits de acompanhamento caso seja preciso atualizar as alterações propostas.
-* Ao fazer push de commits para uma pull request, não force o push. Faz push forçado das alterações no histórico do repositório e pode corromper o seu pull request. Se outros colaboradores fizerem o branch do projeto antes de um push forçado, este poderá substituir os commits nos quais os colaboradores basearam o seu trabalho.
+* Be very careful when force pushing commits to a pull request. Faz push forçado das alterações no histórico do repositório e pode corromper o seu pull request. Se outros colaboradores fizerem o branch do projeto antes de um push forçado, este poderá substituir os commits nos quais os colaboradores basearam o seu trabalho.
{% endnote %}
diff --git a/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md b/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
index 98c84b7427..97e3527e29 100644
--- a/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
+++ b/translations/pt-BR/content/pull-requests/collaborating-with-pull-requests/working-with-forks/about-forks.md
@@ -17,7 +17,7 @@ topics:
Bifurcar um repositório é semelhante a copiar um repositório, com duas grandes diferenças:
-* Você pode usar uma pull request para sugerir alterações da sua bifurcação user-owned para o repositório original, também conhecido como o repositório *upstream*.
+* You can use a pull request to suggest changes from your user-owned fork to the original repository in its GitHub instance, also known as the *upstream* repository.
* Você pode transmitir alterações do repositório upstream para a sua bifurcação local sincronizando a bifurcação com o repositório upstream.
{% data reusables.repositories.you-can-fork %}
diff --git a/translations/pt-BR/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md b/translations/pt-BR/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
index 38d656eeba..ef402a1785 100644
--- a/translations/pt-BR/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
+++ b/translations/pt-BR/content/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/configuring-autolinks-to-reference-external-resources.md
@@ -22,7 +22,7 @@ Se você usa o Zendesk para acompanhar tíquetes relatados pelo usuário, por ex
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "cross-reference" aria-label="The cross-reference icon" %} Autolink references**.
{% else %}
1. Na barra lateral esquerda, clique em **Autolink references** (Referências de link automático). 
diff --git a/translations/pt-BR/content/rest/reference/billing.md b/translations/pt-BR/content/rest/reference/billing.md
index ed6cb4eda8..5cd7d7d8d5 100644
--- a/translations/pt-BR/content/rest/reference/billing.md
+++ b/translations/pt-BR/content/rest/reference/billing.md
@@ -4,6 +4,7 @@ intro: 'Com a API de cobrança você pode monitorar as cobranças e uso {% data
versions:
fpt: '*'
ghec: '*'
+ ghes: '>=3.4'
topics:
- API
miniTocMaxHeadingLevel: 3
diff --git a/translations/pt-BR/content/rest/reference/enterprise-admin.md b/translations/pt-BR/content/rest/reference/enterprise-admin.md
index 006d78ee79..230e3f76b5 100644
--- a/translations/pt-BR/content/rest/reference/enterprise-admin.md
+++ b/translations/pt-BR/content/rest/reference/enterprise-admin.md
@@ -78,7 +78,7 @@ You can also read the current version by calling the [meta endpoint](/rest/refer
{% endif %}
-{% ifversion fpt or ghec %}
+{% ifversion fpt or ghec or ghes > 3.3 %}
## Billing
{% for operation in currentRestOperations %}
diff --git a/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md b/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
index c245d3ddbe..a763a75baf 100644
--- a/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
+++ b/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_org_admins.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
1. Na barra lateral Settings, clique em **Audit log**. 
diff --git a/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md b/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
index b410a8053c..0f6217e1da 100644
--- a/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
+++ b/translations/pt-BR/data/reusables/audit_log/audit_log_sidebar_for_site_admins.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
3. In the "Archives" section of the sidebar, click **{% octicon "log" aria-label="The log icon" %} Security log**.
{% else %}
3. Na barra lateral esquerda, clique em **Audit log**. 
diff --git a/translations/pt-BR/data/reusables/dependabot/dependabot-secrets-button.md b/translations/pt-BR/data/reusables/dependabot/dependabot-secrets-button.md
index ec922b1ac5..c97cd90ae3 100644
--- a/translations/pt-BR/data/reusables/dependabot/dependabot-secrets-button.md
+++ b/translations/pt-BR/data/reusables/dependabot/dependabot-secrets-button.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, select **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets**, then click **{% data variables.product.prodname_dependabot %}**.
-{% elsif ghes > 3.2%}
+{% else %}
1. Na barra lateral, clique em **{% data variables.product.prodname_dependabot %}**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/github-actions/github-token-available-permissions.md b/translations/pt-BR/data/reusables/github-actions/github-token-available-permissions.md
index 0a29042def..da96012798 100644
--- a/translations/pt-BR/data/reusables/github-actions/github-token-available-permissions.md
+++ b/translations/pt-BR/data/reusables/github-actions/github-token-available-permissions.md
@@ -5,8 +5,8 @@ permissions:
actions: read|write|none
checks: read|write|none
contents: read|write|none
- deployments: read|write|none
- id-token: read|write|none
+ deployments: read|write|none{% ifversion fpt or ghec %}
+ id-token: read|write|none{% endif %}
issues: read|write|none
discussions: read|write|none
packages: read|write|none
diff --git a/translations/pt-BR/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md b/translations/pt-BR/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
index 1c973c16c3..d25129f56e 100644
--- a/translations/pt-BR/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
+++ b/translations/pt-BR/data/reusables/github-actions/self-hosted-runner-groups-navigate-to-repo-org-enterprise.md
@@ -12,6 +12,6 @@
2. Na barra lateral esquerda, clique em **Visão geral da empresa**.
3. In the enterprise sidebar, click {% octicon "law" aria-label="The law icon" %} **Policies**.{% endif %}
2. Navigate to the "Runner groups" settings:
- * **In an organization**: Click **Actions** in the left sidebar{% ifversion fpt or ghec %}, then click **Runner groups** below it{% endif %}.{% ifversion ghec or ghes or ghae %}
- * {% ifversion ghec %}**If using an enterprise account**:{% elsif ghes or ghae %}**If using an enterprise-level runner**:{% endif %} Click **Actions** under "{% octicon "law" aria-label="The law icon" %} Policies"{% ifversion ghec %}, then click the **Runners groups** tab{% endif %}.{% endif %}
+ * **In an organization**: Click **Actions** in the left sidebar, then click {% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5091 %}**Runner groups**{% elsif ghae or ghes < 3.4 %}**Runners**{% endif %} below it.{% ifversion ghec or ghes or ghae %}
+ * {% ifversion ghec %}**If using an enterprise account**:{% elsif ghes or ghae %}**If using an enterprise-level runner**:{% endif %} Click **Actions** under "{% octicon "law" aria-label="The law icon" %} Policies", then click the {% ifversion ghec or ghes > 3.3 or ghae-issue-5091 %}**Runners groups**{% elsif ghae or ghes < 3.4 %}**Runners**{% endif %} tab.{% endif %}
{% endif %}
diff --git a/translations/pt-BR/data/reusables/github-actions/sidebar-secret.md b/translations/pt-BR/data/reusables/github-actions/sidebar-secret.md
index 4adf6c9661..e23fedb78a 100644
--- a/translations/pt-BR/data/reusables/github-actions/sidebar-secret.md
+++ b/translations/pt-BR/data/reusables/github-actions/sidebar-secret.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "key-asterisk" aria-label="The key-asterisk icon" %} Secrets**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **Secrets** (Segredos).
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/billing_plans.md b/translations/pt-BR/data/reusables/organizations/billing_plans.md
index 2ea9a5cf17..6036159319 100644
--- a/translations/pt-BR/data/reusables/organizations/billing_plans.md
+++ b/translations/pt-BR/data/reusables/organizations/billing_plans.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "credit-card" aria-label="The credit card icon" %} Billing and plans**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral das configurações da sua organização, clique em **Planos de & cobrança**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/github-apps-settings-sidebar.md b/translations/pt-BR/data/reusables/organizations/github-apps-settings-sidebar.md
index ed09054fd9..2e8823aed8 100644
--- a/translations/pt-BR/data/reusables/organizations/github-apps-settings-sidebar.md
+++ b/translations/pt-BR/data/reusables/organizations/github-apps-settings-sidebar.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, select **{% octicon "code" aria-label="The code icon" %} Developer settings** then click **{% data variables.product.prodname_github_apps %}**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **{% data variables.product.prodname_github_apps %}**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/member-privileges.md b/translations/pt-BR/data/reusables/organizations/member-privileges.md
index fdd8fe2a7a..c791a7b7ab 100644
--- a/translations/pt-BR/data/reusables/organizations/member-privileges.md
+++ b/translations/pt-BR/data/reusables/organizations/member-privileges.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "people" aria-label="The people icon" %} Member privileges**.
-{% elsif ghae or ghes < 3.4 %}
+{% else %}
4. Na barra lateral esquerda, clique em **Member privileges** (Privilégios de membro). 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/repository-defaults.md b/translations/pt-BR/data/reusables/organizations/repository-defaults.md
index 6d44f46f55..391a6a4ad0 100644
--- a/translations/pt-BR/data/reusables/organizations/repository-defaults.md
+++ b/translations/pt-BR/data/reusables/organizations/repository-defaults.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code, planning, and automation" section of the sidebar, select **{% octicon "repo" aria-label="The repo icon" %} Repository**, then click **Repository defaults**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **Padrões do repositório**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/security-and-analysis.md b/translations/pt-BR/data/reusables/organizations/security-and-analysis.md
index d0199f4410..77a2d097d4 100644
--- a/translations/pt-BR/data/reusables/organizations/security-and-analysis.md
+++ b/translations/pt-BR/data/reusables/organizations/security-and-analysis.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "codescan" aria-label="The codescan icon" %} Code security and analysis**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **Security & analysis** (Segurança e análise). 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/organizations/security.md b/translations/pt-BR/data/reusables/organizations/security.md
index 2d0a9d68f6..209240ce4f 100644
--- a/translations/pt-BR/data/reusables/organizations/security.md
+++ b/translations/pt-BR/data/reusables/organizations/security.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Authentication security**.
{% else %}
1. Na barra lateral esquerda, clique em **Organization security** (Segurança da organização).
diff --git a/translations/pt-BR/data/reusables/organizations/teams_sidebar.md b/translations/pt-BR/data/reusables/organizations/teams_sidebar.md
index 31946ac488..a5a4901c03 100644
--- a/translations/pt-BR/data/reusables/organizations/teams_sidebar.md
+++ b/translations/pt-BR/data/reusables/organizations/teams_sidebar.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "comment-discussion" aria-label="The comment-discussion icon" %} Team discussions**.
{% else %}
1. Na barra lateral de configurações, clique em **Teams** (Equipes). 
diff --git a/translations/pt-BR/data/reusables/organizations/verified-domains.md b/translations/pt-BR/data/reusables/organizations/verified-domains.md
index a10c7d9319..c79c87de48 100644
--- a/translations/pt-BR/data/reusables/organizations/verified-domains.md
+++ b/translations/pt-BR/data/reusables/organizations/verified-domains.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "verified" aria-label="The verified icon" %} Verified and approved domains**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **Domínios & verificados e aprovados**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/pages/sidebar-pages.md b/translations/pt-BR/data/reusables/pages/sidebar-pages.md
index ec65e49f5d..0238f6860b 100644
--- a/translations/pt-BR/data/reusables/pages/sidebar-pages.md
+++ b/translations/pt-BR/data/reusables/pages/sidebar-pages.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghes > 3.3 or ghec or ghae-issue-5658 %}
+{% ifversion fpt or ghes > 3.4 or ghec or ghae-issue-5658 %}
1. In the "Code & operations" section of the sidebar, click **{% octicon "browser" aria-label="The browser icon" %} Pages**.
{% else %}
1. Na barra lateral esquerda, clique em **Pages** (Páginas). 
diff --git a/translations/pt-BR/data/reusables/repositories/navigate-to-security-and-analysis.md b/translations/pt-BR/data/reusables/repositories/navigate-to-security-and-analysis.md
index 5eaf9fe7ed..aa2db8b271 100644
--- a/translations/pt-BR/data/reusables/repositories/navigate-to-security-and-analysis.md
+++ b/translations/pt-BR/data/reusables/repositories/navigate-to-security-and-analysis.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Security & analysis**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. Na barra lateral esquerda, clique em **Security & analysis** (Segurança e análise). 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/repositories/repository-branches.md b/translations/pt-BR/data/reusables/repositories/repository-branches.md
index a93e602225..2922f65439 100644
--- a/translations/pt-BR/data/reusables/repositories/repository-branches.md
+++ b/translations/pt-BR/data/reusables/repositories/repository-branches.md
@@ -1,5 +1,5 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code & operations" section of the sidebar, click **{% octicon "git-branch" aria-label="The git-branch icon" %} Branches**.
-{% elsif ghes < 3.4 or ghae %}
+{% else %}
1. No menu à esquerda, clique em **Branches**. 
{% endif %}
diff --git a/translations/pt-BR/data/reusables/repositories/sidebar-notifications.md b/translations/pt-BR/data/reusables/repositories/sidebar-notifications.md
index 2e387d66c7..2b9aee5409 100644
--- a/translations/pt-BR/data/reusables/repositories/sidebar-notifications.md
+++ b/translations/pt-BR/data/reusables/repositories/sidebar-notifications.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "mail" aria-label="The mail icon" %} Email notifications**.
{% else %}
1. Clique em **Notificações**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/access_applications.md b/translations/pt-BR/data/reusables/user_settings/access_applications.md
index 7db741ea14..88ce4b3829 100644
--- a/translations/pt-BR/data/reusables/user_settings/access_applications.md
+++ b/translations/pt-BR/data/reusables/user_settings/access_applications.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Integrations" section of the sidebar, click **{% octicon "apps" aria-label="The apps icon" %} Applications**.
{% else %}
1. Na barra lateral esquerda, clique em **Applications** (Aplicativos). 
diff --git a/translations/pt-BR/data/reusables/user_settings/account_settings.md b/translations/pt-BR/data/reusables/user_settings/account_settings.md
index ced72b8186..5c2f9130ac 100644
--- a/translations/pt-BR/data/reusables/user_settings/account_settings.md
+++ b/translations/pt-BR/data/reusables/user_settings/account_settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-next %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-next %}
1. In the left sidebar, click **{% octicon "gear" aria-label="The gear icon" %} Account**.
{% else %}
1. Na barra lateral esquerda, clique em **Conta**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/appearance-settings.md b/translations/pt-BR/data/reusables/user_settings/appearance-settings.md
index 050370bf13..cafb6ba4cb 100644
--- a/translations/pt-BR/data/reusables/user_settings/appearance-settings.md
+++ b/translations/pt-BR/data/reusables/user_settings/appearance-settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "paintbrush" aria-label="The paintbrush icon" %} Appearance**.
{% else %}
1. Na barra lateral de configurações do usuário, clique em **Aparência**.
diff --git a/translations/pt-BR/data/reusables/user_settings/developer_settings.md b/translations/pt-BR/data/reusables/user_settings/developer_settings.md
index a7c3a03398..90e3bdeb9c 100644
--- a/translations/pt-BR/data/reusables/user_settings/developer_settings.md
+++ b/translations/pt-BR/data/reusables/user_settings/developer_settings.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the left sidebar, click **{% octicon "code" aria-label="The code icon" %} Developer settings**.
{% else %}
1. Na barra lateral esquerda, clique em **Developer settings** (Configurações do desenvolvedor). 
diff --git a/translations/pt-BR/data/reusables/user_settings/emails.md b/translations/pt-BR/data/reusables/user_settings/emails.md
index ede0a651c5..30276c145e 100644
--- a/translations/pt-BR/data/reusables/user_settings/emails.md
+++ b/translations/pt-BR/data/reusables/user_settings/emails.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "mail" aria-label="The mail icon" %} Emails**.
{% else %}
1. Na barra lateral esquerda, clique em **E-mails**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/organizations.md b/translations/pt-BR/data/reusables/user_settings/organizations.md
index 2e922b6ced..56e71f320f 100644
--- a/translations/pt-BR/data/reusables/user_settings/organizations.md
+++ b/translations/pt-BR/data/reusables/user_settings/organizations.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "organization" aria-label="The organization icon" %} Organizations**.
{% else %}
1. Na barra lateral de configurações do usuário, clique em **Organizações**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/repo-tab.md b/translations/pt-BR/data/reusables/user_settings/repo-tab.md
index bba693a256..dfca42af6f 100644
--- a/translations/pt-BR/data/reusables/user_settings/repo-tab.md
+++ b/translations/pt-BR/data/reusables/user_settings/repo-tab.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code planning, and automation" section of the sidebar, click **{% octicon "repo" aria-label="The repo icon" %} Repositories**.
{% else %}
1. Na barra lateral esquerda, clique em **Repositories** (Repositórios). 
diff --git a/translations/pt-BR/data/reusables/user_settings/saved_replies.md b/translations/pt-BR/data/reusables/user_settings/saved_replies.md
index 4518824f63..8c89dbb57f 100644
--- a/translations/pt-BR/data/reusables/user_settings/saved_replies.md
+++ b/translations/pt-BR/data/reusables/user_settings/saved_replies.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "reply" aria-label="The reply icon" %} Saved replies**.
{% else %}
1. Na barra lateral esquerda, clique em **Respostas salvas**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/security-analysis.md b/translations/pt-BR/data/reusables/user_settings/security-analysis.md
index 642735a0f6..aec1ce067f 100644
--- a/translations/pt-BR/data/reusables/user_settings/security-analysis.md
+++ b/translations/pt-BR/data/reusables/user_settings/security-analysis.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Security" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Code security and analysis**.
{% else %}
1. Na barra lateral esquerda, clique em **Security & analysis** (Segurança e análise). 
diff --git a/translations/pt-BR/data/reusables/user_settings/security.md b/translations/pt-BR/data/reusables/user_settings/security.md
index 5fd1ae50cd..fdc2ac26ab 100644
--- a/translations/pt-BR/data/reusables/user_settings/security.md
+++ b/translations/pt-BR/data/reusables/user_settings/security.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "shield-lock" aria-label="The shield-lock icon" %} Password and authentication**.
{% else %}
1. Na barra lateral esquerda, clique em **segurança da conta**. 
diff --git a/translations/pt-BR/data/reusables/user_settings/ssh.md b/translations/pt-BR/data/reusables/user_settings/ssh.md
index 2ba12f8b8c..5122dd314e 100644
--- a/translations/pt-BR/data/reusables/user_settings/ssh.md
+++ b/translations/pt-BR/data/reusables/user_settings/ssh.md
@@ -1,4 +1,4 @@
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
1. In the "Access" section of the sidebar, click **{% octicon "key" aria-label="The key icon" %} SSH and GPG keys**.
{% else %}
1. Na barra lateral de configurações do usuário, clique em **chaves SSH e GPG**. 
diff --git a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
index c9f2898800..c8a8983573 100644
--- a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
+++ b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/inviting-collaborators-to-a-personal-repository.md
@@ -38,7 +38,7 @@ If you're a member of an {% data variables.product.prodname_emu_enterprise %}, y
1. 您邀请成为协作者的人员需提供用户名。{% ifversion fpt or ghec %} 如果他们还没有用户名,他们可以注册 {% data variables.product.prodname_dotcom %} 更多信息请参阅“[注册新 {% data variables.product.prodname_dotcom %} 帐户](/articles/signing-up-for-a-new-github-account)”。{% endif %}
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658%}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658%}
{% data reusables.repositories.click-collaborators-teams %}
1. 单击 **Invite a collaborator(邀请协作者)**。 
2. 在搜索字段中,开始键入您想邀请的人员的姓名,然后单击匹配列表中的姓名。 
diff --git a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
index 3bd5abf224..7587fc0c4d 100644
--- a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
+++ b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-a-collaborator-from-a-personal-repository.md
@@ -30,7 +30,7 @@ shortTitle: 删除协作者
{% data reusables.repositories.navigate-to-repo %}
{% data reusables.repositories.sidebar-settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
{% data reusables.repositories.click-collaborators-teams %}
4. 在要要删除的协作者的右侧,单击 {% octicon "trash" aria-label="The trash icon" %}。 
{% else %}
diff --git a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
index 564c5f2715..30a8d93923 100644
--- a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
+++ b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-access-to-your-personal-repositories/removing-yourself-from-a-collaborators-repository.md
@@ -21,7 +21,7 @@ shortTitle: 删除自己
---
{% data reusables.user_settings.access_settings %}
-{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5658 %}
+{% ifversion fpt or ghec or ghes > 3.4 or ghae-issue-5658 %}
2. In the "Code, planning, and automation" section of the sidebar, click **{% octicon "repo" aria-label="The repo icon" %} Repositories**.
{% else %}
2. 在左侧边栏中,单击 **Repositories(仓库)**。 
diff --git a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
index 5ed66d24b6..586f705ff5 100644
--- a/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
+++ b/translations/zh-CN/content/account-and-profile/setting-up-and-managing-your-github-user-account/managing-user-account-settings/managing-your-theme-settings.md
@@ -22,7 +22,7 @@ shortTitle: 管理主题设置
{% note %}
-**Note:** The colorblind themes and light high contrast theme are currently in public beta. For more information on enabling features in public beta, see "[Exploring early access releases with feature preview](/get-started/using-github/exploring-early-access-releases-with-feature-preview)."
+**Note:** The colorblind themes are currently in public beta. For more information on enabling features in public beta, see "[Exploring early access releases with feature preview](/get-started/using-github/exploring-early-access-releases-with-feature-preview)."
{% endnote %}
diff --git a/translations/zh-CN/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md b/translations/zh-CN/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
index ca3c04e8dc..15b7173f8f 100644
--- a/translations/zh-CN/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
+++ b/translations/zh-CN/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md
@@ -69,7 +69,7 @@ jobs:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
```
@@ -106,7 +106,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Run the Gradle package task
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: -b ci.gradle package
```
@@ -135,7 +135,7 @@ steps:
- name: Validate Gradle wrapper
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b
- name: Build with Gradle
- uses: gradle/gradle-build-action@4137be6a8bf7d7133955359dbd952c0ca73b1021
+ uses: gradle/gradle-build-action@937999e9cc2425eddc7fd62d1053baf041147db7
with:
arguments: build
- uses: actions/upload-artifact@v2
diff --git a/translations/zh-CN/content/actions/creating-actions/creating-a-docker-container-action.md b/translations/zh-CN/content/actions/creating-actions/creating-a-docker-container-action.md
index 58f6227adc..5fabeae91b 100644
--- a/translations/zh-CN/content/actions/creating-actions/creating-a-docker-container-action.md
+++ b/translations/zh-CN/content/actions/creating-actions/creating-a-docker-container-action.md
@@ -56,7 +56,7 @@ shortTitle: Docker 容器操作
## 创建 Dockerfile
-在新的 `hello-world-docker-action` 目录中,创建新的 `Dockerfile` 文件。 Make sure that your filename is capitalized correctly (use a capital `D` but not a capital `f`) if you're having issues. 更多信息请参阅“[{% data variables.product.prodname_actions %} 的 Dockerfile 支持](/actions/creating-actions/dockerfile-support-for-github-actions)”。
+在新的 `hello-world-docker-action` 目录中,创建新的 `Dockerfile` 文件。 如果您有问题,请确保您的文件名正确大写(使用大写字母 `D` 但不要大写 `f`)。 更多信息请参阅“[{% data variables.product.prodname_actions %} 的 Dockerfile 支持](/actions/creating-actions/dockerfile-support-for-github-actions)”。
**Dockerfile**
```Dockerfile{:copy}
diff --git a/translations/zh-CN/content/actions/creating-actions/creating-a-javascript-action.md b/translations/zh-CN/content/actions/creating-actions/creating-a-javascript-action.md
index 3952af62a5..e25ab3e0d1 100644
--- a/translations/zh-CN/content/actions/creating-actions/creating-a-javascript-action.md
+++ b/translations/zh-CN/content/actions/creating-actions/creating-a-javascript-action.md
@@ -37,7 +37,7 @@ shortTitle: JavaScript 操作
在开始之前,您需要下载 Node.js 并创建公共 {% data variables.product.prodname_dotcom %} 仓库。
-1. Download and install Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}16.x{% else %}12.x{% endif %}, which includes npm.
+1. 下载并安装 Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}16.x{% else %}12.x{% endif %},其中包含 npm。
{% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}https://nodejs.org/en/download/{% else %}https://nodejs.org/en/download/releases/{% endif %}
diff --git a/translations/zh-CN/content/actions/creating-actions/dockerfile-support-for-github-actions.md b/translations/zh-CN/content/actions/creating-actions/dockerfile-support-for-github-actions.md
index 6d78d67c1b..2e70f1799d 100644
--- a/translations/zh-CN/content/actions/creating-actions/dockerfile-support-for-github-actions.md
+++ b/translations/zh-CN/content/actions/creating-actions/dockerfile-support-for-github-actions.md
@@ -47,7 +47,7 @@ Docker 操作必须由默认 Docker 用户 (root) 运行。 不要在 `Dockerfil
Docker `ENTRYPOINT` 指令有 _shell_ 形式和 _exec_ 形式。 Docker `ENTRYPOINT` 文档建议使用 _exec_ 形式的 `ENTRYPOINT` 指令。 有关 _exec_ 和 _shell_ 形式的更多信息,请参阅 Docker 文档中的 [ENTRYPOINT 参考](https://docs.docker.com/engine/reference/builder/#entrypoint)。
-You should not use `WORKDIR` to specify your entrypoint in your Dockerfile. Instead, you should use an absolute path. For more information, see [WORKDIR](#workdir).
+您不应使用 `WORKDIR` 在 Dockerfile 中指定入口点。 而应使用绝对路径。 更多信息请参阅 [WORKDIR](#workdir)。
如果您配置容器使用 _exec_ 形式的 `ENTRYPOINT` 指令,在操作元数据文件中配置的 `args` 不会在命令 shell 中运行。 如果操作的 `args` 包含环境变量,不会替换该变量。 例如,使用以下 _exec_ 格式将不会打印存储在 `$GITHUB_SHA` 中的值, 但会打印 `"$GITHUB_SHA"`。
diff --git a/translations/zh-CN/content/actions/creating-actions/metadata-syntax-for-github-actions.md b/translations/zh-CN/content/actions/creating-actions/metadata-syntax-for-github-actions.md
index 24c80f1a28..f018198405 100644
--- a/translations/zh-CN/content/actions/creating-actions/metadata-syntax-for-github-actions.md
+++ b/translations/zh-CN/content/actions/creating-actions/metadata-syntax-for-github-actions.md
@@ -21,7 +21,7 @@ miniTocMaxHeadingLevel: 4
## 关于 {% data variables.product.prodname_actions %} 的 YAML 语法
-All actions require a metadata file. 元数据文件名必须是 `action.yml` 或 `action.yaml`。 The data in the metadata file defines the inputs, outputs, and runs configuration for your action.
+所有操作都需要元数据文件。 元数据文件名必须是 `action.yml` 或 `action.yaml`。 元数据文件中的数据定义操作的输入、输出和运行配置。
操作元数据文件使用 YAML 语法。 如果您是 YAML 的新用户,请参阅“[五分钟了解 YAML](https://www.codeproject.com/Articles/1214409/Learn-YAML-in-five-minutes)”。
@@ -41,7 +41,7 @@ All actions require a metadata file. 元数据文件名必须是 `action.yml`
**可选** 输入参数用于指定操作在运行时预期使用的数据。 {% data variables.product.prodname_dotcom %} 将输入参数存储为环境变量。 大写的输入 ID 在运行时转换为小写。 建议使用小写输入 ID。
-### Example: Specifying inputs
+### 示例:指定输入
此示例配置两个输入:numOctocats 和 octocatEyeColor。 numOctocats 输入不是必要的,默认值为 '1'。 octocatEyeColor 输入是必要的,没有默认值。 使用此操作的工作流程文件必须使用 `with` 关键词来设置 octocatEyeColor 的输入值。 有关 `with` 语法的更多信息,请参阅“[{% data variables.product.prodname_actions %} 的工作流程语法](/articles/workflow-syntax-for-github-actions/#jobsjob_idstepswith)”。
@@ -84,13 +84,13 @@ inputs:
**可选** 如果使用输入参数,此 `string` 将记录为警告消息。 您可以使用此警告通知用户输入已被弃用,并提及任何其他替代方式。
-## `outputs` for Docker container and JavaScript actions
+## 用于 Docker 容器和 JavaScript 操作的 `outputs`
**可选** 输出参数允许您声明操作所设置的数据。 稍后在工作流程中运行的操作可以使用以前运行操作中的输出数据集。 例如,如果有操作执行两个输入的相加 (x + y = z),则该操作可能输出总和 (z),用作其他操作的输入。
如果不在操作元数据文件中声明输出,您仍然可以设置输出并在工作流程中使用它们。 有关在操作中设置输出的更多信息,请参阅“[{% data variables.product.prodname_actions %} 的工作流程命令](/actions/reference/workflow-commands-for-github-actions/#setting-an-output-parameter)”。
-### Example: Declaring outputs for Docker container and JavaScript actions
+### 示例:声明 Docker 容器和 JavaScript 操作的输出
```yaml
outputs:
@@ -108,11 +108,17 @@ outputs:
## 用于复合操作的 `outputs`
-**Optional** `outputs` use the same parameters as `outputs.` and `outputs..description` (see "[`outputs` for Docker container and JavaScript actions](#outputs-for-docker-container-and-javascript-actions)"), but also includes the `value` token.
+**可选** `outputs` 使用与 `outputs.` 及 `outputs..description` 相同的参数(请参阅“用于 Docker 容器和 JavaScript 操作的
-### Example: Declaring outputs for composite actions
+`outputs`”),但也包括 `value` 令牌。
+
+
+
+### 示例:声明复合操作的 outputs
{% raw %}
+
+
```yaml
outputs:
random-number:
@@ -125,23 +131,35 @@ runs:
run: echo "::set-output name=random-id::$(echo $RANDOM)"
shell: bash
```
+
+
{% endraw %}
+
+
### `outputs..value`
**必要** 输出参数将会映射到的值。 您可以使用上下文将此设置为 `string` 或表达式。 例如,您可以使用 `steps` 上下文将输出的 `value` 设置为步骤的输出值。
有关如何使用上下文语法的更多信息,请参阅“[上下文](/actions/learn-github-actions/contexts)”。
+
+
## `runs`
-**Required** Specifies whether this is a JavaScript action, a composite action, or a Docker container action and how the action is executed.
+**必要** 指定这是 JavaScript 操作、复合操作还是 Docker 容器操作以及操作的执行方式。
+
+
## 用于 JavaScript 操作的 `runs`
-**Required** Configures the path to the action's code and the runtime used to execute the code.
+**必要** 配置操作代码的路径和用于执行代码的运行时。
+
+
+
+### 示例:使用 Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}v16{% else %}v12{% endif %}
+
-### Example: Using Node.js {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}v16{% else %}v12{% endif %}
```yaml
runs:
@@ -149,23 +167,32 @@ runs:
main: 'main.js'
```
+
+
+
### `runs.using`
-**Required** The runtime used to execute the code specified in [`main`](#runsmain).
+**Required** The runtime used to execute the code specified in [`main`](#runsmain).
- Use `node12` for Node.js v12.{% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}
- Use `node16` for Node.js v16.{% endif %}
+
+
### `runs.main`
**必要** 包含操作代码的文件。 The runtime specified in [`using`](#runsusing) executes this file.
+
+
### `runs.pre`
**可选** 允许您在 `main:` 操作开始之前,在作业开始时运行脚本。 例如,您可以使用 `pre:` 运行基本要求设置脚本。 The runtime specified with the [`using`](#runsusing) syntax will execute this file. The `pre:` action always runs by default but you can override this using [`runs.pre-if`](#runspre-if).
在此示例中,`pre:` 操作运行名为 `setup.js` 的脚本:
+
+
```yaml
runs:
using: {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}'node16'{% else %}'node12'{% endif %}
@@ -174,6 +201,9 @@ runs:
post: 'cleanup.js'
```
+
+
+
### `runs.pre-if`
**可选** 允许您定义 `pre:` 操作执行的条件。 `pre:` 操作仅在满足 `pre-if` 中的条件后运行。 如果未设置,则 `pre-if` 默认使用 `always()`。 In `pre-if`, status check functions evaluate against the job's status, not the action's own status.
@@ -182,17 +212,24 @@ runs:
在此示例中,`cleanup.js` 仅在基于 Linux 的运行器上运行:
+
+
```yaml
pre: 'cleanup.js'
pre-if: runner.os == 'linux'
```
+
+
+
### `runs.post`
**可选** 允许您在 `main:` 操作完成后,在作业结束时运行脚本。 例如,您可以使用 `post:` 终止某些进程或删除不需要的文件。 The runtime specified with the [`using`](#runsusing) syntax will execute this file.
在此示例中,`post:` 操作会运行名为 `cleanup.js` 的脚本:
+
+
```yaml
runs:
using: {% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}'node16'{% else %}'node12'{% endif %}
@@ -200,44 +237,70 @@ runs:
post: 'cleanup.js'
```
+
`post:` 操作始终默认运行,但您可以使用 `post-if` 覆盖该设置。
+
+
### `runs.post-if`
**可选** 允许您定义 `post:` 操作执行的条件。 `post:` 操作仅在满足 `post-if` 中的条件后运行。 如果未设置,则 `post-if` 默认使用 `always()`。 In `post-if`, status check functions evaluate against the job's status, not the action's own status.
例如,此 `cleanup.js` 仅在基于 Linux 的运行器上运行:
+
+
```yaml
post: 'cleanup.js'
post-if: runner.os == 'linux'
```
+
+
+
## 用于复合操作的 `runs`
**Required** Configures the path to the composite action.
+
+
### `runs.using`
**Required** You must set this value to `'composite'`.
+
+
### `runs.steps`
{% ifversion fpt or ghes > 3.2 or ghae-issue-4853 or ghec %}
-**必要** 您计划在此操作中的步骤。 这些步骤可以是 `run` 步骤或 `uses` 步骤。
+
+
+**必要** 您计划在此操作中的步骤。 这些步骤可以是 `run` 步骤或 `uses` 步骤。
+
{% else %}
-**必要** 您计划在此操作中的步骤。
+
+**必要** 您计划在此操作中的步骤。
+
{% endif %}
+
+
#### `runs.steps[*].run`
{% ifversion fpt or ghes > 3.2 or ghae-issue-4853 or ghec %}
-**可选** 您想要运行的命令。 这可以是内联的,也可以是操作仓库中的脚本:
+
+
+**可选** 您想要运行的命令。 这可以是内联的,也可以是操作仓库中的脚本:
+
{% else %}
-**必要** 您想要运行的命令。 这可以是内联的,也可以是操作仓库中的脚本:
+
+**必要** 您想要运行的命令。 这可以是内联的,也可以是操作仓库中的脚本:
+
{% endif %}
{% raw %}
+
+
```yaml
runs:
using: "composite"
@@ -245,10 +308,14 @@ runs:
- run: ${{ github.action_path }}/test/script.sh
shell: bash
```
+
+
{% endraw %}
或者,您也可以使用 `$GITHUB_ACTION_PATH`:
+
+
```yaml
runs:
using: "composite"
@@ -257,17 +324,27 @@ runs:
shell: bash
```
+
更多信息请参阅“[`github context`](/actions/reference/context-and-expression-syntax-for-github-actions#github-context)”。
+
+
#### `runs.steps[*].shell`
{% ifversion fpt or ghes > 3.2 or ghae-issue-4853 or ghec %}
-**可选** 您想要在其中运行命令的 shell。 您可以使用[这里](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsshell)列出的任何 shell。 如果设置了 `run`,则必填。
+
+
+**可选** 您想要在其中运行命令的 shell。 您可以使用[这里](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsshell)列出的任何 shell。 如果设置了 `run`,则必填。
+
{% else %}
-**必要** 您想要在其中运行命令的 shell。 您可以使用[这里](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsshell)列出的任何 shell。 如果设置了 `run`,则必填。
+
+**必要** 您想要在其中运行命令的 shell。 您可以使用[这里](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsshell)列出的任何 shell。 如果设置了 `run`,则必填。
+
{% endif %}
{% ifversion fpt or ghes > 3.3 or ghae-issue-5504 or ghec %}
+
+
#### `runs.steps[*].if`
**Optional** You can use the `if` conditional to prevent a step from running unless a condition is met. 您可以使用任何支持上下文和表达式来创建条件。
@@ -276,7 +353,9 @@ runs:
**示例:使用上下文**
- 此步骤仅在事件类型为 `pull_request` 并且事件操作为 `unassigned` 时运行。
+此步骤仅在事件类型为 `pull_request` 并且事件操作为 `unassigned` 时运行。
+
+
```yaml
steps:
@@ -284,10 +363,13 @@ steps:
if: {% raw %}${{ github.event_name == 'pull_request' && github.event.action == 'unassigned' }}{% endraw %}
```
+
**示例:使用状态检查功能**
The `my backup step` only runs when the previous step of a composite action fails. For more information, see "[Expressions](/actions/learn-github-actions/expressions#job-status-check-functions)."
+
+
```yaml
steps:
- name: My first step
@@ -296,36 +378,51 @@ steps:
if: {% raw %}${{ failure() }}{% endraw %}
uses: actions/heroku@1.0.0
```
+
+
{% endif %}
+
+
#### `runs.steps[*].name`
**可选** 复合步骤的名称。
+
+
#### `runs.steps[*].id`
**可选** 步骤的唯一标识符。 您可以使用 `id` 引用上下文中的步骤。 更多信息请参阅“[上下文](/actions/learn-github-actions/contexts)”。
+
+
#### `runs.steps[*].env`
**可选** 设置环境变量的 `map` 仅用于该步骤。 If you want to modify the environment variable stored in the workflow, use `echo "{name}={value}" >> $GITHUB_ENV` in a composite step.
+
+
#### `runs.steps[*].working-directory`
**可选** 指定命令在其中运行的工作目录。
{% ifversion fpt or ghes > 3.2 or ghae-issue-4853 or ghec %}
+
+
#### `runs.steps[*].uses`
**可选** 选择作为作业步骤一部分运行的操作。 操作是一种可重复使用的代码单位。 您可以使用工作流程所在仓库中、公共仓库中或[发布 Docker 容器映像](https://hub.docker.com/)中定义的操作。
强烈建议指定 Git ref、SHA 或 Docker 标记编号来包含所用操作的版本。 如果不指定版本,在操作所有者发布更新时可能会中断您的工作流程或造成非预期的行为。
+
- 使用已发行操作版本的 SHA 对于稳定性和安全性是最安全的。
- 使用特定主要操作版本可在保持兼容性的同时接收关键修复和安全补丁。 还可确保您的工作流程继续工作。
- 使用操作的默认分支可能很方便,但如果有人新发布具有突破性更改的主要版本,您的工作流程可能会中断。
有些操作要求必须通过 [`with`](/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepswith) 关键词设置输入。 请查阅操作的自述文件,确定所需的输入。
+
+
```yaml
runs:
using: "composite"
@@ -348,10 +445,15 @@ runs:
- uses: docker://alpine:3.8
```
+
+
+
#### `runs.steps[*].with`
**可选** 输入参数的 `map` 由操作定义。 每个输入参数都是一个键/值对。 输入参数被设置为环境变量。 该变量的前缀为 INPUT_,并转换为大写。
+
+
```yaml
runs:
using: "composite"
@@ -363,32 +465,50 @@ runs:
middle_name: The
last_name: Octocat
```
+
+
{% endif %}
+
+
## `runs` for Docker container actions
**Required** Configures the image used for the Docker container action.
+
+
### Example: Using a Dockerfile in your repository
+
+
```yaml
runs:
using: 'docker'
image: 'Dockerfile'
```
+
+
+
### Example: Using public Docker registry container
+
+
```yaml
runs:
using: 'docker'
image: 'docker://debian:stretch-slim'
```
+
+
+
### `runs.using`
**必要** 必须将此值设置为 `'docker'`。
+
+
### `runs.pre-entrypoint`
**可选** 允许您在 `entrypoint` 操作开始之前运行脚本。 例如,您可以使用 `pre-entrypoint:` 运行基本要求设置脚本。 {% data variables.product.prodname_actions %} 使用 `docker run` 启动此操作,并在使用同一基本映像的新容器中运行脚本。 这意味着运行时状态与主 `entrypoint` 容器不同,并且必须在任一工作空间中访问所需的任何状态,`HOME` 或作为 `STATE_` 变量。 The `pre-entrypoint:` action always runs by default but you can override this using [`runs.pre-if`](#runspre-if).
@@ -397,6 +517,8 @@ The runtime specified with the [`using`](#runsusing) syntax will execute this fi
在此示例中,`pre-entrypoint:` 操作会运行名为 `setup.sh` 的脚本:
+
+
```yaml
runs:
using: 'docker'
@@ -407,24 +529,35 @@ runs:
entrypoint: 'main.sh'
```
+
+
+
### `runs.image`
**必要** 要用作容器来运行操作的 Docker 映像。 值可以是 Docker 基本映像名称、仓库中的本地 `Dockerfile`、Docker Hub 中的公共映像或另一个注册表。 要引用仓库本地的 `Dockerfile`,文件必须命名为 `Dockerfile`,并且您必须使用操作元数据文件的相对路径。 `Docker` 应用程序将执行此文件。
+
+
### `runs.env`
**可选** 指定要在容器环境中设置的环境变量的键/值映射。
+
+
### `runs.entrypoint`
**可选** 覆盖 `Dockerfile` 中的 Docker `ENTRYPOINT`,或在未指定时设置它。 当 `Dockerfile` 未指定 `ENTRYPOINT` 或者您想要覆盖 `ENTRYPOINT` 指令时使用 `entrypoint`。 如果您省略 `entrypoint`,您在 Docker `ENTRYPOINT` 指令中指定的命令将执行。 Docker `ENTRYPOINT` 指令有 _shell_ 形式和 _exec_ 形式。 Docker `ENTRYPOINT` 文档建议使用 _exec_ 形式的 `ENTRYPOINT` 指令。
有关 `entrypoint` 如何执行的更多信息,请参阅“[Dockerfile 对 {% data variables.product.prodname_actions %} 的支持](/actions/creating-actions/dockerfile-support-for-github-actions/#entrypoint)”。
+
+
### `post-entrypoint`
**可选** 允许您在 `runs.entrypoint` 操作完成后运行清理脚本。 {% data variables.product.prodname_actions %} 使用 `docker run` 来启动此操作。 因为 {% data variables.product.prodname_actions %} 使用同一基本映像在新容器内运行脚本,所以运行时状态与主 `entrypoint` 容器不同。 您可以在任一工作空间中访问所需的任何状态,`HOME` 或作为 `STATE_` 变量。 The `post-entrypoint:` action always runs by default but you can override this using [`runs.post-if`](#runspost-if).
+
+
```yaml
runs:
using: 'docker'
@@ -435,6 +568,9 @@ runs:
post-entrypoint: 'cleanup.sh'
```
+
+
+
### `runs.args`
**可选** 定义 Docker 容器输入的字符串数组。 输入可包含硬编码的字符串。 {% data variables.product.prodname_dotcom %} 在容器启动时将 `args` 传递到容器的 `ENTRYPOINT`。
@@ -447,9 +583,13 @@ runs:
有关将 `CMD` 指令与 {% data variables.product.prodname_actions %} 一起使用的更多信息,请参阅“[Dockerfile 对 {% data variables.product.prodname_actions %} 的支持](/actions/creating-actions/dockerfile-support-for-github-actions/#cmd)”。
+
+
#### Example: Defining arguments for the Docker container
{% raw %}
+
+
```yaml
runs:
using: 'docker'
@@ -459,24 +599,37 @@ runs:
- 'foo'
- 'bar'
```
+
+
{% endraw %}
+
+
## `branding`
您可以使用颜色和 [Feather](https://feathericons.com/) 图标创建徽章,以个性化和识别操作。 徽章显示在 [{% data variables.product.prodname_marketplace %}](https://github.com/marketplace?type=actions) 中的操作名称旁边。
+
+
### Example: Configuring branding for an action
+
+
```yaml
branding:
icon: 'award'
color: 'green'
```
+
+
+
### `branding.color`
徽章的背景颜色。 可以是以下之一:`white`、`yellow`、`blue`、`green`、`orange`、`red`、`purple` 或 `gray-dark`。
+
+
### `branding.icon`
要使用的 [Feather](https://feathericons.com/) 图标的名称。