diff --git a/content/actions/concepts/workflows-and-actions/concurrency.md b/content/actions/concepts/workflows-and-actions/concurrency.md index 7e7f8cf19767..c375a5286ea6 100644 --- a/content/actions/concepts/workflows-and-actions/concurrency.md +++ b/content/actions/concepts/workflows-and-actions/concurrency.md @@ -14,4 +14,10 @@ By default, {% data variables.product.prodname_actions %} allows multiple jobs w {% data variables.product.prodname_actions %} also allows you to disable concurrent execution. This can be useful for controlling your account’s or organization’s resources in situations where running multiple workflows or jobs at the same time could cause conflicts or consume more Actions minutes and storage than expected. For example, you might want to prevent multiple deployments from running at the same time, or cancel linters checking outdated commits. +{% ifversion actions-nga %} + +When you limit concurrency, by default only one run can be pending in a concurrency group—any additional pending runs cancel the previous one. If you need runs to execute sequentially without being canceled, you can opt in to queuing, which allows multiple runs to wait in line and execute in order. + +{% endif %} + To start controlling concurrency in your own workflows with the `concurrency` keyword, see [AUTOTITLE](/actions/how-tos/writing-workflows/choosing-when-your-workflow-runs/control-the-concurrency-of-workflows-and-jobs). diff --git a/content/actions/get-started/continuous-deployment.md b/content/actions/get-started/continuous-deployment.md index c982f61ad1ab..650e14f8e3b6 100644 --- a/content/actions/get-started/continuous-deployment.md +++ b/content/actions/get-started/continuous-deployment.md @@ -32,7 +32,7 @@ You can set up a {% data variables.product.prodname_actions %} workflow to deplo You can configure your CD workflow to run when an event occurs (for example, when new code is pushed to the default branch of your repository), on a set schedule, manually, or when an external event occurs using the repository dispatch webhook. For more information about when your workflow can run, see [AUTOTITLE](/actions/using-workflows/events-that-trigger-workflows). -{% data variables.product.prodname_actions %} provides features that give you more control over deployments. For example, you can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. You can use concurrency to limit your CD pipeline to a maximum of one in-progress deployment and one pending deployment. For more information about these features, see [AUTOTITLE](/actions/deployment/about-deployments/deploying-with-github-actions) and [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment). +{% data variables.product.prodname_actions %} provides features that give you more control over deployments. For example, you can use environments to require approval for a job to proceed, restrict which branches can trigger a workflow, or limit access to secrets. You can use concurrency to limit your CD pipeline to a maximum of one in-progress deployment{% ifversion actions-nga %}{% else %} and one pending deployment{% endif %}. For more information about these features, see [AUTOTITLE](/actions/deployment/about-deployments/deploying-with-github-actions) and [AUTOTITLE](/actions/deployment/targeting-different-environments/managing-environments-for-deployment). ## Workflow templates and third-party actions diff --git a/content/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments.md b/content/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments.md index 7f56c5c08610..766f603beb38 100644 --- a/content/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments.md +++ b/content/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments.md @@ -52,7 +52,7 @@ You can configure environments with protection rules and secrets. When a workflo ## Using concurrency -Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. You can use concurrency so that an environment has a maximum of one deployment in progress and one deployment pending at a time. For more information about concurrency, see [AUTOTITLE](/actions/using-jobs/using-concurrency). +Concurrency ensures that only a single job or workflow using the same concurrency group will run at a time. You can use concurrency so that an environment has a maximum of one deployment in progress{% ifversion actions-nga %}{% else %} and one deployment pending{% endif %} at a time. For more information about concurrency, see [AUTOTITLE](/actions/using-jobs/using-concurrency). {% ifversion actions-environments-without-deployments %} diff --git a/content/actions/reference/limits.md b/content/actions/reference/limits.md index 5094f653b179..986278ba17fd 100644 --- a/content/actions/reference/limits.md +++ b/content/actions/reference/limits.md @@ -30,8 +30,12 @@ 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/managing-workflow-runs-and-deployments/managing-deployments/managing-environments-for-deployment#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 | +| 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" %} | +| {% ifversion actions-nga %} | +| Workflows queuing | Concurrency group queue | 100 workflow runs / concurrency group | When using `queue: max` in the `concurrency` section, up to 100 jobs or workflow runs can be queued per concurrency group. Runs beyond this limit will be rejected. | {% octicon "x" aria-label="No" %} | +| {% endif %} | | Self-hosted | Runner registrations | 1500 runners / 5 minutes / repository/org/enterprise | Runners can be registered per repository/organization/enterprise. | {% octicon "check" aria-label="Yes" %} Support ticket | | Self-hosted | Runners per runner group | 10,000 runners | Runners registered at the same time per runner group. | {% octicon "x" aria-label="No" %} | | Self-hosted | Job execution time | 5 days | Each job in a workflow can run for up to 5 days of execution time. If a job reaches this limit, the job is terminated and fails. | {% octicon "x" aria-label="No" %} | diff --git a/content/copilot/concepts/agents/about-third-party-agents.md b/content/copilot/concepts/agents/about-third-party-agents.md index dbc208567ba2..061e274d9a4c 100644 --- a/content/copilot/concepts/agents/about-third-party-agents.md +++ b/content/copilot/concepts/agents/about-third-party-agents.md @@ -71,7 +71,16 @@ Within your monthly usage allowance for {% data variables.product.prodname_actio For more information, see [AUTOTITLE](/billing/managing-billing-for-your-products/managing-billing-for-github-copilot/about-billing-for-github-copilot). +## Partner agents + +When enabling partner agents in your user or organization {% data variables.copilot.copilot_cloud_agent %} settings, a {% data variables.product.prodname_github_app %} will be installed for the corresponding agent. + +* **Allow Claude coding agent** will install `anthropic code agent` +* **Allow Codex coding agent** will install `openai code agent` + +Actions taken by these {% data variables.product.prodname_github_apps %} will be visible in your audit log, but the {% data variables.product.prodname_github_apps %} themselves will not be visible in your account's list of {% data variables.product.prodname_github_app %} installations. + ## Next steps * To start managing agents, see [AUTOTITLE](/copilot/how-tos/use-copilot-agents/manage-agents). -* To learn how AI models are hosted and served, see [AUTOTITLE](/copilot/reference/ai-models/model-hosting). \ No newline at end of file +* To learn how AI models are hosted and served, see [AUTOTITLE](/copilot/reference/ai-models/model-hosting). diff --git a/content/copilot/concepts/auto-model-selection.md b/content/copilot/concepts/auto-model-selection.md index 5c259d8573de..bbd044eee70d 100644 --- a/content/copilot/concepts/auto-model-selection.md +++ b/content/copilot/concepts/auto-model-selection.md @@ -27,6 +27,10 @@ Experience less rate limiting and reduce the mental load of choosing a model by > [!NOTE] Soon {% data variables.copilot.copilot_auto_model_selection %} will choose the best model for you based on your task. +### Multiplier discounts + +{% data reusables.copilot.auto-model-multiplier-discount %} See [AUTOTITLE](/copilot/concepts/billing/copilot-requests#model-multipliers). + ## {% data variables.copilot.copilot_auto_model_selection_short_cap_a %} in {% data variables.copilot.copilot_chat_short %} {% data variables.copilot.copilot_auto_model_selection_short_cap_a %} is generally available in the following IDEs: @@ -44,10 +48,6 @@ When you select **Auto** in {% data variables.copilot.copilot_chat_short %} in I {% data reusables.copilot.change-the-ai-model %} -### Multiplier discounts - -{% data reusables.copilot.auto-model-multiplier-discount %} See [AUTOTITLE](/copilot/concepts/billing/copilot-requests#model-multipliers). - ### Enabling access during {% data variables.release-phases.public_preview %} During the {% data variables.release-phases.public_preview %}, if you're using a {% data variables.copilot.copilot_business_short %} or {% data variables.copilot.copilot_enterprise_short %} plan, the organization or enterprise that provides your plan must have the **Editor preview features** policy enabled. See [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-github-copilot-in-your-organization/managing-policies-for-copilot-in-your-organization#enabling-copilot-features-in-your-organization) or [AUTOTITLE](/enterprise-cloud@latest/copilot/managing-copilot/managing-copilot-for-your-enterprise/managing-policies-and-features-for-copilot-in-your-enterprise#copilot-in-githubcom). diff --git a/content/copilot/concepts/billing/copilot-requests.md b/content/copilot/concepts/billing/copilot-requests.md index fa13152f812d..71770d50652a 100644 --- a/content/copilot/concepts/billing/copilot-requests.md +++ b/content/copilot/concepts/billing/copilot-requests.md @@ -99,7 +99,7 @@ The available models vary depending on your {% data variables.product.prodname_c > [!NOTE] > * The models included with {% data variables.product.prodname_copilot_short %} plans are subject to change. > * Model multipliers and costs are subject to change. -> * Discounted multipliers are available for using {% data variables.copilot.copilot_auto_model_selection %} in {% data variables.copilot.copilot_chat_short %} in {% data variables.product.prodname_vscode_shortname %}. See [AUTOTITLE](/copilot/concepts/auto-model-selection). +> * Discounted multipliers are available for using {% data variables.copilot.copilot_auto_model_selection %}. See [AUTOTITLE](/copilot/concepts/auto-model-selection). > * {% data reusables.copilot.auto-model-multiplier-discount %} For example, Sonnet 4 would be billed at .9x rather than 1x when using {% data variables.copilot.copilot_auto_model_selection_short %}. > * Discounted multipliers are not available for {% data variables.copilot.copilot_free_short %}. diff --git a/content/rest/actions/concurrency-groups.md b/content/rest/actions/concurrency-groups.md index d245e5f0ab49..4dbedf35bba3 100644 --- a/content/rest/actions/concurrency-groups.md +++ b/content/rest/actions/concurrency-groups.md @@ -11,4 +11,8 @@ category: - Automate CI/CD workflows --- - +## About concurrency groups in {% data variables.product.prodname_actions %} + +You can use the REST API to read the state of {% data variables.product.prodname_actions %} concurrency groups, which ensure that only a single job or workflow using the same group will run at a time while additional runs are pending or canceled depending on configuration. For more information, see [AUTOTITLE](/actions/using-jobs/using-concurrency). + + \ No newline at end of file diff --git a/data/reusables/actions/actions-group-concurrency.md b/data/reusables/actions/actions-group-concurrency.md index e04d76c9468c..38696b820c7d 100644 --- a/data/reusables/actions/actions-group-concurrency.md +++ b/data/reusables/actions/actions-group-concurrency.md @@ -1,10 +1,29 @@ +{% ifversion actions-nga %} + +This means that there can be at most one running job or workflow in a concurrency group at any time. When a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be `pending`. By default, any existing `pending` job or workflow in the same concurrency group will be canceled and the new queued job or workflow will take its place. + +{% else %} + This means that there can be at most one running and one pending job in a concurrency group at any time. When a concurrent job or workflow is queued, if another job or workflow using the same concurrency group in the repository is in progress, the queued job or workflow will be `pending`. Any existing `pending` job or workflow in the same concurrency group, if it exists, will be canceled and the new queued job or workflow will take its place. +{% endif %} + To also cancel any currently running job or workflow in the same concurrency group, specify `cancel-in-progress: true`. To conditionally cancel currently running jobs or workflows in the same concurrency group, you can specify `cancel-in-progress` as an expression with any of the allowed expression contexts. +{% ifversion actions-nga %} + +To allow more than one `pending` job or workflow run to wait in the same concurrency group, use the optional `queue` property. The `queue` property accepts the following values: + +* `single` (default): At most one job or workflow run can be `pending` in the concurrency group. When a new job or workflow run is queued, any existing `pending` job or workflow run in the same group is canceled and replaced. +* `max`: Up to 100 jobs or workflow runs can be `pending` in the concurrency group. When the queue is full, any additional jobs or workflow runs are canceled. + +The combination of `queue: max` and `cancel-in-progress: true` is not allowed and will result in a workflow validation error. + +{% endif %} + > [!NOTE] > * The concurrency group name is case insensitive. For example, `prod` and `Prod` will be treated as the same concurrency group. -> * Ordering is not guaranteed for jobs or workflow runs using concurrency groups. Jobs or workflow runs in the same concurrency group are handled in an arbitrary order. +> * Jobs or workflow runs in the same concurrency group are processed in first-in-first-out (FIFO) order according to the time each one started waiting on the concurrency group, not the time each workflow was dispatched. Since the actual start time of a job or run may vary, ordering is not guaranteed. ### Example: Using concurrency and the default behavior @@ -81,6 +100,33 @@ concurrency: {% endraw %} +{% ifversion actions-nga %} + +### Example: Queueing multiple pending runs + +By default, only one job or workflow run can be `pending` in a concurrency group at a time. To allow multiple runs to queue instead of being canceled, set `queue: max`. With `queue: max`, up to 100 jobs or workflow runs can wait in the concurrency group; once the queue is full, any additional runs are canceled. + +For example, the following workflow queues deployments to the `production` environment, processing them one at a time in order based on when each run started waiting on the concurrency group: + +{% raw %} + +```yaml +on: + push: + branches: + - main + +concurrency: + group: production-deploy + queue: max +``` + +{% endraw %} + +Note that `queue: max` cannot be combined with `cancel-in-progress: true`, because the two options describe conflicting behaviors for handling in-progress runs. + +{% endif %} + ### Example: Using concurrency to cancel any in-progress job or run To use concurrency to cancel any in-progress job or run in {% data variables.product.prodname_actions %}, you can use the `concurrency` key with the `cancel-in-progress` option set to `true`: diff --git a/data/reusables/copilot/auto-model-multiplier-discount.md b/data/reusables/copilot/auto-model-multiplier-discount.md index 7ef529c88bcb..60cf1451542e 100644 --- a/data/reusables/copilot/auto-model-multiplier-discount.md +++ b/data/reusables/copilot/auto-model-multiplier-discount.md @@ -1 +1 @@ -If you are on a paid {% data variables.product.prodname_copilot_short %} plan and use {% data variables.copilot.copilot_auto_model_selection_short %}, models qualify for a 10% multiplier discount. +If you are on a paid {% data variables.product.prodname_copilot_short %} plan and use {% data variables.copilot.copilot_auto_model_selection_short %} in {% data variables.copilot.copilot_chat_short %}, {% data variables.copilot.copilot_cli_short %}, or {% data variables.copilot.copilot_cloud_agent %}, models qualify for a 10% multiplier discount. diff --git a/data/reusables/copilot/prompt-files-preview-note.md b/data/reusables/copilot/prompt-files-preview-note.md index b2ee104b4e8c..bf6382b0c966 100644 --- a/data/reusables/copilot/prompt-files-preview-note.md +++ b/data/reusables/copilot/prompt-files-preview-note.md @@ -1,3 +1,3 @@ > [!NOTE] > * {% data variables.product.prodname_copilot_short %} prompt files are in {% data variables.release-phases.public_preview %} and subject to change. {% data reusables.copilot.prompt-files-available-in-editors %} See [AUTOTITLE](/copilot/concepts/prompting/response-customization#about-prompt-files). -> * For community-contributed examples of prompt files for specific languages and scenarios, see the [Awesome GitHub Copilot Customizations](https://github.com/github/awesome-copilot/blob/main/docs/README.prompts.md) repository. +> * For community-contributed examples of prompt files for specific languages and scenarios, see the [Awesome {% data variables.product.prodname_copilot %} Customizations](https://awesome-copilot.github.com) site. diff --git a/data/tables/copilot/auto-model-selection.yml b/data/tables/copilot/auto-model-selection.yml index 982511ce5e92..98afef2016fd 100644 --- a/data/tables/copilot/auto-model-selection.yml +++ b/data/tables/copilot/auto-model-selection.yml @@ -25,16 +25,16 @@ - name: GPT-5 mini cloud_agent: false - chat: false + chat: true cli: true - name: GPT-5.3-Codex - cloud_agent: false + cloud_agent: true chat: true cli: true - name: GPT-5.4 - cloud_agent: false + cloud_agent: true chat: true cli: true @@ -49,13 +49,8 @@ chat: true cli: true -- name: Claude Sonnet 4.5 - cloud_agent: true - chat: false - cli: false - - name: Claude Sonnet 4.6 - cloud_agent: false + cloud_agent: true chat: true cli: true