Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/sync-openapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ jobs:
# If nothing to commit, exit now. It's fine. No orphans.
changes=$(git diff --name-only | wc -l)
if [[ $changes -eq 0 ]]; then
echo "There are no changes to commit after running `npm run sync-rest` Exiting..."
echo "There are no changes to commit after running 'npm run sync-rest'. Exiting..."
exit 0
fi

Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/validate-openapi-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: Validate OpenAPI Check Docker

# **What it does**: Tests building and running the OpenAPI check Docker container
# **Why we have it**: To ensure the Dockerfile and openapi-check script work correctly
# **Who does it impact**: Docs engineering.

on:
workflow_dispatch:
pull_request:
paths:
- 'Dockerfile.openapi_decorator'
- 'src/rest/scripts/openapi-check.ts'
- 'src/rest/scripts/utils/get-operations.ts'
- 'src/rest/scripts/utils/operation.ts'
# In case dependencies change
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
# Self-test
- '.github/workflows/validate-openapi-check.yml'

permissions:
contents: read

jobs:
validate-openapi-check:
runs-on: ubuntu-latest
if: github.repository == 'github/docs-internal'
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1

- name: Build Docker image
run: |
docker build -f Dockerfile.openapi_decorator -t openapi-decorator:test .

- name: Test Docker image with sample OpenAPI file
run: |
docker run --rm openapi-decorator:test -f "src/rest/data/fpt-2022-11-28/schema.json"

- name: Test Docker image with multiple OpenAPI files
run: |
docker run --rm openapi-decorator:test \
-f "src/rest/data/fpt-2022-11-28/schema.json" \
"src/rest/data/ghec-2022-11-28/schema.json"
7 changes: 3 additions & 4 deletions Dockerfile.openapi_decorator
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
FROM node:18.15-alpine

RUN apk add --no-cache git python make g++
FROM node:24-alpine

WORKDIR /openapi-check

Expand All @@ -10,10 +8,11 @@ USER node

COPY --chown=node:node package.json /openapi-check
COPY --chown=node:node package-lock.json /openapi-check
COPY --chown=node:node tsconfig.json /openapi-check
ADD --chown=node:node src /openapi-check/src
ADD --chown=node:node content /openapi-check/content
ADD --chown=node:node data /openapi-check/data

RUN npm ci -D

ENTRYPOINT ["node", "/openapi-check/src/rest/scripts/openapi-check.ts"]
ENTRYPOINT ["npx", "tsx", "/openapi-check/src/rest/scripts/openapi-check.ts"]
78 changes: 0 additions & 78 deletions content/billing/reference/actions-minute-multipliers.md

This file was deleted.

80 changes: 80 additions & 0 deletions content/billing/reference/actions-runner-pricing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: Actions runner pricing
shortTitle: Actions runner pricing
intro: Reference information for calculating the cost of using different {% data variables.product.github %}-hosted runners.
versions:
fpt: "*"
ghec: "*"
ghes: "*"
topics:
- Billing
- Actions
contentType: reference
redirect_from:
- /billing/reference/actions-minute-multipliers
---

{% data variables.product.github %} rounds the minutes and partial minutes each job uses up to the nearest whole minute.

## Standard runners

| Operating system | Per-minute rate (USD) |
| ------------------------------------ | --------------------- |
| Linux 1-core | $0.002 |
| Linux 2-core | $0.008 |
| Windows 2-core | $0.016 |
| macOS 3-core or 4-core (M1 or Intel) | $0.08 |

## x64-powered {% data variables.actions.hosted_runners %}

| Operating system | Per-minute rate (USD) |
| --------------------- | --------------------- |
| Linux Advanced 2-core | $0.008 |
| Linux 4-core | $0.016 |
| Linux 8-core | $0.032 |
| Linux 16-core | $0.064 |
| Linux 32-core | $0.128 |
| Linux 64-core | $0.256 |
| Linux 96-core | $0.384 |
| Windows 4-core | $0.032 |
| Windows 8-core | $0.064 |
| Windows 16-core | $0.128 |
| Windows 32-core | $0.256 |
| Windows 64-core | $0.512 |
| Windows 96-core | $0.768 |
| macOS 12-core | $0.12 |

## arm64-powered {% data variables.actions.hosted_runners %}

| Operating system | Per-minute rate (USD) |
| ----------------- | --------------------- |
| Linux 2-core | $0.005 |
| Linux 4-core | $0.01 |
| Linux 8-core | $0.02 |
| Linux 16-core | $0.04 |
| Linux 32-core | $0.08 |
| Linux 64-core | $0.16 |
| Windows 2-core | $0.01 |
| Windows 4-core | $0.02 |
| Windows 8-core | $0.04 |
| Windows 16-core | $0.08 |
| Windows 32-core | $0.16 |
| Windows 64-core | $0.32 |
| macOS 6-core (M1) | $0.16 |

## GPU-powered {% data variables.actions.hosted_runners %}

| Operating system | Per-minute rate (USD) |
| ---------------- | --------------------- |
| Linux 4-core | $0.07 |
| Windows 4-core | $0.14 |

## Points to note about rates for runners

* The number of jobs you can run concurrently across all repositories in your user or organization account depends on your {% data variables.product.github %} plan. For more information, see [AUTOTITLE](/actions/learn-github-actions/usage-limits-billing-and-administration) for {% data variables.product.github %}-hosted runners and [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/usage-limits-for-self-hosted-runners) for self-hosted runner usage limits.
* {% data reusables.actions.larger-runner-permissions %}
* {% data reusables.actions.about-larger-runners-billing %}
* For {% data variables.actions.hosted_runner %}s, there is no additional cost for configurations that assign public static IP addresses to a {% data variables.actions.hosted_runner %}. For more information on {% data variables.actions.hosted_runner %}s, see [AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners).
* Included minutes cannot be used for {% data variables.actions.hosted_runner %}s.
* The {% data variables.actions.hosted_runner %}s are not free for public repositories.
* Custom images can only be used with larger runners and are billed at the same per-minute rates as those runners.
8 changes: 4 additions & 4 deletions content/billing/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ title: Reference for billing
shortTitle: Reference
intro: Find information to support your use of billing.
versions:
fpt: '*'
ghec: '*'
ghes: '*'
fpt: "*"
ghec: "*"
ghes: "*"
topics:
- Billing
children:
- /product-usage-included
- /actions-minute-multipliers
- /actions-runner-pricing
- /billing-reports
- /supported-payment-methods
- /azure-billing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,6 @@ Users can include hidden messages in issues assigned to {% data variables.produc
### Limitations in Copilot's compatibility with other features

* **{% data variables.product.prodname_copilot_short %} does not sign its commits**. If you have the "Require signed commits" rule or branch protection enabled, you must rewrite the commit history in order to merge {% data variables.product.prodname_copilot_short %}'s pull requests. See [AUTOTITLE](/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#require-signed-commits).
* **{% data variables.product.prodname_copilot_short %} does not work with self-hosted {% data variables.product.prodname_actions %} runners**. {% data variables.product.prodname_copilot_short %} has access to its own development environment, running in {% data variables.product.prodname_actions %}, and must use {% data variables.product.prodname_dotcom %}-hosted runners. See [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent#upgrading-to-larger-github-hosted-github-actions-runners).
* **{% data variables.copilot.copilot_coding_agent %} does not work in personal repositories owned by {% data variables.enterprise.prodname_managed_users %}**. This is because {% data variables.copilot.copilot_coding_agent %} requires {% data variables.product.company_short %}-hosted runners, which are not available to repositories owned by {% data variables.enterprise.prodname_managed_users %}. See [AUTOTITLE](/actions/using-github-hosted-runners/using-github-hosted-runners/about-github-hosted-runners).
* **{% data variables.copilot.copilot_coding_agent %} doesn't account for content exclusions**. Content exclusions allow administrators to configure {% data variables.product.prodname_copilot_short %} to ignore certain files. When using {% data variables.copilot.copilot_coding_agent %}, {% data variables.product.prodname_copilot_short %} will not ignore these files, and will be able to see and update them. See [AUTOTITLE](/copilot/managing-copilot/configuring-and-auditing-content-exclusion/excluding-content-from-github-copilot).
* **{% data variables.copilot.copilot_coding_agent %} only works with repositories hosted on {% data variables.product.github %}**. If your repository is stored using a different code hosting platform, {% data variables.product.prodname_copilot_short %} won't be able to work on it.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,40 +156,11 @@ The [Notion MCP server](https://github.com/makenotion/notion-mcp-server) gives {

### Example: Azure

The [Azure MCP server](https://github.com/Azure/azure-mcp) creates a seamless connection between {% data variables.product.prodname_copilot_short %} and key Azure services such as Azure Cosmos DB and the Azure Storage platform.
The [Azure MCP Server](https://github.com/Azure/azure-mcp) allows {% data variables.product.prodname_copilot_short %} to understand your Azure-specific files and Azure resources within your subscription when making code changes.

To use the Azure MCP with {% data variables.copilot.copilot_coding_agent %}, you must update the repository's `copilot-setup-steps.yml` file to include an Azure login workflow step.
To automatically configure your repository with a `copilot-setup-steps.yml` file to authenticate with Azure, plus secrets for authentication, clone the repository locally then run the [Azure Developer CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/?ref_product=copilot&ref_type=engagement&ref_style=button)'s `azd coding-agent config` command in the root of the repository.

1. Configure OIDC in a Microsoft Entra application, trusting {% data variables.product.github %}. See [Use the Azure Login action with OpenID Connect](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect).
1. Add a `.github/workflows/copilot-setup-steps.yml` Actions workflow file in your repository if you do not already have one.
1. Add an Azure login step to the `copilot-setup-steps` workflow job.

```yaml copy
on:
workflow_dispatch:
permissions:
id-token: write
contents: read
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
environment: copilot
steps:
- name: Azure login
uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5
with:
client-id: {% raw %}${{ secrets.AZURE_CLIENT_ID }}{% endraw %}
tenant-id: {% raw %}${{ secrets.AZURE_TENANT_ID }}{% endraw %}
subscription-id: {% raw %}${{ secrets.AZURE_SUBSCRIPTION_ID }}{% endraw %}
```

This configuration ensures the `azure/login` action is executed when {% data variables.copilot.copilot_coding_agent %} runs.

1. In your repository’s {% data variables.product.prodname_copilot_short %} environment, add secrets for your `AZURE_CLIENT_ID`, `AZURE_TENANT_ID` and `AZURE_SUBSCRIPTION_ID`.
1. Configure the Azure MCP server by adding an `azure` object to your MCP configuration.
Once you've run the command and merged the created pull request, you can add the MCP configuration to your repository.

```json copy
{
Expand Down
Loading