Upload folder using huggingface_hub
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- .devcontainer/Dockerfile +5 -0
- .devcontainer/devcontainer.json +76 -0
- .dockerignore +10 -0
- .editorconfig +11 -0
- .env.example +28 -0
- .gitattributes +298 -35
- .github/CODEOWNERS +14 -0
- .github/CODE_OF_CONDUCT.md +80 -0
- .github/CONTRIBUTING.md +122 -0
- .github/ISSUE_TEMPLATE/config.yml +5 -0
- .github/ISSUE_TEMPLATE/improve-existing-docs.yaml +47 -0
- .github/ISSUE_TEMPLATE/improve-the-site.yml +45 -0
- .github/ISSUE_TEMPLATE/partner-contributed-documentation.yml +67 -0
- .github/PULL_REQUEST_TEMPLATE.md +22 -0
- .github/actions/cache-nextjs/action.yml +18 -0
- .github/actions/clone-translations/action.yml +67 -0
- .github/actions/get-changed-files/action.yml +40 -0
- .github/actions/get-changed-files/get-changed-files.sh +204 -0
- .github/actions/get-docs-early-access/action.yml +33 -0
- .github/actions/install-cocofix/action.yml +21 -0
- .github/actions/labeler/action.yml +33 -0
- .github/actions/labeler/labeler.ts +163 -0
- .github/actions/node-npm-setup/action.yml +28 -0
- .github/actions/precompute-pageinfo/action.yml +44 -0
- .github/actions/retry-command/action.yml +49 -0
- .github/actions/setup-elasticsearch/action.yml +89 -0
- .github/actions/slack-alert/action.yml +29 -0
- .github/actions/warmup-remotejson-cache/action.yml +41 -0
- .github/config.yml +11 -0
- .github/dependabot.yml +47 -0
- .github/instructions/all.instructions.md +31 -0
- .github/instructions/code.instructions.md +64 -0
- .github/instructions/content.instructions.md +86 -0
- .gitignore +109 -0
- .npmrc +4 -0
- .nvmrc +0 -0
- .prettierignore +1 -0
- .vscode/extensions.json +13 -0
- .vscode/launch.json +13 -0
- .vscode/open-reusable-1.3.0.vsix +3 -0
- CHANGELOG.md +555 -0
- CONTRIBUTING_AR.md +28 -0
- Dockerfile +155 -0
- Dockerfile.openapi_decorator +18 -0
- LICENSE +386 -0
- LICENSE-CODE +21 -0
- README.md +39 -0
- assets/ghes-collectd-metrics.csv +0 -0
- assets/images/README.md +5 -0
- assets/images/_fixtures/electrocat.png +0 -0
.devcontainer/Dockerfile
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# To find available Node images, see https://mcr.microsoft.com/en-us/product/devcontainers/javascript-node/tags
|
| 2 |
+
|
| 3 |
+
# [Choice] Node.js version
|
| 4 |
+
ARG VARIANT="dev-24-bullseye"
|
| 5 |
+
FROM mcr.microsoft.com/devcontainers/javascript-node:${VARIANT}
|
.devcontainer/devcontainer.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
|
| 2 |
+
// https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/javascript-node
|
| 3 |
+
// -
|
| 4 |
+
{
|
| 5 |
+
"name": "docs.github.com",
|
| 6 |
+
"build": {
|
| 7 |
+
"dockerfile": "Dockerfile",
|
| 8 |
+
// Update 'VARIANT' to pick a Node version
|
| 9 |
+
"args": { "VARIANT": "24" }
|
| 10 |
+
},
|
| 11 |
+
|
| 12 |
+
// Install features. Type 'feature' in the VS Code command palette for a full list.
|
| 13 |
+
"features": {
|
| 14 |
+
"sshd": "latest",
|
| 15 |
+
"ghcr.io/devcontainers/features/github-cli:1": {}
|
| 16 |
+
},
|
| 17 |
+
|
| 18 |
+
"customizations": {
|
| 19 |
+
"vscode": {
|
| 20 |
+
// Set *default* container specific settings.json values on container create.
|
| 21 |
+
"settings": {
|
| 22 |
+
"terminal.integrated.shell.linux": "/bin/bash",
|
| 23 |
+
"cSpell.language": ",en",
|
| 24 |
+
"git.autofetch": true
|
| 25 |
+
},
|
| 26 |
+
// Visual Studio Code extensions which help authoring for docs.github.com.
|
| 27 |
+
"extensions": [
|
| 28 |
+
"dbaeumer.vscode-eslint",
|
| 29 |
+
"sissel.shopify-liquid",
|
| 30 |
+
"davidanson.vscode-markdownlint",
|
| 31 |
+
"bierner.markdown-preview-github-styles",
|
| 32 |
+
"streetsidesoftware.code-spell-checker",
|
| 33 |
+
"alistairchristie.open-reusables",
|
| 34 |
+
"AlistairChristie.version-identifier",
|
| 35 |
+
"peterbe.ghdocs-goer",
|
| 36 |
+
"GitHub.copilot",
|
| 37 |
+
"GitHub.copilot-chat"
|
| 38 |
+
]
|
| 39 |
+
},
|
| 40 |
+
"codespaces": {
|
| 41 |
+
"repositories": {
|
| 42 |
+
// allow Codespaces to pull from separate repo when user has access
|
| 43 |
+
"github/docs-early-access": {
|
| 44 |
+
"permissions": {
|
| 45 |
+
"contents": "write"
|
| 46 |
+
}
|
| 47 |
+
}
|
| 48 |
+
}
|
| 49 |
+
}
|
| 50 |
+
},
|
| 51 |
+
|
| 52 |
+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
| 53 |
+
"forwardPorts": [4000],
|
| 54 |
+
|
| 55 |
+
"portsAttributes": {
|
| 56 |
+
"4000": {
|
| 57 |
+
"label": "Review"
|
| 58 |
+
}
|
| 59 |
+
},
|
| 60 |
+
|
| 61 |
+
// Lifecycle commands
|
| 62 |
+
// Install dependencies then install Copilot CLI
|
| 63 |
+
"onCreateCommand": "npm ci && npm install -g @github/copilot@prerelease",
|
| 64 |
+
// Start a web server and keep it running
|
| 65 |
+
"postStartCommand": "nohup bash -c 'npm start &'",
|
| 66 |
+
// Set port 4000 to be public
|
| 67 |
+
"postAttachCommand": "gh cs ports visibility 4000:public -c \"$CODESPACE_NAME\"",
|
| 68 |
+
|
| 69 |
+
// Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
|
| 70 |
+
"remoteUser": "node",
|
| 71 |
+
|
| 72 |
+
"hostRequirements": {
|
| 73 |
+
"memory": "16gb",
|
| 74 |
+
"cpus": "4"
|
| 75 |
+
}
|
| 76 |
+
}
|
.dockerignore
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.devcontainer/
|
| 2 |
+
.git/
|
| 3 |
+
.github/
|
| 4 |
+
.vscode/
|
| 5 |
+
contributing/
|
| 6 |
+
docs/
|
| 7 |
+
docs-early-access/
|
| 8 |
+
node_modules/
|
| 9 |
+
README.md
|
| 10 |
+
tests/
|
.editorconfig
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
root = true
|
| 2 |
+
|
| 3 |
+
[*]
|
| 4 |
+
indent_style = space
|
| 5 |
+
indent_size = 2
|
| 6 |
+
charset = utf-8
|
| 7 |
+
trim_trailing_whitespace = true
|
| 8 |
+
insert_final_newline = true
|
| 9 |
+
|
| 10 |
+
[*.md]
|
| 11 |
+
trim_trailing_whitespace = false
|
.env.example
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This file is a template for what your untracked .env file might look like for local development.
|
| 2 |
+
# Please copy this to a new .env file and fill in the values as needed.
|
| 3 |
+
|
| 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
|
| 5 |
+
# When this value is unset searches will be proxied to the production Elasticsearch endpoint
|
| 6 |
+
ELASTICSEARCH_URL=http://localhost:9200
|
| 7 |
+
|
| 8 |
+
# Set for sending events in local development. See https://github.com/github/docs-engineering/blob/main/docs/analytics/hydro-mock.md
|
| 9 |
+
HYDRO_ENDPOINT=
|
| 10 |
+
HYDRO_SECRET=
|
| 11 |
+
|
| 12 |
+
# Localization variables
|
| 13 |
+
# See https://github.com/github/docs-internal/tree/main/src/languages#working-with-translated-content-locally
|
| 14 |
+
ENABLED_LANGUAGES=
|
| 15 |
+
TRANSLATIONS_ROOT=
|
| 16 |
+
|
| 17 |
+
# For running the src/search/scripts/scrape script
|
| 18 |
+
# You may want a lower value depending on your CPU
|
| 19 |
+
BUILD_RECORDS_MAX_CONCURRENT=100
|
| 20 |
+
BUILD_RECORDS_MIN_TIME=
|
| 21 |
+
|
| 22 |
+
# Set to true to enable the /fastly-cache-test route for debugging Fastly headers
|
| 23 |
+
ENABLE_FASTLY_TESTING=
|
| 24 |
+
|
| 25 |
+
# Needed to auth for AI search
|
| 26 |
+
CSE_COPILOT_SECRET=
|
| 27 |
+
CSE_COPILOT_ENDPOINT=https://cse-copilot-staging.service.iad.github.net
|
| 28 |
+
|
.gitattributes
CHANGED
|
@@ -1,35 +1,298 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
*.
|
| 6 |
-
*.
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Set default behavior, in case users don't have core.autocrlf set.
|
| 2 |
+
* text=auto
|
| 3 |
+
# Explicitly declare text files we want to always be normalized and converted
|
| 4 |
+
# to native line endings on checkout.
|
| 5 |
+
*.md text diff=markdown
|
| 6 |
+
*.json.br filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
.vscode/open-reusable-1.3.0.vsix filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
assets/images/_fixtures/screenshot.png filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
assets/images/azure/azure-federated-credential.png filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
assets/images/banner-images/hero-1.png filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
assets/images/banner-images/hero-2.png filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
assets/images/banner-images/hero-3.png filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
assets/images/banner-images/hero-4.png filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
assets/images/banner-images/hero-5.png filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
assets/images/banner-images/hero-6.png filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
assets/images/banner-images/hero-home.png filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
assets/images/contributing/illustration-of-article-contents.png filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
assets/images/contributing/screenshot-no-require-signoff.png filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
assets/images/contributing/screenshot-yes-clone-gist.png filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
assets/images/contributing/screenshot-yes-social-preview.png filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
assets/images/contributing/search-results.png filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
assets/images/contributing/tool-switchers.png filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
assets/images/enterprise/3.4/repository/code-security-and-analysis-enable-ghas-3.4.png filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
assets/images/enterprise/enterprise-server/installing-github-enterprise-server-on-aws.png filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
assets/images/enterprise/repository/git-blame.png filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
assets/images/enterprise/security/enterprise-security-and-analysis-disable-or-enable-all-with-user-namespace.png filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
assets/images/enterprise/security/enterprise-security-and-analysis-disable-or-enable-all.png filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
assets/images/enterprise/site-admin-settings/repo/repo-security-top-tab.png filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
assets/images/github-apps/authorize-app.png filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
assets/images/github-apps/install-app.png filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
assets/images/help/2fa/ghes-filter-org-members-by-2fa.png filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
assets/images/help/actions/actions-vnet-injected-larger-runners-architecture.png filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
assets/images/help/actions/arc-diagram.png filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
assets/images/help/actions/environments.png filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
assets/images/help/actions/hosted-runner.png filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
assets/images/help/actions/overview-actions-using-cli-ci-example.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
assets/images/help/actions/overview-actions-using-concurrency-expressions-and-a-test-matrix.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
assets/images/help/actions/overview-actions-using-scripts-ci-example.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
assets/images/help/actions/starter-workflow-go.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
assets/images/help/billing/cost-center-example-2.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
assets/images/help/billing/premium-request-analytics-chart.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
assets/images/help/billing/product-usage-chart.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
assets/images/help/classroom/ide-makecode-arcade-version-control-button.png filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
assets/images/help/classroom/use-drop-down-then-click-archive.png filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
assets/images/help/code-quality/ai-suggestions-repo-fixes.png filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
assets/images/help/code-quality/all-findings-overview-repo.png filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
assets/images/help/code-scanning/alert+autofix.png filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
assets/images/help/code-scanning/autofix-example.png filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
assets/images/help/codespaces/browser-console-log-save.png filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
assets/images/help/codespaces/codespace-annotated-vscode.png filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
assets/images/help/codespaces/codespace-overview-annotated.png filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
assets/images/help/codespaces/codespaces-accept-permissions.png filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
assets/images/help/codespaces/codespaces-audit-log-org.png filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
assets/images/help/codespaces/codespaces-audit-log.png filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
assets/images/help/codespaces/codespaces-command-palette.png filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
assets/images/help/codespaces/configure-dev-container.png filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
assets/images/help/codespaces/feature-installation-code.png filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
assets/images/help/codespaces/find-codespace-id.png filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
assets/images/help/codespaces/jetbrains-checkout-submenu.png filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
assets/images/help/codespaces/jetbrains-commit-and-push.png filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
assets/images/help/codespaces/jetbrains-gateway-codespaces.png filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
assets/images/help/codespaces/jetbrains-gateway-ides.png filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
assets/images/help/codespaces/jetbrains-gui-with-callouts.png filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
assets/images/help/codespaces/jetbrains-heap-setting.png filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
assets/images/help/codespaces/jetbrains-performance.png filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
assets/images/help/codespaces/jetbrains-preferences-plugins.png filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
assets/images/help/codespaces/jetbrains-privacy-and-security.png filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
assets/images/help/codespaces/jetbrains-toolbox.png filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
assets/images/help/codespaces/jupyter-notebook-step3.png filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
assets/images/help/codespaces/keep-codespace.png filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
assets/images/help/codespaces/new-shell-session.png filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
assets/images/help/codespaces/open-codespace-remote-explorer.png filter=lfs diff=lfs merge=lfs -text
|
| 73 |
+
assets/images/help/codespaces/prebuilds-log-output.png filter=lfs diff=lfs merge=lfs -text
|
| 74 |
+
assets/images/help/codespaces/react-template.png filter=lfs diff=lfs merge=lfs -text
|
| 75 |
+
assets/images/help/codespaces/recommended-secrets.png filter=lfs diff=lfs merge=lfs -text
|
| 76 |
+
assets/images/help/codespaces/review-suggestion.png filter=lfs diff=lfs merge=lfs -text
|
| 77 |
+
assets/images/help/copilot/ask-to-explain.png filter=lfs diff=lfs merge=lfs -text
|
| 78 |
+
assets/images/help/copilot/azure-data-studio-extensions-icon.png filter=lfs diff=lfs merge=lfs -text
|
| 79 |
+
assets/images/help/copilot/code-references-webpage.png filter=lfs diff=lfs merge=lfs -text
|
| 80 |
+
assets/images/help/copilot/code-review/review-comment@2x.png filter=lfs diff=lfs merge=lfs -text
|
| 81 |
+
assets/images/help/copilot/code-review/xcode-review-popup.png filter=lfs diff=lfs merge=lfs -text
|
| 82 |
+
assets/images/help/copilot/coding-agent/mobile-status-dropdown.png filter=lfs diff=lfs merge=lfs -text
|
| 83 |
+
assets/images/help/copilot/configure-code-completions-option-vscode.png filter=lfs diff=lfs merge=lfs -text
|
| 84 |
+
assets/images/help/copilot/copilot-audit-log.png filter=lfs diff=lfs merge=lfs -text
|
| 85 |
+
assets/images/help/copilot/copilot-downgrade-to-business.png filter=lfs diff=lfs merge=lfs -text
|
| 86 |
+
assets/images/help/copilot/copilot-sample-chat-response.png filter=lfs diff=lfs merge=lfs -text
|
| 87 |
+
assets/images/help/copilot/eclipse-advanced-code-completion-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 88 |
+
assets/images/help/copilot/insert-at-cursor-vscode.png filter=lfs diff=lfs merge=lfs -text
|
| 89 |
+
assets/images/help/copilot/install-copilot-extension-visual-studio.png filter=lfs diff=lfs merge=lfs -text
|
| 90 |
+
assets/images/help/copilot/jetbrains-debug-log.png filter=lfs diff=lfs merge=lfs -text
|
| 91 |
+
assets/images/help/copilot/jetbrains-share-feedback.png filter=lfs diff=lfs merge=lfs -text
|
| 92 |
+
assets/images/help/copilot/jetbrains-tools-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 93 |
+
assets/images/help/copilot/migration-no-css-website.png filter=lfs diff=lfs merge=lfs -text
|
| 94 |
+
assets/images/help/copilot/migration-original-website.png filter=lfs diff=lfs merge=lfs -text
|
| 95 |
+
assets/images/help/copilot/paths-to-ignore.png filter=lfs diff=lfs merge=lfs -text
|
| 96 |
+
assets/images/help/copilot/sdlc-guide/model-compare.png filter=lfs diff=lfs merge=lfs -text
|
| 97 |
+
assets/images/help/copilot/track-spending-prs.png filter=lfs diff=lfs merge=lfs -text
|
| 98 |
+
assets/images/help/copilot/track-spending.png filter=lfs diff=lfs merge=lfs -text
|
| 99 |
+
assets/images/help/copilot/vs-custom-instructions-option.png filter=lfs diff=lfs merge=lfs -text
|
| 100 |
+
assets/images/help/copilot/vsc-keyboard-shortcuts-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 101 |
+
assets/images/help/copilot/xcode-advanced-code-completion-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 102 |
+
assets/images/help/dependabot/audit-log-ui-dependabot-alert.png filter=lfs diff=lfs merge=lfs -text
|
| 103 |
+
assets/images/help/dependabot/dependabot-self-hosted-runner-log.png filter=lfs diff=lfs merge=lfs -text
|
| 104 |
+
assets/images/help/dependabot/dependabot-vnet-active-jobs.png filter=lfs diff=lfs merge=lfs -text
|
| 105 |
+
assets/images/help/dependabot/dependabot-vnet-logs.png filter=lfs diff=lfs merge=lfs -text
|
| 106 |
+
assets/images/help/dependabot/learners-enable-dependabot.png filter=lfs diff=lfs merge=lfs -text
|
| 107 |
+
assets/images/help/desktop/add-local-repository-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 108 |
+
assets/images/help/desktop/amend-commit-context-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 109 |
+
assets/images/help/desktop/available-actions.png filter=lfs diff=lfs merge=lfs -text
|
| 110 |
+
assets/images/help/desktop/branch-history-commit.png filter=lfs diff=lfs merge=lfs -text
|
| 111 |
+
assets/images/help/desktop/branch-history-file.png filter=lfs diff=lfs merge=lfs -text
|
| 112 |
+
assets/images/help/desktop/branch-item.png filter=lfs diff=lfs merge=lfs -text
|
| 113 |
+
assets/images/help/desktop/checkout-commit.png filter=lfs diff=lfs merge=lfs -text
|
| 114 |
+
assets/images/help/desktop/cherry-picking.png filter=lfs diff=lfs merge=lfs -text
|
| 115 |
+
assets/images/help/desktop/click-two-commits.png filter=lfs diff=lfs merge=lfs -text
|
| 116 |
+
assets/images/help/desktop/clone-file-menu-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 117 |
+
assets/images/help/desktop/commit-revert-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 118 |
+
assets/images/help/desktop/create-branch-from-commit-context-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 119 |
+
assets/images/help/desktop/create-issue-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 120 |
+
assets/images/help/desktop/delete-branch-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 121 |
+
assets/images/help/desktop/delete-tag-multiple.png filter=lfs diff=lfs merge=lfs -text
|
| 122 |
+
assets/images/help/desktop/desktop-menu-about-desktop-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 123 |
+
assets/images/help/desktop/discard-changes-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 124 |
+
assets/images/help/desktop/history-tab-in-commit-sidebar.png filter=lfs diff=lfs merge=lfs -text
|
| 125 |
+
assets/images/help/desktop/lets-get-started.png filter=lfs diff=lfs merge=lfs -text
|
| 126 |
+
assets/images/help/desktop/mac-adjust-permissions.png filter=lfs diff=lfs merge=lfs -text
|
| 127 |
+
assets/images/help/desktop/mac-choose-preferences.png filter=lfs diff=lfs merge=lfs -text
|
| 128 |
+
assets/images/help/desktop/mac-choose-settings.png filter=lfs diff=lfs merge=lfs -text
|
| 129 |
+
assets/images/help/desktop/mac-file-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 130 |
+
assets/images/help/desktop/mac-fork-behavior-menu-contribute.png filter=lfs diff=lfs merge=lfs -text
|
| 131 |
+
assets/images/help/desktop/mac-install-command-line-tool.png filter=lfs diff=lfs merge=lfs -text
|
| 132 |
+
assets/images/help/desktop/mac-rebase-current-branch.png filter=lfs diff=lfs merge=lfs -text
|
| 133 |
+
assets/images/help/desktop/mac-show-logs.png filter=lfs diff=lfs merge=lfs -text
|
| 134 |
+
assets/images/help/desktop/merge-branch-button-list.png filter=lfs diff=lfs merge=lfs -text
|
| 135 |
+
assets/images/help/desktop/open-in-editor.png filter=lfs diff=lfs merge=lfs -text
|
| 136 |
+
assets/images/help/desktop/open-pr-in-desktop-button.png filter=lfs diff=lfs merge=lfs -text
|
| 137 |
+
assets/images/help/desktop/repository-settings-mac.png filter=lfs diff=lfs merge=lfs -text
|
| 138 |
+
assets/images/help/desktop/select-create-tag.png filter=lfs diff=lfs merge=lfs -text
|
| 139 |
+
assets/images/help/desktop/select-delete-tag.png filter=lfs diff=lfs merge=lfs -text
|
| 140 |
+
assets/images/help/desktop/squash-and-merge-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 141 |
+
assets/images/help/desktop/squash-drag-and-drop.png filter=lfs diff=lfs merge=lfs -text
|
| 142 |
+
assets/images/help/desktop/use-local-git-config.png filter=lfs diff=lfs merge=lfs -text
|
| 143 |
+
assets/images/help/desktop/view-pr-on-github.png filter=lfs diff=lfs merge=lfs -text
|
| 144 |
+
assets/images/help/desktop/windows-preview-pull-request.png filter=lfs diff=lfs merge=lfs -text
|
| 145 |
+
assets/images/help/discussions/discussions-dashboard.png filter=lfs diff=lfs merge=lfs -text
|
| 146 |
+
assets/images/help/discussions/github-discussions-example.png filter=lfs diff=lfs merge=lfs -text
|
| 147 |
+
assets/images/help/discussions/hero.png filter=lfs diff=lfs merge=lfs -text
|
| 148 |
+
assets/images/help/discussions/most-helpful.png filter=lfs diff=lfs merge=lfs -text
|
| 149 |
+
assets/images/help/discussions/overview-pinned-discussions.png filter=lfs diff=lfs merge=lfs -text
|
| 150 |
+
assets/images/help/enterprises/continue-verifying-domain-enterprise.png filter=lfs diff=lfs merge=lfs -text
|
| 151 |
+
assets/images/help/enterprises/edit-agent-profile-ruleset.png filter=lfs diff=lfs merge=lfs -text
|
| 152 |
+
assets/images/help/enterprises/remove-organization.png filter=lfs diff=lfs merge=lfs -text
|
| 153 |
+
assets/images/help/enterprises/select-advanced-security-individual-organization-policy-ghes-316.png filter=lfs diff=lfs merge=lfs -text
|
| 154 |
+
assets/images/help/enterprises/select-advanced-security-individual-organization-policy.png filter=lfs diff=lfs merge=lfs -text
|
| 155 |
+
assets/images/help/gist/gist-clone-btn.png filter=lfs diff=lfs merge=lfs -text
|
| 156 |
+
assets/images/help/gist/gist-history.png filter=lfs diff=lfs merge=lfs -text
|
| 157 |
+
assets/images/help/gist/gist-visibility-drop-down.png filter=lfs diff=lfs merge=lfs -text
|
| 158 |
+
assets/images/help/github-enterprise-importer/migration-log-issue.png filter=lfs diff=lfs merge=lfs -text
|
| 159 |
+
assets/images/help/graphs/activity-view-icon.png filter=lfs diff=lfs merge=lfs -text
|
| 160 |
+
assets/images/help/issues/issue-assignees.png filter=lfs diff=lfs merge=lfs -text
|
| 161 |
+
assets/images/help/issues/issue-example.png filter=lfs diff=lfs merge=lfs -text
|
| 162 |
+
assets/images/help/issues/issue-milestone.png filter=lfs diff=lfs merge=lfs -text
|
| 163 |
+
assets/images/help/issues/issue-project.png filter=lfs diff=lfs merge=lfs -text
|
| 164 |
+
assets/images/help/issues/issue-type.png filter=lfs diff=lfs merge=lfs -text
|
| 165 |
+
assets/images/help/issues/issue-with-label.png filter=lfs diff=lfs merge=lfs -text
|
| 166 |
+
assets/images/help/issues/quickstart-add-task-list-to-issue.png filter=lfs diff=lfs merge=lfs -text
|
| 167 |
+
assets/images/help/issues/quickstart-collaborating-on-issue.png filter=lfs diff=lfs merge=lfs -text
|
| 168 |
+
assets/images/help/issues/quickstart-create-large-initiative-issue.png filter=lfs diff=lfs merge=lfs -text
|
| 169 |
+
assets/images/help/issues/quickstart-creating-issue-template.png filter=lfs diff=lfs merge=lfs -text
|
| 170 |
+
assets/images/help/issues/quickstart-creating-readme.png filter=lfs diff=lfs merge=lfs -text
|
| 171 |
+
assets/images/help/issues/quickstart-project-board.png filter=lfs diff=lfs merge=lfs -text
|
| 172 |
+
assets/images/help/models/github-models-datasets.png filter=lfs diff=lfs merge=lfs -text
|
| 173 |
+
assets/images/help/package-registry/packages-from-repo.png filter=lfs diff=lfs merge=lfs -text
|
| 174 |
+
assets/images/help/pages/verify-dns.png filter=lfs diff=lfs merge=lfs -text
|
| 175 |
+
assets/images/help/profile/achievements-detail-view.png filter=lfs diff=lfs merge=lfs -text
|
| 176 |
+
assets/images/help/profile/achievements-on-profile.png filter=lfs diff=lfs merge=lfs -text
|
| 177 |
+
assets/images/help/profile/org-profile.png filter=lfs diff=lfs merge=lfs -text
|
| 178 |
+
assets/images/help/profile/profile-block-or-report-button.png filter=lfs diff=lfs merge=lfs -text
|
| 179 |
+
assets/images/help/profile/profile-unblock-or-report-user.png filter=lfs diff=lfs merge=lfs -text
|
| 180 |
+
assets/images/help/projects/priority-example.png filter=lfs diff=lfs merge=lfs -text
|
| 181 |
+
assets/images/help/projects/team-discussions-example.png filter=lfs diff=lfs merge=lfs -text
|
| 182 |
+
assets/images/help/projects-v2/example-board.png filter=lfs diff=lfs merge=lfs -text
|
| 183 |
+
assets/images/help/projects-v2/example-roadmap.png filter=lfs diff=lfs merge=lfs -text
|
| 184 |
+
assets/images/help/projects-v2/example-table.png filter=lfs diff=lfs merge=lfs -text
|
| 185 |
+
assets/images/help/projects-v2/project-settings-navigation.png filter=lfs diff=lfs merge=lfs -text
|
| 186 |
+
assets/images/help/projects-v2/projects-select-template-title.png filter=lfs diff=lfs merge=lfs -text
|
| 187 |
+
assets/images/help/projects-v2/tasklist-diagram.png filter=lfs diff=lfs merge=lfs -text
|
| 188 |
+
assets/images/help/projects-v2/tasklist-hero.png filter=lfs diff=lfs merge=lfs -text
|
| 189 |
+
assets/images/help/pull_requests/checks-summary-for-various-commits.png filter=lfs diff=lfs merge=lfs -text
|
| 190 |
+
assets/images/help/pull_requests/dependency-review-vulnerability.png filter=lfs diff=lfs merge=lfs -text
|
| 191 |
+
assets/images/help/pull_requests/diff-settings-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 192 |
+
assets/images/help/pull_requests/enable-auto-merge-drop-down.png filter=lfs diff=lfs merge=lfs -text
|
| 193 |
+
assets/images/help/pull_requests/mark-as-resolved-button.png filter=lfs diff=lfs merge=lfs -text
|
| 194 |
+
assets/images/help/pull_requests/merge-conflict-commit-changes.png filter=lfs diff=lfs merge=lfs -text
|
| 195 |
+
assets/images/help/pull_requests/merge-pull-request-options.png filter=lfs diff=lfs merge=lfs -text
|
| 196 |
+
assets/images/help/pull_requests/merge_box/pr-reviews-in-merge-box.png filter=lfs diff=lfs merge=lfs -text
|
| 197 |
+
assets/images/help/pull_requests/merge_box/pull-request-open-menu.png filter=lfs diff=lfs merge=lfs -text
|
| 198 |
+
assets/images/help/repository/actions-disable-workflow-2022.png filter=lfs diff=lfs merge=lfs -text
|
| 199 |
+
assets/images/help/repository/add-required-workflow-dialog.png filter=lfs diff=lfs merge=lfs -text
|
| 200 |
+
assets/images/help/repository/citation-link.png filter=lfs diff=lfs merge=lfs -text
|
| 201 |
+
assets/images/help/repository/code-scanning-alert-details.png filter=lfs diff=lfs merge=lfs -text
|
| 202 |
+
assets/images/help/repository/code-scanning-alert-dropdown-reason.png filter=lfs diff=lfs merge=lfs -text
|
| 203 |
+
assets/images/help/repository/code-scanning-alert-without-development.png filter=lfs diff=lfs merge=lfs -text
|
| 204 |
+
assets/images/help/repository/code-scanning-alert.png filter=lfs diff=lfs merge=lfs -text
|
| 205 |
+
assets/images/help/repository/code-scanning-analysis-origins.png filter=lfs diff=lfs merge=lfs -text
|
| 206 |
+
assets/images/help/repository/code-scanning-branch-filter.png filter=lfs diff=lfs merge=lfs -text
|
| 207 |
+
assets/images/help/repository/code-scanning-pr-alert.png filter=lfs diff=lfs merge=lfs -text
|
| 208 |
+
assets/images/help/repository/code-scanning-pr-conversation-tab.png filter=lfs diff=lfs merge=lfs -text
|
| 209 |
+
assets/images/help/repository/code-scanning-tool-status-page-detailed.png filter=lfs diff=lfs merge=lfs -text
|
| 210 |
+
assets/images/help/repository/file-tree.png filter=lfs diff=lfs merge=lfs -text
|
| 211 |
+
assets/images/help/repository/images-2up-view.png filter=lfs diff=lfs merge=lfs -text
|
| 212 |
+
assets/images/help/repository/images-swipe-view.png filter=lfs diff=lfs merge=lfs -text
|
| 213 |
+
assets/images/help/repository/legacy-dependabot-alerts-view.png filter=lfs diff=lfs merge=lfs -text
|
| 214 |
+
assets/images/help/repository/manage-access-overview.png filter=lfs diff=lfs merge=lfs -text
|
| 215 |
+
assets/images/help/repository/os-repo-with-topics.png filter=lfs diff=lfs merge=lfs -text
|
| 216 |
+
assets/images/help/repository/profile-with-readme.png filter=lfs diff=lfs merge=lfs -text
|
| 217 |
+
assets/images/help/repository/remotes-url.png filter=lfs diff=lfs merge=lfs -text
|
| 218 |
+
assets/images/help/repository/repo-license-indicator.png filter=lfs diff=lfs merge=lfs -text
|
| 219 |
+
assets/images/help/repository/repos-create-properties.png filter=lfs diff=lfs merge=lfs -text
|
| 220 |
+
assets/images/help/repository/review-calls-to-vulnerable-functions.png filter=lfs diff=lfs merge=lfs -text
|
| 221 |
+
assets/images/help/repository/rule-insights.png filter=lfs diff=lfs merge=lfs -text
|
| 222 |
+
assets/images/help/repository/secret-scanning-dismiss-alert-web-ui-link-partner-documentation.png filter=lfs diff=lfs merge=lfs -text
|
| 223 |
+
assets/images/help/repository/social-preview.png filter=lfs diff=lfs merge=lfs -text
|
| 224 |
+
assets/images/help/repository/view-rule-runs.png filter=lfs diff=lfs merge=lfs -text
|
| 225 |
+
assets/images/help/saml/entra-id-saml-scim-mapping-error.png filter=lfs diff=lfs merge=lfs -text
|
| 226 |
+
assets/images/help/saml/okta-saml-scim-mapping-error.png filter=lfs diff=lfs merge=lfs -text
|
| 227 |
+
assets/images/help/search/topic-left-side-navigation-dotcom.png filter=lfs diff=lfs merge=lfs -text
|
| 228 |
+
assets/images/help/security/builder-sec-campaign.png filter=lfs diff=lfs merge=lfs -text
|
| 229 |
+
assets/images/help/security/codeql-for-vs-code-extension-settings.png filter=lfs diff=lfs merge=lfs -text
|
| 230 |
+
assets/images/help/security/codeql-for-vs-code-extensions-view.png filter=lfs diff=lfs merge=lfs -text
|
| 231 |
+
assets/images/help/security/codeql-for-vs-code-test-output.png filter=lfs diff=lfs merge=lfs -text
|
| 232 |
+
assets/images/help/security/driver-sec-campaign-view.png filter=lfs diff=lfs merge=lfs -text
|
| 233 |
+
assets/images/help/security/private-vulnerability-reporting-enable-or-disable-org-new-repos.png filter=lfs diff=lfs merge=lfs -text
|
| 234 |
+
assets/images/help/security/private-vulnerability-reporting-enable-or-disable-org.png filter=lfs diff=lfs merge=lfs -text
|
| 235 |
+
assets/images/help/security/security-campaigns-tracking-overview-2tabs.png filter=lfs diff=lfs merge=lfs -text
|
| 236 |
+
assets/images/help/security/security-campaigns-tracking-overview-code-only.png filter=lfs diff=lfs merge=lfs -text
|
| 237 |
+
assets/images/help/security/security-campaigns-tracking-overview.png filter=lfs diff=lfs merge=lfs -text
|
| 238 |
+
assets/images/help/security-overview/security-coverage-view-highlights.png filter=lfs diff=lfs merge=lfs -text
|
| 239 |
+
assets/images/help/security-overview/security-coverage-view-multi-repo-side-panel.png filter=lfs diff=lfs merge=lfs -text
|
| 240 |
+
assets/images/help/security-overview/security-coverage-view-multi-repo.png filter=lfs diff=lfs merge=lfs -text
|
| 241 |
+
assets/images/help/security-overview/security-coverage-view-summary-pre-config.png filter=lfs diff=lfs merge=lfs -text
|
| 242 |
+
assets/images/help/security-overview/security-coverage-view-summary.png filter=lfs diff=lfs merge=lfs -text
|
| 243 |
+
assets/images/help/security-overview/security-overview-dashboard-filters-3-tab.png filter=lfs diff=lfs merge=lfs -text
|
| 244 |
+
assets/images/help/security-overview/security-overview-dashboard-filters.png filter=lfs diff=lfs merge=lfs -text
|
| 245 |
+
assets/images/help/security-overview/security-overview-enablement-trends.png filter=lfs diff=lfs merge=lfs -text
|
| 246 |
+
assets/images/help/security-overview/security-overview-secret-scanning-metrics-additional-tools.png filter=lfs diff=lfs merge=lfs -text
|
| 247 |
+
assets/images/help/security-overview/security-overview-secret-scanning-metrics.png filter=lfs diff=lfs merge=lfs -text
|
| 248 |
+
assets/images/help/security-overview/security-risk-view-highlights-enterprise.png filter=lfs diff=lfs merge=lfs -text
|
| 249 |
+
assets/images/help/settings/cookie-settings-accept-or-reject.png filter=lfs diff=lfs merge=lfs -text
|
| 250 |
+
assets/images/help/settings/email-primary.png filter=lfs diff=lfs merge=lfs -text
|
| 251 |
+
assets/images/help/site-policy/github-privacy-statement(07.22.20)(fr).pdf filter=lfs diff=lfs merge=lfs -text
|
| 252 |
+
assets/images/help/site-policy/github-statement-against-modern-slavery-and-child-labor.pdf filter=lfs diff=lfs merge=lfs -text
|
| 253 |
+
assets/images/help/stars/lists-overview-on-stars-page.png filter=lfs diff=lfs merge=lfs -text
|
| 254 |
+
assets/images/help/wiki/wiki-edit-mode-dropdown.png filter=lfs diff=lfs merge=lfs -text
|
| 255 |
+
assets/images/help/writing/fenced-geojson-rendered-map.png filter=lfs diff=lfs merge=lfs -text
|
| 256 |
+
assets/images/help/writing/fenced-stl-rendered-object.png filter=lfs diff=lfs merge=lfs -text
|
| 257 |
+
assets/images/help/writing/fenced-topojson-rendered-map.png filter=lfs diff=lfs merge=lfs -text
|
| 258 |
+
assets/images/help/writing/saved-replies-settings-adding.png filter=lfs diff=lfs merge=lfs -text
|
| 259 |
+
assets/images/help/writing/task-list-rendered.png filter=lfs diff=lfs merge=lfs -text
|
| 260 |
+
assets/images/help/writing/task-list-tracked.png filter=lfs diff=lfs merge=lfs -text
|
| 261 |
+
assets/images/marketplace/marketplace-feature-card.png filter=lfs diff=lfs merge=lfs -text
|
| 262 |
+
assets/images/marketplace/marketplace-insights.png filter=lfs diff=lfs merge=lfs -text
|
| 263 |
+
assets/images/marketplace/marketplace-screenshots.png filter=lfs diff=lfs merge=lfs -text
|
| 264 |
+
assets/images/site/evergreens/boxwood.png filter=lfs diff=lfs merge=lfs -text
|
| 265 |
+
assets/images/site/evergreens/cedar.png filter=lfs diff=lfs merge=lfs -text
|
| 266 |
+
assets/images/site/evergreens/cypress.png filter=lfs diff=lfs merge=lfs -text
|
| 267 |
+
assets/images/site/evergreens/fir.png filter=lfs diff=lfs merge=lfs -text
|
| 268 |
+
assets/images/site/evergreens/hemlock.png filter=lfs diff=lfs merge=lfs -text
|
| 269 |
+
assets/images/site/evergreens/hinoki.png filter=lfs diff=lfs merge=lfs -text
|
| 270 |
+
assets/images/site/evergreens/holly.png filter=lfs diff=lfs merge=lfs -text
|
| 271 |
+
assets/images/site/evergreens/juniper.png filter=lfs diff=lfs merge=lfs -text
|
| 272 |
+
assets/images/site/evergreens/laurel.png filter=lfs diff=lfs merge=lfs -text
|
| 273 |
+
assets/images/site/evergreens/pine.png filter=lfs diff=lfs merge=lfs -text
|
| 274 |
+
assets/images/site/evergreens/redwood.png filter=lfs diff=lfs merge=lfs -text
|
| 275 |
+
assets/images/site/evergreens/sequoia.png filter=lfs diff=lfs merge=lfs -text
|
| 276 |
+
assets/images/site/evergreens/spruce.png filter=lfs diff=lfs merge=lfs -text
|
| 277 |
+
assets/images/site/evergreens/yew.png filter=lfs diff=lfs merge=lfs -text
|
| 278 |
+
assets/images/social-cards/actions.png filter=lfs diff=lfs merge=lfs -text
|
| 279 |
+
assets/images/social-cards/code-security.png filter=lfs diff=lfs merge=lfs -text
|
| 280 |
+
assets/images/social-cards/copilot.png filter=lfs diff=lfs merge=lfs -text
|
| 281 |
+
assets/images/social-cards/default.png filter=lfs diff=lfs merge=lfs -text
|
| 282 |
+
assets/images/social-cards/issues.png filter=lfs diff=lfs merge=lfs -text
|
| 283 |
+
contributing/images/illustration-of-article-contents.png filter=lfs diff=lfs merge=lfs -text
|
| 284 |
+
contributing/images/screenshot-no-require-signoff.png filter=lfs diff=lfs merge=lfs -text
|
| 285 |
+
contributing/images/screenshot-yes-clone-gist.png filter=lfs diff=lfs merge=lfs -text
|
| 286 |
+
contributing/images/screenshot-yes-social-preview.png filter=lfs diff=lfs merge=lfs -text
|
| 287 |
+
src/dev-toc/toc-screenshot.png filter=lfs diff=lfs merge=lfs -text
|
| 288 |
+
src/ghes-releases/lib/variable-example.png filter=lfs diff=lfs merge=lfs -text
|
| 289 |
+
src/rest/data/fpt-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 290 |
+
src/rest/data/ghec-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 291 |
+
src/rest/data/ghes-3.14-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 292 |
+
src/rest/data/ghes-3.15-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 293 |
+
src/rest/data/ghes-3.16-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 294 |
+
src/rest/data/ghes-3.17-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 295 |
+
src/rest/data/ghes-3.18-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 296 |
+
src/rest/data/ghes-3.19-2022-11-28/schema.json filter=lfs diff=lfs merge=lfs -text
|
| 297 |
+
src/rest/rest-pipeline-flowchart.png filter=lfs diff=lfs merge=lfs -text
|
| 298 |
+
src/webhooks/webhooks-pipeline-flowchart.png filter=lfs diff=lfs merge=lfs -text
|
.github/CODEOWNERS
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Order is important. The LAST matching pattern has the MOST precedence.
|
| 2 |
+
# gitignore style patterns are used, not globs.
|
| 3 |
+
# https://docs.github.com/articles/about-codeowners
|
| 4 |
+
# https://git-scm.com/docs/gitignore
|
| 5 |
+
|
| 6 |
+
# Site Policy
|
| 7 |
+
content/site-policy/ @github/site-policy-admins
|
| 8 |
+
|
| 9 |
+
# Enterprise
|
| 10 |
+
data/release-notes/**/*.yml @github/docs-content-enterprise
|
| 11 |
+
src/ghes-releases/lib/enterprise-dates.json @github/docs-content-enterprise
|
| 12 |
+
|
| 13 |
+
# Requires review of #actions-oidc-integration, docs-engineering/issues/1506
|
| 14 |
+
# content/actions/deployment/security-hardening-your-deployments/** @github/oidc
|
.github/CODE_OF_CONDUCT.md
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Contributor Covenant Code of Conduct
|
| 2 |
+
|
| 3 |
+
## Our Pledge
|
| 4 |
+
|
| 5 |
+
We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
| 6 |
+
|
| 7 |
+
We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
|
| 8 |
+
|
| 9 |
+
## Our Standards
|
| 10 |
+
|
| 11 |
+
Examples of behavior that contributes to a positive environment for our community include:
|
| 12 |
+
|
| 13 |
+
* Demonstrating empathy and kindness toward other people
|
| 14 |
+
* Being respectful of differing opinions, viewpoints, and experiences
|
| 15 |
+
* Giving and gracefully accepting constructive feedback
|
| 16 |
+
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
|
| 17 |
+
* Focusing on what is best not just for us as individuals, but for the overall community
|
| 18 |
+
|
| 19 |
+
Examples of unacceptable behavior include:
|
| 20 |
+
|
| 21 |
+
* The use of sexualized language or imagery, and sexual attention or advances of any kind
|
| 22 |
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
| 23 |
+
* Public or private harassment
|
| 24 |
+
* Publishing others' private information, such as a physical or email address, without their explicit permission
|
| 25 |
+
* Contacting individual members, contributors, or leaders privately, outside designated community mechanisms, without their explicit permission
|
| 26 |
+
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
| 27 |
+
|
| 28 |
+
## Enforcement Responsibilities
|
| 29 |
+
|
| 30 |
+
Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
|
| 31 |
+
|
| 32 |
+
Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
|
| 33 |
+
|
| 34 |
+
## Scope
|
| 35 |
+
|
| 36 |
+
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
|
| 37 |
+
|
| 38 |
+
## Enforcement
|
| 39 |
+
|
| 40 |
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at opensource@github.com. All complaints will be reviewed and investigated promptly and fairly.
|
| 41 |
+
|
| 42 |
+
All community leaders are obligated to respect the privacy and security of the reporter of any incident.
|
| 43 |
+
|
| 44 |
+
## Enforcement Guidelines
|
| 45 |
+
|
| 46 |
+
Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
|
| 47 |
+
|
| 48 |
+
### 1. Correction
|
| 49 |
+
|
| 50 |
+
**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
|
| 51 |
+
|
| 52 |
+
**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
|
| 53 |
+
|
| 54 |
+
### 2. Warning
|
| 55 |
+
|
| 56 |
+
**Community Impact**: A violation through a single incident or series of actions.
|
| 57 |
+
|
| 58 |
+
**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
|
| 59 |
+
|
| 60 |
+
### 3. Temporary Ban
|
| 61 |
+
|
| 62 |
+
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
|
| 63 |
+
|
| 64 |
+
**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
|
| 65 |
+
|
| 66 |
+
### 4. Permanent Ban
|
| 67 |
+
|
| 68 |
+
**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
|
| 69 |
+
|
| 70 |
+
**Consequence**: A permanent ban from any sort of public interaction within the community.
|
| 71 |
+
|
| 72 |
+
## Attribution
|
| 73 |
+
|
| 74 |
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at <https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
| 75 |
+
|
| 76 |
+
Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
|
| 77 |
+
|
| 78 |
+
[homepage]: https://www.contributor-covenant.org
|
| 79 |
+
|
| 80 |
+
For answers to common questions about this code of conduct, see the FAQ at <https://www.contributor-covenant.org/faq>. Translations are available at <https://www.contributor-covenant.org/translations>.
|
.github/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Welcome to GitHub docs contributing guide <!-- omit in toc -->
|
| 2 |
+
|
| 3 |
+
Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on [docs.github.com](https://docs.github.com/en) :sparkles:.
|
| 4 |
+
|
| 5 |
+
**📖 For comprehensive contribution guidance, please visit our official documentation at [docs.github.com/en/contributing](https://docs.github.com/en/contributing). This is our canonical source for all contribution processes and policies.**
|
| 6 |
+
|
| 7 |
+
Read our [Code of Conduct](./CODE_OF_CONDUCT.md) to keep our community approachable and respectable.
|
| 8 |
+
|
| 9 |
+
This guide provides repository-specific information to supplement the official contribution documentation. For detailed processes, policies, and best practices, always refer to [docs.github.com/en/contributing](https://docs.github.com/en/contributing).
|
| 10 |
+
|
| 11 |
+
Use the table of contents icon <img alt="Table of contents icon" src="/contributing/images/table-of-contents.png" width="25" height="25" /> in the top corner of this document to get to a specific section of this guide quickly.
|
| 12 |
+
|
| 13 |
+
## New contributor guide
|
| 14 |
+
|
| 15 |
+
**Start here:** Visit [docs.github.com/en/contributing](https://docs.github.com/en/contributing) for complete contributor onboarding and guidelines.
|
| 16 |
+
|
| 17 |
+
For repository-specific setup, read the [README](../README.md) file. The official docs site also provides these helpful resources:
|
| 18 |
+
|
| 19 |
+
- [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)
|
| 20 |
+
- [Set up Git](https://docs.github.com/en/get-started/git-basics/set-up-git)
|
| 21 |
+
- [GitHub flow](https://docs.github.com/en/get-started/using-github/github-flow)
|
| 22 |
+
- [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
|
| 23 |
+
|
| 24 |
+
## Contribution types and what we're looking for
|
| 25 |
+
|
| 26 |
+
Content we accept:
|
| 27 |
+
* Technical and grammatical corrections
|
| 28 |
+
* Typo fixes
|
| 29 |
+
* Expanded explanations of existing products or features, when the expansion has a compelling reason
|
| 30 |
+
* New content filling important gaps in our documentation. For example, [this pull request](https://github.com/github/docs/pull/38048) added a useful section on security hardening for GitHub Actions.
|
| 31 |
+
|
| 32 |
+
Content we do not currently accept:
|
| 33 |
+
* Edits purely for tone, readability, or efficiency
|
| 34 |
+
* Topics that are too niche or a matter of personal preference
|
| 35 |
+
* Changes to the underlying site and workflows
|
| 36 |
+
|
| 37 |
+
These are general guidelines, but if you’re not sure what category your proposed change would fall under, feel free to open an issue to discuss it with us!
|
| 38 |
+
|
| 39 |
+
## Getting started
|
| 40 |
+
|
| 41 |
+
📚 **Primary resource:** [docs.github.com/en/contributing](https://docs.github.com/en/contributing) contains our complete contribution workflow and policies.
|
| 42 |
+
|
| 43 |
+
For repository-specific information:
|
| 44 |
+
- See [the introduction to working in the docs repository](/contributing/README.md) :confetti_ball:
|
| 45 |
+
- Check our [types of contributions](/contributing/types-of-contributions.md) we accept
|
| 46 |
+
- Review our markdown style guidelines in the `/contributing` directory
|
| 47 |
+
|
| 48 |
+
### Writing style guidelines
|
| 49 |
+
|
| 50 |
+
When contributing content, please follow these key principles from our [style guide](https://docs.github.com/en/contributing/style-guide-and-content-model/style-guide):
|
| 51 |
+
|
| 52 |
+
- **Clarity and simplicity**: The goal of our writing style is clarity and simplicity.
|
| 53 |
+
- **Meaning over grammar**: Grammatical correctness is important, but not as important as clarity and meaning.
|
| 54 |
+
- **Second person**: The docs use second-person ("you") to communicate directly with readers.
|
| 55 |
+
- **Inclusive language**: Use inclusive language by not assuming gender or ability level, and by avoiding slang and idioms.
|
| 56 |
+
- **Accessible technical language**: Jargon is sometimes necessary, but don't assume every reader has your technical expertise.
|
| 57 |
+
- **Active voice**: Use active voice wherever possible. Active voice means avoiding "be" verbs like "is" or "are" when you can, but also choosing more dynamic verbs to get your point across. "Press (a key)" is less dynamic than "tap (a key)," for example.
|
| 58 |
+
- **Clear terminology**: Avoid technical abbreviations like "repo" and "PR," and Latin abbreviations like "i.e." and "e.g."
|
| 59 |
+
|
| 60 |
+
For complete style guidance, see our [style guide](https://docs.github.com/en/contributing/style-guide-and-content-model/style-guide).
|
| 61 |
+
|
| 62 |
+
### Issues
|
| 63 |
+
|
| 64 |
+
**For detailed issue guidelines, see [docs.github.com/en/contributing](https://docs.github.com/en/contributing).**
|
| 65 |
+
|
| 66 |
+
#### Repository-specific notes:
|
| 67 |
+
- Search [existing issues](https://github.com/github/docs/issues) before creating new ones
|
| 68 |
+
- Use our [label reference](https://docs.github.com/en/contributing/collaborating-on-github-docs/label-reference) to categorize appropriately
|
| 69 |
+
- Follow the issue templates provided in this repository
|
| 70 |
+
|
| 71 |
+
### Make Changes
|
| 72 |
+
|
| 73 |
+
**Complete change guidelines are available at [docs.github.com/en/contributing](https://docs.github.com/en/contributing).**
|
| 74 |
+
|
| 75 |
+
#### Repository-specific options:
|
| 76 |
+
|
| 77 |
+
**Make changes in the UI:** Click **Make a contribution** at the bottom of any docs page for small changes like typos or broken links.
|
| 78 |
+
|
| 79 |
+
<img src="/contributing/images/contribution_cta.png" />
|
| 80 |
+
|
| 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.
|
| 82 |
+
|
| 83 |
+
**Make changes locally:**
|
| 84 |
+
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))
|
| 86 |
+
3. Create a working branch and start with your changes
|
| 87 |
+
|
| 88 |
+
### Commit your update
|
| 89 |
+
|
| 90 |
+
Follow the guidelines at [docs.github.com/en/contributing](https://docs.github.com/en/contributing) for commit best practices.
|
| 91 |
+
|
| 92 |
+
Use our "[Self review checklist](https://docs.github.com/en/contributing/collaborating-on-github-docs/self-review-checklist)" before committing.
|
| 93 |
+
|
| 94 |
+
### Pull Request
|
| 95 |
+
|
| 96 |
+
**Complete pull request (PR) guidelines:** [docs.github.com/en/contributing](https://docs.github.com/en/contributing)
|
| 97 |
+
|
| 98 |
+
**Repository-specific notes:**
|
| 99 |
+
- Fill the "Ready for review" template
|
| 100 |
+
- [Link PR to issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue) if applicable
|
| 101 |
+
- 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)
|
| 102 |
+
|
| 103 |
+
A Docs team member will review following our [standard review process](https://docs.github.com/en/contributing).
|
| 104 |
+
|
| 105 |
+
### Your PR is merged!
|
| 106 |
+
|
| 107 |
+
Congratulations :tada::tada: The GitHub team thanks you :sparkles:.
|
| 108 |
+
|
| 109 |
+
Once merged, your contributions will be visible on [GitHub docs](https://docs.github.com/en).
|
| 110 |
+
|
| 111 |
+
Continue contributing using our [types of contributions guide](/contributing/types-of-contributions.md) or explore more opportunities at [docs.github.com/en/contributing](https://docs.github.com/en/contributing).
|
| 112 |
+
|
| 113 |
+
## Windows
|
| 114 |
+
|
| 115 |
+
This site can be developed on Windows, however a few potential gotchas need to be kept in mind:
|
| 116 |
+
|
| 117 |
+
1. Regular Expressions: Windows uses `\r\n` for line endings, while Unix-based systems use `\n`. Therefore, when working on Regular Expressions, use `\r?\n` instead of `\n` in order to support both environments. The Node.js [`os.EOL`](https://nodejs.org/api/os.html#os_os_eol) property can be used to get an OS-specific end-of-line marker.
|
| 118 |
+
2. Paths: Windows systems use `\` for the path separator, which would be returned by `path.join` and others. You could use `path.posix`, `path.posix.join` etc and the [slash](https://ghub.io/slash) module, if you need forward slashes - like for constructing URLs - or ensure your code works with either.
|
| 119 |
+
3. Bash: Not every Windows developer has a terminal that fully supports Bash, so it's generally preferred to write [scripts](/script) in JavaScript instead of Bash.
|
| 120 |
+
4. Filename too long error: There is a 260 character limit for a filename when Git is compiled with `msys`. While the suggestions below are not guaranteed to work and could cause other issues, a few workarounds include:
|
| 121 |
+
- Update Git configuration: `git config --system core.longpaths true`
|
| 122 |
+
- Consider using a different Git client on Windows
|
.github/ISSUE_TEMPLATE/config.yml
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
blank_issues_enabled: false
|
| 2 |
+
contact_links:
|
| 3 |
+
- name: GitHub Support
|
| 4 |
+
url: https://support.github.com/contact
|
| 5 |
+
about: Contact Support if you're having trouble with your GitHub account.
|
.github/ISSUE_TEMPLATE/improve-existing-docs.yaml
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Improve existing content
|
| 2 |
+
description: Make a suggestion to improve the content in an existing article.
|
| 3 |
+
labels:
|
| 4 |
+
- content
|
| 5 |
+
body:
|
| 6 |
+
- type: markdown
|
| 7 |
+
attributes:
|
| 8 |
+
value: |
|
| 9 |
+
**HUBBERS!!** This is the github/docs open source repo. You may want to open an issue in the internal-only github/docs-content repo instead.
|
| 10 |
+
|
| 11 |
+
* Before you file an issue read the [Contributing guide](https://docs.github.com/en/contributing).
|
| 12 |
+
* Check to make sure someone hasn't already opened a similar [issue](https://github.com/github/docs/issues).
|
| 13 |
+
|
| 14 |
+
- type: checkboxes
|
| 15 |
+
id: terms
|
| 16 |
+
attributes:
|
| 17 |
+
label: Code of Conduct
|
| 18 |
+
description: This project has a Code of Conduct that all participants are expected to understand and follow.
|
| 19 |
+
options:
|
| 20 |
+
- label: I have read and agree to the GitHub Docs project's [Code of Conduct](https://github.com/github/docs/blob/main/.github/CODE_OF_CONDUCT.md)
|
| 21 |
+
required: true
|
| 22 |
+
|
| 23 |
+
- type: textarea
|
| 24 |
+
attributes:
|
| 25 |
+
label: What article on docs.github.com is affected?
|
| 26 |
+
description: Please link to the article you'd like to see updated.
|
| 27 |
+
validations:
|
| 28 |
+
required: true
|
| 29 |
+
|
| 30 |
+
- type: textarea
|
| 31 |
+
attributes:
|
| 32 |
+
label: What part(s) of the article would you like to see updated?
|
| 33 |
+
description: |
|
| 34 |
+
- Give as much detail as you can to help us understand the change you want to see.
|
| 35 |
+
- Why should the docs be changed? What use cases does it support?
|
| 36 |
+
- What is the expected outcome or behavior?
|
| 37 |
+
validations:
|
| 38 |
+
required: true
|
| 39 |
+
|
| 40 |
+
- type: textarea
|
| 41 |
+
attributes:
|
| 42 |
+
label: Additional information
|
| 43 |
+
description: |
|
| 44 |
+
- Are you able to reliably reproduce the problem? How often does it occur? How many users are affected?
|
| 45 |
+
- Add any other context or screenshots about the feature here.
|
| 46 |
+
validations:
|
| 47 |
+
required: false
|
.github/ISSUE_TEMPLATE/improve-the-site.yml
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Improve the docs.github.com site
|
| 2 |
+
description: Make a suggestion or report a problem about the technical implementation of docs.github.com.
|
| 3 |
+
labels:
|
| 4 |
+
- content
|
| 5 |
+
body:
|
| 6 |
+
- type: markdown
|
| 7 |
+
attributes:
|
| 8 |
+
value: |
|
| 9 |
+
**HUBBERS!!** This is the github/docs open source repo. You may want to open an issue in the internal-only github/docs-content repo instead.
|
| 10 |
+
|
| 11 |
+
* Before you file an issue read the [Contributing guide](https://docs.github.com/en/contributing).
|
| 12 |
+
* Check to make sure someone hasn't already opened a similar [issue](https://github.com/github/docs/issues).
|
| 13 |
+
|
| 14 |
+
- type: checkboxes
|
| 15 |
+
id: terms
|
| 16 |
+
attributes:
|
| 17 |
+
label: Code of Conduct
|
| 18 |
+
description: This project has a Code of Conduct that all participants are expected to understand and follow.
|
| 19 |
+
options:
|
| 20 |
+
- label: I have read and agree to the GitHub Docs project's [Code of Conduct](https://github.com/github/docs/blob/main/.github/CODE_OF_CONDUCT.md)
|
| 21 |
+
required: true
|
| 22 |
+
|
| 23 |
+
- type: textarea
|
| 24 |
+
attributes:
|
| 25 |
+
label: What article on docs.github.com is affected?
|
| 26 |
+
description: Include links to articles where you're seeing a problem, screenshots, what browser you're using, etc.
|
| 27 |
+
validations:
|
| 28 |
+
required: true
|
| 29 |
+
|
| 30 |
+
- type: textarea
|
| 31 |
+
attributes:
|
| 32 |
+
label: What changes are you suggesting?
|
| 33 |
+
description: |
|
| 34 |
+
- Give as much detail as you can to help us understand the change you want to see.
|
| 35 |
+
- Why should the docs be changed? What use cases does it support?
|
| 36 |
+
- What is the expected outcome?
|
| 37 |
+
validations:
|
| 38 |
+
required: true
|
| 39 |
+
|
| 40 |
+
- type: textarea
|
| 41 |
+
attributes:
|
| 42 |
+
label: Additional information
|
| 43 |
+
description: Any additional information, configuration, or data that might be necessary to reproduce the issue.
|
| 44 |
+
validations:
|
| 45 |
+
required: false
|
.github/ISSUE_TEMPLATE/partner-contributed-documentation.yml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Partner-owned product documentation
|
| 2 |
+
description: Initiate a set of tasks to be completed by a GitHub partner wishing to document how their product works with GitHub.
|
| 3 |
+
labels:
|
| 4 |
+
- partner
|
| 5 |
+
body:
|
| 6 |
+
- type: markdown
|
| 7 |
+
attributes:
|
| 8 |
+
value: |
|
| 9 |
+
Thank you for your interest in contributing to the GitHub documentation.
|
| 10 |
+
|
| 11 |
+
This issue template is only for use by GitHub's Technology Partners who wish to contribute documentation explaining how the partner's product works with GitHub, making it straightforward for our shared customers to adopt the product into their workflow.
|
| 12 |
+
|
| 13 |
+
As a general guide, we estimate we have bandwidth for prioritizing and reviewing up to 3 partner contributions per quarter.
|
| 14 |
+
|
| 15 |
+
Please be sure to complete all items in the checklists that follow, and feel free to comment with any questions. A member of the team will be glad to support you.
|
| 16 |
+
|
| 17 |
+
- type: checkboxes
|
| 18 |
+
id: terms
|
| 19 |
+
attributes:
|
| 20 |
+
label: Code of Conduct
|
| 21 |
+
description: This project has a Code of Conduct that all participants are expected to understand and follow.
|
| 22 |
+
options:
|
| 23 |
+
- label: I have read and agree to the GitHub Docs project's [Code of Conduct](https://github.com/github/docs/blob/main/.github/CODE_OF_CONDUCT.md)
|
| 24 |
+
required: true
|
| 25 |
+
- type: checkboxes
|
| 26 |
+
attributes:
|
| 27 |
+
label: Pre-requisites
|
| 28 |
+
description: Prior to submitting documentation, please apply to join the GitHub Technology Partner Program [partner.github.com/apply](https://partner.github.com/apply?partnershipType=Technology+Partner). Please feel free to proceed once your application is approved.
|
| 29 |
+
options:
|
| 30 |
+
- label: My application to the GitHub Technology Partner Program is approved.
|
| 31 |
+
required: true
|
| 32 |
+
|
| 33 |
+
- type: checkboxes
|
| 34 |
+
attributes:
|
| 35 |
+
label: Tasks
|
| 36 |
+
description: Please be sure to complete each of the following.
|
| 37 |
+
options:
|
| 38 |
+
- label: MUST follow our [general contributing guidelines](https://docs.github.com/en/contributing) for voice and markup format.
|
| 39 |
+
required: true
|
| 40 |
+
- label: MUST emphasize how the third-party product works with GitHub.
|
| 41 |
+
required: true
|
| 42 |
+
- label: MUST be written in Markdown format, using [one of the templates provided](https://docs.github.com/en/contributing/writing-for-github-docs/templates).
|
| 43 |
+
required: true
|
| 44 |
+
- label: MUST include the name and URL of the GitHub technology partner responsible for maintenance of the documentation being contributed. This should be added via the `contributor.name` and `contributor.URL` properties in the template's YAML frontmatter.
|
| 45 |
+
required: true
|
| 46 |
+
- label: MUST be proposed via a pull request to this repo following [the GitHub Flow](https://guides.github.com/introduction/flow/).
|
| 47 |
+
required: true
|
| 48 |
+
- label: MUST be located in the root of [the `content` folder](content). Your filename MUST match the GitHub technology partner name, and use the `.md` file extension.
|
| 49 |
+
required: true
|
| 50 |
+
|
| 51 |
+
- type: checkboxes
|
| 52 |
+
attributes:
|
| 53 |
+
label: Pull Request
|
| 54 |
+
description: Please be sure to complete each of the following.
|
| 55 |
+
options:
|
| 56 |
+
- label: MUST reference this issue, e.g. via `closes [this issue number]`.
|
| 57 |
+
required: true
|
| 58 |
+
- label: MUST pass the automated CI checks.
|
| 59 |
+
required: true
|
| 60 |
+
- label: MUST include links to supporting material demonstrating the functionality being documented (this can be a link to a public GitHub repo, _or_ a video / screencast walkthrough).
|
| 61 |
+
required: true
|
| 62 |
+
|
| 63 |
+
- type: markdown
|
| 64 |
+
attributes:
|
| 65 |
+
value: |
|
| 66 |
+
Once all tasks are completed, please mention `@github/docs-content` for next steps.
|
| 67 |
+
/cc @github/technology-partnerships-and-engineering for :eyes:.
|
.github/PULL_REQUEST_TEMPLATE.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!--
|
| 2 |
+
Thank you for contributing to this project! You must fill out the information below before we can review this pull request. By explaining why you're making a change (or linking to an issue) and what changes you've made, we can triage your pull request to the best possible team for review.
|
| 3 |
+
-->
|
| 4 |
+
|
| 5 |
+
### Why:
|
| 6 |
+
|
| 7 |
+
<!-- Paste the issue link or number here -->
|
| 8 |
+
Closes:
|
| 9 |
+
|
| 10 |
+
<!-- If there's an existing issue for your change, please link to it above.
|
| 11 |
+
If there's _not_ an existing issue, please open one first to make it more likely that this update will be accepted: https://github.com/github/docs/issues/new/choose. -->
|
| 12 |
+
|
| 13 |
+
### What's being changed (if available, include any code snippets, screenshots, or gifs):
|
| 14 |
+
|
| 15 |
+
<!-- Let us know what you are changing. Share anything that could provide the most context.
|
| 16 |
+
If you made changes to the `content` directory, a table will populate in a comment below with links to the review and current production articles. -->
|
| 17 |
+
|
| 18 |
+
### Check off the following:
|
| 19 |
+
|
| 20 |
+
- [ ] A subject matter expert (SME) has reviewed the technical accuracy of the content in this PR. In most cases, the author can be the SME. Open source contributions may require an SME review from GitHub staff.
|
| 21 |
+
- [ ] The changes in this PR meet [the docs fundamentals that are required for all content](http://docs.github.com/en/contributing/writing-for-github-docs/about-githubs-documentation-fundamentals).
|
| 22 |
+
- [ ] All CI checks are passing and the changes look good in the review environment.
|
.github/actions/cache-nextjs/action.yml
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Based on https://nextjs.org/docs/pages/building-your-application/deploying/ci-build-caching#github-actions
|
| 2 |
+
|
| 3 |
+
name: Cache Nextjs build cache
|
| 4 |
+
|
| 5 |
+
description: Cache the .next/cache according to best practices
|
| 6 |
+
|
| 7 |
+
runs:
|
| 8 |
+
using: 'composite'
|
| 9 |
+
steps:
|
| 10 |
+
- name: Cache .next/cache
|
| 11 |
+
uses: actions/cache@v4
|
| 12 |
+
with:
|
| 13 |
+
path: ${{ github.workspace }}/.next/cache
|
| 14 |
+
# Generate a new cache whenever packages or source files change.
|
| 15 |
+
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**/*.ts', '**/*.tsx') }}
|
| 16 |
+
# If source files changed but packages didn't, rebuild from a prior cache.
|
| 17 |
+
restore-keys: |
|
| 18 |
+
${{ runner.os }}-nextjs-v13-${{ hashFiles('**/package-lock.json') }}-
|
.github/actions/clone-translations/action.yml
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Clone translations
|
| 2 |
+
|
| 3 |
+
description: Clone all remote translations so they're available
|
| 4 |
+
|
| 5 |
+
inputs:
|
| 6 |
+
token:
|
| 7 |
+
description: PAT
|
| 8 |
+
required: true
|
| 9 |
+
|
| 10 |
+
runs:
|
| 11 |
+
using: 'composite'
|
| 12 |
+
steps:
|
| 13 |
+
- name: Clone Spanish
|
| 14 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 15 |
+
with:
|
| 16 |
+
repository: github/docs-internal.es-es
|
| 17 |
+
token: ${{ inputs.token }}
|
| 18 |
+
path: translations/es-es
|
| 19 |
+
|
| 20 |
+
- name: Clone Japanese
|
| 21 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 22 |
+
with:
|
| 23 |
+
repository: github/docs-internal.ja-jp
|
| 24 |
+
token: ${{ inputs.token }}
|
| 25 |
+
path: translations/ja-jp
|
| 26 |
+
|
| 27 |
+
- name: Clone Portuguese
|
| 28 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 29 |
+
with:
|
| 30 |
+
repository: github/docs-internal.pt-br
|
| 31 |
+
token: ${{ inputs.token }}
|
| 32 |
+
path: translations/pt-br
|
| 33 |
+
|
| 34 |
+
- name: Clone Simplified Chinese
|
| 35 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 36 |
+
with:
|
| 37 |
+
repository: github/docs-internal.zh-cn
|
| 38 |
+
token: ${{ inputs.token }}
|
| 39 |
+
path: translations/zh-cn
|
| 40 |
+
|
| 41 |
+
- name: Clone Russian
|
| 42 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 43 |
+
with:
|
| 44 |
+
repository: github/docs-internal.ru-ru
|
| 45 |
+
token: ${{ inputs.token }}
|
| 46 |
+
path: translations/ru-ru
|
| 47 |
+
|
| 48 |
+
- name: Clone French
|
| 49 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 50 |
+
with:
|
| 51 |
+
repository: github/docs-internal.fr-fr
|
| 52 |
+
token: ${{ inputs.token }}
|
| 53 |
+
path: translations/fr-fr
|
| 54 |
+
|
| 55 |
+
- name: Clone Korean
|
| 56 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 57 |
+
with:
|
| 58 |
+
repository: github/docs-internal.ko-kr
|
| 59 |
+
token: ${{ inputs.token }}
|
| 60 |
+
path: translations/ko-kr
|
| 61 |
+
|
| 62 |
+
- name: Clone German
|
| 63 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 64 |
+
with:
|
| 65 |
+
repository: github/docs-internal.de-de
|
| 66 |
+
token: ${{ inputs.token }}
|
| 67 |
+
path: translations/de-de
|
.github/actions/get-changed-files/action.yml
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Get changed files
|
| 2 |
+
description: Get a list of changed files
|
| 3 |
+
|
| 4 |
+
inputs:
|
| 5 |
+
files:
|
| 6 |
+
description: 'Files or directories to check for changes, supports names, directories, trailing slashes, and single trailing wildcard'
|
| 7 |
+
required: false
|
| 8 |
+
default: '.'
|
| 9 |
+
head:
|
| 10 |
+
description: 'Head ref to check for changes against'
|
| 11 |
+
required: false
|
| 12 |
+
output_file:
|
| 13 |
+
description: 'Optional file path to write the changes to'
|
| 14 |
+
required: false
|
| 15 |
+
|
| 16 |
+
outputs:
|
| 17 |
+
all_changed_files:
|
| 18 |
+
description: 'List of all changed files (unfiltered), includes removals'
|
| 19 |
+
value: ${{ steps.get_changes.outputs.all_changed_files }}
|
| 20 |
+
filtered_changed_files:
|
| 21 |
+
description: 'List of changed files matching the `files` filter, does not include removals'
|
| 22 |
+
value: ${{ steps.get_changes.outputs.filtered_changed_files }}
|
| 23 |
+
filtered_deleted_files:
|
| 24 |
+
description: 'List of deleted files matching the `files` filter'
|
| 25 |
+
value: ${{ steps.get_changes.outputs.filtered_deleted_files }}
|
| 26 |
+
filtered_renamed_files:
|
| 27 |
+
description: 'List of renamed files matching the `files` filter'
|
| 28 |
+
value: ${{ steps.get_changes.outputs.filtered_renamed_files }}
|
| 29 |
+
|
| 30 |
+
runs:
|
| 31 |
+
using: 'composite'
|
| 32 |
+
steps:
|
| 33 |
+
- name: Gather changed files
|
| 34 |
+
id: get_changes
|
| 35 |
+
env:
|
| 36 |
+
INPUT_FILES: ${{ inputs.files }}
|
| 37 |
+
INPUT_HEAD: ${{ inputs.head || github.event.pull_request.head.ref || github.event.merge_group.head_ref || github.ref_name }}
|
| 38 |
+
INPUT_OUTPUT_FILE: ${{ inputs.output_file }}
|
| 39 |
+
shell: bash
|
| 40 |
+
run: ${{ github.action_path }}/get-changed-files.sh
|
.github/actions/get-changed-files/get-changed-files.sh
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/bin/bash
|
| 2 |
+
|
| 3 |
+
# Required environment variables:
|
| 4 |
+
# $INPUT_FILES: Pattern(s) to filter files by (e.g., "content/** data/**")
|
| 5 |
+
# $INPUT_HEAD: Current branch or SHA for git diff
|
| 6 |
+
# $INPUT_OUTPUT_FILE: Optional file to redirect output to.
|
| 7 |
+
|
| 8 |
+
# Default value for files parameter if not provided
|
| 9 |
+
FILTER=${INPUT_FILES:-.}
|
| 10 |
+
|
| 11 |
+
# Print the filter
|
| 12 |
+
echo "__ using filter: __"
|
| 13 |
+
echo "$FILTER"
|
| 14 |
+
|
| 15 |
+
# Ensure we have the latest from the remote
|
| 16 |
+
echo "__ fetching latest changes __"
|
| 17 |
+
git fetch --depth=1 origin main
|
| 18 |
+
git fetch --depth=1 origin ${INPUT_HEAD:-HEAD}
|
| 19 |
+
|
| 20 |
+
# Get diff with status information
|
| 21 |
+
echo "__ running git diff with status __"
|
| 22 |
+
DIFF_OUTPUT=$(git diff --name-status origin/main origin/${INPUT_HEAD:-HEAD})
|
| 23 |
+
|
| 24 |
+
# Function to extract files by pattern from diff output
|
| 25 |
+
extract_files() {
|
| 26 |
+
local pattern=$1
|
| 27 |
+
local field=$2
|
| 28 |
+
echo "$DIFF_OUTPUT" | grep -E "$pattern" | cut -f$field
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
# Extract files by status
|
| 32 |
+
echo "__ extracting files by status __"
|
| 33 |
+
MODIFIED_FILES=$(extract_files "^[AM]" 2)
|
| 34 |
+
DELETED_FILES=$(extract_files "^D" 2)
|
| 35 |
+
RENAMED_OLD_FILES=$(extract_files "^R[0-9]+" 2)
|
| 36 |
+
RENAMED_NEW_FILES=$(extract_files "^R[0-9]+" 3)
|
| 37 |
+
|
| 38 |
+
# Create paired renames in format "oldname=>newname"
|
| 39 |
+
create_rename_pairs() {
|
| 40 |
+
local old_files=$1
|
| 41 |
+
local new_files=$2
|
| 42 |
+
local pairs=()
|
| 43 |
+
|
| 44 |
+
IFS=$'\n'
|
| 45 |
+
for i in $(seq 1 $(echo "$old_files" | wc -l)); do
|
| 46 |
+
OLD=$(echo "$old_files" | sed -n "${i}p")
|
| 47 |
+
NEW=$(echo "$new_files" | sed -n "${i}p")
|
| 48 |
+
pairs+=("$OLD=>$NEW")
|
| 49 |
+
done
|
| 50 |
+
unset IFS
|
| 51 |
+
|
| 52 |
+
printf "%s\n" "${pairs[@]}"
|
| 53 |
+
}
|
| 54 |
+
|
| 55 |
+
RENAMED_FILES_WITH_HISTORY=$(create_rename_pairs "$RENAMED_OLD_FILES" "$RENAMED_NEW_FILES")
|
| 56 |
+
|
| 57 |
+
# Combine files for different outputs
|
| 58 |
+
DIFF=$(echo -e "$MODIFIED_FILES\n$RENAMED_NEW_FILES" | sort | uniq)
|
| 59 |
+
ALL_DIFF=$(echo -e "$MODIFIED_FILES\n$DELETED_FILES\n$RENAMED_NEW_FILES" | sort | uniq)
|
| 60 |
+
|
| 61 |
+
# Debug output
|
| 62 |
+
echo "__ MODIFIED files found __"
|
| 63 |
+
echo "$MODIFIED_FILES"
|
| 64 |
+
echo "__ DELETED files found __"
|
| 65 |
+
echo "$DELETED_FILES"
|
| 66 |
+
echo "__ RENAMED files found (with history) __"
|
| 67 |
+
echo "$RENAMED_FILES_WITH_HISTORY"
|
| 68 |
+
echo "__ ALL changed files __"
|
| 69 |
+
echo "$ALL_DIFF"
|
| 70 |
+
|
| 71 |
+
# Function to filter files by pattern
|
| 72 |
+
filter_files() {
|
| 73 |
+
local files=$1
|
| 74 |
+
local result=""
|
| 75 |
+
|
| 76 |
+
IFS=$'\n'
|
| 77 |
+
for file in $files; do
|
| 78 |
+
while IFS= read -r pattern || [ -n "$pattern" ]; do
|
| 79 |
+
clean_pattern=${pattern%/}
|
| 80 |
+
if [[ $file == $clean_pattern || $file == $clean_pattern/* ]]; then
|
| 81 |
+
result="$result $file"
|
| 82 |
+
break
|
| 83 |
+
fi
|
| 84 |
+
done <<< "$FILTER"
|
| 85 |
+
done
|
| 86 |
+
unset IFS
|
| 87 |
+
|
| 88 |
+
echo "$result"
|
| 89 |
+
}
|
| 90 |
+
|
| 91 |
+
# Function to filter rename pairs
|
| 92 |
+
filter_renames() {
|
| 93 |
+
local new_files=$1
|
| 94 |
+
local old_files=$2
|
| 95 |
+
local result=""
|
| 96 |
+
|
| 97 |
+
IFS=$'\n'
|
| 98 |
+
for i in $(seq 1 $(echo "$new_files" | wc -l)); do
|
| 99 |
+
NEW=$(echo "$new_files" | sed -n "${i}p")
|
| 100 |
+
OLD=$(echo "$old_files" | sed -n "${i}p")
|
| 101 |
+
|
| 102 |
+
while IFS= read -r pattern || [ -n "$pattern" ]; do
|
| 103 |
+
clean_pattern=${pattern%/}
|
| 104 |
+
if [[ $NEW == $clean_pattern || $NEW == $clean_pattern/* ]]; then
|
| 105 |
+
result="$result $OLD=>$NEW"
|
| 106 |
+
break
|
| 107 |
+
fi
|
| 108 |
+
done <<< "$FILTER"
|
| 109 |
+
done
|
| 110 |
+
unset IFS
|
| 111 |
+
|
| 112 |
+
echo "$result"
|
| 113 |
+
}
|
| 114 |
+
|
| 115 |
+
# Filter the files to just the directories specified in the input files
|
| 116 |
+
if [ "$FILTER" != "." ]; then
|
| 117 |
+
echo "__ filtering files to only include $FILTER __"
|
| 118 |
+
|
| 119 |
+
FILTERED_MODIFIED=$(filter_files "$MODIFIED_FILES")
|
| 120 |
+
FILTERED_DELETED=$(filter_files "$DELETED_FILES")
|
| 121 |
+
FILTERED_RENAMED=$(filter_renames "$RENAMED_NEW_FILES" "$RENAMED_OLD_FILES")
|
| 122 |
+
|
| 123 |
+
# For filtered_changed_files (non-deleted files)
|
| 124 |
+
FILTERED_DIFF="$FILTERED_MODIFIED"
|
| 125 |
+
for new_file in $(echo "$FILTERED_RENAMED" | grep -o "=>[^[:space:]]*" | sed 's/=>//g'); do
|
| 126 |
+
FILTERED_DIFF="$FILTERED_DIFF $new_file"
|
| 127 |
+
done
|
| 128 |
+
|
| 129 |
+
MODIFIED_FILES=$FILTERED_MODIFIED
|
| 130 |
+
DELETED_FILES=$FILTERED_DELETED
|
| 131 |
+
RENAMED_FILES_WITH_HISTORY=$FILTERED_RENAMED
|
| 132 |
+
DIFF=$FILTERED_DIFF
|
| 133 |
+
|
| 134 |
+
echo "__ filtered MODIFIED files __"
|
| 135 |
+
echo "$MODIFIED_FILES"
|
| 136 |
+
echo "__ filtered DELETED files __"
|
| 137 |
+
echo "$DELETED_FILES"
|
| 138 |
+
echo "__ filtered RENAMED files (with history) __"
|
| 139 |
+
echo "$RENAMED_FILES_WITH_HISTORY"
|
| 140 |
+
echo "__ filtered changed files (non-deleted) __"
|
| 141 |
+
echo "$FILTERED_DIFF"
|
| 142 |
+
fi
|
| 143 |
+
|
| 144 |
+
# Function to format output (standardize whitespace)
|
| 145 |
+
format_output() {
|
| 146 |
+
local input=$1
|
| 147 |
+
echo "$input" | tr '\n' ' ' | tr -s ' ' | sed 's/^ *//' | sed 's/ *$//'
|
| 148 |
+
}
|
| 149 |
+
|
| 150 |
+
echo "__ formatting output __"
|
| 151 |
+
FORMATTED_MODIFIED=$(format_output "$MODIFIED_FILES")
|
| 152 |
+
FORMATTED_DELETED=$(format_output "$DELETED_FILES")
|
| 153 |
+
FORMATTED_DIFF=$(format_output "$DIFF")
|
| 154 |
+
FORMATTED_RENAMED=$(format_output "$RENAMED_FILES_WITH_HISTORY")
|
| 155 |
+
ALL_FORMATTED=$(format_output "$ALL_DIFF")
|
| 156 |
+
|
| 157 |
+
echo "Formatted modified: '$FORMATTED_MODIFIED'"
|
| 158 |
+
echo "Formatted deleted: '$FORMATTED_DELETED'"
|
| 159 |
+
echo "Formatted renamed: '$FORMATTED_RENAMED'"
|
| 160 |
+
echo "Formatted non-deleted changes: '$FORMATTED_DIFF'"
|
| 161 |
+
|
| 162 |
+
# Set the output for GitHub Actions
|
| 163 |
+
HAS_CHANGES=true
|
| 164 |
+
if [[ -z "$FORMATTED_DIFF" && -z "$FORMATTED_DELETED" ]]; then
|
| 165 |
+
echo "No changed files detected"
|
| 166 |
+
HAS_CHANGES=false
|
| 167 |
+
fi
|
| 168 |
+
|
| 169 |
+
# Function to set outputs either to a file or GITHUB_OUTPUT
|
| 170 |
+
set_outputs() {
|
| 171 |
+
local target=$1
|
| 172 |
+
|
| 173 |
+
if [[ "$HAS_CHANGES" == "false" ]]; then
|
| 174 |
+
echo "Setting empty outputs to $target"
|
| 175 |
+
echo "all_changed_files=" >> "$target"
|
| 176 |
+
echo "filtered_changed_files=" >> "$target"
|
| 177 |
+
echo "filtered_deleted_files=" >> "$target"
|
| 178 |
+
echo "filtered_renamed_files=" >> "$target"
|
| 179 |
+
else
|
| 180 |
+
echo "Setting non-empty outputs to $target"
|
| 181 |
+
echo "all_changed_files<<EOF" >> "$target"
|
| 182 |
+
echo "$ALL_FORMATTED" >> "$target"
|
| 183 |
+
echo "EOF" >> "$target"
|
| 184 |
+
|
| 185 |
+
echo "filtered_changed_files<<EOF" >> "$target"
|
| 186 |
+
echo "$FORMATTED_DIFF" >> "$target"
|
| 187 |
+
echo "EOF" >> "$target"
|
| 188 |
+
|
| 189 |
+
echo "filtered_deleted_files<<EOF" >> "$target"
|
| 190 |
+
echo "$FORMATTED_DELETED" >> "$target"
|
| 191 |
+
echo "EOF" >> "$target"
|
| 192 |
+
|
| 193 |
+
echo "filtered_renamed_files<<EOF" >> "$target"
|
| 194 |
+
echo "$FORMATTED_RENAMED" >> "$target"
|
| 195 |
+
echo "EOF" >> "$target"
|
| 196 |
+
fi
|
| 197 |
+
}
|
| 198 |
+
|
| 199 |
+
# Set outputs to the appropriate target
|
| 200 |
+
if [[ -n "$INPUT_OUTPUT_FILE" ]]; then
|
| 201 |
+
set_outputs "$INPUT_OUTPUT_FILE"
|
| 202 |
+
else
|
| 203 |
+
set_outputs "$GITHUB_OUTPUT"
|
| 204 |
+
fi
|
.github/actions/get-docs-early-access/action.yml
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Clone and add docs-early-access
|
| 2 |
+
|
| 3 |
+
description: Clone docs-early-access and copy its content into the repo
|
| 4 |
+
|
| 5 |
+
inputs:
|
| 6 |
+
token:
|
| 7 |
+
description: PAT
|
| 8 |
+
required: true
|
| 9 |
+
|
| 10 |
+
runs:
|
| 11 |
+
using: 'composite'
|
| 12 |
+
steps:
|
| 13 |
+
- name: Figure out which branch to checkout
|
| 14 |
+
id: check-early-access
|
| 15 |
+
env:
|
| 16 |
+
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
|
| 17 |
+
GITHUB_TOKEN: ${{ inputs.token }}
|
| 18 |
+
shell: bash
|
| 19 |
+
run: npm run what-docs-early-access-branch
|
| 20 |
+
|
| 21 |
+
- name: Clone
|
| 22 |
+
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
|
| 23 |
+
with:
|
| 24 |
+
repository: github/docs-early-access
|
| 25 |
+
token: ${{ inputs.token }}
|
| 26 |
+
path: docs-early-access
|
| 27 |
+
ref: ${{ steps.check-early-access.outputs.branch }}
|
| 28 |
+
|
| 29 |
+
- name: Merge docs-early-access repo's folders
|
| 30 |
+
shell: bash
|
| 31 |
+
run: |
|
| 32 |
+
src/early-access/scripts/merge-early-access.sh
|
| 33 |
+
rm -fr docs-early-access
|
.github/actions/install-cocofix/action.yml
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Install CocoFix
|
| 2 |
+
|
| 3 |
+
description: Installs the private package `@github/cocofix` from the GitHub Package Registry.
|
| 4 |
+
|
| 5 |
+
inputs:
|
| 6 |
+
token:
|
| 7 |
+
description: PAT
|
| 8 |
+
required: true
|
| 9 |
+
|
| 10 |
+
runs:
|
| 11 |
+
using: 'composite'
|
| 12 |
+
steps:
|
| 13 |
+
- name: Install CoCoFix
|
| 14 |
+
shell: bash
|
| 15 |
+
env:
|
| 16 |
+
TOKEN: ${{ inputs.token }}
|
| 17 |
+
run: |
|
| 18 |
+
npm install --no-save \
|
| 19 |
+
'--@github:registry=https://npm.pkg.github.com' \
|
| 20 |
+
'--//npm.pkg.github.com/:_authToken=${TOKEN}' \
|
| 21 |
+
@github/cocofix codeql-ts
|
.github/actions/labeler/action.yml
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Labeler
|
| 2 |
+
|
| 3 |
+
description: Adds labels to an Issue or PR
|
| 4 |
+
inputs:
|
| 5 |
+
token:
|
| 6 |
+
description: defaults to GITHUB_TOKEN, otherwise can use a PAT
|
| 7 |
+
required: false
|
| 8 |
+
default: ${{ github.token }}
|
| 9 |
+
addLabels:
|
| 10 |
+
description: array of labels to apply
|
| 11 |
+
required: false
|
| 12 |
+
removeLabels:
|
| 13 |
+
description: array of labels to remove
|
| 14 |
+
required: false
|
| 15 |
+
ignoreIfAssigned:
|
| 16 |
+
description: don't apply labels if there are assignees
|
| 17 |
+
required: false
|
| 18 |
+
ignoreIfLabeled:
|
| 19 |
+
description: don't apply labels if there are already labels added
|
| 20 |
+
required: false
|
| 21 |
+
|
| 22 |
+
runs:
|
| 23 |
+
using: 'composite'
|
| 24 |
+
steps:
|
| 25 |
+
- name: Add label to an issue or pr
|
| 26 |
+
run: npm run labeler
|
| 27 |
+
shell: bash
|
| 28 |
+
env:
|
| 29 |
+
GITHUB_TOKEN: ${{ inputs.token }}
|
| 30 |
+
ADD_LABELS: ${{ inputs.addLabels }}
|
| 31 |
+
REMOVE_LABELS: ${{ inputs.removeLabels }}
|
| 32 |
+
IGNORE_IF_ASSIGNED: ${{ inputs.ignoreIfAssigned }}
|
| 33 |
+
IGNORE_IF_LABELED: ${{ inputs.ignoreIfLabeled }}
|
.github/actions/labeler/labeler.ts
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* See function main in this file for documentation */
|
| 2 |
+
|
| 3 |
+
import coreLib from '@actions/core'
|
| 4 |
+
import { type Octokit } from '@octokit/rest'
|
| 5 |
+
import { CoreInject } from '@/links/scripts/action-injections'
|
| 6 |
+
|
| 7 |
+
import github from '@/workflows/github'
|
| 8 |
+
import { getActionContext } from '@/workflows/action-context'
|
| 9 |
+
import { boolEnvVar } from '@/workflows/get-env-inputs'
|
| 10 |
+
|
| 11 |
+
type Options = {
|
| 12 |
+
addLabels?: string[]
|
| 13 |
+
removeLabels?: string[]
|
| 14 |
+
ignoreIfAssigned?: boolean
|
| 15 |
+
ignoreIfLabeled?: boolean
|
| 16 |
+
issue_number?: number
|
| 17 |
+
owner?: string
|
| 18 |
+
repo?: string
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
// When this file is invoked directly from action as opposed to being imported
|
| 22 |
+
if (import.meta.url.endsWith(process.argv[1])) {
|
| 23 |
+
if (!process.env.GITHUB_TOKEN) {
|
| 24 |
+
throw new Error('You must set the GITHUB_TOKEN environment variable.')
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
const { ADD_LABELS, REMOVE_LABELS } = process.env
|
| 28 |
+
|
| 29 |
+
const octokit = github()
|
| 30 |
+
|
| 31 |
+
const opts: Options = {
|
| 32 |
+
ignoreIfAssigned: boolEnvVar('IGNORE_IF_ASSIGNED'),
|
| 33 |
+
ignoreIfLabeled: boolEnvVar('IGNORE_IF_LABELED'),
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
// labels come in comma separated from actions
|
| 37 |
+
if (typeof ADD_LABELS === 'string') {
|
| 38 |
+
opts.addLabels = [...ADD_LABELS.split(',')].map((l) => l.trim())
|
| 39 |
+
} else {
|
| 40 |
+
opts.addLabels = []
|
| 41 |
+
}
|
| 42 |
+
if (typeof REMOVE_LABELS === 'string') {
|
| 43 |
+
opts.removeLabels = [...REMOVE_LABELS.split(',')].map((l) => l.trim())
|
| 44 |
+
} else {
|
| 45 |
+
opts.removeLabels = []
|
| 46 |
+
}
|
| 47 |
+
|
| 48 |
+
const actionContext = getActionContext()
|
| 49 |
+
const { owner, repo } = actionContext
|
| 50 |
+
let issueOrPrNumber = actionContext?.pull_request?.number
|
| 51 |
+
|
| 52 |
+
if (!issueOrPrNumber) {
|
| 53 |
+
issueOrPrNumber = actionContext?.issue?.number
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
opts.issue_number = issueOrPrNumber
|
| 57 |
+
opts.owner = owner
|
| 58 |
+
opts.repo = repo
|
| 59 |
+
|
| 60 |
+
main(coreLib, octokit, opts)
|
| 61 |
+
}
|
| 62 |
+
|
| 63 |
+
/*
|
| 64 |
+
* Applies labels to an issue or pull request.
|
| 65 |
+
*
|
| 66 |
+
* opts:
|
| 67 |
+
* issue_number {number} id of the issue or pull request to label
|
| 68 |
+
* owner {string} owner of the repository
|
| 69 |
+
* repo {string} repository name
|
| 70 |
+
* addLabels {Array<string>} array of labels to apply
|
| 71 |
+
* removeLabels {Array<string>} array of labels to remove
|
| 72 |
+
* ignoreIfAssigned {boolean} don't apply labels if there are assignees
|
| 73 |
+
* ignoreIfLabeled {boolean} don't apply labels if there are already labels added
|
| 74 |
+
*/
|
| 75 |
+
export default async function main(
|
| 76 |
+
core: typeof coreLib | CoreInject,
|
| 77 |
+
octokit: Octokit,
|
| 78 |
+
opts: Options = {},
|
| 79 |
+
) {
|
| 80 |
+
if (opts.addLabels?.length === 0 && opts.removeLabels?.length === 0) {
|
| 81 |
+
core.info('No labels to add or remove specified, nothing to do.')
|
| 82 |
+
return
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
if (!opts.issue_number || !opts.owner || !opts.repo) {
|
| 86 |
+
throw new Error(`Missing required parameters ${JSON.stringify(opts)}`)
|
| 87 |
+
}
|
| 88 |
+
const issueOpts = {
|
| 89 |
+
issue_number: opts.issue_number,
|
| 90 |
+
owner: opts.owner,
|
| 91 |
+
repo: opts.repo,
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
if (opts.ignoreIfAssigned || opts.ignoreIfLabeled) {
|
| 95 |
+
try {
|
| 96 |
+
const { data } = await octokit.issues.get(issueOpts)
|
| 97 |
+
|
| 98 |
+
if (opts.ignoreIfAssigned) {
|
| 99 |
+
if (data.assignees?.length) {
|
| 100 |
+
core.info(
|
| 101 |
+
`ignore-if-assigned is true: not applying labels since there's ${data.assignees.length} assignees`,
|
| 102 |
+
)
|
| 103 |
+
return 0
|
| 104 |
+
}
|
| 105 |
+
}
|
| 106 |
+
|
| 107 |
+
if (opts.ignoreIfLabeled) {
|
| 108 |
+
if (data.labels.length > 0) {
|
| 109 |
+
core.info(
|
| 110 |
+
`ignore-if-labeled is true: not applying labels since there's ${data.labels.length} labels applied`,
|
| 111 |
+
)
|
| 112 |
+
return 0
|
| 113 |
+
}
|
| 114 |
+
}
|
| 115 |
+
} catch (err) {
|
| 116 |
+
throw new Error(`Error getting issue: ${err}`)
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
if (opts.removeLabels?.length) {
|
| 121 |
+
// removing a label fails if the label isn't already applied
|
| 122 |
+
let appliedLabels = []
|
| 123 |
+
|
| 124 |
+
try {
|
| 125 |
+
const { data } = await octokit.issues.get(issueOpts)
|
| 126 |
+
appliedLabels = data.labels.map((l) => (typeof l === 'string' ? l : l.name))
|
| 127 |
+
} catch (err) {
|
| 128 |
+
throw new Error(`Error getting issue: ${err}`)
|
| 129 |
+
}
|
| 130 |
+
|
| 131 |
+
opts.removeLabels = opts.removeLabels?.filter((l) => appliedLabels.includes(l))
|
| 132 |
+
|
| 133 |
+
await Promise.all(
|
| 134 |
+
opts.removeLabels.map(async (label) => {
|
| 135 |
+
try {
|
| 136 |
+
await octokit.issues.removeLabel({
|
| 137 |
+
...issueOpts,
|
| 138 |
+
name: label,
|
| 139 |
+
})
|
| 140 |
+
} catch (err) {
|
| 141 |
+
throw new Error(`Error removing label: ${err}`)
|
| 142 |
+
}
|
| 143 |
+
}),
|
| 144 |
+
)
|
| 145 |
+
|
| 146 |
+
if (opts.removeLabels?.length) {
|
| 147 |
+
core.info(`Removed labels: ${opts.removeLabels.join(', ')}`)
|
| 148 |
+
}
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
if (opts.addLabels?.length) {
|
| 152 |
+
try {
|
| 153 |
+
await octokit.issues.addLabels({
|
| 154 |
+
...issueOpts,
|
| 155 |
+
labels: opts.addLabels,
|
| 156 |
+
})
|
| 157 |
+
|
| 158 |
+
core.info(`Added labels: ${opts.addLabels.join(', ')}`)
|
| 159 |
+
} catch (err) {
|
| 160 |
+
throw new Error(`Error adding label: ${err}`)
|
| 161 |
+
}
|
| 162 |
+
}
|
| 163 |
+
}
|
.github/actions/node-npm-setup/action.yml
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Node set up composite
|
| 2 |
+
|
| 3 |
+
description: Will set up Node and install all packages by caching node_modules
|
| 4 |
+
|
| 5 |
+
runs:
|
| 6 |
+
using: 'composite'
|
| 7 |
+
steps:
|
| 8 |
+
- name: Cache node_modules
|
| 9 |
+
uses: actions/cache@v4
|
| 10 |
+
id: cache-node_modules
|
| 11 |
+
env:
|
| 12 |
+
# Default is 10 min, per segment, but we can make it much smaller
|
| 13 |
+
# because it's not the end of the world if the cache restore fails.
|
| 14 |
+
SEGMENT_DOWNLOAD_TIMEOUT_MINS: '1'
|
| 15 |
+
with:
|
| 16 |
+
path: node_modules
|
| 17 |
+
key: ${{ runner.os }}-node_modules-${{ hashFiles('package*.json') }}-${{ hashFiles('.github/actions/node-npm-setup/action.yml') }}
|
| 18 |
+
|
| 19 |
+
- name: Setup Node.js
|
| 20 |
+
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
|
| 21 |
+
with:
|
| 22 |
+
node-version-file: 'package.json'
|
| 23 |
+
cache: npm
|
| 24 |
+
|
| 25 |
+
- name: Install dependencies
|
| 26 |
+
if: ${{ steps.cache-node_modules.outputs.cache-hit != 'true' }}
|
| 27 |
+
shell: bash
|
| 28 |
+
run: npm ci
|
.github/actions/precompute-pageinfo/action.yml
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Warmup pageinfo cache
|
| 2 |
+
|
| 3 |
+
description: Run this to create a .pageinfo-cache.json.br file
|
| 4 |
+
|
| 5 |
+
inputs:
|
| 6 |
+
restore-only:
|
| 7 |
+
description: Only attempt to restore, don't warm up
|
| 8 |
+
required: false
|
| 9 |
+
|
| 10 |
+
runs:
|
| 11 |
+
using: 'composite'
|
| 12 |
+
steps:
|
| 13 |
+
# The caching technique here is to "unboundedly" add to the cache.
|
| 14 |
+
# By unboundedly, it means the cached item will grow and grow.
|
| 15 |
+
# The general idea is that we A) restore from cache, B) replace the
|
| 16 |
+
# file by running the script, and C) save the file back to cache.
|
| 17 |
+
# Optionally, you can have it just do A (and not B and C).
|
| 18 |
+
|
| 19 |
+
- name: Cache .pageinfo-cache.json.br (restore)
|
| 20 |
+
uses: actions/cache/restore@v4
|
| 21 |
+
with:
|
| 22 |
+
path: .pageinfo-cache.json.br
|
| 23 |
+
key: pageinfo-cache-
|
| 24 |
+
restore-keys: pageinfo-cache-
|
| 25 |
+
|
| 26 |
+
# When we use this composite action from deployment workflows
|
| 27 |
+
# we don't have any Node installed or any of its packages. I.e. we never
|
| 28 |
+
# run `npm ci` in those actions. For security sake.
|
| 29 |
+
# So we can't do things that require Node code.
|
| 30 |
+
# Tests and others will omit the `restore-only` input, but
|
| 31 |
+
# prepping for Docker build and push, will set it to a non-empty
|
| 32 |
+
# string which basically means "If you can restore it, great.
|
| 33 |
+
# If not, that's fine, don't bother".
|
| 34 |
+
- name: Run script
|
| 35 |
+
if: ${{ inputs.restore-only == '' }}
|
| 36 |
+
shell: bash
|
| 37 |
+
run: npm run precompute-pageinfo -- --max-versions 2
|
| 38 |
+
|
| 39 |
+
- name: Cache .remotejson-cache (save)
|
| 40 |
+
if: ${{ inputs.restore-only == '' }}
|
| 41 |
+
uses: actions/cache/save@v4
|
| 42 |
+
with:
|
| 43 |
+
path: .pageinfo-cache.json.br
|
| 44 |
+
key: pageinfo-cache-${{ github.sha }}
|
.github/actions/retry-command/action.yml
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: 'Retry command'
|
| 2 |
+
description: 'Retries any command with configurable attempts and delay'
|
| 3 |
+
inputs:
|
| 4 |
+
command:
|
| 5 |
+
description: 'The command to retry'
|
| 6 |
+
required: true
|
| 7 |
+
max_attempts:
|
| 8 |
+
description: 'Maximum number of retry attempts'
|
| 9 |
+
required: false
|
| 10 |
+
default: '12'
|
| 11 |
+
delay:
|
| 12 |
+
description: 'Delay between attempts in seconds'
|
| 13 |
+
required: false
|
| 14 |
+
default: '30'
|
| 15 |
+
|
| 16 |
+
runs:
|
| 17 |
+
using: 'composite'
|
| 18 |
+
steps:
|
| 19 |
+
- name: Retry command
|
| 20 |
+
shell: bash
|
| 21 |
+
run: |
|
| 22 |
+
# Generic retry function: configurable attempts and delay
|
| 23 |
+
retry_command() {
|
| 24 |
+
local max_attempts=${{ inputs.max_attempts }}
|
| 25 |
+
local delay=${{ inputs.delay }}
|
| 26 |
+
local attempt=1
|
| 27 |
+
local command="${{ inputs.command }}"
|
| 28 |
+
|
| 29 |
+
while [ $attempt -le $max_attempts ]; do
|
| 30 |
+
echo "Attempt $attempt/$max_attempts: Running command..."
|
| 31 |
+
echo "Command: $command"
|
| 32 |
+
if eval "$command"; then
|
| 33 |
+
echo "Command succeeded on attempt $attempt"
|
| 34 |
+
return 0
|
| 35 |
+
else
|
| 36 |
+
echo "Attempt $attempt failed"
|
| 37 |
+
if [ $attempt -lt $max_attempts ]; then
|
| 38 |
+
echo "Waiting $delay seconds before retry..."
|
| 39 |
+
sleep $delay
|
| 40 |
+
fi
|
| 41 |
+
fi
|
| 42 |
+
attempt=$((attempt + 1))
|
| 43 |
+
done
|
| 44 |
+
|
| 45 |
+
echo "Command failed after $max_attempts attempts"
|
| 46 |
+
return 1
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
retry_command
|
.github/actions/setup-elasticsearch/action.yml
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# For the sake of saving time, only run this step if the test-group is one that will run tests against an Elasticsearch on localhost.
|
| 2 |
+
name: Set up local Elasticsearch
|
| 3 |
+
|
| 4 |
+
description: Install a local Elasticsearch with version that matches prod
|
| 5 |
+
|
| 6 |
+
inputs:
|
| 7 |
+
token:
|
| 8 |
+
description: PAT
|
| 9 |
+
required: true
|
| 10 |
+
elasticsearch_version:
|
| 11 |
+
description: Version of Elasticsearch to install
|
| 12 |
+
required: true
|
| 13 |
+
# Make sure the version matches production and is available on Docker Hub
|
| 14 |
+
default: '8.12.0'
|
| 15 |
+
|
| 16 |
+
runs:
|
| 17 |
+
using: 'composite'
|
| 18 |
+
steps:
|
| 19 |
+
# Cache the elasticsearch image to prevent Docker Hub rate limiting
|
| 20 |
+
- name: Cache Docker layers
|
| 21 |
+
id: cache-docker-layers
|
| 22 |
+
uses: actions/cache@v4
|
| 23 |
+
with:
|
| 24 |
+
path: /tmp/docker-cache
|
| 25 |
+
key: ${{ runner.os }}-elasticsearch-${{ inputs.elasticsearch_version }}
|
| 26 |
+
restore-keys: |
|
| 27 |
+
${{ runner.os }}-elasticsearch-
|
| 28 |
+
|
| 29 |
+
- name: Load cached Docker image
|
| 30 |
+
shell: bash
|
| 31 |
+
if: steps.cache-docker-layers.outputs.cache-hit == 'true'
|
| 32 |
+
run: docker load -i /tmp/docker-cache/elasticsearch.tar || echo "No cache found for elasticsearch, pulling image"
|
| 33 |
+
|
| 34 |
+
- name: Pull Docker image
|
| 35 |
+
shell: bash
|
| 36 |
+
if: steps.cache-docker-layers.outputs.cache-hit != 'true'
|
| 37 |
+
run: docker pull elasticsearch:${{ inputs.elasticsearch_version }}
|
| 38 |
+
|
| 39 |
+
- name: Save Docker image to cache
|
| 40 |
+
shell: bash
|
| 41 |
+
if: steps.cache-docker-layers.outputs.cache-hit != 'true'
|
| 42 |
+
run: |
|
| 43 |
+
mkdir -p /tmp/docker-cache
|
| 44 |
+
docker save -o /tmp/docker-cache/elasticsearch.tar elasticsearch:${{ inputs.elasticsearch_version }}
|
| 45 |
+
|
| 46 |
+
# Setups the Elasticsearch container
|
| 47 |
+
# Derived from https://github.com/getong/elasticsearch-action
|
| 48 |
+
- name: Run Docker container
|
| 49 |
+
shell: bash
|
| 50 |
+
env:
|
| 51 |
+
INPUT_ELASTICSEARCH_VERSION: ${{ inputs.elasticsearch_version }}
|
| 52 |
+
INPUT_HOST_PORT: 9200
|
| 53 |
+
INPUT_CONTAINER_PORT: 9200
|
| 54 |
+
INPUT_HOST_NODE_PORT: 9300
|
| 55 |
+
INPUT_NODE_PORT: 9300
|
| 56 |
+
INPUT_DISCOVERY_TYPE: 'single-node'
|
| 57 |
+
run: |
|
| 58 |
+
docker network create elastic
|
| 59 |
+
|
| 60 |
+
docker run --network elastic \
|
| 61 |
+
-e 'node.name=es1' \
|
| 62 |
+
-e 'cluster.name=docker-elasticsearch' \
|
| 63 |
+
-e 'cluster.initial_master_nodes=es1' \
|
| 64 |
+
-e 'discovery.seed_hosts=es1' \
|
| 65 |
+
-e 'cluster.routing.allocation.disk.threshold_enabled=false' \
|
| 66 |
+
-e 'bootstrap.memory_lock=true' \
|
| 67 |
+
-e 'ES_JAVA_OPTS=-Xms1g -Xmx1g' \
|
| 68 |
+
-e 'xpack.security.enabled=false' \
|
| 69 |
+
-e 'xpack.license.self_generated.type=basic' \
|
| 70 |
+
--ulimit nofile=65536:65536 \
|
| 71 |
+
--ulimit memlock=-1:-1 \
|
| 72 |
+
--name='es1' \
|
| 73 |
+
-d \
|
| 74 |
+
-p $INPUT_HOST_PORT:$INPUT_CONTAINER_PORT \
|
| 75 |
+
-p $INPUT_HOST_NODE_PORT:$INPUT_NODE_PORT \
|
| 76 |
+
-e discovery_type=$INPUT_DISCOVERY_TYPE \
|
| 77 |
+
elasticsearch:$INPUT_ELASTICSEARCH_VERSION
|
| 78 |
+
|
| 79 |
+
# Check if Elasticsearch is up and running
|
| 80 |
+
for i in {1..120}; do
|
| 81 |
+
if curl --silent --fail http://localhost:9200; then
|
| 82 |
+
echo "Elasticsearch is up and running"
|
| 83 |
+
exit 0
|
| 84 |
+
fi
|
| 85 |
+
echo "Waiting for Elasticsearch to be ready..."
|
| 86 |
+
sleep 1
|
| 87 |
+
done
|
| 88 |
+
echo "Elasticsearch did not become ready in time"
|
| 89 |
+
exit 1
|
.github/actions/slack-alert/action.yml
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Send Slack notification if workflow fails
|
| 2 |
+
description: Send Slack notification if workflow fails
|
| 3 |
+
|
| 4 |
+
inputs:
|
| 5 |
+
slack_channel_id:
|
| 6 |
+
description: Slack channel ID
|
| 7 |
+
required: true
|
| 8 |
+
slack_token:
|
| 9 |
+
description: Slack token
|
| 10 |
+
required: true
|
| 11 |
+
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 }}
|
| 14 |
+
required: false
|
| 15 |
+
color:
|
| 16 |
+
description: The color of the Slack message
|
| 17 |
+
default: failure
|
| 18 |
+
required: false
|
| 19 |
+
|
| 20 |
+
runs:
|
| 21 |
+
using: composite
|
| 22 |
+
steps:
|
| 23 |
+
- name: Send Slack notification if workflow fails
|
| 24 |
+
uses: someimportantcompany/github-actions-slack-message@a975b440de2bcef178d451cc70d4c1161b5a30cd
|
| 25 |
+
with:
|
| 26 |
+
channel: ${{ inputs.slack_channel_id }}
|
| 27 |
+
bot-token: ${{ inputs.slack_token }}
|
| 28 |
+
color: ${{ inputs.color }}
|
| 29 |
+
text: ${{ inputs.message }}
|
.github/actions/warmup-remotejson-cache/action.yml
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
name: Warmup getRemoteJSON's cache
|
| 2 |
+
|
| 3 |
+
description: Run the script that prepares the disk-cache for getRemoteJSON
|
| 4 |
+
|
| 5 |
+
inputs:
|
| 6 |
+
restore-only:
|
| 7 |
+
description: Only attempt to restore, don't warm up
|
| 8 |
+
required: false
|
| 9 |
+
|
| 10 |
+
runs:
|
| 11 |
+
using: 'composite'
|
| 12 |
+
steps:
|
| 13 |
+
# The caching technique here is to unboundedly add and add to the cache.
|
| 14 |
+
# You "wrap" the step that appends to disk and it will possibly retrieve
|
| 15 |
+
# some from the cache, then save it when it's got more in it.
|
| 16 |
+
- name: Cache .remotejson-cache (restore)
|
| 17 |
+
uses: actions/cache/restore@v4
|
| 18 |
+
with:
|
| 19 |
+
path: .remotejson-cache
|
| 20 |
+
key: remotejson-cache-
|
| 21 |
+
restore-keys: remotejson-cache-
|
| 22 |
+
|
| 23 |
+
# When we use this composite action from deployment workflows
|
| 24 |
+
# we don't have any Node installed or any of its packages. I.e. we never
|
| 25 |
+
# run `npm ci` in those actions. For security sake.
|
| 26 |
+
# So we can't do things that require Node code.
|
| 27 |
+
# Tests and others will omit the `restore-only` input, but
|
| 28 |
+
# prepping for Docker build and push, will set it to a non-empty
|
| 29 |
+
# string which basically means "If you can restore it, great.
|
| 30 |
+
# If not, that's fine, don't bother".
|
| 31 |
+
- name: Run script
|
| 32 |
+
if: ${{ inputs.restore-only == '' }}
|
| 33 |
+
shell: bash
|
| 34 |
+
run: npm run warmup-remotejson
|
| 35 |
+
|
| 36 |
+
- name: Cache .remotejson-cache (save)
|
| 37 |
+
if: ${{ inputs.restore-only == '' }}
|
| 38 |
+
uses: actions/cache/save@v4
|
| 39 |
+
with:
|
| 40 |
+
path: .remotejson-cache
|
| 41 |
+
key: remotejson-cache-${{ github.sha }}
|
.github/config.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Configuration for welcome - https://github.com/behaviorbot/welcome
|
| 2 |
+
|
| 3 |
+
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
|
| 4 |
+
# Comment to be posted to on first time issues
|
| 5 |
+
newIssueWelcomeComment: >
|
| 6 |
+
Thanks for opening this issue. A GitHub docs team member should be by to give feedback soon. In the meantime, please check out the [contributing guidelines](https://docs.github.com/en/contributing).
|
| 7 |
+
|
| 8 |
+
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
|
| 9 |
+
# Comment to be posted to on PRs from first time contributors in your repository
|
| 10 |
+
newPRWelcomeComment: >
|
| 11 |
+
Thanks for opening this pull request! A GitHub docs team member should be by to give feedback soon. In the meantime, please check out the [contributing guidelines](https://docs.github.com/en/contributing).
|
.github/dependabot.yml
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version: 2
|
| 2 |
+
|
| 3 |
+
registries:
|
| 4 |
+
ghcr: # Define access for a private registry
|
| 5 |
+
type: docker-registry
|
| 6 |
+
url: ghcr.io
|
| 7 |
+
username: PAT
|
| 8 |
+
password: ${{secrets.BASE_CONTAINER_IMAGE_READER_DEPENDABOT}}
|
| 9 |
+
|
| 10 |
+
updates:
|
| 11 |
+
- package-ecosystem: npm
|
| 12 |
+
directory: '/'
|
| 13 |
+
schedule:
|
| 14 |
+
interval: weekly
|
| 15 |
+
day: tuesday
|
| 16 |
+
ignore:
|
| 17 |
+
# Because this is so dependent on the remote server we use
|
| 18 |
+
- dependency-name: '@elastic/elasticsearch'
|
| 19 |
+
# Because whatever we have needs to match what @primer/react also uses
|
| 20 |
+
- dependency-name: 'styled-components'
|
| 21 |
+
- dependency-name: '*'
|
| 22 |
+
update-types:
|
| 23 |
+
['version-update:semver-patch', 'version-update:semver-minor']
|
| 24 |
+
|
| 25 |
+
- package-ecosystem: 'github-actions'
|
| 26 |
+
directory: '/'
|
| 27 |
+
schedule:
|
| 28 |
+
interval: weekly
|
| 29 |
+
day: tuesday
|
| 30 |
+
ignore:
|
| 31 |
+
- dependency-name: '*'
|
| 32 |
+
update-types:
|
| 33 |
+
['version-update:semver-patch', 'version-update:semver-minor']
|
| 34 |
+
- dependency-name: 'github/internal-actions'
|
| 35 |
+
|
| 36 |
+
- package-ecosystem: 'docker'
|
| 37 |
+
registries:
|
| 38 |
+
- ghcr
|
| 39 |
+
directory: '/'
|
| 40 |
+
schedule:
|
| 41 |
+
interval: daily
|
| 42 |
+
groups:
|
| 43 |
+
baseImages:
|
| 44 |
+
patterns:
|
| 45 |
+
- '*'
|
| 46 |
+
ignore:
|
| 47 |
+
- dependency-name: 'node' # Ignore Dockerfile.openapi_decorator
|
.github/instructions/all.instructions.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
applyTo: "**"
|
| 3 |
+
---
|
| 4 |
+
|
| 5 |
+
# Copilot instructions for docs.github.com
|
| 6 |
+
|
| 7 |
+
This repository contains code to run the GitHub Docs site on docs.github.com, as well as the content that the site displays. We write the code in JavaScript and TypeScript, and we write the content primarily in Markdown.
|
| 8 |
+
|
| 9 |
+
## Creating a pull request
|
| 10 |
+
|
| 11 |
+
When you create a pull request:
|
| 12 |
+
|
| 13 |
+
1. **Always** make the first line of the PR description the following (in italics):
|
| 14 |
+
|
| 15 |
+
`_Copilot Chat generated this pull request._`
|
| 16 |
+
|
| 17 |
+
2. Optionally, you may include a collapsed section summarizing the prompt or discussion with Copilot Chat:
|
| 18 |
+
|
| 19 |
+
```markdown
|
| 20 |
+
<details><summary>Prompt summary - submitted by @GITHUB-USER-ID</summary>
|
| 21 |
+
|
| 22 |
+
> [Prompt summary text here]
|
| 23 |
+
|
| 24 |
+
</details>
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
This helps reviewers understand the context and intent behind the automated changes.
|
| 28 |
+
|
| 29 |
+
3. Label with "llm-generated".
|
| 30 |
+
4. If an issue exists, include "fixes owner/repo#issue" or "towards owner/repo#issue" as appropriate.
|
| 31 |
+
5. Always _escape backticks_ when you use gh cli.
|
.github/instructions/code.instructions.md
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
applyTo: "src/**,.github/**,config/**,.devcontainer/**,**Dockerfile,package*.json"
|
| 3 |
+
---
|
| 4 |
+
|
| 5 |
+
# Copilot code instructions for docs.github.com
|
| 6 |
+
|
| 7 |
+
For code reviews, follow guidelines, tests, and validate instructions. For creating or updating pull requests or branches, follow the steps instructions.
|
| 8 |
+
|
| 9 |
+
## Guidelines
|
| 10 |
+
|
| 11 |
+
- If available, use ripgrep (`rg`) instead of `grep`.
|
| 12 |
+
- Make sure to always _escape backticks_ when using gh cli.
|
| 13 |
+
- All scripts should be listed in `package.json` and use `tsx`.
|
| 14 |
+
- Whenever you create or comment on an issue or pull request, indicate you are an LLM.
|
| 15 |
+
- Be careful fetching full HTML pages off the internet. Prefer to use gh cli whenever possible for github.com. Limit the number of tokens when grabbing HTML.
|
| 16 |
+
- Avoid pull requests with over 300 lines of code changed. When significantly larger, offer to split up into smaller pull requests if possible.
|
| 17 |
+
- All new code should be written in TypeScript and not JavaScript.
|
| 18 |
+
- We use absolute imports, relative to the `src` directory, using the `@` symbol. For example, `getRedirect` which lives in `src/redirects/lib/get-redirect.ts` can be imported with `import getRedirect from '@/redirects/lib/get-redirect'`. The same rule applies for TypeScript (`.ts`) imports, e.g. `import type { GeneralSearchHit } from '@/search/types'`
|
| 19 |
+
- For updates to the content linter, read important information in `src/content-linter/README.md`.
|
| 20 |
+
|
| 21 |
+
## Tests
|
| 22 |
+
|
| 23 |
+
We use `vitest` to write unit tests. Tests live in their own files in the `tests` subdirectory of a source (src) directory, e.g. `src/search/tests/api-ai-search.ts`. For integration tests, we can use the mock server in `src/tests/mocks/start-mock-server.ts` to mock external requests. For UI rendering tests, we use `playwright` and write tests in `src/fixtures/tests/playwright-rendering.spec.ts`
|
| 24 |
+
|
| 25 |
+
- `npm run test`: For all unit tests
|
| 26 |
+
- You can pass specific paths, e.g. `npm run test -- src/search/tests/ai-search-proxy`
|
| 27 |
+
- You can add `--silent=false` to include `console.log` debugging.
|
| 28 |
+
- `npm run build && npm run playwright-test -- playwright-rendering`: You need to build for changes outside of the test to be picked up. We use playwright for all rendering and end-to-end tests
|
| 29 |
+
- You can add `--ui` to keep open `localhost:4000` which can be viewed in a simple browser for debugging UI state.
|
| 30 |
+
- `npm run dev` to start the development server on `localhost:4000`.
|
| 31 |
+
- `ROOT=src/fixtures/fixtures TRANSLATIONS_FIXTURE_ROOT=src/fixtures/fixtures/translations vitest src/fixtures/tests` for tests that involve fixtures.
|
| 32 |
+
|
| 33 |
+
## Validate
|
| 34 |
+
|
| 35 |
+
Run the following commands to validate your changes:
|
| 36 |
+
|
| 37 |
+
- `npm run tsc`
|
| 38 |
+
- `npm run build`
|
| 39 |
+
- `npm run prettier`
|
| 40 |
+
- `npm run lint`: you can include `-- --fix`
|
| 41 |
+
|
| 42 |
+
## Steps
|
| 43 |
+
|
| 44 |
+
0. Ask the human if they would like you to follow these steps.
|
| 45 |
+
1. If this is new work, make sure you have the latest changes by running `git checkout main && git pull`. If this is existing work, update the branch you are working on with the head branch -- usually `main`.
|
| 46 |
+
2. If the human provides a GitHub issue, use gh cli to read the issue and all comments.
|
| 47 |
+
3. Begin by evaluating impact, effort, and estimate non-test lines of code that will change. Ask for more context and examples if needed.
|
| 48 |
+
4. If you are running in agentic mode, _stop_ at this point and request approval from the human.
|
| 49 |
+
5. If you need to add or change tests, work on tests before implementing.
|
| 50 |
+
6. Implement the changes needed. If you are running in agentic mode, _stop_ and ask questions at decision points. Please list the options, pros and cons for each decision needed.
|
| 51 |
+
7. Validate your changes before making any commits. See "Validate".
|
| 52 |
+
8. Validate that any new or changed tests pass. See "Tests".
|
| 53 |
+
9. Validate that these changes meet our guidelines. See "Guidelines".
|
| 54 |
+
10. If you are running in agentic mode, _stop_ at this point and request review before continuing. Suggest how the human should review the changes.
|
| 55 |
+
11. If a branch and pull request already exist, commit and push, then _concisely_ comment on the pull request that you are an LLM and what changes you made and why.
|
| 56 |
+
12. If this is new work and no pull request exists yet, make a pull request:
|
| 57 |
+
- label "llm-generated"
|
| 58 |
+
- draft mode
|
| 59 |
+
- include "fixes owner/repo#issue" or "towards owner/repo#issue" as appropriate
|
| 60 |
+
13. If you are in agentic mode, offer to wait for CI to run and check that it passes. If the human agrees, verify in CI: `sleep 240 && gh pr checks $number`. Address all failures, don't assume they're flakes.
|
| 61 |
+
14. If you are in agentic mode, offer to do any or all of:
|
| 62 |
+
- mark the pull request as ready,
|
| 63 |
+
- assign the issue to the human if it is not already assigned,
|
| 64 |
+
- _concisely_ comment on the issue explaining the change, indicating you are an LLM.
|
.github/instructions/content.instructions.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
applyTo: "content/**,data/**,**/*.md"
|
| 3 |
+
---
|
| 4 |
+
|
| 5 |
+
# Copilot content instructions for docs.github.com
|
| 6 |
+
|
| 7 |
+
**When to use**: Content editing, documentation writing, Markdown files
|
| 8 |
+
**Key indicators**: Changes to .md files, creating articles, updating documentation
|
| 9 |
+
|
| 10 |
+
## Testing Content changes
|
| 11 |
+
|
| 12 |
+
Before committing content changes, always:
|
| 13 |
+
|
| 14 |
+
1. **Use the content linter** to validate content: `npm run lint-content -- --paths <file-paths>`
|
| 15 |
+
2. **Check for proper variable usage** in your content
|
| 16 |
+
3. **Verify [AUTOTITLE] links** point to existing articles
|
| 17 |
+
4. **Run tests** on changed content: `npm run test -- src/content-render/tests/render-changed-and-deleted-files.ts`
|
| 18 |
+
|
| 19 |
+
## Bullet lists
|
| 20 |
+
|
| 21 |
+
The bulleted points in a bullet list should always be denoted in Markdown using an asterisk, not a hyphen.
|
| 22 |
+
|
| 23 |
+
## Using variables
|
| 24 |
+
|
| 25 |
+
Within Markdown files, with the exception of the `title` field in the metadata at the start of a file, **always use the Liquid syntax variables rather than text** if a variable has been defined for that text. This ensures consistency and makes it easier to update product names globally.
|
| 26 |
+
|
| 27 |
+
**Important**: You must use variables in all content, including reusable content, data files, and regular articles. The only exceptions are the `title` field in frontmatter metadata and any file in the `content/site-policy` directory.
|
| 28 |
+
|
| 29 |
+
For example:
|
| 30 |
+
|
| 31 |
+
| Use this variable | Don't use this text | File where variable is defined |
|
| 32 |
+
| -------------------------------------------------------- | ------------------------ | -------------------------------- |
|
| 33 |
+
| `{% data variables.product.github %}` | GitHub | data/variables/product.yml |
|
| 34 |
+
| `{% data variables.product.prodname_ghe_server %}` | GitHub Enterprise Server | data/variables/product.yml |
|
| 35 |
+
| `{% data variables.product.prodname_copilot_short %}` | Copilot | data/variables/product.yml |
|
| 36 |
+
| `{% data variables.product.prodname_copilot %}` | GitHub Copilot | data/variables/product.yml |
|
| 37 |
+
| `{% data variables.copilot.copilot_code-review_short %}` | Copilot code review | data/variables/copilot.yml |
|
| 38 |
+
| `{% data variables.enterprise.prodname_managed_user %}` | managed user account | data/variables/enterprise.yml |
|
| 39 |
+
| `{% data variables.code-scanning.codeql_workflow %}` | CodeQL analysis workflow | data/variables/code-scanning.yml |
|
| 40 |
+
|
| 41 |
+
There are many more variables. We store these in various YAML files within the `data/variables` directory.
|
| 42 |
+
|
| 43 |
+
**How to find variables**: Check the `data/variables` directory for existing variables before writing hardcoded text. Common variable files include:
|
| 44 |
+
|
| 45 |
+
* `data/variables/product.yml` - Product names and variations
|
| 46 |
+
* `data/variables/copilot.yml` - Copilot-specific terms
|
| 47 |
+
* `data/variables/enterprise.yml` - Enterprise-specific terms
|
| 48 |
+
* `data/variables/code-scanning.yml` - Code scanning terms
|
| 49 |
+
|
| 50 |
+
## Reusable text
|
| 51 |
+
|
| 52 |
+
Reusables are long strings of reusable text, such as paragraphs or procedural lists, that are referenced in multiple content files. This makes it easier for us to maintain content and ensure that it is accurate across all files where the content is needed.
|
| 53 |
+
|
| 54 |
+
Each reusable lives in its own Markdown file. The path and filename of each reusable determines what its path will be in the data object. For example, a file named `/data/reusables/foo/bar.md` will be accessible as `{% data reusables.foo.bar %}` in articles.
|
| 55 |
+
|
| 56 |
+
Examples where you should create a reusable:
|
| 57 |
+
|
| 58 |
+
* You are documenting a new feature for a public preview. You need to create a note to display in all new articles about the new feature. Create a new reusable for the note and use it in all articles where it is needed.
|
| 59 |
+
* You are documenting billing for a new feature and need to briefly mention how the feature is billed and link to content about billing in several articles. Create a new reusable with the brief mention and a link to the content on billing. Aim to use the reusable in all places where you want to mention billing for the feature.
|
| 60 |
+
|
| 61 |
+
## Links to other articles
|
| 62 |
+
|
| 63 |
+
`[AUTOTITLE]` is the **only correct way** to specify the title of a linked article when that article is another page on the docs.github.com site.
|
| 64 |
+
|
| 65 |
+
You can replace the placeholder link text `[AUTOTITLE]` only when linking to an anchor in the same article or when linking to an anchor in another article and the actual article title would be confusing.
|
| 66 |
+
|
| 67 |
+
Never use the `{% link %}` Liquid tag for internal documentation links. The `[AUTOTITLE]` placeholder automatically pulls the correct title and ensures that links remain valid when titles change.
|
| 68 |
+
|
| 69 |
+
Examples:
|
| 70 |
+
|
| 71 |
+
* ✅ Correct: `For more information, see [AUTOTITLE](/copilot/using-github-copilot).`
|
| 72 |
+
* ❌ Incorrect: `For more information, see [Using GitHub Copilot](/copilot/using-github-copilot).`
|
| 73 |
+
* ❌ Incorrect: `For more information, see {% link /copilot/using-github-copilot %}.`
|
| 74 |
+
|
| 75 |
+
## Parenthetical dashes
|
| 76 |
+
|
| 77 |
+
Where a sentence of normal body text contains a parenthetical dash, the dash should always be an em dash without spaces at either side. This rule does not apply to text within code blocks.
|
| 78 |
+
|
| 79 |
+
Examples:
|
| 80 |
+
|
| 81 |
+
* ✅ Correct: "The cat—which sat on a branch—smiled with a broad grin." (em dash without spaces)
|
| 82 |
+
* ❌ Incorrect: "The cat — which sat on a branch — smiled with a broad grin." (em dash with spaces)
|
| 83 |
+
* ❌ Incorrect: "The cat–which sat on a branch–smiled with a broad grin." (en dash without spaces)
|
| 84 |
+
* ❌ Incorrect: "The cat – which sat on a branch – smiled with a broad grin." (en dash with spaces)
|
| 85 |
+
* ❌ Incorrect: "The cat-which sat on a branch-smiled with a broad grin." (hyphen without spaces)
|
| 86 |
+
* ❌ Incorrect: "The cat - which sat on a branch - smiled with a broad grin." (hyphen with spaces)
|
.gitignore
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Test coverage reports
|
| 2 |
+
.coverage/
|
| 3 |
+
|
| 4 |
+
# macOS system files
|
| 5 |
+
.DS_Store
|
| 6 |
+
|
| 7 |
+
# Environment variables (contains secrets)
|
| 8 |
+
.env
|
| 9 |
+
|
| 10 |
+
# ESLint cache for faster linting
|
| 11 |
+
.eslintcache
|
| 12 |
+
|
| 13 |
+
# JetBrains IDE files
|
| 14 |
+
.idea/
|
| 15 |
+
|
| 16 |
+
# Tracks package-lock.json installation state
|
| 17 |
+
.installed.package-lock.json
|
| 18 |
+
|
| 19 |
+
# Linkinator full site link check results
|
| 20 |
+
.linkinator/
|
| 21 |
+
|
| 22 |
+
# Next.js build output
|
| 23 |
+
.next/
|
| 24 |
+
|
| 25 |
+
# Node.js version specification
|
| 26 |
+
.node-version
|
| 27 |
+
|
| 28 |
+
# Precomputed page info cache (brotli compressed)
|
| 29 |
+
.pageinfo-cache.json.br
|
| 30 |
+
|
| 31 |
+
# getRemoteJSON() disk cache for archived content
|
| 32 |
+
.remotejson-cache/
|
| 33 |
+
|
| 34 |
+
# VS Code workspace settings
|
| 35 |
+
.vscode/settings.json
|
| 36 |
+
|
| 37 |
+
# TypeScript incremental build info
|
| 38 |
+
*.tsbuildinfo
|
| 39 |
+
|
| 40 |
+
# Accidentally committed file that should be ignored
|
| 41 |
+
assets/images/help/writing/unordered-list-rendered (1).png
|
| 42 |
+
|
| 43 |
+
# Old broken link checker output
|
| 44 |
+
blc_output.log
|
| 45 |
+
|
| 46 |
+
# Old internal broken link checker output
|
| 47 |
+
blc_output_internal.log
|
| 48 |
+
|
| 49 |
+
# Old broken links report
|
| 50 |
+
broken_links.md
|
| 51 |
+
|
| 52 |
+
# Directories from the docs-early-access repo. Used for symlinks in local docs-internal checkouts. Don't add trailing slashes.
|
| 53 |
+
content/early-access
|
| 54 |
+
data/early-access
|
| 55 |
+
assets/images/early-access
|
| 56 |
+
|
| 57 |
+
# Test coverage reports
|
| 58 |
+
coverage/
|
| 59 |
+
|
| 60 |
+
# Cloned for Elasticsearch indexing data
|
| 61 |
+
docs-internal-data/
|
| 62 |
+
|
| 63 |
+
# External link checker cache database
|
| 64 |
+
external-link-checker-db.json
|
| 65 |
+
|
| 66 |
+
# Historical redirects cache (legacy)
|
| 67 |
+
lib/redirects/.redirects-cache*.json
|
| 68 |
+
|
| 69 |
+
# Script execution logs
|
| 70 |
+
logs/
|
| 71 |
+
|
| 72 |
+
# GitHub Models API descriptions
|
| 73 |
+
models-gateway/
|
| 74 |
+
|
| 75 |
+
# Next.js TypeScript environment definitions
|
| 76 |
+
next-env.d.ts
|
| 77 |
+
|
| 78 |
+
# Node.js dependencies
|
| 79 |
+
node_modules/
|
| 80 |
+
|
| 81 |
+
# Background process output
|
| 82 |
+
nohup.out
|
| 83 |
+
|
| 84 |
+
# NPM debug logs
|
| 85 |
+
npm-debug.log
|
| 86 |
+
|
| 87 |
+
# Playwright test reports
|
| 88 |
+
playwright-report/
|
| 89 |
+
|
| 90 |
+
# Playwright browser cache
|
| 91 |
+
playwright/.cache/
|
| 92 |
+
|
| 93 |
+
# REST API OpenAPI descriptions
|
| 94 |
+
rest-api-description/
|
| 95 |
+
|
| 96 |
+
# CodeQL CLI documentation source
|
| 97 |
+
semmle-code/
|
| 98 |
+
|
| 99 |
+
# Development table of contents static HTML files
|
| 100 |
+
src/dev-toc/static/
|
| 101 |
+
|
| 102 |
+
# Playwright test result artifacts
|
| 103 |
+
test-results/
|
| 104 |
+
|
| 105 |
+
# Temporary data files
|
| 106 |
+
tmp/
|
| 107 |
+
|
| 108 |
+
# Localized content from translation repositories
|
| 109 |
+
translations/
|
.npmrc
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# For 15-25% faster npm install
|
| 2 |
+
# https://www.peterbe.com/plog/benchmarking-npm-install-with-or-without-audit
|
| 3 |
+
# Also we have Dependabot alerts configured in the GitHub repo.
|
| 4 |
+
audit=false
|
.nvmrc
ADDED
|
File without changes
|
.prettierignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
data/release-notes/
|
.vscode/extensions.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
|
| 3 |
+
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
|
| 4 |
+
|
| 5 |
+
// List of extensions which should be recommended for users of this workspace.
|
| 6 |
+
"recommendations": [
|
| 7 |
+
|
| 8 |
+
],
|
| 9 |
+
// List of extensions recommended by VS Code that should not be recommended for users of this workspace.
|
| 10 |
+
"unwantedRecommendations": [
|
| 11 |
+
"ms-vscode-remote.remote-containers"
|
| 12 |
+
]
|
| 13 |
+
}
|
.vscode/launch.json
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"version": "0.2.0",
|
| 3 |
+
"configurations": [
|
| 4 |
+
{
|
| 5 |
+
"type": "node",
|
| 6 |
+
"request": "attach",
|
| 7 |
+
"name": "Node: Nodemon",
|
| 8 |
+
"processId": "${command:PickProcess}",
|
| 9 |
+
"restart": true,
|
| 10 |
+
"protocol": "inspector",
|
| 11 |
+
},
|
| 12 |
+
]
|
| 13 |
+
}
|
.vscode/open-reusable-1.3.0.vsix
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:12d7230533b07f81fd985e4e88d3b7e5967f020d37f9f056db554648724909fc
|
| 3 |
+
size 241331
|
CHANGELOG.md
ADDED
|
@@ -0,0 +1,555 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Docs changelog
|
| 2 |
+
|
| 3 |
+
**5 December 2025**
|
| 4 |
+
|
| 5 |
+
We added documentation for the new Code generation tab, which is part of Copilot usage metrics. The docs now describe how to view code generation insights across your enterprise, compare user-initiated and agent-initiated behavior, and understand differences across models, languages, and modes. We also updated related conceptual and reference content for consistency and scannability. See [Viewing the code generation dashboard](https://docs.github.com/en/copilot/how-tos/administer-copilot/manage-for-enterprise/view-code-generation).
|
| 6 |
+
|
| 7 |
+
<hr>
|
| 8 |
+
|
| 9 |
+
**2 December 2025**
|
| 10 |
+
|
| 11 |
+
You can now share Copilot Spaces publicly. See [Collaborating with others using GitHub Copilot Spaces](https://docs.github.com/en/copilot/how-tos/provide-context/use-copilot-spaces/collaborate-with-others#sharing-spaces).
|
| 12 |
+
|
| 13 |
+
You can also now add files to a Copilot Space directly from the code view on GitHub, so you don't need to break your flow when building context for your space. See [Creating GitHub Copilot Spaces](https://docs.github.com/en/copilot/how-tos/provide-context/use-copilot-spaces/create-copilot-spaces#adding-context-as-youre-working).
|
| 14 |
+
|
| 15 |
+
<hr>
|
| 16 |
+
|
| 17 |
+
**25 November 2025**
|
| 18 |
+
|
| 19 |
+
We've added details of files that are excluded from Copilot code reviews.
|
| 20 |
+
|
| 21 |
+
See [About GitHub Copilot code review](https://docs.github.com/copilot/concepts/agents/code-review#excluded-files).
|
| 22 |
+
|
| 23 |
+
<hr>
|
| 24 |
+
|
| 25 |
+
**24 November 2025**
|
| 26 |
+
|
| 27 |
+
We've added a new tutorial on burning down technical debt in a project:
|
| 28 |
+
|
| 29 |
+
[Using GitHub Copilot to reduce technical debt](https://docs.github.com/en/copilot/tutorials/reduce-technical-debt)
|
| 30 |
+
|
| 31 |
+
The addition of this tutorial was prompted by a presentation by Brittany Ellich at this year's GitHub Universe conference: [Tackling your tech debt with Copilot coding agent](https://www.youtube.com/watch?v=LafpndhNC_E), and is based on a GitHub community post by Akash Sharma: [Stop Letting Technical Debt Slow You Down](https://github.com/orgs/community/discussions/178975).
|
| 32 |
+
|
| 33 |
+
<hr>
|
| 34 |
+
|
| 35 |
+
**13 November 2025**
|
| 36 |
+
|
| 37 |
+
We've published a new tutorial on [using custom instructions for Copilot code review](https://docs.github.com/copilot/tutorials/use-custom-instructions). In this tutorial you'll learn how to write effective custom instructions that help Copilot provide more relevant and actionable code reviews.
|
| 38 |
+
|
| 39 |
+
<hr>
|
| 40 |
+
|
| 41 |
+
**31 October 2025**
|
| 42 |
+
|
| 43 |
+
A large amount of new information was added to the GitHub documentation website to coincide with the GitHub Universe 2025 conference. Here are links to some of the new and updated articles.
|
| 44 |
+
|
| 45 |
+
**_New articles_**
|
| 46 |
+
|
| 47 |
+
GitHub Copilot documentation:
|
| 48 |
+
* [Setting up a dedicated enterprise for GitHub Copilot Business](https://docs.github.com/copilot/how-tos/set-up/set-up-a-dedicated-enterprise-for-copilot-business)
|
| 49 |
+
* [About Copilot integrations](https://docs.github.com/copilot/concepts/tools/about-copilot-integrations)
|
| 50 |
+
* [Integrating Copilot coding agent with Linear](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-linear)
|
| 51 |
+
* [Integrating Copilot coding agent with Slack](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/integrate-coding-agent-with-slack)
|
| 52 |
+
* [Changing your MCP registry in your IDE](https://docs.github.com/copilot/how-tos/provide-context/use-mcp/change-mcp-registry)
|
| 53 |
+
* [GitHub Copilot usage metrics](https://docs.github.com/copilot/concepts/copilot-metrics)
|
| 54 |
+
* [Viewing the Copilot usage metrics dashboard](https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-enterprise/view-usage-and-adoption)
|
| 55 |
+
* [Data available in Copilot usage metrics](https://docs.github.com/copilot/reference/copilot-usage-metrics/copilot-usage-metrics)
|
| 56 |
+
* [Interpreting usage and adoption metrics for GitHub Copilot](https://docs.github.com/copilot/reference/copilot-usage-metrics/interpret-copilot-metrics)
|
| 57 |
+
* [Reconciling Copilot usage metrics across dashboards, APIs, and reports](https://docs.github.com/copilot/reference/copilot-usage-metrics/reconciling-usage-metrics)
|
| 58 |
+
* [Tracking license activation and initial usage with Copilot usage metrics](https://docs.github.com/copilot/tutorials/roll-out-at-scale/assign-licenses/track-usage-and-adoption)
|
| 59 |
+
* [Lines of Code metrics](https://docs.github.com/copilot/reference/copilot-usage-metrics/lines-of-code-metrics)
|
| 60 |
+
* [Measuring the success of a GitHub Copilot trial](https://docs.github.com/copilot/tutorials/roll-out-at-scale/measure-success)
|
| 61 |
+
* [About custom agents](https://docs.github.com/copilot/concepts/agents/coding-agent/about-custom-agents)
|
| 62 |
+
* [Creating custom agents](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/create-custom-agents)
|
| 63 |
+
* [Custom agents configuration](https://docs.github.com/copilot/reference/custom-agents-configuration)
|
| 64 |
+
* [Custom agents: Bug fix teammate](https://docs.github.com/copilot/tutorials/customization-library/custom-agents/bug-fix-teammate)
|
| 65 |
+
* [Custom agents: Cleanup specialist](https://docs.github.com/copilot/tutorials/customization-library/custom-agents/cleanup-specialist)
|
| 66 |
+
* [Custom agents: Implementation planner](https://docs.github.com/copilot/tutorials/customization-library/custom-agents/implementation-planner)
|
| 67 |
+
* [Your first custom agent](https://docs.github.com/copilot/tutorials/customization-library/custom-agents/your-first-custom-agent)
|
| 68 |
+
* [Agent management for enterprises](https://docs.github.com/copilot/concepts/agents/enterprise-management)
|
| 69 |
+
* [Monitoring agentic activity in your enterprise](https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/monitor-agentic-activity)
|
| 70 |
+
* [Preparing to use custom agents in your enterprise](https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-agents/prepare-for-custom-agents)
|
| 71 |
+
* [Preparing to use custom agents in your organization](https://docs.github.com/copilot/how-tos/administer-copilot/manage-for-organization/prepare-for-custom-agents)
|
| 72 |
+
* [Audit log events for agents](https://docs.github.com/copilot/reference/agentic-audit-log-events)
|
| 73 |
+
* [About agent management](https://docs.github.com/copilot/concepts/agents/coding-agent/agent-management)
|
| 74 |
+
* [Managing Copilot coding agents](https://docs.github.com/copilot/how-tos/use-copilot-agents/manage-agents)
|
| 75 |
+
* [OpenAI Codex](https://docs.github.com/copilot/concepts/agents/openai-codex)
|
| 76 |
+
|
| 77 |
+
Security and code quality documentation:
|
| 78 |
+
* [Enabling extended metadata checks for your repository](https://docs.github.com/code-security/secret-scanning/enabling-secret-scanning-features/enabling-extended-metadata-checks-for-your-repository)
|
| 79 |
+
* [About GitHub Code Quality](https://docs.github.com/code-security/code-quality/concepts/about-code-quality)
|
| 80 |
+
* [Quickstart for GitHub Code Quality](https://docs.github.com/code-security/code-quality/get-started/quickstart)
|
| 81 |
+
* [Allowing use of GitHub Code Quality in your enterprise](https://docs.github.com/code-security/code-quality/how-tos/allow-in-enterprise)
|
| 82 |
+
* [Enabling GitHub Code Quality](https://docs.github.com/code-security/code-quality/how-tos/enable-code-quality)
|
| 83 |
+
* [Interpreting the code quality results for your repository](https://docs.github.com/code-security/code-quality/how-tos/interpret-results)
|
| 84 |
+
* [Setting code quality thresholds for pull requests](https://docs.github.com/code-security/code-quality/how-tos/set-pr-thresholds)
|
| 85 |
+
* [Resolving a block on your pull request](https://docs.github.com/code-security/code-quality/how-tos/unblock-your-pr)
|
| 86 |
+
* [CodeQL detection of code quality problems](https://docs.github.com/code-security/code-quality/reference/codeql-detection)
|
| 87 |
+
* [Metrics and ratings reference](https://docs.github.com/code-security/code-quality/reference/metrics-and-ratings)
|
| 88 |
+
* [Responsible use of GitHub Code Quality](https://docs.github.com/code-security/code-quality/responsible-use/code-quality)
|
| 89 |
+
* [Fixing code quality findings before merging your pull request](https://docs.github.com/code-security/code-quality/tutorials/fix-findings-in-prs)
|
| 90 |
+
* [Improving the quality of recently merged code with AI](https://docs.github.com/code-security/code-quality/tutorials/improve-recent-merges)
|
| 91 |
+
* [Improving the quality of your repository's code](https://docs.github.com/code-security/code-quality/tutorials/improve-your-codebase)
|
| 92 |
+
|
| 93 |
+
GitHub integrations:
|
| 94 |
+
* [Customizing notifications for GitHub in Slack](https://docs.github.com/integrations/how-tos/slack/customize-notifications)
|
| 95 |
+
* [Integrating GitHub with Slack](https://docs.github.com/integrations/how-tos/slack/integrate-github-with-slack)
|
| 96 |
+
* [Using GitHub in Slack](https://docs.github.com/integrations/how-tos/slack/use-github-in-slack)
|
| 97 |
+
* [Permissions for GitHub in Slack](https://docs.github.com/integrations/reference/slack-permissions)
|
| 98 |
+
* [Creating issues with the GitHub integration in Slack](https://docs.github.com/integrations/tutorials/slack/create-issues)
|
| 99 |
+
* [Managing issues with the GitHub integration in Slack](https://docs.github.com/integrations/tutorials/slack/manage-issues)
|
| 100 |
+
|
| 101 |
+
GitHub Actions:
|
| 102 |
+
* [Using custom images](https://docs.github.com/actions/how-tos/manage-runners/larger-runners/use-custom-images)
|
| 103 |
+
* [Using proxy servers with a runner](https://docs.github.com/actions/how-tos/manage-runners/use-proxy-servers)
|
| 104 |
+
|
| 105 |
+
Enterprise administrator documentation:
|
| 106 |
+
* [Custom properties](https://docs.github.com/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/custom-properties)
|
| 107 |
+
* [Managing custom properties for organizations](https://docs.github.com/admin/managing-accounts-and-repositories/managing-organizations-in-your-enterprise/managing-custom-properties-for-organizations)
|
| 108 |
+
* [Controlling user offboarding with the unaffiliated users policy](https://docs.github.com/admin/enforcing-policies/enforcing-policies-for-your-enterprise/control-offboarding)
|
| 109 |
+
|
| 110 |
+
Enterprise onboarding:
|
| 111 |
+
* [Adding users to your enterprise](https://docs.github.com/enterprise-onboarding/getting-started-with-your-enterprise/adding-users-to-your-enterprise)
|
| 112 |
+
* [Creating enterprise apps](https://docs.github.com/enterprise-onboarding/github-apps/create-enterprise-apps)
|
| 113 |
+
* [Installing enterprise apps](https://docs.github.com/enterprise-onboarding/github-apps/install-enterprise-apps)
|
| 114 |
+
* [About enterprise policies](https://docs.github.com/enterprise-onboarding/govern-people-and-repositories/about-enterprise-policies)
|
| 115 |
+
* [Creating custom properties for repositories in your enterprise](https://docs.github.com/enterprise-onboarding/govern-people-and-repositories/create-custom-properties)
|
| 116 |
+
* [Defining policies for repositories in your enterprise](https://docs.github.com/enterprise-onboarding/govern-people-and-repositories/create-repository-policies)
|
| 117 |
+
* [Protecting branches in your enterprise with rulesets](https://docs.github.com/enterprise-onboarding/govern-people-and-repositories/protect-branches)
|
| 118 |
+
* [Using the audit log for your enterprise](https://docs.github.com/enterprise-onboarding/govern-people-and-repositories/using-the-audit-log-for-your-enterprise)
|
| 119 |
+
* [About roles in an enterprise](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/about-roles-in-an-enterprise)
|
| 120 |
+
* [About teams in an enterprise](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/about-teams-in-an-enterprise)
|
| 121 |
+
* [Assigning roles to teams and users](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/assigning-roles-to-teams-and-users)
|
| 122 |
+
* [Best practices for organizing work in your enterprise](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/best-practices)
|
| 123 |
+
* [Creating custom roles](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/creating-custom-roles)
|
| 124 |
+
* [Identifying the roles required by your enterprise](https://docs.github.com/enterprise-onboarding/setting-up-organizations-and-teams/identify-role-requirements)
|
| 125 |
+
|
| 126 |
+
Billing documentation:
|
| 127 |
+
* [GitHub Code Quality billing](https://docs.github.com/billing/concepts/product-billing/github-code-quality)
|
| 128 |
+
|
| 129 |
+
**_Updated articles_**
|
| 130 |
+
|
| 131 |
+
This is just a very small selection of the articles that were updated for Universe 2025.
|
| 132 |
+
|
| 133 |
+
* [About GitHub Copilot code review](https://docs.github.com/copilot/concepts/agents/code-review) - new conceptual information.
|
| 134 |
+
* [Fixing alerts in a security campaign](https://docs.github.com/code-security/code-scanning/managing-code-scanning-alerts/fixing-alerts-in-security-campaign) - new information on assigning alerts to Copilot coding agent.
|
| 135 |
+
* [Resolving code scanning alerts](https://docs.github.com/code-security/code-scanning/managing-code-scanning-alerts/resolving-code-scanning-alerts) - new information on assigning alerts to Copilot coding agent.
|
| 136 |
+
* [Available rules for rulesets](https://docs.github.com/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets) - new information on blocking force pushes.
|
| 137 |
+
* [GitHub-hosted runners reference](https://docs.github.com/actions/reference/runners/github-hosted-runners) - new information about single-CPU Actions runners.
|
| 138 |
+
* [Events that trigger workflows](https://docs.github.com/actions/reference/workflows-and-actions/events-that-trigger-workflows) - details of `image_version_ready` event added.
|
| 139 |
+
* [Enforcing policies for GitHub Actions in your enterprise](https://docs.github.com/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise) - details about custom images added.
|
| 140 |
+
* [Model Context Protocol (MCP) and GitHub Copilot coding agent](https://docs.github.com/copilot/concepts/agents/coding-agent/mcp-and-coding-agent) - new information about MCP servers for custom agents.
|
| 141 |
+
* [Best practices for using GitHub Copilot to work on tasks](https://docs.github.com/copilot/tutorials/coding-agent/get-the-best-results) - new information about creating custom agents.
|
| 142 |
+
* [Quickstart for your personal dashboard](https://docs.github.com/account-and-profile/get-started/personal-dashboard-quickstart) - added a section on working with Copilot from your personal dashboard.
|
| 143 |
+
* [Personal dashboard](https://docs.github.com/account-and-profile/reference/personal-dashboard) - added a section on the home dashboard view.
|
| 144 |
+
* [Using GitHub Copilot CLI](https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli) - new information on delegating tasks to Copilot coding agent.
|
| 145 |
+
|
| 146 |
+
<hr>
|
| 147 |
+
|
| 148 |
+
**24 October 2025**
|
| 149 |
+
|
| 150 |
+
To support the enterprise roles and teams public preview, we:
|
| 151 |
+
|
| 152 |
+
* Created a new concepts category in the [enterprise admin](https://docs.github.com/en/enterprise-cloud@latest/admin) docs aimed at onboarding administrators, including new articles on roles and teams in an enterprise.
|
| 153 |
+
* Built a user journey for setting up roles, teams, and apps to simplify administration, starting with [Identifying the roles required by your enterprise](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/identify-role-requirements).
|
| 154 |
+
* Published how-to content on [creating custom roles](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/create-custom-roles), [creating enterprise teams](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/create-enterprise-teams), and [assigning roles](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-accounts-and-repositories/managing-roles-in-your-enterprise/assign-roles).
|
| 155 |
+
* Communicated new conceptual frameworks and best practices for enterprise accounts, including [Best practices for organizing work in your enterprise](https://docs.github.com/en/enterprise-cloud@latest/admin/concepts/best-practices) and [Enterprise accounts](https://docs.github.com/en/enterprise-cloud@latest/admin/concepts/enterprise-fundamentals/enterprise-accounts).
|
| 156 |
+
|
| 157 |
+
<hr>
|
| 158 |
+
|
| 159 |
+
**17 October 2025**
|
| 160 |
+
|
| 161 |
+
We have updated the [Account and profile](https://docs.github.com/en/account-and-profile) and [Subscriptions and notifications](https://docs.github.com/en/subscriptions-and-notifications) docs for improved usability, scannability, and information architecture.
|
| 162 |
+
|
| 163 |
+
To support accomplishing tasks without context switching or sifting through unrelated content, articles are now organized by content type and focused on jobs-to-be-done. Additionally, related information is now linked from content type to content type.
|
| 164 |
+
|
| 165 |
+
<hr>
|
| 166 |
+
|
| 167 |
+
**14 October 2025**
|
| 168 |
+
|
| 169 |
+
We've added a new tutorial about how to [Review AI-generated code](https://docs.github.com/en/copilot/tutorials/review-ai-generated-code). The article gives techniques to verify and validate AI-generated code, and also suggests how Copilot can help with reviews.
|
| 170 |
+
|
| 171 |
+
<hr>
|
| 172 |
+
|
| 173 |
+
**13 October 2025**
|
| 174 |
+
|
| 175 |
+
To help large enterprises keep their automations secure and consistent across many organizations, we published [Automating app installations in your enterprise's organizations](https://docs.github.com/en/enterprise-cloud@latest/admin/managing-github-apps-for-your-enterprise/automate-installations). This is one of the most requested features from customer feedback.
|
| 176 |
+
|
| 177 |
+
The tutorial shows how to manage installations and run automations using enterprise-owned apps and the new apps installation API. Security-conscious enterprises will see that Apps maximize security by providing short-lived, minimally scoped tokens at every stage.
|
| 178 |
+
|
| 179 |
+
|
| 180 |
+
|
| 181 |
+
<hr>
|
| 182 |
+
|
| 183 |
+
**1 October 2025**
|
| 184 |
+
|
| 185 |
+
We’ve updated the Spark documentation to support the launch for Copilot Enterprise users, making it easier to understand and enable Spark:
|
| 186 |
+
|
| 187 |
+
* Conceptual article: [About GitHub Spark](https://docs.github.com/en/copilot/concepts/spark#enterprise-considerations) now includes enterprise considerations (governance, billing, infrastructure, and benefits).
|
| 188 |
+
* How-to: [Managing GitHub Spark in your enterprise](https://docs.github.com/en/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-spark) is streamlined to prerequisites and enablement steps, with links to related policies.
|
| 189 |
+
|
| 190 |
+
<hr>
|
| 191 |
+
|
| 192 |
+
**29 September 2025**
|
| 193 |
+
|
| 194 |
+
Claude Sonnet 4.5 has been released as a Public Preview. At the time of launch, it will be available on the following platforms:
|
| 195 |
+
|
| 196 |
+
- **Copilot Chat**
|
| 197 |
+
- Released for GitHub.com, VS Code, GitHub Mobile
|
| 198 |
+
- With: Copilot Pro, Pro+, Business, and Enterprise
|
| 199 |
+
- **Copilot Coding Agent**
|
| 200 |
+
- With: Copilot Pro, and Copilot Pro+
|
| 201 |
+
- **Copilot CLI**
|
| 202 |
+
- With: Copilot Pro, Pro+, Business, and Enterprise
|
| 203 |
+
|
| 204 |
+
The following articles have been updated:
|
| 205 |
+
|
| 206 |
+
- [About GitHub Copilot coding agent](https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-coding-agent)
|
| 207 |
+
- [Supported AI models in GitHub Copilot](https://docs.github.com/en/copilot/reference/ai-models/supported-models)
|
| 208 |
+
- [Hosting of models for GitHub Copilot Chat](https://docs.github.com/en/copilot/reference/ai-models/model-hosting)
|
| 209 |
+
- [AI model comparison](https://docs.github.com/en/copilot/reference/ai-models/model-comparison)
|
| 210 |
+
- [About GitHub Copilot CLI](https://docs.github.com/en/copilot/concepts/agents/about-copilot-cli)
|
| 211 |
+
|
| 212 |
+
<hr>
|
| 213 |
+
|
| 214 |
+
**26 September 2025**
|
| 215 |
+
|
| 216 |
+
To coincide with additional functionality for Copilot coding agent being added to the GitHub Mobile app, we've updated the following articles:
|
| 217 |
+
|
| 218 |
+
* [Using GitHub Copilot to work on an issue](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue#assigning-an-issue-to-copilot-on-github-mobile)
|
| 219 |
+
* [Tracking GitHub Copilot's sessions](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/track-copilot-sessions#tracking-sessions-from-github-mobile)
|
| 220 |
+
* [Asking GitHub Copilot to create a pull request](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/create-a-pr#asking-copilot-to-create-a-pull-request-from-github-mobile)
|
| 221 |
+
|
| 222 |
+
<hr>
|
| 223 |
+
|
| 224 |
+
**25 September 2025**
|
| 225 |
+
|
| 226 |
+
GitHub Copilot CLI has been released as a public preview. It allows you to use Copilot directly from your terminal. You can use it to answer questions, write and debug code, and interact with GitHub.com. For example, you can ask Copilot to make some changes to a project and create a pull request.
|
| 227 |
+
|
| 228 |
+
GitHub Copilot CLI gives you quick access to a powerful AI agent, without having to leave your terminal. It can help you complete tasks more quickly by working on your behalf, and you can work iteratively with GitHub Copilot CLI to build the code you need.
|
| 229 |
+
|
| 230 |
+
See:
|
| 231 |
+
|
| 232 |
+
* [About GitHub Copilot CLI](https://docs.github.com/copilot/concepts/agents/about-copilot-cli)
|
| 233 |
+
* [Using GitHub Copilot CLI](https://docs.github.com/copilot/how-tos/use-copilot-agents/use-copilot-cli)
|
| 234 |
+
|
| 235 |
+
<hr>
|
| 236 |
+
|
| 237 |
+
**25 September 2025**
|
| 238 |
+
|
| 239 |
+
We've updated the documentation for the GA release of [Copilot Spaces](https://github.com/copilot/spaces). Spaces allow you to organize and centralize content and resources in order to ground Copilot Chat's responses in that context and share knowledge across teams. You can now also access Copilot Spaces in your IDE via the GitHub MCP server.
|
| 240 |
+
|
| 241 |
+
See the updated docs:
|
| 242 |
+
* [About organizing and sharing context with GitHub Copilot Spaces](https://docs.github.com/copilot/concepts/context/spaces)
|
| 243 |
+
* [Creating GitHub Copilot Spaces](https://docs.github.com/copilot/how-tos/provide-context/use-copilot-spaces/create-copilot-spaces)
|
| 244 |
+
* [Using GitHub Copilot Spaces](https://docs.github.com/copilot/how-tos/provide-context/use-copilot-spaces/use-copilot-spaces)
|
| 245 |
+
|
| 246 |
+
<hr>
|
| 247 |
+
|
| 248 |
+
**24 September 2025**
|
| 249 |
+
|
| 250 |
+
Until now, assigning Copilot coding agent to an issue was limited to the same repository as the issue.
|
| 251 |
+
|
| 252 |
+
You can now:
|
| 253 |
+
|
| 254 |
+
* Assign Copilot coding agent to work in a different repository, supporting workflows where issues and code files are managed separately.
|
| 255 |
+
* Provide additional instructions to tailor the agent's output to your requirements.
|
| 256 |
+
* Choose the base branch for the agent to use.
|
| 257 |
+
|
| 258 |
+
These changes provide a more flexible, transparent, and user-friendly experience for managing automated coding tasks with Copilot coding agent.
|
| 259 |
+
|
| 260 |
+
See the updated docs: [Using GitHub Copilot to work on an issue](https://docs.github.com/copilot/how-tos/use-copilot-agents/coding-agent/assign-copilot-to-an-issue#assigning-an-issue-to-copilot).
|
| 261 |
+
|
| 262 |
+
<hr>
|
| 263 |
+
|
| 264 |
+
**23 September 2025**
|
| 265 |
+
|
| 266 |
+
We've added new documentation for Spark that answers some common customer questions, helps customers troubleshoot known issues, and guides users on the best ways to prompt and provide context to Spark.
|
| 267 |
+
|
| 268 |
+
See:
|
| 269 |
+
- [About GitHub Spark](https://docs.github.com/copilot/concepts/spark)
|
| 270 |
+
- [Troubleshooting common issues with GitHub Spark](https://docs.github.com/copilot/how-tos/troubleshoot-copilot/troubleshoot-spark)
|
| 271 |
+
- [Write effective prompts and provide useful context for Spark](https://docs.github.com/copilot/tutorials/spark/prompt-tips)
|
| 272 |
+
|
| 273 |
+
<hr>
|
| 274 |
+
|
| 275 |
+
**17 September 2025**
|
| 276 |
+
|
| 277 |
+
We've added information about the GitHub MCP Registry, and guidance on how to use it in VS Code.
|
| 278 |
+
|
| 279 |
+
See [About the GitHub MCP Registry](https://docs.github.com/copilot/concepts/context/mcp#about-the-github-mcp-registry) and [Using the GitHub MCP Registry](https://docs.github.com/copilot/how-tos/provide-context/use-mcp/extend-copilot-chat-with-mcp#using-the-github-mcp-registry).
|
| 280 |
+
|
| 281 |
+
<hr>
|
| 282 |
+
|
| 283 |
+
**17 September 2025**
|
| 284 |
+
|
| 285 |
+
We've added documentation for expanded features for reusing workflow configurations in GitHub Actions.
|
| 286 |
+
|
| 287 |
+
You can now use YAML anchors and aliases to reuse pieces of content in a workflow. See [YAML anchors and aliases](https://docs.github.com/actions/concepts/workflows-and-actions/reusing-workflow-configurations#yaml-anchors-and-aliases).
|
| 288 |
+
|
| 289 |
+
To keep the content focused on users' job-to-be-done, we simplified the procedures for [creating workflow templates for your organization](https://docs.github.com/actions/how-tos/reuse-automations/create-workflow-templates). In addition, we updated reference documentation for workflow templates with details on permissions, repository visibility rules, rules for the metadata file, and examples. See [Workflow templates](https://docs.github.com/actions/reference/workflows-and-actions/reusing-workflow-configurations#workflow-templates).
|
| 290 |
+
|
| 291 |
+
<hr>
|
| 292 |
+
|
| 293 |
+
**17 September 2025**
|
| 294 |
+
|
| 295 |
+
You can now publish your Spark app as "read-only."
|
| 296 |
+
|
| 297 |
+
By default, data stored in Spark is shared across all users of the app. You can choose to publish your app as "read-only" if you want to showcase your app to others, but you don't want others to be able to edit or delete any stored data.
|
| 298 |
+
|
| 299 |
+
We've updated the [Spark documentation](https://docs.github.com/copilot/tutorials/build-apps-with-spark) accordingly.
|
| 300 |
+
|
| 301 |
+
<hr>
|
| 302 |
+
|
| 303 |
+
**15 September 2025**
|
| 304 |
+
|
| 305 |
+
We've updated the documentation for Copilot code review to clarify model usage for code review.
|
| 306 |
+
|
| 307 |
+
See [Responsible use of GitHub Copilot code review](https://docs.github.com/copilot/responsible-use/code-review#model-usage).
|
| 308 |
+
|
| 309 |
+
<hr>
|
| 310 |
+
|
| 311 |
+
**11 September 2025**
|
| 312 |
+
|
| 313 |
+
Copilot Chat in VS Code includes a "Manage models" option which allows you to add models from a variety of LLM providers, such as Azure, Anthropic, Google, and xAI. By installing the AI Toolkit for VS Code, you can install even more models from the "Manage models" option. We've updated the documentation to include details of how to use this new feature.
|
| 314 |
+
|
| 315 |
+
See [Changing the AI model for GitHub Copilot Chat](https://docs.github.com/copilot/how-tos/use-ai-models/change-the-chat-model?tool=vscode).
|
| 316 |
+
|
| 317 |
+
<hr>
|
| 318 |
+
|
| 319 |
+
**11 September 2025**
|
| 320 |
+
|
| 321 |
+
You can now enable automatic Copilot code review with its own standalone repository rule. We've updated the documentation accordingly.
|
| 322 |
+
|
| 323 |
+
See [Configuring automatic code review by GitHub Copilot](https://docs.github.com/copilot/how-tos/use-copilot-agents/request-a-code-review/configure-automatic-review).
|
| 324 |
+
|
| 325 |
+
<hr>
|
| 326 |
+
|
| 327 |
+
**8 September 2025**
|
| 328 |
+
|
| 329 |
+
We've added a tutorial on planning a project with GitHub Copilot, including creating issues and sub-issues: [Planning a project with GitHub Copilot](https://docs.github.com/copilot/tutorials/plan-a-project). This tutorial provides step-by-step instructions on leveraging Copilot to plan a project from scratch.
|
| 330 |
+
|
| 331 |
+
Additionally, we've updated [Using GitHub Copilot to create issues](https://docs.github.com/copilot/how-tos/use-copilot-for-common-tasks/use-copilot-to-create-issues) with instructions to create sub-issues and to work with existing issues.
|
| 332 |
+
|
| 333 |
+
<hr>
|
| 334 |
+
|
| 335 |
+
**4 September 2025**
|
| 336 |
+
|
| 337 |
+
We've updated the documentation to remove references to Copilot coding guidelines.
|
| 338 |
+
|
| 339 |
+
Coding guidelines, which were previously deprecated, have now been removed as a way of customizing Copilot responses. You should now use Copilot custom instructions.
|
| 340 |
+
|
| 341 |
+
See: [Configure custom instructions for GitHub Copilot](https://docs.github.com/copilot/how-tos/configure-custom-instructions)
|
| 342 |
+
|
| 343 |
+
<hr>
|
| 344 |
+
|
| 345 |
+
**4 September 2025**
|
| 346 |
+
|
| 347 |
+
In addition to repository-wide custom instructions, specified in the `.github/copilot-instructions.md` file, Copilot Code Review now supports:
|
| 348 |
+
|
| 349 |
+
* Path-specific custom instructions, specified in `.github/instructions/**/NAME.instructions.md` files.
|
| 350 |
+
* Custom instructions specified in the organization settings for Copilot.
|
| 351 |
+
|
| 352 |
+
We have updated several articles in the GitHub documentation accordingly. We have also made changes to clarify the difference between the various types of custom instructions for Copilot Code Review, Copilot Chat, and Copilot Coding Agent.
|
| 353 |
+
|
| 354 |
+
For example, see: [Adding repository custom instructions for GitHub Copilot](https://docs.github.com/copilot/how-tos/configure-custom-instructions/add-repository-instructions?tool=webui).
|
| 355 |
+
|
| 356 |
+
<hr>
|
| 357 |
+
|
| 358 |
+
**3 September 2025**
|
| 359 |
+
|
| 360 |
+
We’ve updated [Choosing your enterprise’s plan for GitHub Copilot](https://docs.github.com/copilot/get-started/choose-enterprise-plan) to better highlight the long-term benefits of the Copilot Enterprise (CE) plan. The updated content focuses on the key advantages of CE, such as increased access to premium requests and earlier availability of new models.
|
| 361 |
+
|
| 362 |
+
<hr>
|
| 363 |
+
|
| 364 |
+
**2 September 2025**
|
| 365 |
+
|
| 366 |
+
We've added documentation for support of Copilot code review in Xcode.
|
| 367 |
+
|
| 368 |
+
See: [Using GitHub Copilot code review](https://docs.github.com/copilot/how-tos/use-copilot-agents/request-a-code-review/use-code-review?tool=xcode)
|
| 369 |
+
|
| 370 |
+
<hr>
|
| 371 |
+
|
| 372 |
+
**2 September 2025**
|
| 373 |
+
|
| 374 |
+
We've published a new customization library for GitHub Copilot: a curated collection of examples you can copy, adjust, and use to enhance your experience with Copilot. This library is designed to inspire and educate people on the options available to customize Copilot responses.
|
| 375 |
+
|
| 376 |
+
We've included examples of custom instructions (widely supported) and prompt files (supported in VS Code only). The examples cover scenarios such as debugging, onboarding, and accessibility. We look forward to adding more examples over time.
|
| 377 |
+
|
| 378 |
+
See: [Customization library](https://docs.github.com/copilot/tutorials/customization-library).
|
| 379 |
+
|
| 380 |
+
<hr>
|
| 381 |
+
|
| 382 |
+
**28 August 2025**
|
| 383 |
+
|
| 384 |
+
We've published an article about the new AI-powered issue intake tool, which automates incoming issue analysis and triage for OS maintainers.
|
| 385 |
+
|
| 386 |
+
See: [Triaging an issue with AI](https://docs.github.com/issues/tracking-your-work-with-issues/administering-issues/triaging-an-issue-with-ai).
|
| 387 |
+
|
| 388 |
+
<hr>
|
| 389 |
+
|
| 390 |
+
**26 August 2025**
|
| 391 |
+
|
| 392 |
+
xAI Grok Code Fast 1 is now available in public preview for GitHub Copilot. Grok Code Fast 1 is slowly rolling out to all paid Copilot plans and you will be able to access the model in Visual Studio Code (Agent, Ask, and Edit modes).
|
| 393 |
+
|
| 394 |
+
See: [Supported AI models in GitHub Copilot](https://docs.github.com/copilot/reference/ai-models/supported-models).
|
| 395 |
+
|
| 396 |
+
<hr>
|
| 397 |
+
|
| 398 |
+
**15 August 2025**
|
| 399 |
+
|
| 400 |
+
When interacting with the GitHub MCP server for a public repository, push protection blocks secrets from appearing in AI-generated responses and also prevents secrets from being included in any actions you perform, such as creating an issue.
|
| 401 |
+
|
| 402 |
+
See [Working with push protection and the GitHub MCP server](https://docs.github.com/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-and-the-github-mcp-server).
|
| 403 |
+
|
| 404 |
+
<hr>
|
| 405 |
+
|
| 406 |
+
**12 August 2025**
|
| 407 |
+
|
| 408 |
+
OpenAI GPT-5 is now available in public preview for GitHub Copilot. GPT-5 is slowly rolling out to all paid Copilot plans and you will be able to access the model in GitHub Copilot Chat on github.com and Visual Studio Code (Agent, Ask, and Edit modes).
|
| 409 |
+
|
| 410 |
+
See [Supported AI models in Copilot](https://docs.github.com/copilot/reference/ai-models/supported-models).
|
| 411 |
+
|
| 412 |
+
<hr>
|
| 413 |
+
|
| 414 |
+
**12 August 2025**
|
| 415 |
+
|
| 416 |
+
We’ve updated the documentation for Copilot repository custom instructions to go with the release that now brings this feature to the Eclipse IDE.
|
| 417 |
+
|
| 418 |
+
See: [Adding repository custom instructions for GitHub Copilot](https://docs.github.com/copilot/how-tos/configure-custom-instructions/add-repository-instructions?tool=eclipse) and [About customizing GitHub Copilot Chat responses](https://docs.github.com/copilot/concepts/response-customization?tool=eclipse).
|
| 419 |
+
|
| 420 |
+
<hr>
|
| 421 |
+
|
| 422 |
+
**12 August 2025**
|
| 423 |
+
|
| 424 |
+
We have added a tutorial for using Copilot to create Mermaid diagrams at [Creating Diagrams](https://docs.github.com/copilot/tutorials/copilot-chat-cookbook/communicate-effectively/creating-diagrams).
|
| 425 |
+
|
| 426 |
+
<hr>
|
| 427 |
+
|
| 428 |
+
**4 August 2025**
|
| 429 |
+
|
| 430 |
+
To address common pain points that developers face when remediating a leaked secret, we created a new article, "[Remediating a leaked secret](https://docs.github.com/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/remediating-a-leaked-secret)".
|
| 431 |
+
|
| 432 |
+
The new guide incorporates cross-platform GitHub tools, as well as opinionated guidance from GitHub's secret scanning team, to walk the developer through a thorough remediation process.
|
| 433 |
+
|
| 434 |
+
It also clearly communicates the risks of leaked secrets, the challenges of remediation, and the value of enabling [GitHub Secret Protection](https://docs.github.com/get-started/learning-about-github/about-github-advanced-security#github-secret-protection).
|
| 435 |
+
|
| 436 |
+
<hr>
|
| 437 |
+
|
| 438 |
+
**28 July 2025**
|
| 439 |
+
|
| 440 |
+
We have restructured the general "[Billing and payments](https://docs.github.com/billing)" articles to align with the Copilot and Actions docs. In addition, we've combined a few old "About" articles to directly answer common questions that new users have: [How GitHub billing works](https://docs.github.com/billing/get-started/how-billing-works) and [Introduction to billing and licensing](https://docs.github.com/billing/get-started/introduction-to-billing).
|
| 441 |
+
|
| 442 |
+
<hr>
|
| 443 |
+
|
| 444 |
+
**16 July 2025**
|
| 445 |
+
|
| 446 |
+
We've added documentation describing how to use the GraphQL API to create a new issue and, in the same request, assign the issue to Copilot coding agent.
|
| 447 |
+
|
| 448 |
+
See: [Using Copilot to work on an issue](https://docs.github.com/copilot/how-tos/agents/copilot-coding-agent/using-copilot-to-work-on-an-issue#assigning-an-issue-to-copilot-via-the-github-api).
|
| 449 |
+
|
| 450 |
+
<hr>
|
| 451 |
+
|
| 452 |
+
**16 July 2025**
|
| 453 |
+
|
| 454 |
+
We've updated the Copilot documentation to coincide with the release of an improved user interface for configuring the firewall for Copilot coding agent.
|
| 455 |
+
|
| 456 |
+
See: [Customizing or disabling the firewall for Copilot coding agent](https://docs.github.com/copilot/how-tos/agents/copilot-coding-agent/customizing-or-disabling-the-firewall-for-copilot-coding-agent).
|
| 457 |
+
|
| 458 |
+
<hr>
|
| 459 |
+
|
| 460 |
+
**16 July 2025**
|
| 461 |
+
|
| 462 |
+
We've updated the Copilot docs to coincide with the release of issue form support for Copilot Chat. When you use Copilot Chat to create an issue, an issue form will be used if there's an appropriate one in the repo. Previously only issue templates were supported.
|
| 463 |
+
|
| 464 |
+
See [Using GitHub Copilot to create issues](https://docs.github.com/copilot/how-tos/github-flow/using-github-copilot-to-create-issues).
|
| 465 |
+
|
| 466 |
+
<hr>
|
| 467 |
+
|
| 468 |
+
**30 June 2025**
|
| 469 |
+
|
| 470 |
+
Many enterprise customers want to measure the downstream impact of Copilot on their company, looking beyond leading metrics like adoption and usage.
|
| 471 |
+
|
| 472 |
+
Inspired by [GitHub's latest guidance](https://resources.github.com/engineering-system-success-playbook/), we've published three guides that provide usecases, training resources, and metrics to help you plan and measure your rollout to achieve real-world goals, such as increasing test coverage.
|
| 473 |
+
|
| 474 |
+
Get started at [Achieving your company's engineering goals with GitHub Copilot](https://docs.github.com/copilot/get-started/achieve-engineering-goals).
|
| 475 |
+
|
| 476 |
+
<hr>
|
| 477 |
+
|
| 478 |
+
**27 June 2025**
|
| 479 |
+
|
| 480 |
+
We've published a new guide about how to combine use of GitHub Copilot's agent mode with Model Context Protocol (MCP) servers to complete complex tasks through agentic "loops" - illustrated through an accessibility compliance example. The guide also discusses best practices and benefits around using these two features together. See [Enhancing Copilot agent mode with MCP](https://docs.github.com/copilot/tutorials/enhancing-copilot-agent-mode-with-mcp).
|
| 481 |
+
|
| 482 |
+
<hr>
|
| 483 |
+
|
| 484 |
+
**27 June 2025**
|
| 485 |
+
|
| 486 |
+
We’ve published a new set of new documentation articles designed to help users make the most of the **Dependabot metrics page** in the organization’s security overview.
|
| 487 |
+
|
| 488 |
+
These clear, actionable guides help users:
|
| 489 |
+
|
| 490 |
+
- **[View metrics for Dependabot alerts](https://docs.github.com/enterprise-cloud@latest/code-security/security-overview/viewing-metrics-for-dependabot-alerts)**
|
| 491 |
+
This article is aimed at security and engineering leads who want to learn how to access and interpret key metrics, so they can quickly assess their organization’s exposure and remediation progress.
|
| 492 |
+
|
| 493 |
+
- **[Understand your organization’s exposure to vulnerable dependencies](https://docs.github.com/enterprise-cloud@latest/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/about-your-exposure-to-vulnerable-dependencies)**
|
| 494 |
+
In this article, security analysts and compliance teams get a deep dive into how vulnerable dependencies are tracked and what these numbers mean for their risk landscape.
|
| 495 |
+
|
| 496 |
+
- **[Prioritize Dependabot alerts using metrics](https://docs.github.com/enterprise-cloud@latest/code-security/securing-your-organization/understanding-your-organizations-exposure-to-vulnerabilites/prioritizing-dependabot-alerts-using-metrics)**
|
| 497 |
+
This guide provides engineering managers and remediation teams with strategies for using metrics to focus the team’s efforts where they matter most, making remediation more efficient.
|
| 498 |
+
|
| 499 |
+
<hr>
|
| 500 |
+
|
| 501 |
+
**27 June 2025**
|
| 502 |
+
|
| 503 |
+
We've published a new scenario-based guide for Copilot: [Learning a new programming language with GitHub Copilot](https://docs.github.com/copilot/tutorials/learning-a-new-programming-language-with-github-copilot).
|
| 504 |
+
|
| 505 |
+
This guide is for developers who are proficient with at least one programming language and want to learn an additional language. It provides information about how you can use Copilot as your personalized learning assistant. It also provides many ready-made prompts that you can use when you are learning a new programming language.
|
| 506 |
+
|
| 507 |
+
<hr>
|
| 508 |
+
|
| 509 |
+
**25 June 2025**
|
| 510 |
+
|
| 511 |
+
GitHub Models launched [Pay-As-You-Go billing and Bring Your Own Key support](https://github.blog/changelog/2025-06-24-github-models-now-supports-moving-beyond-free-limits/). This provides real production usage for the first time and lays the foundation for Models to scale beyond a free sandbox.
|
| 512 |
+
|
| 513 |
+
See [About Billing for GitHub Models](https://docs.github.com/billing/managing-billing-for-your-products/about-billing-for-github-models) and [Using your own API keys in GitHub Models](https://docs.github.com/github-models/github-models-at-scale/set-up-custom-model-integration-models-byok).
|
| 514 |
+
|
| 515 |
+
<hr>
|
| 516 |
+
|
| 517 |
+
**23 June 2025**
|
| 518 |
+
|
| 519 |
+
We’ve restructured our documentation around Copilot’s AI models to make it easier for users to understand, choose, and configure models across clients and plans. See [Supported AI models in Copilot](https://docs.github.com/copilot/using-github-copilot/ai-models/supported-ai-models-in-copilot) and [Choosing the right AI model for your task](https://docs.github.com/copilot/reference/ai-models/model-comparison).
|
| 520 |
+
|
| 521 |
+
<hr>
|
| 522 |
+
|
| 523 |
+
**18 June 2025**
|
| 524 |
+
|
| 525 |
+
We've published a new responsible AI article for Copilot: [Responsible use of GitHub Copilot code completion](https://docs.github.com/copilot/responsible-use-of-github-copilot-features/responsible-use-of-github-copilot-code-completion). This provides RAI transparency information for this feature of GitHub Copilot.
|
| 526 |
+
|
| 527 |
+
<hr>
|
| 528 |
+
|
| 529 |
+
**13 June 2025**
|
| 530 |
+
|
| 531 |
+
We've published a new article for people learning to code: [Developing your project locally](https://docs.github.com/get-started/learning-to-code/developing-your-project-locally).
|
| 532 |
+
|
| 533 |
+
This tutorial helps learners gain core skills needed to set up any project locally by working through an example client-side application using HTML, CSS, and JavaScript. The goal is to help new coders use GitHub tools to recognize patterns across different technologies and build confidence in their ability to set up any project locally.
|
| 534 |
+
|
| 535 |
+
<hr>
|
| 536 |
+
|
| 537 |
+
**13 June 2025**
|
| 538 |
+
|
| 539 |
+
To manage System for Cross-domain Identity Management (SCIM) integration with confidence, customers need to understand the different types of deprovisioning, the actions that trigger them, and their options for reinstating deprovisioned users.
|
| 540 |
+
|
| 541 |
+
We've published a new article to answer questions around suspending and reinstating Enterprise Managed Users, or users where SCIM is enabled on GitHub Enterprise Server: [Deprovisioning and reinstating users with SCIM](https://docs.github.com/enterprise-cloud@latest/admin/managing-iam/provisioning-user-accounts-with-scim/deprovisioning-and-reinstating-users).
|
| 542 |
+
|
| 543 |
+
<hr>
|
| 544 |
+
|
| 545 |
+
**11 June 2025**
|
| 546 |
+
|
| 547 |
+
We've added a new scenario-based guide for the Builder persona: [Using Copilot to explore a codebase](https://docs.github.com/copilot/tutorials/using-copilot-to-explore-a-codebase).
|
| 548 |
+
|
| 549 |
+
<hr>
|
| 550 |
+
|
| 551 |
+
**24 April 2025**
|
| 552 |
+
|
| 553 |
+
To help learners feel confident they are building real coding skills while using Copilot, we published [Setting up Copilot for learning to code](https://docs.github.com/get-started/learning-to-code/setting-up-copilot-for-learning-to-code).
|
| 554 |
+
|
| 555 |
+
This article helps learners take their first steps in coding with Copilot acting as a tutor, rather than a code completion tool. Configuring Copilot for learning emphasizes skill development and gives learners a way to use Copilot as a daily tool to foster learning and coding independence.
|
CONTRIBUTING_AR.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# دليل المساهمة في توثيق GitHub
|
| 2 |
+
|
| 3 |
+
أهلاً بك! يسعدنا اهتمامك بالمساهمة في توثيق GitHub. هذا المشروع مفتوح المصدر ويهدف إلى توفير أفضل تجربة تعليمية لمستخدمي GitHub حول العالم.
|
| 4 |
+
|
| 5 |
+
## كيف يمكنك المساهمة؟
|
| 6 |
+
|
| 7 |
+
يمكنك المساهمة بعدة طرق، منها:
|
| 8 |
+
1. **تحسين المحتوى الحالي**: تصحيح الأخطاء الإملائية أو النحوية، أو تحديث المعلومات القديمة.
|
| 9 |
+
2. **إضافة توثيق جديد**: إذا وجدت ميزة غير مغطاة بشكل كافٍ.
|
| 10 |
+
3. **الترجمة**: المساعدة في ترجمة المحتوى إلى اللغة العربية.
|
| 11 |
+
|
| 12 |
+
## خطوات المساهمة
|
| 13 |
+
|
| 14 |
+
1. قم بعمل **Fork** للمستودع.
|
| 15 |
+
2. أنشئ فرعاً جديداً لمساهمتك (`git checkout -b feature/amazing-feature`).
|
| 16 |
+
3. قم بإجراء التغييرات اللازمة.
|
| 17 |
+
4. تأكد من أن التغييرات تتبع معايير التنسيق المستخدمة.
|
| 18 |
+
5. قم بعمل **Commit** لتغييراتك (`git commit -m 'إضافة ميزة جديدة'`).
|
| 19 |
+
6. قم برفع التغييرات إلى فرعك (`git push origin feature/amazing-feature`).
|
| 20 |
+
7. افتح **Pull Request** للمراجعة.
|
| 21 |
+
|
| 22 |
+
## معايير المحتوى
|
| 23 |
+
|
| 24 |
+
- استخدم لغة عربية فصيحة وواضحة.
|
| 25 |
+
- حافظ على المصطلحات التقنية المتعارف عليها أو قدم ترجمة دقيقة لها.
|
| 26 |
+
- تأكد من أن جميع الروابط تعمل بشكل صحيح.
|
| 27 |
+
|
| 28 |
+
نشكرك على مساهمتك في جعل توثيق GitHub أفضل للجميع!
|
Dockerfile
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# This Dockerfile is used solely for production deployments to Moda
|
| 2 |
+
# For building this file locally, see src/deployments/production/README.md
|
| 3 |
+
# Environment variables are set in the Moda configuration:
|
| 4 |
+
# config/moda/configuration/*/env.yaml
|
| 5 |
+
|
| 6 |
+
# ---------------------------------------------------------------
|
| 7 |
+
# BASE STAGE: Install linux dependencies and set up the node user
|
| 8 |
+
# ---------------------------------------------------------------
|
| 9 |
+
# To update the sha:
|
| 10 |
+
# https://github.com/github/gh-base-image/pkgs/container/gh-base-image%2Fgh-base-noble
|
| 11 |
+
FROM ghcr.io/github/gh-base-image/gh-base-noble:20251119-090131-gb27dc275c AS base
|
| 12 |
+
|
| 13 |
+
# Install curl for Node install and determining the early access branch
|
| 14 |
+
# Install git for cloning docs-early-access & translations repos
|
| 15 |
+
# Install Node.js latest LTS
|
| 16 |
+
# https://github.com/nodejs/release#release-schedule
|
| 17 |
+
# Ubuntu's apt-get install nodejs is _very_ outdated
|
| 18 |
+
# Must run as root
|
| 19 |
+
RUN apt-get -qq update && apt-get -qq install --no-install-recommends curl git \
|
| 20 |
+
&& curl -sL https://deb.nodesource.com/setup_24.x | bash - \
|
| 21 |
+
&& apt-get install -y nodejs \
|
| 22 |
+
&& node --version
|
| 23 |
+
|
| 24 |
+
# Create the node user and home directory
|
| 25 |
+
ARG APP_HOME="/home/node/app" # Define in base so all child stages inherit it
|
| 26 |
+
RUN useradd -ms /bin/bash node \
|
| 27 |
+
&& mkdir -p $APP_HOME && chown -R node:node $APP_HOME
|
| 28 |
+
|
| 29 |
+
# -----------------------------------------------------------------
|
| 30 |
+
# CLONES STAGE: Clone docs-internal, early-access, and translations
|
| 31 |
+
# -----------------------------------------------------------------
|
| 32 |
+
FROM base AS clones
|
| 33 |
+
USER node:node
|
| 34 |
+
WORKDIR $APP_HOME
|
| 35 |
+
|
| 36 |
+
# We need to copy over content that will be merged with early-access
|
| 37 |
+
COPY --chown=node:node content content/
|
| 38 |
+
COPY --chown=node:node assets assets/
|
| 39 |
+
COPY --chown=node:node data data/
|
| 40 |
+
|
| 41 |
+
# Copy in build scripts and make them executable
|
| 42 |
+
COPY --chown=node:node --chmod=+x \
|
| 43 |
+
src/deployments/production/build-scripts/*.sh build-scripts/
|
| 44 |
+
|
| 45 |
+
# Use the mounted --secret to:
|
| 46 |
+
# - 1. Fetch the docs-internal repo
|
| 47 |
+
# - 2. Fetch the docs-early-access repo & override docs-internal with early access content
|
| 48 |
+
# - 3. Fetch each translations repo to the repo/translations directory
|
| 49 |
+
# We use --mount-type=secret to avoid the secret being copied into the image layers for security
|
| 50 |
+
# The secret passed via --secret can only be used in this RUN command
|
| 51 |
+
RUN --mount=type=secret,id=DOCS_BOT_PAT_BASE,mode=0444 \
|
| 52 |
+
# We don't cache because Docker can't know if we need to fetch new content from remote repos
|
| 53 |
+
echo "Don't cache this step by printing date: $(date)" && \
|
| 54 |
+
. ./build-scripts/fetch-repos.sh
|
| 55 |
+
|
| 56 |
+
# ------------------------------------------------
|
| 57 |
+
# PROD_DEPS STAGE: Install production dependencies
|
| 58 |
+
# ------------------------------------------------
|
| 59 |
+
FROM base AS prod_deps
|
| 60 |
+
USER node:node
|
| 61 |
+
WORKDIR $APP_HOME
|
| 62 |
+
|
| 63 |
+
# Copy what is needed to run npm ci
|
| 64 |
+
COPY --chown=node:node package.json package-lock.json ./
|
| 65 |
+
|
| 66 |
+
# Install only production dependencies (skip scripts to avoid husky)
|
| 67 |
+
RUN npm ci --omit=dev --ignore-scripts --registry https://registry.npmjs.org/
|
| 68 |
+
|
| 69 |
+
# ------------------------------------------------------------
|
| 70 |
+
# ALL_DEPS STAGE: Install all dependencies on top of prod deps
|
| 71 |
+
# ------------------------------------------------------------
|
| 72 |
+
FROM prod_deps AS all_deps
|
| 73 |
+
|
| 74 |
+
# Install dev dependencies on top of production ones
|
| 75 |
+
RUN npm ci --registry https://registry.npmjs.org/
|
| 76 |
+
|
| 77 |
+
# ----------------------------------
|
| 78 |
+
# BUILD STAGE: Build the application
|
| 79 |
+
# ----------------------------------
|
| 80 |
+
FROM base AS build
|
| 81 |
+
USER node:node
|
| 82 |
+
WORKDIR $APP_HOME
|
| 83 |
+
|
| 84 |
+
# Source code
|
| 85 |
+
COPY --chown=node:node src src/
|
| 86 |
+
COPY --chown=node:node package.json ./
|
| 87 |
+
COPY --chown=node:node next.config.ts ./
|
| 88 |
+
COPY --chown=node:node tsconfig.json ./
|
| 89 |
+
|
| 90 |
+
# From the clones stage
|
| 91 |
+
COPY --chown=node:node --from=clones $APP_HOME/data data/
|
| 92 |
+
COPY --chown=node:node --from=clones $APP_HOME/assets assets/
|
| 93 |
+
COPY --chown=node:node --from=clones $APP_HOME/content content/
|
| 94 |
+
COPY --chown=node:node --from=clones $APP_HOME/translations translations/
|
| 95 |
+
|
| 96 |
+
# From the all_deps stage (need dev deps for build)
|
| 97 |
+
COPY --chown=node:node --from=all_deps $APP_HOME/node_modules node_modules/
|
| 98 |
+
|
| 99 |
+
# Build the application
|
| 100 |
+
RUN npm run build
|
| 101 |
+
|
| 102 |
+
# ---------------------------------------------
|
| 103 |
+
# WARMUP_CACHE STAGE: Warm up remote JSON cache
|
| 104 |
+
# ---------------------------------------------
|
| 105 |
+
FROM build AS warmup_cache
|
| 106 |
+
|
| 107 |
+
# Generate remote JSON cache
|
| 108 |
+
RUN npm run warmup-remotejson
|
| 109 |
+
|
| 110 |
+
# --------------------------------------
|
| 111 |
+
# PRECOMPUTE STAGE: Precompute page info
|
| 112 |
+
# --------------------------------------
|
| 113 |
+
FROM build AS precompute_stage
|
| 114 |
+
|
| 115 |
+
# Generate precomputed page info
|
| 116 |
+
RUN npm run precompute-pageinfo -- --max-versions 2
|
| 117 |
+
|
| 118 |
+
# -------------------------------------------------
|
| 119 |
+
# PRODUCTION STAGE: What will run on the containers
|
| 120 |
+
# -------------------------------------------------
|
| 121 |
+
FROM base AS production
|
| 122 |
+
USER node:node
|
| 123 |
+
WORKDIR $APP_HOME
|
| 124 |
+
|
| 125 |
+
# Source code
|
| 126 |
+
COPY --chown=node:node src src/
|
| 127 |
+
COPY --chown=node:node package.json ./
|
| 128 |
+
COPY --chown=node:node next.config.ts ./
|
| 129 |
+
COPY --chown=node:node tsconfig.json ./
|
| 130 |
+
|
| 131 |
+
# From clones stage
|
| 132 |
+
COPY --chown=node:node --from=clones $APP_HOME/data data/
|
| 133 |
+
COPY --chown=node:node --from=clones $APP_HOME/assets assets/
|
| 134 |
+
COPY --chown=node:node --from=clones $APP_HOME/content content/
|
| 135 |
+
COPY --chown=node:node --from=clones $APP_HOME/translations translations/
|
| 136 |
+
|
| 137 |
+
# From prod_deps stage (production-only node_modules)
|
| 138 |
+
COPY --chown=node:node --from=prod_deps $APP_HOME/node_modules node_modules/
|
| 139 |
+
|
| 140 |
+
# From build stage
|
| 141 |
+
COPY --chown=node:node --from=build $APP_HOME/.next .next/
|
| 142 |
+
|
| 143 |
+
# From warmup_cache stage
|
| 144 |
+
COPY --chown=node:node --from=warmup_cache $APP_HOME/.remotejson-cache ./
|
| 145 |
+
|
| 146 |
+
# From precompute_stage
|
| 147 |
+
COPY --chown=node:node --from=precompute_stage $APP_HOME/.pageinfo-cache.json.br* ./
|
| 148 |
+
|
| 149 |
+
# This makes it possible to set `--build-arg BUILD_SHA=abc123`
|
| 150 |
+
# and it then becomes available as an environment variable in the docker run.
|
| 151 |
+
ARG BUILD_SHA
|
| 152 |
+
ENV BUILD_SHA=$BUILD_SHA
|
| 153 |
+
|
| 154 |
+
# Entrypoint to start the server
|
| 155 |
+
CMD ["node_modules/.bin/tsx", "src/frame/server.ts"]
|
Dockerfile.openapi_decorator
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM node:24-alpine
|
| 2 |
+
|
| 3 |
+
WORKDIR /openapi-check
|
| 4 |
+
|
| 5 |
+
RUN chown node:node /openapi-check -R
|
| 6 |
+
|
| 7 |
+
USER node
|
| 8 |
+
|
| 9 |
+
COPY --chown=node:node package.json /openapi-check
|
| 10 |
+
COPY --chown=node:node package-lock.json /openapi-check
|
| 11 |
+
COPY --chown=node:node tsconfig.json /openapi-check
|
| 12 |
+
ADD --chown=node:node src /openapi-check/src
|
| 13 |
+
ADD --chown=node:node content /openapi-check/content
|
| 14 |
+
ADD --chown=node:node data /openapi-check/data
|
| 15 |
+
|
| 16 |
+
RUN npm ci -D
|
| 17 |
+
|
| 18 |
+
ENTRYPOINT ["npx", "tsx", "/openapi-check/src/rest/scripts/openapi-check.ts"]
|
LICENSE
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Attribution 4.0 International
|
| 2 |
+
|
| 3 |
+
=======================================================================
|
| 4 |
+
|
| 5 |
+
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
| 6 |
+
does not provide legal services or legal advice. Distribution of
|
| 7 |
+
Creative Commons public licenses does not create a lawyer-client or
|
| 8 |
+
other relationship. Creative Commons makes its licenses and related
|
| 9 |
+
information available on an "as-is" basis. Creative Commons gives no
|
| 10 |
+
warranties regarding its licenses, any material licensed under their
|
| 11 |
+
terms and conditions, or any related information. Creative Commons
|
| 12 |
+
disclaims all liability for damages resulting from their use to the
|
| 13 |
+
fullest extent possible.
|
| 14 |
+
|
| 15 |
+
Using Creative Commons Public Licenses
|
| 16 |
+
|
| 17 |
+
Creative Commons public licenses provide a standard set of terms and
|
| 18 |
+
conditions that creators and other rights holders may use to share
|
| 19 |
+
original works of authorship and other material subject to copyright
|
| 20 |
+
and certain other rights specified in the public license below. The
|
| 21 |
+
following considerations are for informational purposes only, are not
|
| 22 |
+
exhaustive, and do not form part of our licenses.
|
| 23 |
+
|
| 24 |
+
Considerations for licensors: Our public licenses are
|
| 25 |
+
intended for use by those authorized to give the public
|
| 26 |
+
permission to use material in ways otherwise restricted by
|
| 27 |
+
copyright and certain other rights. Our licenses are
|
| 28 |
+
irrevocable. Licensors should read and understand the terms
|
| 29 |
+
and conditions of the license they choose before applying it.
|
| 30 |
+
Licensors should also secure all rights necessary before
|
| 31 |
+
applying our licenses so that the public can reuse the
|
| 32 |
+
material as expected. Licensors should clearly mark any
|
| 33 |
+
material not subject to the license. This includes other CC-
|
| 34 |
+
licensed material, or material used under an exception or
|
| 35 |
+
limitation to copyright. More considerations for licensors:
|
| 36 |
+
wiki.creativecommons.org/Considerations_for_licensors
|
| 37 |
+
|
| 38 |
+
Considerations for the public: By using one of our public
|
| 39 |
+
licenses, a licensor grants the public permission to use the
|
| 40 |
+
licensed material under specified terms and conditions. If
|
| 41 |
+
the licensor's permission is not necessary for any reason--for
|
| 42 |
+
example, because of any applicable exception or limitation to
|
| 43 |
+
copyright--then that use is not regulated by the license. Our
|
| 44 |
+
licenses grant only permissions under copyright and certain
|
| 45 |
+
other rights that a licensor has authority to grant. Use of
|
| 46 |
+
the licensed material may still be restricted for other
|
| 47 |
+
reasons, including because others have copyright or other
|
| 48 |
+
rights in the material. A licensor may make special requests,
|
| 49 |
+
such as asking that all changes be marked or described.
|
| 50 |
+
Although not required by our licenses, you are encouraged to
|
| 51 |
+
respect those requests where reasonable. More considerations
|
| 52 |
+
for the public:
|
| 53 |
+
wiki.creativecommons.org/Considerations_for_licensees
|
| 54 |
+
|
| 55 |
+
=======================================================================
|
| 56 |
+
|
| 57 |
+
Creative Commons Attribution 4.0 International Public License
|
| 58 |
+
|
| 59 |
+
By exercising the Licensed Rights (defined below), You accept and agree
|
| 60 |
+
to be bound by the terms and conditions of this Creative Commons
|
| 61 |
+
Attribution 4.0 International Public License ("Public License"). To the
|
| 62 |
+
extent this Public License may be interpreted as a contract, You are
|
| 63 |
+
granted the Licensed Rights in consideration of Your acceptance of
|
| 64 |
+
these terms and conditions, and the Licensor grants You such rights in
|
| 65 |
+
consideration of benefits the Licensor receives from making the
|
| 66 |
+
Licensed Material available under these terms and conditions.
|
| 67 |
+
|
| 68 |
+
Section 1 -- Definitions.
|
| 69 |
+
|
| 70 |
+
a. Adapted Material means material subject to Copyright and Similar
|
| 71 |
+
Rights that is derived from or based upon the Licensed Material
|
| 72 |
+
and in which the Licensed Material is translated, altered,
|
| 73 |
+
arranged, transformed, or otherwise modified in a manner requiring
|
| 74 |
+
permission under the Copyright and Similar Rights held by the
|
| 75 |
+
Licensor. For purposes of this Public License, where the Licensed
|
| 76 |
+
Material is a musical work, performance, or sound recording,
|
| 77 |
+
Adapted Material is always produced where the Licensed Material is
|
| 78 |
+
synched in timed relation with a moving image.
|
| 79 |
+
|
| 80 |
+
b. Adapter's License means the license You apply to Your Copyright
|
| 81 |
+
and Similar Rights in Your contributions to Adapted Material in
|
| 82 |
+
accordance with the terms and conditions of this Public License.
|
| 83 |
+
|
| 84 |
+
c. Copyright and Similar Rights means copyright and/or similar rights
|
| 85 |
+
closely related to copyright including, without limitation,
|
| 86 |
+
performance, broadcast, sound recording, and Sui Generis Database
|
| 87 |
+
Rights, without regard to how the rights are labeled or
|
| 88 |
+
categorized. For purposes of this Public License, the rights
|
| 89 |
+
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
| 90 |
+
Rights.
|
| 91 |
+
|
| 92 |
+
d. Effective Technological Measures means those measures that, in the
|
| 93 |
+
absence of proper authority, may not be circumvented under laws
|
| 94 |
+
fulfilling obligations under Article 11 of the WIPO Copyright
|
| 95 |
+
Treaty adopted on December 20, 1996, and/or similar international
|
| 96 |
+
agreements.
|
| 97 |
+
|
| 98 |
+
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
| 99 |
+
any other exception or limitation to Copyright and Similar Rights
|
| 100 |
+
that applies to Your use of the Licensed Material.
|
| 101 |
+
|
| 102 |
+
f. Licensed Material means the artistic or literary work, database,
|
| 103 |
+
or other material to which the Licensor applied this Public
|
| 104 |
+
License.
|
| 105 |
+
|
| 106 |
+
g. Licensed Rights means the rights granted to You subject to the
|
| 107 |
+
terms and conditions of this Public License, which are limited to
|
| 108 |
+
all Copyright and Similar Rights that apply to Your use of the
|
| 109 |
+
Licensed Material and that the Licensor has authority to license.
|
| 110 |
+
|
| 111 |
+
h. Licensor means the individual(s) or entity(ies) granting rights
|
| 112 |
+
under this Public License.
|
| 113 |
+
|
| 114 |
+
i. Share means to provide material to the public by any means or
|
| 115 |
+
process that requires permission under the Licensed Rights, such
|
| 116 |
+
as reproduction, public display, public performance, distribution,
|
| 117 |
+
dissemination, communication, or importation, and to make material
|
| 118 |
+
available to the public including in ways that members of the
|
| 119 |
+
public may access the material from a place and at a time
|
| 120 |
+
individually chosen by them.
|
| 121 |
+
|
| 122 |
+
j. Sui Generis Database Rights means rights other than copyright
|
| 123 |
+
resulting from Directive 96/9/EC of the European Parliament and of
|
| 124 |
+
the Council of 11 March 1996 on the legal protection of databases,
|
| 125 |
+
as amended and/or succeeded, as well as other essentially
|
| 126 |
+
equivalent rights anywhere in the world.
|
| 127 |
+
|
| 128 |
+
k. You means the individual or entity exercising the Licensed Rights
|
| 129 |
+
under this Public License. Your has a corresponding meaning.
|
| 130 |
+
|
| 131 |
+
Section 2 -- Scope.
|
| 132 |
+
|
| 133 |
+
a. License grant.
|
| 134 |
+
|
| 135 |
+
1. Subject to the terms and conditions of this Public License,
|
| 136 |
+
the Licensor hereby grants You a worldwide, royalty-free,
|
| 137 |
+
non-sublicensable, non-exclusive, irrevocable license to
|
| 138 |
+
exercise the Licensed Rights in the Licensed Material to:
|
| 139 |
+
|
| 140 |
+
a. reproduce and Share the Licensed Material, in whole or
|
| 141 |
+
in part; and
|
| 142 |
+
|
| 143 |
+
b. produce, reproduce, and Share Adapted Material.
|
| 144 |
+
|
| 145 |
+
2. Exceptions and Limitations. For the avoidance of doubt, where
|
| 146 |
+
Exceptions and Limitations apply to Your use, this Public
|
| 147 |
+
License does not apply, and You do not need to comply with
|
| 148 |
+
its terms and conditions.
|
| 149 |
+
|
| 150 |
+
3. Term. The term of this Public License is specified in Section
|
| 151 |
+
6(a).
|
| 152 |
+
|
| 153 |
+
4. Media and formats; technical modifications allowed. The
|
| 154 |
+
Licensor authorizes You to exercise the Licensed Rights in
|
| 155 |
+
all media and formats whether now known or hereafter created,
|
| 156 |
+
and to make technical modifications necessary to do so. The
|
| 157 |
+
Licensor waives and/or agrees not to assert any right or
|
| 158 |
+
authority to forbid You from making technical modifications
|
| 159 |
+
necessary to exercise the Licensed Rights, including
|
| 160 |
+
technical modifications necessary to circumvent Effective
|
| 161 |
+
Technological Measures. For purposes of this Public License,
|
| 162 |
+
simply making modifications authorized by this Section 2(a)
|
| 163 |
+
(4) never produces Adapted Material.
|
| 164 |
+
|
| 165 |
+
5. Downstream recipients.
|
| 166 |
+
|
| 167 |
+
a. Offer from the Licensor -- Licensed Material. Every
|
| 168 |
+
recipient of the Licensed Material automatically
|
| 169 |
+
receives an offer from the Licensor to exercise the
|
| 170 |
+
Licensed Rights under the terms and conditions of this
|
| 171 |
+
Public License.
|
| 172 |
+
|
| 173 |
+
b. No downstream restrictions. You may not offer or impose
|
| 174 |
+
any additional or different terms or conditions on, or
|
| 175 |
+
apply any Effective Technological Measures to, the
|
| 176 |
+
Licensed Material if doing so restricts exercise of the
|
| 177 |
+
Licensed Rights by any recipient of the Licensed
|
| 178 |
+
Material.
|
| 179 |
+
|
| 180 |
+
6. No endorsement. Nothing in this Public License constitutes or
|
| 181 |
+
may be construed as permission to assert or imply that You
|
| 182 |
+
are, or that Your use of the Licensed Material is, connected
|
| 183 |
+
with, or sponsored, endorsed, or granted official status by,
|
| 184 |
+
the Licensor or others designated to receive attribution as
|
| 185 |
+
provided in Section 3(a)(1)(A)(i).
|
| 186 |
+
|
| 187 |
+
b. Other rights.
|
| 188 |
+
|
| 189 |
+
1. Moral rights, such as the right of integrity, are not
|
| 190 |
+
licensed under this Public License, nor are publicity,
|
| 191 |
+
privacy, and/or other similar personality rights; however, to
|
| 192 |
+
the extent possible, the Licensor waives and/or agrees not to
|
| 193 |
+
assert any such rights held by the Licensor to the limited
|
| 194 |
+
extent necessary to allow You to exercise the Licensed
|
| 195 |
+
Rights, but not otherwise.
|
| 196 |
+
|
| 197 |
+
2. Patent and trademark rights are not licensed under this
|
| 198 |
+
Public License.
|
| 199 |
+
|
| 200 |
+
3. To the extent possible, the Licensor waives any right to
|
| 201 |
+
collect royalties from You for the exercise of the Licensed
|
| 202 |
+
Rights, whether directly or through a collecting society
|
| 203 |
+
under any voluntary or waivable statutory or compulsory
|
| 204 |
+
licensing scheme. In all other cases the Licensor expressly
|
| 205 |
+
reserves any right to collect such royalties.
|
| 206 |
+
|
| 207 |
+
Section 3 -- License Conditions.
|
| 208 |
+
|
| 209 |
+
Your exercise of the Licensed Rights is expressly made subject to the
|
| 210 |
+
following conditions.
|
| 211 |
+
|
| 212 |
+
a. Attribution.
|
| 213 |
+
|
| 214 |
+
1. If You Share the Licensed Material (including in modified
|
| 215 |
+
form), You must:
|
| 216 |
+
|
| 217 |
+
a. retain the following if it is supplied by the Licensor
|
| 218 |
+
with the Licensed Material:
|
| 219 |
+
|
| 220 |
+
i. identification of the creator(s) of the Licensed
|
| 221 |
+
Material and any others designated to receive
|
| 222 |
+
attribution, in any reasonable manner requested by
|
| 223 |
+
the Licensor (including by pseudonym if
|
| 224 |
+
designated);
|
| 225 |
+
|
| 226 |
+
ii. a copyright notice;
|
| 227 |
+
|
| 228 |
+
iii. a notice that refers to this Public License;
|
| 229 |
+
|
| 230 |
+
iv. a notice that refers to the disclaimer of
|
| 231 |
+
warranties;
|
| 232 |
+
|
| 233 |
+
v. a URI or hyperlink to the Licensed Material to the
|
| 234 |
+
extent reasonably practicable;
|
| 235 |
+
|
| 236 |
+
b. indicate if You modified the Licensed Material and
|
| 237 |
+
retain an indication of any previous modifications; and
|
| 238 |
+
|
| 239 |
+
c. indicate the Licensed Material is licensed under this
|
| 240 |
+
Public License, and include the text of, or the URI or
|
| 241 |
+
hyperlink to, this Public License.
|
| 242 |
+
|
| 243 |
+
2. You may satisfy the conditions in Section 3(a)(1) in any
|
| 244 |
+
reasonable manner based on the medium, means, and context in
|
| 245 |
+
which You Share the Licensed Material. For example, it may be
|
| 246 |
+
reasonable to satisfy the conditions by providing a URI or
|
| 247 |
+
hyperlink to a resource that includes the required
|
| 248 |
+
information.
|
| 249 |
+
|
| 250 |
+
3. If requested by the Licensor, You must remove any of the
|
| 251 |
+
information required by Section 3(a)(1)(A) to the extent
|
| 252 |
+
reasonably practicable.
|
| 253 |
+
|
| 254 |
+
4. If You Share Adapted Material You produce, the Adapter's
|
| 255 |
+
License You apply must not prevent recipients of the Adapted
|
| 256 |
+
Material from complying with this Public License.
|
| 257 |
+
|
| 258 |
+
Section 4 -- Sui Generis Database Rights.
|
| 259 |
+
|
| 260 |
+
Where the Licensed Rights include Sui Generis Database Rights that
|
| 261 |
+
apply to Your use of the Licensed Material:
|
| 262 |
+
|
| 263 |
+
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
| 264 |
+
to extract, reuse, reproduce, and Share all or a substantial
|
| 265 |
+
portion of the contents of the database;
|
| 266 |
+
|
| 267 |
+
b. if You include all or a substantial portion of the database
|
| 268 |
+
contents in a database in which You have Sui Generis Database
|
| 269 |
+
Rights, then the database in which You have Sui Generis Database
|
| 270 |
+
Rights (but not its individual contents) is Adapted Material; and
|
| 271 |
+
|
| 272 |
+
c. You must comply with the conditions in Section 3(a) if You Share
|
| 273 |
+
all or a substantial portion of the contents of the database.
|
| 274 |
+
|
| 275 |
+
For the avoidance of doubt, this Section 4 supplements and does not
|
| 276 |
+
replace Your obligations under this Public License where the Licensed
|
| 277 |
+
Rights include other Copyright and Similar Rights.
|
| 278 |
+
|
| 279 |
+
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
| 280 |
+
|
| 281 |
+
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
| 282 |
+
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
| 283 |
+
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
| 284 |
+
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
| 285 |
+
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
| 286 |
+
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
| 287 |
+
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
| 288 |
+
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
| 289 |
+
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
| 290 |
+
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
| 291 |
+
|
| 292 |
+
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
| 293 |
+
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
| 294 |
+
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
| 295 |
+
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
| 296 |
+
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
| 297 |
+
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
| 298 |
+
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
| 299 |
+
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
| 300 |
+
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
| 301 |
+
|
| 302 |
+
c. The disclaimer of warranties and limitation of liability provided
|
| 303 |
+
above shall be interpreted in a manner that, to the extent
|
| 304 |
+
possible, most closely approximates an absolute disclaimer and
|
| 305 |
+
waiver of all liability.
|
| 306 |
+
|
| 307 |
+
Section 6 -- Term and Termination.
|
| 308 |
+
|
| 309 |
+
a. This Public License applies for the term of the Copyright and
|
| 310 |
+
Similar Rights licensed here. However, if You fail to comply with
|
| 311 |
+
this Public License, then Your rights under this Public License
|
| 312 |
+
terminate automatically.
|
| 313 |
+
|
| 314 |
+
b. Where Your right to use the Licensed Material has terminated under
|
| 315 |
+
Section 6(a), it reinstates:
|
| 316 |
+
|
| 317 |
+
1. automatically as of the date the violation is cured, provided
|
| 318 |
+
it is cured within 30 days of Your discovery of the
|
| 319 |
+
violation; or
|
| 320 |
+
|
| 321 |
+
2. upon express reinstatement by the Licensor.
|
| 322 |
+
|
| 323 |
+
For the avoidance of doubt, this Section 6(b) does not affect any
|
| 324 |
+
right the Licensor may have to seek remedies for Your violations
|
| 325 |
+
of this Public License.
|
| 326 |
+
|
| 327 |
+
c. For the avoidance of doubt, the Licensor may also offer the
|
| 328 |
+
Licensed Material under separate terms or conditions or stop
|
| 329 |
+
distributing the Licensed Material at any time; however, doing so
|
| 330 |
+
will not terminate this Public License.
|
| 331 |
+
|
| 332 |
+
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
| 333 |
+
License.
|
| 334 |
+
|
| 335 |
+
Section 7 -- Other Terms and Conditions.
|
| 336 |
+
|
| 337 |
+
a. The Licensor shall not be bound by any additional or different
|
| 338 |
+
terms or conditions communicated by You unless expressly agreed.
|
| 339 |
+
|
| 340 |
+
b. Any arrangements, understandings, or agreements regarding the
|
| 341 |
+
Licensed Material not stated herein are separate from and
|
| 342 |
+
independent of the terms and conditions of this Public License.
|
| 343 |
+
|
| 344 |
+
Section 8 -- Interpretation.
|
| 345 |
+
|
| 346 |
+
a. For the avoidance of doubt, this Public License does not, and
|
| 347 |
+
shall not be interpreted to, reduce, limit, restrict, or impose
|
| 348 |
+
conditions on any use of the Licensed Material that could lawfully
|
| 349 |
+
be made without permission under this Public License.
|
| 350 |
+
|
| 351 |
+
b. To the extent possible, if any provision of this Public License is
|
| 352 |
+
deemed unenforceable, it shall be automatically reformed to the
|
| 353 |
+
minimum extent necessary to make it enforceable. If the provision
|
| 354 |
+
cannot be reformed, it shall be severed from this Public License
|
| 355 |
+
without affecting the enforceability of the remaining terms and
|
| 356 |
+
conditions.
|
| 357 |
+
|
| 358 |
+
c. No term or condition of this Public License will be waived and no
|
| 359 |
+
failure to comply consented to unless expressly agreed to by the
|
| 360 |
+
Licensor.
|
| 361 |
+
|
| 362 |
+
d. Nothing in this Public License constitutes or may be interpreted
|
| 363 |
+
as a limitation upon, or waiver of, any privileges and immunities
|
| 364 |
+
that apply to the Licensor or You, including from the legal
|
| 365 |
+
processes of any jurisdiction or authority.
|
| 366 |
+
|
| 367 |
+
=======================================================================
|
| 368 |
+
|
| 369 |
+
Creative Commons is not a party to its public
|
| 370 |
+
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
| 371 |
+
its public licenses to material it publishes and in those instances
|
| 372 |
+
will be considered the “Licensor.” The text of the Creative Commons
|
| 373 |
+
public licenses is dedicated to the public domain under the CC0 Public
|
| 374 |
+
Domain Dedication. Except for the limited purpose of indicating that
|
| 375 |
+
material is shared under a Creative Commons public license or as
|
| 376 |
+
otherwise permitted by the Creative Commons policies published at
|
| 377 |
+
creativecommons.org/policies, Creative Commons does not authorize the
|
| 378 |
+
use of the trademark "Creative Commons" or any other trademark or logo
|
| 379 |
+
of Creative Commons without its prior written consent including,
|
| 380 |
+
without limitation, in connection with any unauthorized modifications
|
| 381 |
+
to any of its public licenses or any other arrangements,
|
| 382 |
+
understandings, or agreements concerning use of licensed material. For
|
| 383 |
+
the avoidance of doubt, this paragraph does not form part of the
|
| 384 |
+
public licenses.
|
| 385 |
+
|
| 386 |
+
Creative Commons may be contacted at creativecommons.org.
|
LICENSE-CODE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MIT License
|
| 2 |
+
|
| 3 |
+
Copyright 2025 GitHub
|
| 4 |
+
|
| 5 |
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 6 |
+
of this software and associated documentation files (the "Software"), to deal
|
| 7 |
+
in the Software without restriction, including without limitation the rights
|
| 8 |
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 9 |
+
copies of the Software, and to permit persons to whom the Software is
|
| 10 |
+
furnished to do so, subject to the following conditions:
|
| 11 |
+
|
| 12 |
+
The above copyright notice and this permission notice shall be included in all
|
| 13 |
+
copies or substantial portions of the Software.
|
| 14 |
+
|
| 15 |
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 16 |
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 17 |
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 18 |
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 19 |
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 20 |
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 21 |
+
SOFTWARE.
|
README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# GitHub Docs <!-- omit in toc -->
|
| 2 |
+
|
| 3 |
+
Welcome to GitHub Docs! GitHub’s documentation is open source, meaning anyone from inside or outside the company can contribute. For full contributing guidelines, visit our [contributing guide](https://docs.github.com/en/contributing).
|
| 4 |
+
|
| 5 |
+
**ملاحظة للمساهمين العرب:** يمكنك الآن الاطلاع على [دليل المساهمة باللغة العربية](CONTRIBUTING_AR.md).
|
| 6 |
+
|
| 7 |
+
## Quick links by contributor type
|
| 8 |
+
|
| 9 |
+
* **Hubbers (GitHub employees):** See [CONTRIBUTING.md](https://github.com/github/docs-content/blob/main/CONTRIBUTING.md) in the `docs-content` repository for GitHub-specific processes.
|
| 10 |
+
|
| 11 |
+
* **Open source contributors:** See [CONTRIBUTING.md](https://github.com/github/docs/blob/main/.github/CONTRIBUTING.md) in the `docs` repository for a quick-start summary.
|
| 12 |
+
|
| 13 |
+
## How we sync changes across Docs repositories
|
| 14 |
+
|
| 15 |
+
There are two GitHub Docs repositories:
|
| 16 |
+
|
| 17 |
+
- **`github/docs`** (public): Open to external contributions
|
| 18 |
+
|
| 19 |
+
- **`github/docs-internal`** (private): For GitHub employee contributions.
|
| 20 |
+
|
| 21 |
+
The two repositories sync frequently. Content changes in one are reflected in the other. Hubbers might prefer to post in `docs` when working with a customer, but `docs` has limitations on the types of contributions it accepts to safeguard the site and our workflows. Internal contributions should usually go to `docs-internal`.
|
| 22 |
+
|
| 23 |
+
**Important:** The `docs` repository accepts contributions to content files (`.md` files in `/content` and select `/data` sections like reusables only). Infrastructure files, workflows, and site-building code are not open for external modification.
|
| 24 |
+
|
| 25 |
+
## New to contributing
|
| 26 |
+
|
| 27 |
+
Here are some resources to help you get started with open source contributions:
|
| 28 |
+
|
| 29 |
+
* [Finding ways to contribute to open source on GitHub](https://docs.github.com/en/get-started/exploring-projects-on-github/finding-ways-to-contribute-to-open-source-on-github)
|
| 30 |
+
* [Set up Git](https://docs.github.com/en/get-started/git-basics/set-up-git)
|
| 31 |
+
* [GitHub flow](https://docs.github.com/en/get-started/using-github/github-flow)
|
| 32 |
+
* [Collaborating with pull requests](https://docs.github.com/en/github/collaborating-with-pull-requests)
|
| 33 |
+
|
| 34 |
+
## License
|
| 35 |
+
|
| 36 |
+
This project is dual-licensed under:
|
| 37 |
+
|
| 38 |
+
* **Creative Commons Attribution 4.0** - for documentation and content in the assets, content, and data folders (see [LICENSE](LICENSE))
|
| 39 |
+
* **MIT License** - for code (see [LICENSE-CODE](LICENSE-CODE))
|
assets/ghes-collectd-metrics.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
assets/images/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Images
|
| 2 |
+
The `/assets/images` directory holds all the site's images.
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
See [imaging and versioning](https://github.com/github/docs/blob/main/contributing/images-and-versioning.md) from the contributing docs for more information.
|
assets/images/_fixtures/electrocat.png
ADDED
|