diff --git a/assets/images/banner-images/hero-home.png b/assets/images/banner-images/hero-home.png deleted file mode 100644 index e45537a06d38..000000000000 Binary files a/assets/images/banner-images/hero-home.png and /dev/null differ diff --git a/content/actions/reference/limits.md b/content/actions/reference/limits.md index f492e2ebd285..742269994691 100644 --- a/content/actions/reference/limits.md +++ b/content/actions/reference/limits.md @@ -30,6 +30,7 @@ These limits are subject to change. | Workflow execution limit | Gate approval time | 30 days | A workflow may wait for up to [30 days on environment approvals](/actions/reference/workflows-and-actions/deployments-and-environments#wait-timer). | {% octicon "x" aria-label="No" %} | | Workflow execution limit | Job Matrix | 256 jobs / workflow run | A job matrix can generate a maximum of 256 jobs per workflow run. This limit applies to both {% data variables.product.github %}-hosted and self-hosted runners. | {% octicon "x" aria-label="No" %} | | Workflow execution limit | Re-run | 50 re-runs | A workflow run can be re-run a maximum of 50 times. This limit includes both full re-runs and re-runs of a subset of jobs. | {% octicon "check" aria-label="Yes" %} Support ticket | +| Workflow file | Workflow file size | 500 KB per file | A workflow file larger than 500 KB will not start runs. See [Workflow file size](#workflow-file-size). | {% octicon "x" aria-label="No" %} | | Checks | Check runs per check suite | 50,000 check runs / check suite | A check suite can have a maximum of 50,000 check runs. This limit applies to check runs created through the Checks API and by {% data variables.product.prodname_actions %} workflow runs. When a check suite reaches this limit, additional check runs cannot be created for that check suite. | {% octicon "check" aria-label="Yes" %} Support ticket | | Workflows queuing | Workflow trigger event rate limit | 1500 events / 10 seconds / repository | Each repository is limited to events triggering a workflow run. | {% octicon "check" aria-label="Yes" %} Support ticket | | Workflows queuing | Workflow run queued | 500 workflow runs / 10 seconds | When the limit is reached, the workflow runs that were supposed to be triggered by the webhook events will be blocked and will not be queued. Reusable workflows are viewed as a single entity. For example, a run with 30 reusable workflows counts as 1 in this instance. | {% octicon "x" aria-label="No" %} | @@ -52,6 +53,10 @@ These limits are subject to change. | Dependency caching | Downloads per minute | 1500 per minute | Each repository is limited to 1500 cache entry downloads per minute. If this limit is exceeded, subsequent cache download attempts will fail until the rate limit resets. | {% octicon "x" aria-label="No" %} | | Dependency caching | Deletes per minute | 400 per minute | Each repository is limited to 400 cache delete operations per minute. If this limit is exceeded, subsequent cache delete attempts will fail until the rate limit resets. Each request to delete caches either by key or by ID counts towards this limit. | {% octicon "x" aria-label="No" %} | +### Workflow file size + +Each workflow file in the `.github/workflows` directory must be 500 KB or smaller to trigger a run. To reduce the size of a workflow file, move shared logic into a reusable workflow or a composite action. See [AUTOTITLE](/actions/how-tos/reuse-automations/reuse-workflows) or [AUTOTITLE](/actions/tutorials/create-actions/create-a-composite-action). + ### Job concurrency limits for {% data variables.product.github %}-hosted runners {% data variables.product.github %} Support **can** increase job concurrency limits for {% data variables.product.prodname_actions %}. To request an increase, submit a support ticket. diff --git a/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md b/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md index f7f3e13fda19..3747921fc526 100644 --- a/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md +++ b/content/copilot/how-tos/copilot-cli/customize-copilot/use-byok-models.md @@ -6,7 +6,6 @@ allowTitleToDifferFromFilename: true versions: fpt: '*' ghec: '*' - ghes: '>=3.22' contentType: how-tos category: - Configure Copilot @@ -18,9 +17,7 @@ docsTeamMetrics: You can configure {% data variables.copilot.copilot_cli_short %} to use your own LLM provider, also called BYOK (Bring Your Own Key), instead of {% data variables.product.github %}-hosted models. This lets you connect to OpenAI-compatible endpoints, Azure OpenAI, or Anthropic, including locally running models such as Ollama. > [!NOTE] -> This article is for users who want to configure their own LLM provider API key on their local machine. To set up custom models for users in an enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys).{% ifversion ghes %} -> -> This article is also for administrators who want to configure their own LLM provider API key in GHES and for users who want to use those models in {% data variables.copilot.copilot_cli_short %}.{% endif %} +> This article is for users who want to configure their own LLM provider API key on their local machine. To set up custom models for users in an enterprise, see [AUTOTITLE](/copilot/how-tos/administer-copilot/manage-for-enterprise/use-your-own-api-keys). ## Prerequisites @@ -129,152 +126,3 @@ You can run {% data variables.copilot.copilot_cli_short %} in offline mode to pr ``` 1. {% data reusables.copilot.copilot-cli.start-cli %} - -{% ifversion ghes %} - -## Using Copilot CLI with GitHub Enterprise Server - -> [!NOTE] -> This feature is in {% data variables.release-phases.technical_preview %} and subject to change. Additionally, GHES 3.22, the first version to support this functionality, is in the release candidate phase. We recommend waiting until GHES 3.22 reaches GA before validating and using this capability. We are publishing these docs early to provide visibility into what is coming. - -{% data variables.copilot.copilot_cli_short %} can be configured to work with {% data variables.product.prodname_ghe_server %} for enterprises that operate in disconnected or air-gapped environments without connectivity to {% data variables.product.github %} Cloud. Your {% data variables.product.prodname_ghe_server %} administrator configures a model provider once, and users across the enterprise can use {% data variables.copilot.copilot_cli_short %} with their {% data variables.product.prodname_ghe_server %} credentials. - -Setting up this feature involves two roles: - -* **Administrator**: Configures the model provider on the {% data variables.product.prodname_ghe_server %} instance using `ghe-config`. This is a one-time setup that requires administrative SSH access. -* **End user**: Sets environment variables on their local machine to connect {% data variables.copilot.copilot_cli_short %} to the instance. - -### Prerequisites - -* Your {% data variables.product.prodname_ghe_server %} administrator has configured a model provider on the instance. See [Configuring your {% data variables.product.prodname_ghe_server %} instance](#configuring-your-github-enterprise-server-instance). -* {% data variables.copilot.copilot_cli_short %} is installed on client machines. See [AUTOTITLE](/copilot/how-tos/copilot-cli/set-up-copilot-cli/install-copilot-cli). -* {% data variables.product.company_short %} CLI (`gh`) is installed on client machines. See [Installing gh](https://cli.github.com/manual/installation). - -The same [supported providers](#supported-providers) and [model requirements](#model-requirements) apply. - -### Configuring your {% data variables.product.prodname_ghe_server %} instance - -This step is for the operator or administrator of the {% data variables.product.prodname_ghe_server %} instance. - -With administrative SSH access to the {% data variables.product.prodname_ghe_server %} instance, configure the model provider using the following `ghe-config` values. After configuring, run `ghe-config-apply` to apply the changes. - -| Variable name | Required | Options | Description | -|---|---|---|---| -| `app.copilot-proxy.enabled` | Yes | `true`, `false` | Enables or disables the feature. | -| `app.copilot-proxy.endpoint-url` | Yes | URI | The full upstream base URL including any version prefix (for example, `https://api.openai.com/v1`). | -| `secrets.copilot-proxy.endpoint-key` | Yes | String | The API key for the upstream provider. | -| `app.copilot-proxy.provider-model-id` | Yes | String | The provider model ID that {% data variables.copilot.copilot_cli_short %} uses to look up the model internally. | -| `app.copilot-proxy.provider-type` | Yes | `openai`, `azure`, `anthropic` | The provider type. OpenAI includes OpenAI, Ollama, vLLM, Foundry Local, and any other OpenAI Chat Completions API-compatible endpoint. | -| `app.copilot-proxy.upstream-timeout` | No | Integer (seconds) | Read/send timeout in seconds for upstream requests. If not set, falls back to the default timeout. | -| `app.copilot-proxy.provider-wire-api` | No | `completions`, `responses` | The wire API format for the provider. | -| `app.copilot-proxy.provider-wire-model` | No | String | Overrides the model identifier sent to the upstream provider if it differs from the internal model ID. | -| `app.copilot-proxy.enable-upstream-probe` | No | `true`, `false` | Enables or disables the startup upstream probe. Defaults to enabled. When disabled, the startup probe is skipped. | - -### Examples - -```shell -ghe-config app.copilot-proxy.enabled true -ghe-config app.copilot-proxy.endpoint-url 'https://api.openai.com/v1' -ghe-config secrets.copilot-proxy.endpoint-key 'YOUR-API-KEY' -ghe-config app.copilot-proxy.provider-model-id 'gpt-5.5' -ghe-config app.copilot-proxy.provider-wire-model 'gpt-5.5' -ghe-config app.copilot-proxy.provider-type openai -ghe-config app.copilot-proxy.upstream-timeout 300 -ghe-config app.copilot-proxy.enable-upstream-probe false -ghe-config-apply -``` - -Replace `YOUR-API-KEY` with the real API key before applying. - -### Configuring your {% data variables.copilot.copilot_cli_short %} client (end user) - -Configure {% data variables.copilot.copilot_cli_short %} to connect to your {% data variables.product.prodname_ghe_server %} instance by setting the following environment variables before starting {% data variables.copilot.copilot_cli_short %}. - -| Environment variable | Required | Description | -|---|---|---| -| `COPILOT_PROVIDER_GHES_HOST` | Yes | The hostname of your {% data variables.product.prodname_ghe_server %} instance. | -| `COPILOT_PROVIDER_GHES_TOKEN` | Yes | A {% data variables.product.pat_generic %} for the {% data variables.product.prodname_ghe_server %} instance. This token authenticates requests to the instance. | -| `COPILOT_OFFLINE=true` | Yes | Enables offline mode. The {% data variables.product.prodname_ghe_server %} provider is only active when offline mode is enabled. | - -### Understanding client (end user) tokens - -{% data variables.copilot.copilot_cli_short %} needs access to LLM inference, so `COPILOT_PROVIDER_GHES_TOKEN` is always required. You will also very likely want {% data variables.copilot.copilot_cli_short %} to perform {% data variables.product.github %} operations such as create issues, pull requests, and search repositories. Such operations can be done via the {% data variables.product.github %} CLI. - -It is recommended and preferred that you run `gh auth login --hostname YOUR-GHES-HOSTNAME`. After it succeeds, next step is to set COPILOT_PROVIDER_GHES_TOKEN to the token generated in `gh auth login --hostname YOUR-GHES-HOSTNAME`. It is more secure to retrieve the token dynamically rather than copying it from `~/.config/gh/hosts.yml`. You can do so by using `COPILOT_PROVIDER_GHES_TOKEN="$(gh auth token --hostname YOUR-GHES-HOSTNAME)"`. - -Alternatively, you can generate a {% data variables.product.pat_generic %} on your {% data variables.product.prodname_ghe_server %} instance, set that token as `COPILOT_PROVIDER_GHES_TOKEN`, and use the same token when running `gh auth login --hostname YOUR-GHES-HOSTNAME`. - -The above approach works when you are using {% data variables.copilot.copilot_cli_short %} interactively. For automation, you need to do a few things differently: -* Set `GH_ENTERPRISE_TOKEN` (or `GITHUB_ENTERPRISE_TOKEN`) to the {% data variables.product.pat_generic %}. -* Set `GH_HOST` to your server's hostname. -* When both `GH_ENTERPRISE_TOKEN` and `gh auth login` credentials exist for the same host, the environment variable takes precedence. - -### Recommended end user setup - -1. Authenticate the {% data variables.product.company_short %} CLI. - - ```shell - gh auth login --hostname YOUR-GHES-HOSTNAME - ``` - -1. Set the following environment variables: - - ```shell - export COPILOT_PROVIDER_GHES_HOST=YOUR-GHES-HOSTNAME - export COPILOT_PROVIDER_GHES_TOKEN="$(gh auth token --hostname YOUR-GHES-HOSTNAME)" - export COPILOT_OFFLINE=true - ``` - - If you are authenticated with `gh auth login` to multiple accounts, you can set `GH_HOST` to your server's hostname and set `GH_ENTERPRISE_TOKEN` (or `GITHUB_ENTERPRISE_TOKEN`) to `"$(gh auth token --hostname YOUR-GHES-HOSTNAME)"`. This ensures {% data variables.product.prodname_cli %} targets your {% data variables.product.prodname_ghe_server %} instance. - - ```shell - export GH_HOST=YOUR-GHES-HOSTNAME - export GH_ENTERPRISE_TOKEN="$(gh auth token --hostname YOUR-GHES-HOSTNAME)" - ``` - -1. {% data reusables.copilot.copilot-cli.start-cli %} - -You can run this entire set-up as a script. - -### Examples - -If both {% data variables.product.prodname_ghe_server %} and your {% data variables.copilot.copilot_cli_short %} configurations are correct, then you should see responses like the following in your {% data reusables.copilot.copilot-cli.start-cli %} session. - -```shell - • fabric-core-mcp — disabled - • powerbi-mcp — disabled - • slack — connected - - ● Current model: gpt-5.5 - - ❯ Hello 13:31 - - ● Hello! - - ❯ what is going on in github/codeql-action repo? 13:33 - - ● I’ll check recent repository activity on the GHES host: repo metadata, open - PRs/issues, and latest commits. - - $ Shell Fetch repo metadata 2 lines… 5s - gh api --hostname "$GH_HOST" repos/github/codeql-action --jq '{name_with_own… -``` - -### Supported capabilities on {% data variables.product.prodname_ghe_server %} - -For the most up-to-date information on {% data variables.copilot.copilot_cli_short %} features, refer to the [AUTOTITLE](/copilot/how-tos/copilot-cli) as the primary source of truth. In general, any capability that relies on connectivity to {% data variables.product.github %} cloud services is not available in the {% data variables.product.prodname_ghe_server %} offline configuration. - -The following table provides a directional overview of what is available in {% data variables.product.prodname_ghe_server %} offering. - -| Capability | {% data variables.product.prodname_dotcom %} / {% data variables.product.prodname_ghe_cloud %} | {% data variables.product.prodname_ghe_server %} | -|---|---|---| -| AI-assisted coding (prompts, code generation, debugging) | {% octicon "check-circle" aria-label="Available" %} | {% octicon "check-circle" aria-label="Available" %} | -| Shell commands and file operations | {% octicon "check-circle" aria-label="Available" %} | {% octicon "check-circle" aria-label="Available" %} | -| {% data variables.product.github %} operations (issues, PRs, repos) via `gh` CLI | {% octicon "check-circle" aria-label="Available" %} | {% octicon "check-circle" aria-label="Available" %} (requires `gh` CLI authenticated to the instance) | -| {% data variables.product.github %} MCP server tools | {% octicon "check-circle" aria-label="Available" %} | {% octicon "x-circle" aria-label="Not available" %} | -| Web search and web fetch | {% octicon "check-circle" aria-label="Available" %} | {% octicon "x-circle" aria-label="Not available" %} | -| {% data variables.product.prodname_copilot_short %} model selection ({% data variables.product.github %}-hosted models) | {% octicon "check-circle" aria-label="Available" %} | {% octicon "x-circle" aria-label="Not available" %} | -| Telemetry and usage reporting | {% octicon "check-circle" aria-label="Available" %} | {% octicon "x-circle" aria-label="Not available" %} | -| Auto-update | {% octicon "check-circle" aria-label="Available" %} | {% octicon "x-circle" aria-label="Not available" %} | - -{% endif %} diff --git a/data/reusables/actions/larger-runners-table.md b/data/reusables/actions/larger-runners-table.md index c8aed1b1af9a..75a7c8b131bf 100644 --- a/data/reusables/actions/larger-runners-table.md +++ b/data/reusables/actions/larger-runners-table.md @@ -1,4 +1,4 @@ | Runner Size | Architecture| Processor (CPU)| Memory (RAM) | Storage (SSD) | Workflow label | | ------------| ------------| -------------- | ------------- | ------------- |--------------------------------------------------------------------------------------------------------------------------------------------------| | Large | Intel | 12 | 30 GB | 14 GB | macos-latest-large, macos-14-large, macos-15-large (latest), macos-26-large | -| XLarge | arm64 (M2) | 5 (+ 8 GPU hardware acceleration) | 14 GB | 14 GB | macos-latest-xlarge, macos-14-xlarge, macos-15-xlarge (latest), macos-26-xlarge | +| XLarge | arm64 (M2) | 5 (+ 8 GPU hardware acceleration) | 14 GB | 14 GB | macos-latest-xlarge, macos-14-xlarge, macos-15-xlarge (latest), macos-26-xlarge, xcode-27-xlarge ({% data variables.release-phases.public_preview_caps %}) | diff --git a/data/reusables/actions/supported-github-runners.md b/data/reusables/actions/supported-github-runners.md index f4935d53b5bd..3c14fb155a3c 100644 --- a/data/reusables/actions/supported-github-runners.md +++ b/data/reusables/actions/supported-github-runners.md @@ -85,7 +85,8 @@ For public repositories, jobs using the workflow labels shown in the table below macos-latest, macos-14, macos-15, - macos-26 + macos-26, + xcode-27 ({% data variables.release-phases.public_preview_caps %}) @@ -178,7 +179,8 @@ For {% ifversion ghec %}internal and{% endif %} private repositories, jobs using macos-latest, macos-14, macos-15, - macos-26 + macos-26, + xcode-27 ({% data variables.release-phases.public_preview_caps %}) diff --git a/data/reusables/enterprise/repo-policy-rules-manage-bypass-request.md b/data/reusables/enterprise/repo-policy-rules-manage-bypass-request.md new file mode 100644 index 000000000000..97eeb16b5424 --- /dev/null +++ b/data/reusables/enterprise/repo-policy-rules-manage-bypass-request.md @@ -0,0 +1,17 @@ +> [!NOTE] Repository policy delegated bypass is in {% data variables.release-phases.public_preview %} and subject to change. + +You can view and manage all requests for bypass privileges on the “Bypass Requests" page, located under the **Policy** settings. + +You can filter requests by approver (member of the bypass list), requester (contributor making the request), timeframe, and status. The following statuses are assigned to a request: + +|Status|Description| +|---------|-----------| +|`Cancelled`| The request has been cancelled by the contributor.| +|`Completed`|The request has been approved and the commit(s) have been pushed to the repository.| +|`Denied`|The request has been reviewed and denied.| +|`Expired`| The request has expired. Requests are valid for 7 days. | +|`Open`| The request has either not yet been reviewed, or has been approved but the commit(s) have not been pushed to the repository. | + +When a contributor requests bypass privileges to push a commit containing restricted content, members of the bypass list all receive an email notification containing a link to the request. Members of the bypass list then have 7 days to review and either approve or deny the request before the request expires. + +The contributor is notified of the decision by email and must take the required action. If the request is approved, the contributor can push the commit containing the restricted content to the repository. If the request is denied, the contributor must remove the restricted content from the commit in order to successfully push the commit to the repository.