Skip to content

Commit b2802ec

Browse files
authored
Merge pull request #41867 from github/repo-sync
Repo sync
2 parents 9e78fdd + f69dfd8 commit b2802ec

File tree

6 files changed

+353
-20
lines changed

6 files changed

+353
-20
lines changed
54.1 KB
Loading

content/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/managing-custom-patterns.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ When you remove a custom pattern, {% data variables.product.github %} gives you
3939
1. Review the confirmation, and select a method for dealing with any open alerts relating to the custom pattern.
4040
1. Click **Yes, delete this pattern**.
4141

42+
If you choose to close the alerts when removing a custom pattern, you need to be aware that the deletion process happens asynchronously in the background. For custom patterns that have generated a high volume of alerts (thousands or more), the deletion process may take several minutes to hours to complete. You can continue working while the process completes.
43+
4244
## Enabling push protection for a custom pattern
4345

4446
You can enable {% data variables.product.prodname_secret_scanning %} as a push protection for custom patterns stored at the enterprise, organization, or repository level.

content/copilot/how-tos/use-copilot-agents/coding-agent/create-a-pr.md

Lines changed: 190 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ You can assign an issue to {% data variables.product.prodname_copilot_short %}:
6060

6161
### Assigning an issue to {% data variables.product.prodname_copilot_short %} on {% data variables.product.prodname_dotcom_the_website %}
6262

63+
> [!NOTE]
64+
> This feature is in {% data variables.release-phases.public_preview %} and subject to change.
65+
6366
{% data reusables.repositories.navigate-to-repo %}
6467
{% data reusables.repositories.sidebar-issues %}
6568

@@ -113,9 +116,32 @@ You can also assign issues to {% data variables.product.prodname_copilot_short %
113116

114117
### Assigning an issue to {% data variables.product.prodname_copilot_short %} via the {% data variables.product.github %} API
115118

116-
You can assign issues to {% data variables.product.prodname_copilot_short %} using the GraphQL API.
119+
> [!NOTE]
120+
> This feature is in {% data variables.release-phases.public_preview %} and subject to change.
121+
122+
You can assign issues to {% data variables.product.prodname_copilot_short %} using either the GraphQL API or the REST API. Both APIs support an optional Agent Assignment input to customize the task:
123+
124+
| GraphQL parameter | REST parameter | Description |
125+
| --- | --- | --- |
126+
| `targetRepositoryId` | `target_repo` | The repository where {% data variables.product.prodname_copilot_short %} will work |
127+
| `baseRef` | `base_branch` | The branch that {% data variables.product.prodname_copilot_short %} will branch from |
128+
| `customInstructions` | `custom_instructions` | Additional instructions for {% data variables.product.prodname_copilot_short %} |
129+
| `customAgent` | `custom_agent` | A custom agent to use for the task |
130+
| `model` | `model` | The model for {% data variables.product.prodname_copilot_short %} to use |
131+
132+
#### Using the GraphQL API
117133

118-
#### Creating and assigning a new issue
134+
> [!NOTE]
135+
> You must include the `GraphQL-Features` header with the values `issues_copilot_assignment_api_support` and `coding_agent_model_selection`.
136+
137+
You can use the following GraphQL mutations to assign issues to {% data variables.product.prodname_copilot_short %}:
138+
139+
* [`updateIssue`](/graphql/reference/mutations#updateissue)
140+
* [`createIssue`](/graphql/reference/mutations#createissue)
141+
* [`addAssigneesToAssignable`](/graphql/reference/mutations#addassigneestoassignable)
142+
* [`replaceActorsForAssignable`](/graphql/reference/mutations#replaceactorsforassignable)
143+
144+
##### Creating and assigning a new issue
119145

120146
1. Make sure you're authenticating with the API using a user token, for example a {% data variables.product.pat_generic %} or a {% data variables.product.prodname_github_app %} user-to-server token.
121147

@@ -163,11 +189,23 @@ You can assign issues to {% data variables.product.prodname_copilot_short %} usi
163189
}
164190
```
165191

166-
1. Create the issue with the `createIssue` mutation. Replace `REPOSITORY_ID` with the ID returned from the previous step, and `BOT_ID` with the ID returned from the step before that.
167-
168-
```graphql copy
169-
mutation {
170-
createIssue(input: {repositoryId: "REPOSITORY_ID", title: "Implement comprehensive unit tests", body: "DETAILS", assigneeIds: ["BOT_ID"]}) {
192+
1. Create the issue with the `createIssue` mutation. Replace `REPOSITORY_ID` with the ID returned from the previous step, and `BOT_ID` with the ID returned from the step before that. You can optionally include the `agentAssignment` input to customize the task.
193+
194+
```shell copy
195+
gh api graphql -f query='mutation {
196+
createIssue(input: {
197+
repositoryId: "REPOSITORY_ID",
198+
title: "Implement comprehensive unit tests",
199+
body: "DETAILS",
200+
assigneeIds: ["BOT_ID"],
201+
agentAssignment: {
202+
targetRepositoryId: "REPOSITORY_ID",
203+
baseRef: "main",
204+
customInstructions: "Add comprehensive test coverage",
205+
customAgent: "",
206+
model: ""
207+
}
208+
}) {
171209
issue {
172210
id
173211
title
@@ -178,10 +216,10 @@ You can assign issues to {% data variables.product.prodname_copilot_short %} usi
178216
}
179217
}
180218
}
181-
}
219+
}' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
182220
```
183221

184-
#### Assigning an existing issue
222+
##### Assigning an existing issue
185223

186224
1. Make sure you're authenticating with the API using a user token, for example a {% data variables.product.pat_generic %} or a {% data variables.product.prodname_github_app %} user-to-server token.
187225
1. Verify that {% data variables.copilot.copilot_coding_agent %} is enabled in the repository by checking if the repository's `suggestedActors` in the GraphQL API includes {% data variables.product.prodname_copilot_short %}. Replace `octo-org` with the repository owner, and `octo-repo` with the repository name.
@@ -222,11 +260,79 @@ You can assign issues to {% data variables.product.prodname_copilot_short %} usi
222260
}
223261
```
224262

225-
1. Assign the existing issue to {% data variables.product.prodname_copilot_short %} using the `replaceActorsForAssignable` mutation. Replace `ISSUE_ID` with the ID returned from the previous step, and `BOT_ID` with the ID returned from the step before that.
263+
1. Assign the existing issue to {% data variables.product.prodname_copilot_short %} using the `replaceActorsForAssignable` mutation. Replace `ISSUE_ID` with the ID returned from the previous step, `BOT_ID` with the ID returned from the step before that, and `REPOSITORY_ID` with the repository ID. You can optionally include the `agentAssignment` input to customize the task.
264+
265+
```shell copy
266+
gh api graphql -f query='mutation {
267+
replaceActorsForAssignable(input: {
268+
assignableId: "ISSUE_ID",
269+
actorIds: ["BOT_ID"],
270+
agentAssignment: {
271+
targetRepositoryId: "REPOSITORY_ID",
272+
baseRef: "main",
273+
customInstructions: "Fix the reported bug",
274+
customAgent: "",
275+
model: ""
276+
}
277+
}) {
278+
assignable {
279+
... on Issue {
280+
id
281+
title
282+
assignees(first: 10) {
283+
nodes {
284+
login
285+
}
286+
}
287+
}
288+
}
289+
}
290+
}' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
291+
```
226292

227-
```graphql copy
228-
mutation {
229-
replaceActorsForAssignable(input: {assignableId: "ISSUE_ID", actorIds: ["BOT_ID"]}) {
293+
1. Alternatively, you can use the `updateIssue` mutation to update an existing issue and assign it to {% data variables.product.prodname_copilot_short %}. Replace `ISSUE_ID` with the issue ID and `BOT_ID` with the bot ID.
294+
295+
```shell copy
296+
gh api graphql -f query='mutation {
297+
updateIssue(input: {
298+
id: "ISSUE_ID",
299+
assigneeIds: ["BOT_ID"],
300+
agentAssignment: {
301+
targetRepositoryId: "REPOSITORY_ID",
302+
baseRef: "main",
303+
customInstructions: "Update feature implementation",
304+
customAgent: "",
305+
model: ""
306+
}
307+
}) {
308+
issue {
309+
id
310+
title
311+
assignees(first: 10) {
312+
nodes {
313+
login
314+
}
315+
}
316+
}
317+
}
318+
}' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
319+
```
320+
321+
1. You can also use the `addAssigneesToAssignable` mutation to add {% data variables.product.prodname_copilot_short %} to an existing issue while keeping other assignees. Replace `ISSUE_ID` with the issue ID and `BOT_ID` with the bot ID.
322+
323+
```shell copy
324+
gh api graphql -f query='mutation {
325+
addAssigneesToAssignable(input: {
326+
assignableId: "ISSUE_ID",
327+
assigneeIds: ["BOT_ID"],
328+
agentAssignment: {
329+
targetRepositoryId: "REPOSITORY_ID",
330+
baseRef: "main",
331+
customInstructions: "Collaborate on this task",
332+
customAgent: "",
333+
model: ""
334+
}
335+
}) {
230336
assignable {
231337
... on Issue {
232338
id
@@ -239,9 +345,79 @@ You can assign issues to {% data variables.product.prodname_copilot_short %} usi
239345
}
240346
}
241347
}
242-
}
348+
}' -H 'GraphQL-Features: issues_copilot_assignment_api_support,coding_agent_model_selection'
243349
```
244350

351+
#### Using the REST API
352+
353+
You can use the following REST API endpoints to assign issues to {% data variables.product.prodname_copilot_short %}:
354+
355+
* [Add assignees to an issue](/rest/issues/assignees#add-assignees-to-an-issue)
356+
* [Create an issue](/rest/issues/issues#create-an-issue)
357+
* [Update an issue](/rest/issues/issues#update-an-issue)
358+
359+
##### Adding assignees to an existing issue
360+
361+
```shell copy
362+
gh api \
363+
--method POST \
364+
-H "Accept: application/vnd.github+json" \
365+
-H "X-GitHub-Api-Version: 2022-11-28" \
366+
/repos/OWNER/REPO/issues/ISSUE_NUMBER/assignees \
367+
--input - <<< '{
368+
"assignees": ["copilot-swe-agent[bot]"],
369+
"agent_assignment": {
370+
"target_repo": "OWNER/REPO",
371+
"base_branch": "main",
372+
"custom_instructions": "",
373+
"custom_agent": "",
374+
"model": ""
375+
}
376+
}'
377+
```
378+
379+
##### Creating a new issue
380+
381+
```shell copy
382+
gh api \
383+
--method POST \
384+
-H "Accept: application/vnd.github+json" \
385+
-H "X-GitHub-Api-Version: 2022-11-28" \
386+
/repos/OWNER/REPO/issues \
387+
--input - <<< '{
388+
"title": "Issue title",
389+
"body": "Issue description.",
390+
"assignees": ["copilot-swe-agent[bot]"],
391+
"agent_assignment": {
392+
"target_repo": "OWNER/REPO",
393+
"base_branch": "main",
394+
"custom_instructions": "",
395+
"custom_agent": "",
396+
"model": ""
397+
}
398+
}'
399+
```
400+
401+
##### Updating an existing issue
402+
403+
```shell copy
404+
gh api \
405+
--method PATCH \
406+
-H "Accept: application/vnd.github+json" \
407+
-H "X-GitHub-Api-Version: 2022-11-28" \
408+
/repos/OWNER/REPO/issues/ISSUE_NUMBER \
409+
--input - <<< '{
410+
"assignees": ["copilot-swe-agent[bot]"],
411+
"agent_assignment": {
412+
"target_repo": "OWNER/REPO",
413+
"base_branch": "main",
414+
"custom_instructions": "",
415+
"custom_agent": "",
416+
"model": ""
417+
}
418+
}'
419+
```
420+
245421
## Asking {% data variables.product.prodname_copilot_short %} to create a pull request from the agents tab or panel
246422

247423
You can ask {% data variables.product.prodname_copilot_short %} to open a pull request from either the agents tab or the agents panel. The only difference is the entry point - once you see the "New agent task" form, the steps are the same.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{%- ifversion ghec %}
22
* SOC 1, Type 2
3-
* SOC 2, Type 1 ({% data variables.copilot.copilot_for_business %} only)
43
* SOC 2, Type 2
54
{%- elsif fpt %}
65
* SOC 3
76
{%- endif %}
87
* Cloud Security Alliance CAIQ self-assessment (CSA CAIQ - Level 1)
9-
* ISO/IEC 27001:2013 certification
8+
* ISO/IEC 27001:2022 certification
109
{%- ifversion ghec %}
1110
* Cloud Security Alliance STAR certification (CSA STAR - Level 2)
1211
* {% data variables.product.github %} Bug Bounty Quarterly reports
1312
* {% data variables.product.prodname_dotcom_the_website %} Services Continuity and Incident Management Plan
13+
* {% data variables.product.github %} PCI DSS Attestation of Compliance
1414
{%- endif %}

src/early-access/README.md

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,79 @@
1-
# Early access
1+
# Early Access
22

3-
Early access allows the Docs team to publish docs to docs.github.com without putting the content files in github/docs or github/docs-internal. This allows the Docs team to publish articles about limited access features.
3+
The Early Access module enables the GitHub Docs team to publish documentation for features that are in limited access (beta, technical preview, etc.) without exposing the content in the public `github/docs` repository.
4+
5+
## Purpose & Scope
6+
7+
This system allows for:
8+
- **Private Content Hosting**: Storing sensitive or unreleased documentation in a separate, private repository (`github/docs-early-access`).
9+
- **Seamless Integration**: Merging this private content into the main site build so it appears native to the user (e.g., under `/en/early-access`).
10+
- **Access Control**: Hiding these pages from public navigation and search engines, making them accessible only via direct links or specific "Early Access" index pages.
11+
12+
## Architecture
13+
14+
### Content Storage
15+
16+
Early access content lives in a separate private repository: `github/docs-early-access`.
17+
- **Structure**: It mirrors the main repo's structure (`content/`, `data/`, `assets/`).
18+
- **Integration**: During the build process (or local development), files from the private repo are copied or symlinked into the main `docs-internal` directory.
19+
20+
### Middleware
21+
22+
The logic for serving and listing these pages is handled in `src/early-access/middleware/early-access-links.ts`.
23+
- **`earlyAccessContext`**: This middleware runs on requests to `/early-access`. It:
24+
- Checks if the user is on an early access path.
25+
- Retrieves a list of hidden pages whose path starts with `early-access`.
26+
- Injects these links into the rendering context (`req.context.earlyAccessPageLinks`), allowing index pages to dynamically list available early access content.
27+
28+
### Scripts
29+
30+
A suite of scripts in `src/early-access/scripts` manages the workflow:
31+
- **`clone-locally`**: Clones the private `docs-early-access` repo for local development.
32+
- **`symlink-from-local-repo.ts`**: Symlinks the cloned content into the main `content/` and `assets/` directories so the Next.js server can see them.
33+
- **`merge-early-access.sh`**: Used in CI/CD to physically move files from the checked-out private repo into the build directory.
34+
- **`update-data-and-image-paths.ts`**: A utility to fix up paths when moving content between the main repo and early access.
35+
36+
## Setup & Usage
37+
38+
### Local Development
39+
40+
To work on Early Access content locally:
41+
42+
1. **Clone the Repo**:
43+
```bash
44+
npm run clone-early-access
45+
```
46+
This clones `github/docs-early-access` into a sibling directory.
47+
48+
2. **Symlink Content**:
49+
```bash
50+
npm run symlink-from-local-repo
51+
```
52+
This links the content into `docs-internal`.
53+
54+
3. **Run the Server**:
55+
```bash
56+
npm start
57+
```
58+
You can now access pages at `http://localhost:4000/en/early-access`.
59+
60+
### Adding New Content
61+
62+
1. Create markdown files in the `docs-early-access` repo.
63+
2. Ensure the frontmatter includes `hidden: true` to prevent it from appearing in the main sidebar navigation (unless specifically desired).
64+
3. Use the `early-access` directory prefix.
65+
66+
## Dependencies
67+
68+
- **`github/docs-early-access`**: The private repository containing the actual content.
69+
- **CI/CD Workflows**: The deployment process must have access to the private repo to merge the content before building.
70+
71+
## Ownership
72+
73+
- **Team**: `@github/docs-engineering`
74+
- **Content Owners**: The Writers and Product Managers responsible for the specific early access features.
75+
76+
## Current State & Known Issues
77+
78+
- **"Hidden" but Public**: While the source is private, once deployed to `docs.github.com`, the pages are technically public if you know the URL. They are "security through obscurity" (hidden from nav/search), not authenticated.
79+
- **Build Complexity**: The merging process adds complexity to the build pipeline and can sometimes cause confusion with path resolution or asset loading if files are moved incorrectly.

0 commit comments

Comments
 (0)