Skip to content

Commit 58f5510

Browse files
authored
Merge branch 'main' into docs/actions-docker-pre-if
2 parents a283204 + 31a7db4 commit 58f5510

6,501 files changed

Lines changed: 5576214 additions & 3997611 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# This file is a template for what your untracked .env file might look like for local development.
22
# Please copy this to a new .env file and fill in the values as needed.
33

4-
# Requires a running local Elasticsearch service. Can be started via Docker, see https://github.com/github/docs-engineering/blob/main/docs/elasticsearch/elasticsearch-locally.md
4+
# Requires a running local Elasticsearch service. Can be started via Docker, see https://github.com/github/technical-content/blob/main/engineering/search/elasticsearch-locally.md
55
# When this value is unset searches will be proxied to the production Elasticsearch endpoint
66
ELASTICSEARCH_URL=http://localhost:9200
77

8-
# Set for sending events in local development. See https://github.com/github/docs-engineering/blob/main/docs/analytics/hydro-mock.md
8+
# Set for sending events in local development. See https://github.com/github/technical-content/blob/main/analytics/hydro-mock.md
99
HYDRO_ENDPOINT=
1010
HYDRO_SECRET=
1111

.github/CODEOWNERS

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,5 @@
66
# Site Policy
77
content/site-policy/ @github/site-policy-admins
88

9-
# Enterprise
10-
data/release-notes/**/*.yml @github/docs-content-enterprise
11-
src/ghes-releases/lib/enterprise-dates.json @github/docs-content-enterprise
12-
139
# Requires review of #actions-oidc-integration, docs-engineering/issues/1506
1410
# content/actions/deployment/security-hardening-your-deployments/** @github/oidc

.github/CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,11 @@ For complete style guidance, see our [style guide](https://docs.github.com/en/co
7878

7979
<img src="/contributing/images/contribution_cta.png" />
8080

81-
**Make changes in a codespace:** See "[Working in a codespace](https://github.com/github/docs/blob/main/contributing/codespace.md)" for documentation-specific setup.
81+
**Make changes in a codespace:** See "[Working on GitHub Docs in a codespace](https://docs.github.com/en/contributing/setting-up-your-environment-to-work-on-github-docs/working-on-github-docs-in-a-codespace)" for documentation-specific setup.
8282

8383
**Make changes locally:**
8484
1. Fork the repository (see [official forking guide](https://docs.github.com/en/contributing))
85-
2. Install Node.js at the version specified in `.node-version` (see [development guide](../contributing/development.md))
85+
2. Install Node.js at the version specified in `package.json` (see [development guide](../contributing/development.md))
8686
3. Create a working branch and start with your changes
8787

8888
### Commit your update
@@ -100,7 +100,7 @@ Use our "[Self review checklist](https://docs.github.com/en/contributing/collabo
100100
- [Link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if applicable
101101
- Enable [maintainer edits](https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork)
102102

103-
A Docs team member will review following our [standard review process](https://docs.github.com/en/contributing).
103+
A Technical Content team member will review following our [standard review process](https://docs.github.com/en/contributing).
104104

105105
### Your PR is merged!
106106

.github/actions/clone-translations/action.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,56 +11,56 @@ runs:
1111
using: 'composite'
1212
steps:
1313
- name: Clone Spanish
14-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
14+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
1515
with:
1616
repository: github/docs-internal.es-es
1717
token: ${{ inputs.token }}
1818
path: translations/es-es
1919

2020
- name: Clone Japanese
21-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
21+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
2222
with:
2323
repository: github/docs-internal.ja-jp
2424
token: ${{ inputs.token }}
2525
path: translations/ja-jp
2626

2727
- name: Clone Portuguese
28-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
28+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
2929
with:
3030
repository: github/docs-internal.pt-br
3131
token: ${{ inputs.token }}
3232
path: translations/pt-br
3333

3434
- name: Clone Simplified Chinese
35-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
35+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
3636
with:
3737
repository: github/docs-internal.zh-cn
3838
token: ${{ inputs.token }}
3939
path: translations/zh-cn
4040

4141
- name: Clone Russian
42-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
42+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
4343
with:
4444
repository: github/docs-internal.ru-ru
4545
token: ${{ inputs.token }}
4646
path: translations/ru-ru
4747

4848
- name: Clone French
49-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
49+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
5050
with:
5151
repository: github/docs-internal.fr-fr
5252
token: ${{ inputs.token }}
5353
path: translations/fr-fr
5454

5555
- name: Clone Korean
56-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
56+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
5757
with:
5858
repository: github/docs-internal.ko-kr
5959
token: ${{ inputs.token }}
6060
path: translations/ko-kr
6161

6262
- name: Clone German
63-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
63+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
6464
with:
6565
repository: github/docs-internal.de-de
6666
token: ${{ inputs.token }}

.github/actions/create-workflow-failure-issue/action.yml

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
name: Create workflow failure issue
2-
description: Create or update a GitHub issue in docs-engineering when a workflow fails, for automated diagnosis by an agentic workflow.
2+
description: Create or update a GitHub issue in technical-content when a workflow fails, for automated diagnosis by an agentic workflow.
33

44
inputs:
55
token:
66
description: A token with issues write permission on the target repo
77
required: true
88
repo:
99
description: The repository to create the issue in
10-
default: github/docs-engineering
10+
default: github/technical-content
1111
required: false
1212

13+
outputs:
14+
issue_url:
15+
description: URL of the created or updated workflow-failure issue (empty if creation failed).
16+
value: ${{ steps.create-new.outputs.issue_url || steps.comment-existing.outputs.issue_url }}
17+
1318
runs:
1419
using: composite
1520
steps:
@@ -31,6 +36,7 @@ runs:
3136
echo "existing_issue=$existing" >> "$GITHUB_OUTPUT"
3237
3338
- name: Comment on existing issue
39+
id: comment-existing
3440
if: steps.check-existing.outputs.existing_issue != ''
3541
shell: bash
3642
env:
@@ -57,8 +63,10 @@ runs:
5763
gh issue comment "$ISSUE_NUMBER" \
5864
--repo "$ISSUE_REPO" \
5965
--body "$body"
66+
echo "issue_url=$GITHUB_SERVER_URL/$ISSUE_REPO/issues/$ISSUE_NUMBER" >> "$GITHUB_OUTPUT"
6067
6168
- name: Create workflow failure issue
69+
id: create-new
6270
if: steps.check-existing.outputs.existing_issue == ''
6371
shell: bash
6472
env:
@@ -86,8 +94,18 @@ runs:
8694
This issue was automatically created by the create-workflow-failure-issue action to enable automated diagnosis.
8795
EOF
8896
)
89-
gh issue create \
97+
url=$(gh issue create \
9098
--repo "$ISSUE_REPO" \
9199
--label "workflow-failure" \
100+
--label "workflow-generated" \
101+
--label "engineering" \
102+
--label "priority-2" \
92103
--title "[Workflow Failure] $WORKFLOW_NAME" \
93-
--body "$body"
104+
--body "$body")
105+
echo "issue_url=$url" >> "$GITHUB_OUTPUT"
106+
107+
# Set the type separately, and tolerate failure. This action is itself the
108+
# failure path, so losing the whole issue because issue types are unavailable
109+
# or `gh` is too old (--type needs gh 2.94+) would hide the original failure.
110+
gh issue edit "$url" --type Bug \
111+
|| echo "Warning: could not set issue type on $url; leaving it unset."

.github/actions/get-docs-early-access/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ runs:
1919
run: npm run what-docs-early-access-branch
2020

2121
- name: Clone
22-
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
22+
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
2323
with:
2424
repository: github/docs-early-access
2525
token: ${{ inputs.token }}

.github/actions/slack-alert/action.yml

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,75 @@ name: Send Slack notification if workflow fails
22
description: Send Slack notification if workflow fails
33

44
inputs:
5-
slack_channel_id:
6-
description: Slack channel ID
7-
required: true
85
slack_token:
96
description: Slack token
107
required: true
8+
slack_channel_id:
9+
description: Slack channel ID. Defaults to the docs-alerts channel (CG5MJHMB2).
10+
default: CG5MJHMB2 # docs-alerts
11+
required: false
1112
message:
12-
description: The message to send to Slack
13-
default: The last '${{ github.workflow }}' run failed. See ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
13+
description: >-
14+
Optional message override. When set, it is sent verbatim. When empty (the
15+
default), a standard multi-line failure message is built from the run
16+
context, plus a link to the failure issue if issue_url is provided.
17+
default: ''
1418
required: false
15-
color:
16-
description: The color of the Slack message
17-
default: failure
19+
issue_url:
20+
description: >-
21+
Optional link to the tracking failure issue (e.g. the output of the
22+
create-workflow-failure-issue action). Appended to the default message.
23+
Ignored when a custom message is provided.
24+
default: ''
1825
required: false
1926

2027
runs:
2128
using: composite
2229
steps:
30+
# Build the Slack text here so the default message can be multi-line (real
31+
# newlines) and conditionally include the issue link. A caller-supplied
32+
# message is passed through verbatim for backward compatibility.
33+
- name: Build Slack message
34+
id: build
35+
shell: bash
36+
env:
37+
MESSAGE: ${{ inputs.message }}
38+
ISSUE_URL: ${{ inputs.issue_url }}
39+
SOURCE_REPO: ${{ github.repository }}
40+
WORKFLOW_NAME: ${{ github.workflow }}
41+
RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
42+
EVENT_NAME: ${{ github.event_name }}
43+
GIT_REF: ${{ github.ref }}
44+
ACTOR: ${{ github.actor }}
45+
run: |
46+
# Escape Slack mrkdwn control chars in interpolated context fields so a
47+
# crafted branch/ref (e.g. containing <!channel>) can't inject mentions.
48+
esc() { printf '%s' "$1" | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g'; }
49+
# Unique heredoc delimiter so a custom message can't collide with it.
50+
delim="SLACK_EOF_${RANDOM}${RANDOM}"
51+
{
52+
printf 'text<<%s\n' "$delim"
53+
if [ -n "$MESSAGE" ]; then
54+
printf '%s\n' "$MESSAGE"
55+
else
56+
printf ':actions: *Workflow failure* in %s: %s\n' "$(esc "$SOURCE_REPO")" "$(esc "$WORKFLOW_NAME")"
57+
printf 'on %s · %s · by %s\n' "$(esc "$EVENT_NAME")" "$(esc "$GIT_REF")" "$(esc "$ACTOR")"
58+
printf 'Run: %s\n' "$RUN_URL"
59+
if [ -n "$ISSUE_URL" ]; then
60+
printf 'Issue: %s\n' "$ISSUE_URL"
61+
else
62+
printf ':warning: No issue created\n'
63+
fi
64+
fi
65+
printf '%s\n' "$delim"
66+
} >> "$GITHUB_OUTPUT"
67+
2368
- name: Send Slack notification if workflow fails
24-
uses: someimportantcompany/github-actions-slack-message@a975b440de2bcef178d451cc70d4c1161b5a30cd
69+
uses: slackapi/slack-github-action@45a88b9581bfab2566dc881e2cd66d334e621e2c # v3.0.3
2570
with:
26-
channel: ${{ inputs.slack_channel_id }}
27-
bot-token: ${{ inputs.slack_token }}
28-
color: ${{ inputs.color }}
29-
text: ${{ inputs.message }}
71+
method: chat.postMessage
72+
token: ${{ inputs.slack_token }}
73+
errors: true
74+
payload: |
75+
channel: ${{ toJSON(inputs.slack_channel_id) }}
76+
text: ${{ toJSON(steps.build.outputs.text) }}

.github/agents/builder-writer.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
3+
name: "Builder-writer"
4+
description: "Use when writing, editing, or reviewing content for the Builder persona: developers building software, from junior to senior and solo to enterprise, who write, review, test, ship, and operate code."
5+
6+
---
7+
8+
# Builder-writer Agent
9+
10+
You are a writing assistant for the GitHub Docs team. You help writers create, edit, and review documentation that serves the **Builder persona**.
11+
12+
A Builder is the developer who turns an idea into working software. Their core job is to develop and maintain reliable software that meets the evolving needs of users and stakeholders. Builders write, review, test, ship, and operate code, and they work in many contexts: proprietary software at companies and startups, open source, security, developer advocacy, and AI innovation.
13+
14+
When making content decisions, you can write for a Builder who is a somewhat experienced developer: you do not need to teach them coding basics, but you should comment code examples, explain the reasoning behind decisions, and be explicit about prerequisites such as installing libraries or configuring tools.
15+
16+
Builders are a **diverse group**, and content should account for the range:
17+
18+
* **Expertise** varies from junior to senior. A developer in their first job and one with a decade of experience are both Builders with different needs.
19+
* **Team size** varies from solo hobbyists, to a startup team, to hundreds of developers across teams at a large enterprise.
20+
* **Roles** vary, and include software engineers, DevOps engineers, security engineers, and open source maintainers and contributors.
21+
22+
## What makes Builder content different
23+
24+
Builder content is distinct from content for the Driver persona (people who enable developers at scale, such as enterprise administrators). Apply these when writing or editing.
25+
26+
### Lead with well-crafted examples
27+
28+
Examples are one of the most valuable resources for developers and one of the most under-served, so this is a way for GitHub Docs to stand out. Builders want to see how something works in a relevant scenario and adapt it to their needs, not just read about it. When writing examples:
29+
30+
* Follow best practices, so readers can copy the pattern with confidence.
31+
* Explain what each part does and why.
32+
* Choose scenarios that are easy to copy, with clear explanations about things Builders may need to adapt to their needs.
33+
34+
When you show a command or an example prompt a reader can run against their own project, make it easy to try directly: a copyable command, or a prompt they can paste straight into the tool. Builders copy and adapt what they see, so be explicit when an example is just one illustrative approach rather than the required or only way to do something.
35+
36+
### Write for someone who works in code
37+
38+
Builders are configuring their environment, writing functions, debugging builds, and wiring up tests. They want concrete implementation detail: how to integrate a library, what a configuration file should contain, how settings affect a build. Explain the decisions behind a recommended approach so a reader can adapt it to their own codebase, rather than only listing steps to click through.
39+
40+
### Cover the command line and API, not just the UI
41+
42+
Builders frequently work outside the web UI, and non-UI flows are critical for this persona. When a task is tedious, repetitive, or not realistic to accomplish in the UI, show how to do it with the Copilot CLI, GitHub CLI, or the API. For workflows that can be scripted or automated, treat the programmatic path as a first-class option rather than an afterthought.
43+
44+
### Frame value around the developer's own work
45+
46+
Builders care about their craft: shipping working software, writing clean and secure code, and collaborating effectively. Connect features to that work, the way a developer experiences it day to day, rather than to enterprise-level outcomes like compliance posture or cost management.
47+
48+
* Instead of: "Code scanning helps your organization meet its security requirements."
49+
* Write: "Code scanning flags vulnerabilities in your pull request before they reach the main branch, so you can fix them while the change is fresh."
50+
51+
### Help Builders do the work around the code well
52+
53+
Much of a Builder's day is the practice surrounding the code: scoping an issue, opening a reviewable pull request, giving and responding to review feedback, and setting up CI to catch problems early. This is fertile ground for opinionated, practical guidance (for example, how to write a well-defined issue, or how to keep a pull request scoped and easy to review). Help Builders discover and adopt these practices, and connect the relevant features so they see how planning, coding, reviewing, testing, and shipping fit together.
54+
55+
### Keep the focus on the developer's hands-on work
56+
57+
Builder content sits at the altitude of a developer doing the work themselves. When a draft drifts into rolling out, governing, or administering a tool across an organization, that is Driver territory. Split that content into a separate article or hand it off rather than mixing a developer audience and an admin audience in one piece. For example, a best-practices guide for using a tool should stay focused on the individual developer's workflow, not how to deploy the tool at scale across a company.
58+
59+
### Present GitHub's tools as one connected ecosystem
60+
61+
Builders move fluidly between surfaces (the CLI, the IDE, the web, and integrations), often within a single subscription, and switch based on what they are working on. Frame each tool's value on its own merits and show how the surfaces work together. Do not promote one surface by contrasting it negatively against another GitHub option, since the goal is for Builders to use the right tool for each task, not to pick one over another.
62+
63+
## Builder user journey
64+
65+
Builders move through the software development lifecycle. Content should meet them where they are in this flow:
66+
67+
* **Plan**: Exploring opportunities, picking up and understanding work, and designing an approach against requirements.
68+
* **Create**: Setting up an environment, authoring and optimizing code, and finding and fixing security issues.
69+
* **Review**: Reviewing others' code for quality and security, and responding to feedback on their own.
70+
* **Test**: Writing and running tests, interpreting results, and debugging failures.
71+
* **Deploy**: Initiating and overseeing a release, then validating a successful deployment.
72+
* **Operate**: Monitoring system health and performance, and maintaining and improving reliability.

0 commit comments

Comments
 (0)