Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
e979504
Keep scanning in the github/github link check after skipped links (#6…
heiskr Oct 19, 2026
ed11da5
Resolve and validate AUTOTITLE links in code annotations (#63910)
heiskr Oct 19, 2026
c944469
Fix broken absolute reference links on audit log event pages (#63917)
heiskr Oct 19, 2026
09f0888
Resolve audit log reference titles for current page paths (#63918)
heiskr Oct 19, 2026
8bebcac
Document Copilot CLI client-side telemetry opt-out (#63850)
devm33 Oct 19, 2026
3033904
Document support-gated Copilot activation for enterprises (#63680)
Copilot Oct 19, 2026
60aa700
Document stuck workflow runs that resist cancellation (#63787)
Copilot Oct 19, 2026
74a4804
Update OpenAPI Description (#64260)
docs-bot Oct 19, 2026
4f8c311
Recompute category index versions when child versions change (#63919)
heiskr Oct 19, 2026
da879c5
Detect bare zh and zh-Hans in Accept-Language headers (#63920)
heiskr Oct 19, 2026
78ac14c
Group sync-sdk-docs PR runs per pull request (#64215)
heiskr Oct 19, 2026
bf3276f
Render SDK Mermaid diagrams on a white background (#64195)
heiskr Oct 19, 2026
86194b2
Use one code tab key per SDK language in synced Copilot SDK docs (#64…
heiskr Oct 19, 2026
d02752c
Check block scalar title and intro lines for curly quotes (#64077)
heiskr Oct 19, 2026
40023b4
Push SDK docs sync branch with the docs-bot PAT (#63969)
heiskr Oct 19, 2026
7cc54a6
Check contentType in products with extra subdirectories (#63922)
heiskr Oct 19, 2026
61d44b1
Keep newest GHES REST api-versions when deprecating a release (#63924)
heiskr Oct 19, 2026
bf51786
Skip fragment checks for missing docs URLs instead of crashing (#63925)
heiskr Oct 19, 2026
4c9563c
Match translated headings with special characters to English IDs (#63…
heiskr Oct 19, 2026
cd9da1a
Check every expires tag per block and report its own line (#63930)
heiskr Oct 19, 2026
2fb4311
Check external links in reusables in the weekly link check (#63931)
heiskr Oct 19, 2026
b99dde5
Use the rendered page's English text for translation fallbacks (#63932)
heiskr Oct 19, 2026
26d312b
Keep string-typed fields as strings in GitHub CLI --input examples (#…
heiskr Oct 19, 2026
37ff06e
Run GHD020 on data Markdown and YAML files again (#63934)
heiskr Oct 19, 2026
a25c537
Keep cloud content when GHD022 sees a deprecated GHES feature range (…
heiskr Oct 19, 2026
4cd277f
Use rendered intro on GitHub Apps endpoint list pages in article API …
heiskr Oct 19, 2026
4ae94e5
Use absolute URLs for GraphQL changelog year links (#63939)
heiskr Oct 19, 2026
6923ee2
Stop flagging browsers with empty mimeTypes as headless (#63941)
heiskr Oct 19, 2026
6377c4c
Keep Japanese の場合 and の割り当て in prose when fixing Liquid tags (#63942)
heiskr Oct 19, 2026
476d0a6
Score landing article filter fuzzy matches per word (#63943)
heiskr Oct 19, 2026
2768342
Set version and feature flags in the PR link check Liquid context (#6…
heiskr Oct 19, 2026
91cb954
Always add the message separator to content linter annotations (#63947)
heiskr Oct 19, 2026
3e7ed6e
Parse Liquid error positions without splitting on commas (#63948)
heiskr Oct 19, 2026
8354e71
Clarify private registry authentication support for code scanning def…
felickz Oct 19, 2026
4dd188c
Remove content for October 19, 2026 model deprecations (#63352)
sunbrye Oct 19, 2026
84f1edd
Link GraphQL reference index children to their category pages (#63940)
heiskr Oct 19, 2026
1c99499
Pair each quoted name with its own quote in GraphQL changelog (#63950)
heiskr Oct 19, 2026
d1c8cd9
Push content pipeline commits with a PAT so CI runs (#63955)
heiskr Oct 19, 2026
a03d9fe
Stop running JavaScript frontmatter in readFrontmatter (#63956)
heiskr Oct 19, 2026
79bb22b
Escape text values in project item field mutations (#63957)
heiskr Oct 19, 2026
294261e
Send preference cookies on links from other sites (#63958)
heiskr Oct 19, 2026
d0a4de2
Catch prefixed script tags and uppercase extensions in asset checks (…
heiskr Oct 19, 2026
a06ae17
Package firewall doc from early-access into main docs (#63892)
ahpook Oct 19, 2026
a4553a9
Open Ask AI answer links with noopener and noreferrer (#63961)
heiskr Oct 19, 2026
957f489
Stop caching article filter queries in the bigram cache (#63962)
heiskr Oct 19, 2026
09b0898
Push CodeQL CLI sync branches with docs-bot so reruns get CI (#63963)
heiskr Oct 19, 2026
8d85a18
Stop exposing server error messages in 500 page HTML (#63965)
heiskr Oct 19, 2026
98a4207
Stop sending survey email and comments to the Hydro collector (#63966)
heiskr Oct 19, 2026
62ea2ac
Escape newlines and sanitize keys in logfmt log output (#63967)
heiskr Oct 19, 2026
9f1825f
Keep dynamic WebP asset reads inside the assets directory (#63964)
heiskr Oct 19, 2026
ebaf2eb
Redact full private keys and short secrets from search analytics (#63…
heiskr Oct 19, 2026
0ec5259
Clear survey comment and email when navigating to another page (#63970)
heiskr Oct 19, 2026
2187f99
Escape file paths in the unallowed contributions comment (#63971)
heiskr Oct 19, 2026
fa3cc5c
Fail Moda allowed IPs update when the Fastly fetch fails (#63972)
heiskr Oct 19, 2026
4e2d1ae
Stop releasing the AI search local proxy reader before streaming (#63…
heiskr Oct 19, 2026
269f020
Stop caching Ask AI rate limit responses in localStorage (#63974)
heiskr Oct 19, 2026
8f64093
Reindex GHES autocomplete when GHES releases change (#63976)
heiskr Oct 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .github/workflows/content-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ jobs:
steps:
- name: Checkout docs-internal
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
# The git steps below authenticate with the PAT, so no token stays in .git/config.
persist-credentials: false

- uses: ./.github/actions/node-npm-setup

Expand All @@ -52,6 +55,10 @@ jobs:
- name: Setup branch
id: setup-branch
env:
# A PAT push triggers CI on the PR; GITHUB_TOKEN events do not start workflows.
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: url.https://x-access-token:${{ secrets.DOCS_BOT_PAT_BASE }}@github.com/.insteadOf
GIT_CONFIG_VALUE_0: https://github.com/
UPDATE_BRANCH: ${{ steps.branch.outputs.update_branch }}
PR_NUMBER: ${{ steps.check-pr.outputs.pr_number }}
run: |
Expand Down Expand Up @@ -105,6 +112,10 @@ jobs:
- name: Push changes
if: steps.commit.outputs.has_changes == 'true'
env:
# A PAT push triggers CI on the PR; GITHUB_TOKEN events do not start workflows.
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: url.https://x-access-token:${{ secrets.DOCS_BOT_PAT_BASE }}@github.com/.insteadOf
GIT_CONFIG_VALUE_0: https://github.com/
UPDATE_BRANCH: ${{ steps.branch.outputs.update_branch }}
FORCE_PUSH: ${{ steps.setup-branch.outputs.force_push }}
run: |
Expand Down
15 changes: 13 additions & 2 deletions .github/workflows/index-autocomplete-search.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ on:
workflow_dispatch:
schedule:
- cron: '20 16 * * 1-5'
# The GHES autocomplete index name uses the latest GHES release, so build the new index when releases change.
push:
branches:
- main
paths:
- 'src/versions/lib/enterprise-server-releases.ts'
pull_request:
paths:
- .github/workflows/index-autocomplete-search.yml
Expand All @@ -15,6 +21,11 @@ on:
permissions:
contents: read

# Production runs share indexes, and updateAlias deletes other runs' in-progress indexes, so run them one at a time.
concurrency:
group: "${{ github.workflow }} @ ${{ github.event_name == 'pull_request' && github.head_ref || 'production' }}"
cancel-in-progress: false

jobs:
index-autocomplete-elasticsearch:
if: ${{ github.repository == 'github/docs-internal' }}
Expand Down Expand Up @@ -45,12 +56,12 @@ jobs:

- uses: ./.github/actions/create-workflow-failure-issue
id: create-failure-issue
if: ${{ failure() && github.event_name == 'schedule' }}
if: ${{ failure() && github.event_name != 'workflow_dispatch' && github.event_name != 'pull_request' }}
with:
token: ${{ secrets.DOCS_BOT_PAT_BASE }}

- uses: ./.github/actions/slack-alert
if: ${{ failure() && github.event_name == 'schedule' }}
if: ${{ failure() && github.event_name != 'workflow_dispatch' && github.event_name != 'pull_request' }}
with:
slack_token: ${{ secrets.SLACK_DOCS_BOT_TOKEN }}
issue_url: ${{ steps.create-failure-issue.outputs.issue_url }}
9 changes: 8 additions & 1 deletion .github/workflows/moda-allowed-ips.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,18 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
run: |
set -o pipefail

echo "Getting a list of Fastly IP addresses...."
ips=$( \
curl -s https://api.fastly.com/public-ip-list \
curl -fsS https://api.fastly.com/public-ip-list \
| jq -r '.addresses | join(",")' \
)
# An empty value would clear the production allowlist.
if [ -z "$ips" ]; then
echo "::error::Fastly returned an empty IP list"
exit 1
fi
echo "Got a list of Fastly IP addresses: $ips"

echo "Updating the list of allowed IPs in Moda config..."
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/sync-codeql-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
steps:
- name: Checkout repository code
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
# 'Create pull request' pushes with the PAT, so no token stays in .git/config.
persist-credentials: false
- name: Checkout semmle-code repo
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
Expand Down Expand Up @@ -64,6 +67,10 @@ jobs:
- name: Create pull request
env:
GITHUB_TOKEN: ${{ secrets.DOCS_BOT_PAT_BASE }}
# A PAT push triggers CI on the PR; GITHUB_TOKEN events do not start workflows.
GIT_CONFIG_COUNT: 1
GIT_CONFIG_KEY_0: url.https://x-access-token:${{ secrets.DOCS_BOT_PAT_BASE }}@github.com/.insteadOf
GIT_CONFIG_VALUE_0: https://github.com/
run: |
# Exit before branch creation so a no-op sync does not leave an orphan branch.
changes=$(git diff --name-only | wc -l)
Expand All @@ -77,6 +84,7 @@ jobs:
git config --global user.email "77750099+docs-bot@users.noreply.github.com"
branchname=codeql-cli-update-${{ steps.semmle-code.outputs.OPENAPI_COMMIT_SHA }}
labels="codeql-cli-pipeline,skip FR board,ready-for-doc-review,workflow-generated"
git checkout -b $branchname
git add .
Expand All @@ -89,6 +97,8 @@ jobs:
existing_pr=$(gh pr list --repo github/docs-internal --head "$branchname" --json number --jq '.[0].number')
if [[ -n "$existing_pr" ]]; then
echo "Pull request #$existing_pr already exists for branch $branchname. Skipping PR creation."
# The prior run may have failed before it applied labels.
gh pr edit "$existing_pr" --repo github/docs-internal --add-label "$labels"
exit 0
fi
Expand All @@ -101,7 +111,7 @@ jobs:
If CI does not pass or other problems arise, contact #technical-content on slack.' \
--repo github/docs-internal \
--label "codeql-cli-pipeline,skip FR board,ready-for-doc-review,workflow-generated"
--label "$labels"
- uses: ./.github/actions/create-workflow-failure-issue
id: create-failure-issue
Expand Down
12 changes: 9 additions & 3 deletions .github/workflows/sync-sdk-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ on:
- 'src/workflows/sync-sdk-docs/**'

concurrency:
group: sync-sdk-docs-${{ github.event_name }}
group: sync-sdk-docs-${{ github.event_name }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
Expand All @@ -49,6 +49,9 @@ jobs:
steps:
- name: Checkout docs-internal
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
# 'Commit and push' authenticates with the PAT, so no token stays in .git/config.
persist-credentials: false

# Publishing runs must start from the default branch because preserve-redirects.ts reads
# live URLs from git HEAD. workflow_dispatch from another branch could write stale redirects.
Expand Down Expand Up @@ -199,8 +202,11 @@ jobs:
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"

# A PAT triggers CI on the PR; GITHUB_TOKEN events do not start workflows.
PAT_URL_REWRITE="url.https://x-access-token:${GH_TOKEN}@github.com/.insteadOf=https://github.com/"

# Fetch the sync branch if it exists so force-with-lease knows the remote state.
git fetch origin "$SYNC_BRANCH" 2>/dev/null || true
git -c "$PAT_URL_REWRITE" fetch origin "$SYNC_BRANCH" 2>/dev/null || true

git checkout -B "$SYNC_BRANCH"
git commit -m "Sync Copilot SDK docs from copilot-sdk@${SDK_SHA::7}
Expand All @@ -209,7 +215,7 @@ jobs:

This commit was automatically generated by the sync-sdk-docs workflow."

git push --force-with-lease origin "$SYNC_BRANCH"
git -c "$PAT_URL_REWRITE" push --force-with-lease origin "$SYNC_BRANCH"

- name: Create or update pull request
if: >-
Expand Down
4 changes: 4 additions & 0 deletions content/actions/how-tos/troubleshoot-workflows.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,10 @@ A common cause can be using the `always()` [status check function](/actions/refe

For more information, see [AUTOTITLE](/actions/how-tos/write-workflows/choose-when-workflows-run/control-jobs-with-conditions) and [AUTOTITLE](/actions/how-tos/manage-workflow-runs/cancel-a-workflow-run).

If a run remains queued or in progress after cancellation attempts, it may be stuck in an abnormal state rather than continuing because of `always()`. Signs include no jobs being created, the UI displaying "Failed to cancel workflow", or the `cancel` or `force-cancel` REST API endpoints returning HTTP `500` or `409`.

Self-service cancellation, including force cancellation, may not clear a stuck or out-of-sync workflow run or check suite. If your repository uses concurrency, the stuck run can continue blocking later runs in the same concurrency group. In this situation, contact {% data variables.contact.contact_support %} for help clearing the run.

## Troubleshooting runners

### Defining runner labels
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,9 @@ The models available for {% data variables.product.prodname_copilot_short %} var

* {% data variables.copilot.copilot_gpt_4o_mini %}
* {% data variables.copilot.copilot_gpt_41 %}
* {% data variables.copilot.copilot_gpt_5_mini %}
* {% data variables.copilot.copilot_gpt_52 %}
* {% data variables.copilot.copilot_gpt_53_codex %}
* {% data variables.copilot.copilot_gpt_54 %}
* {% data variables.copilot.copilot_gpt_54_mini %}
* {% data variables.copilot.copilot_gpt_54_nano %}
* {% data variables.copilot.copilot_gpt_55 %}
* {% data variables.copilot.copilot_gpt_56_luna %}
* {% data variables.copilot.copilot_gpt_56_sol %}
* {% data variables.copilot.copilot_gpt_56_terra %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,9 @@ See [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-depe

### Configuring OIDC authentication for a private registry

OIDC (OpenID Connect) authentication allows {% data variables.product.prodname_dependabot %} to use short-lived credentials from your cloud identity provider to access private registries, eliminating the need to store long-lived secrets. With OIDC, credentials are generated dynamically for each {% data variables.product.prodname_dependabot %} update job. You must configure a trust relationship between your cloud provider and {% data variables.product.github %} before {% data variables.product.prodname_dependabot %} can authenticate.
OIDC (OpenID Connect) authentication allows {% data variables.product.prodname_dependabot %} and {% data variables.product.prodname_code_scanning %} default setup to use short-lived credentials from your cloud identity provider to access private registries. Each feature is limited to its supported registry types.

With OIDC, credentials are generated dynamically for update or analysis jobs, eliminating the need to store long-lived secrets. You must configure a trust relationship between your cloud provider and {% data variables.product.github %} before either feature can authenticate.

When you select **OIDC** as the authentication method for a private registry, choose one of the supported providers and fill in the required fields:

Expand All @@ -136,7 +138,7 @@ For more information about how OIDC works, see [AUTOTITLE](/actions/concepts/sec

### Configuring an anonymous private registry

Some registries, such as internal mirrors, don't require authentication. You can add these registries at the organization level with the **Anonymous** authentication method so that {% data variables.product.prodname_dependabot %} can use them without a token, password, or OIDC configuration.
Some registries, such as internal mirrors, don't require authentication. You can add these registries at the organization level with the **Anonymous** authentication method so that {% data variables.product.prodname_dependabot %} and {% data variables.product.prodname_code_scanning %} default setup can use them without a token, password, or OIDC configuration.

{% ifversion dependabot-egress-allowlist %}
{% data variables.product.prodname_dependabot %} update jobs can only connect to hosts on an egress allowlist. Adding an anonymous registry allows {% data variables.product.prodname_dependabot %} to reach the registry's host for jobs in repositories that have access to the registry, without storing a secret or sending credentials. For more information, see [AUTOTITLE](/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/resolve-a-blocked-host).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ contentType: how-tos
children:
- /configure-dependabot-alerts
- /configure-malware-alerts
- /protecting-endpoints-with-package-firewall
- /configure-security-updates
- /configure-version-updates
- /manage-innersource-advisories
Expand All @@ -21,4 +22,3 @@ children:
- /use-dependency-submission-api
- /verify-release-integrity
---

Loading
Loading