diff --git a/assets/images/help/copilot/activity-report-enterprise.png b/assets/images/help/copilot/activity-report-enterprise.png
new file mode 100644
index 000000000000..28a340d04f6b
Binary files /dev/null and b/assets/images/help/copilot/activity-report-enterprise.png differ
diff --git a/assets/images/help/copilot/activity-report-non-ghe.png b/assets/images/help/copilot/activity-report-non-ghe.png
new file mode 100644
index 000000000000..ac94003279df
Binary files /dev/null and b/assets/images/help/copilot/activity-report-non-ghe.png differ
diff --git a/assets/images/help/copilot/activity-report-org.png b/assets/images/help/copilot/activity-report-org.png
new file mode 100644
index 000000000000..9e616c246279
Binary files /dev/null and b/assets/images/help/copilot/activity-report-org.png differ
diff --git a/content/actions/how-tos/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md b/content/actions/how-tos/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md
index b3ba14051a04..0510d80609b6 100644
--- a/content/actions/how-tos/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md
+++ b/content/actions/how-tos/hosting-your-own-runners/managing-self-hosted-runners/using-self-hosted-runners-in-a-workflow.md
@@ -14,28 +14,6 @@ type: tutorial
shortTitle: Use runners in a workflow
---
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
-You can target self-hosted runners for use in a workflow based on the labels assigned to the runners, or their group membership, or a combination of these.
-
->[!IMPORTANT]Runner Scale Sets do not support multiple labels, only the name of the runner can be used in place of a label. See [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/deploying-runner-scale-sets-with-actions-runner-controller).
-
-## About self-hosted runner labels
-
-Labels allow you to send workflow jobs to specific types of self-hosted runners, based on their shared characteristics. For example, if your job requires a particular hardware component or software package, you can assign a custom label to a runner and then configure your job to only execute on runners with that label.
-
-{% data reusables.actions.self-hosted-runner-labels-runs-on %}
-
-For information on creating custom and default labels, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/using-labels-with-self-hosted-runners).
-
-## About self-hosted runner groups
-
-For self-hosted runners defined at the organization {% ifversion ghec or ghes %}or enterprise levels{% else %}level{% endif %}, you can group your runners with shared characteristics into a single runner group and then configure your job to target the runner group.
-
-To specify a self-hosted runner group for your job, configure `runs-on.group` in your workflow file.
-
-For information on creating and managing runner groups, see [AUTOTITLE](/actions/hosting-your-own-runners/managing-self-hosted-runners/managing-access-to-self-hosted-runners-using-groups).
-
{% ifversion repository-actions-runners %}
## Viewing available runners for a repository
@@ -99,16 +77,3 @@ These labels operate cumulatively, so a self-hosted runner must have all four la
## Using labels and groups to route jobs
{% data reusables.actions.jobs.example-runs-on-labels-and-groups %}
-
-## Routing precedence for self-hosted runners
-
-When routing a job to a self-hosted runner, {% data variables.product.prodname_dotcom %} looks for a runner that matches the job's `runs-on` labels and groups:
-
-* If {% data variables.product.prodname_dotcom %} finds an online and idle runner that matches the job's `runs-on` labels and groups, the job is then assigned and sent to the runner.
- * If the runner doesn't pick up the assigned job within 60 seconds, the job is re-queued so that a new runner can accept it.
-* If {% data variables.product.prodname_dotcom %} doesn't find an online and idle runner that matches the job's `runs-on` labels and groups, then the job will remain queued until a runner comes online.
-* If the job remains queued for more than 24 hours, the job will fail.
-
-## Workflow run continuity
-
-{% data reusables.actions.runner-workflow-continuity %}
diff --git a/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manage-caches.md b/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manage-caches.md
index 62b0f34792b2..3ed5475423dc 100644
--- a/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manage-caches.md
+++ b/content/actions/how-tos/managing-workflow-runs-and-deployments/managing-workflow-runs/manage-caches.md
@@ -76,7 +76,7 @@ jobs:
done
echo "Done"
env:
- GH_TOKEN: {% raw %}${{ secrets.GITHUB_TOKEN }}{% endraw %}
+ GH_TOKEN: {% raw %}${{ github.token }}{% endraw %}
GH_REPO: {% raw %}${{ github.repository }}{% endraw %}
BRANCH: refs/pull/{% raw %}${{ github.event.pull_request.number }}{% endraw %}/merge
```
diff --git a/content/actions/how-tos/use-cases-and-examples/index.md b/content/actions/how-tos/use-cases-and-examples/index.md
index 471c207e86b4..530a70ace27b 100644
--- a/content/actions/how-tos/use-cases-and-examples/index.md
+++ b/content/actions/how-tos/use-cases-and-examples/index.md
@@ -10,7 +10,6 @@ redirect_from:
- /actions/examples
- /actions/use-cases-and-examples
children:
- - publishing-packages
- project-management
- using-containerized-services
---
diff --git a/content/actions/index.md b/content/actions/index.md
index b7975d9bcab9..c1a981bc87d3 100644
--- a/content/actions/index.md
+++ b/content/actions/index.md
@@ -15,7 +15,7 @@ featuredLinks:
- /actions/how-tos/monitoring-and-troubleshooting-workflows
guideCards:
- /actions/how-tos/writing-workflows/using-workflow-templates
- - /actions/how-tos/use-cases-and-examples/publishing-packages/publishing-nodejs-packages
+ - /actions/tutorials/publishing-packages/publishing-nodejs-packages
- /actions/how-tos/writing-workflows/building-and-testing/building-and-testing-powershell
popular:
- /actions/reference/workflow-syntax-for-github-actions
diff --git a/content/actions/reference/self-hosted-runners-reference.md b/content/actions/reference/self-hosted-runners-reference.md
index bcd18225f120..cc3b06492d53 100644
--- a/content/actions/reference/self-hosted-runners-reference.md
+++ b/content/actions/reference/self-hosted-runners-reference.md
@@ -58,6 +58,15 @@ You can use a machine as a self-hosted runner as long as it meets these requirem
* `ARM64` - Linux, macOS{% ifversion actions-windows-arm %}, Windows (currently in {% data variables.release-phases.public_preview %}){% endif %}.
* `ARM32` - Linux.
+## Routing precedence for self-hosted runners
+
+When routing a job to a self-hosted runner, {% data variables.product.prodname_dotcom %} looks for a runner that matches the job's `runs-on` labels and groups:
+
+* If {% data variables.product.prodname_dotcom %} finds an online and idle runner that matches the job's `runs-on` labels and groups, the job is then assigned and sent to the runner.
+ * If the runner doesn't pick up the assigned job within 60 seconds, the job is re-queued so that a new runner can accept it.
+* If {% data variables.product.prodname_dotcom %} doesn't find an online and idle runner that matches the job's `runs-on` labels and groups, then the job will remain queued until a runner comes online.
+* If the job remains queued for more than 24 hours, the job will fail.
+
## Autoscaling
You can automatically increase or decrease the number of self-hosted runners in your environment in response to the webhook events you receive with a particular label.
diff --git a/content/actions/tutorials/index.md b/content/actions/tutorials/index.md
index 8bf6aac7e840..da8e4a2b00e0 100644
--- a/content/actions/tutorials/index.md
+++ b/content/actions/tutorials/index.md
@@ -17,6 +17,7 @@ children:
- /store-and-share-data
- /deploying-with-github-actions
- /communicating-with-docker-service-containers
+ - /publishing-packages
redirect_from:
- /actions/guides
---
diff --git a/content/actions/how-tos/use-cases-and-examples/publishing-packages/index.md b/content/actions/tutorials/publishing-packages/index.md
similarity index 89%
rename from content/actions/how-tos/use-cases-and-examples/publishing-packages/index.md
rename to content/actions/tutorials/publishing-packages/index.md
index ca9b07dc5411..2e49e92738bf 100644
--- a/content/actions/how-tos/use-cases-and-examples/publishing-packages/index.md
+++ b/content/actions/tutorials/publishing-packages/index.md
@@ -10,6 +10,7 @@ redirect_from:
- /actions/publishing-packages-with-github-actions
- /actions/publishing-packages
- /actions/use-cases-and-examples/publishing-packages
+ - /actions/how-tos/use-cases-and-examples/publishing-packages
children:
- /publishing-docker-images
- /publishing-java-packages-with-gradle
diff --git a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-docker-images.md b/content/actions/tutorials/publishing-packages/publishing-docker-images.md
similarity index 97%
rename from content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-docker-images.md
rename to content/actions/tutorials/publishing-packages/publishing-docker-images.md
index bd5bec5aeb0c..64e51e339832 100644
--- a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-docker-images.md
+++ b/content/actions/tutorials/publishing-packages/publishing-docker-images.md
@@ -1,12 +1,13 @@
---
title: Publishing Docker images
shortTitle: Publish Docker images
-intro: 'You can publish Docker images to a registry, such as Docker Hub or {% data variables.product.prodname_registry %}, as part of your continuous integration (CI) workflow.'
+intro: 'In this tutorial, you''ll learn how to publish Docker images to a registry, such as Docker Hub or {% data variables.product.prodname_registry %}, as part of your continuous integration (CI) workflow.'
redirect_from:
- /actions/language-and-framework-guides/publishing-docker-images
- /actions/guides/publishing-docker-images
- /actions/publishing-packages/publishing-docker-images
- /actions/use-cases-and-examples/publishing-packages/publishing-docker-images
+ - /actions/how-tos/use-cases-and-examples/publishing-packages/publishing-docker-images
versions:
fpt: '*'
ghes: '*'
@@ -19,8 +20,6 @@ topics:
layout: inline
---
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
## Introduction
This guide shows you how to create a workflow that performs a Docker build, and then publishes Docker images to Docker Hub or {% data variables.product.prodname_registry %}. With a single workflow, you can publish images to a single registry or to multiple registries.
diff --git a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle.md b/content/actions/tutorials/publishing-packages/publishing-java-packages-with-gradle.md
similarity index 97%
rename from content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle.md
rename to content/actions/tutorials/publishing-packages/publishing-java-packages-with-gradle.md
index e3a81a70dda4..43af51175b39 100644
--- a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle.md
+++ b/content/actions/tutorials/publishing-packages/publishing-java-packages-with-gradle.md
@@ -1,12 +1,13 @@
---
title: Publishing Java packages with Gradle
shortTitle: Publish Java packages with Gradle
-intro: You can use Gradle to publish Java packages to a registry as part of your continuous integration (CI) workflow.
+intro: In this tutorial, you'll learn how to use Gradle to publish Java packages to a registry as part of your continuous integration (CI) workflow.
redirect_from:
- /actions/language-and-framework-guides/publishing-java-packages-with-gradle
- /actions/guides/publishing-java-packages-with-gradle
- /actions/publishing-packages/publishing-java-packages-with-gradle
- /actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle
+ - /actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-gradle
versions:
fpt: '*'
ghes: '*'
@@ -18,8 +19,6 @@ topics:
- Java
- Gradle
---
-
-{% data reusables.actions.enterprise-github-hosted-runners %}
## Introduction
diff --git a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven.md b/content/actions/tutorials/publishing-packages/publishing-java-packages-with-maven.md
similarity index 97%
rename from content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven.md
rename to content/actions/tutorials/publishing-packages/publishing-java-packages-with-maven.md
index eca8f0179189..98f3d783defb 100644
--- a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven.md
+++ b/content/actions/tutorials/publishing-packages/publishing-java-packages-with-maven.md
@@ -1,12 +1,13 @@
---
title: Publishing Java packages with Maven
shortTitle: Publish Java packages with Maven
-intro: You can use Maven to publish Java packages to a registry as part of your continuous integration (CI) workflow.
+intro: In this tutorial, you'll learn how to use Maven to publish Java packages to a registry as part of your continuous integration (CI) workflow.
redirect_from:
- /actions/language-and-framework-guides/publishing-java-packages-with-maven
- /actions/guides/publishing-java-packages-with-maven
- /actions/publishing-packages/publishing-java-packages-with-maven
- /actions/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven
+ - /actions/how-tos/use-cases-and-examples/publishing-packages/publishing-java-packages-with-maven
versions:
fpt: '*'
ghes: '*'
@@ -19,8 +20,6 @@ topics:
- Maven
---
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
## Introduction
{% data reusables.actions.publishing-java-packages-intro %}
diff --git a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-nodejs-packages.md b/content/actions/tutorials/publishing-packages/publishing-nodejs-packages.md
similarity index 98%
rename from content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-nodejs-packages.md
rename to content/actions/tutorials/publishing-packages/publishing-nodejs-packages.md
index 32b4b9c723da..49ac188c71c1 100644
--- a/content/actions/how-tos/use-cases-and-examples/publishing-packages/publishing-nodejs-packages.md
+++ b/content/actions/tutorials/publishing-packages/publishing-nodejs-packages.md
@@ -1,13 +1,14 @@
---
title: Publishing Node.js packages
shortTitle: Publish Node.js packages
-intro: You can publish Node.js packages to a registry as part of your continuous integration (CI) workflow.
+intro: In this tutorial, you'll learn how to publish Node.js packages to a registry as part of your continuous integration (CI) workflow.
redirect_from:
- /actions/automating-your-workflow-with-github-actions/publishing-nodejs-packages
- /actions/language-and-framework-guides/publishing-nodejs-packages
- /actions/guides/publishing-nodejs-packages
- /actions/publishing-packages/publishing-nodejs-packages
- /actions/use-cases-and-examples/publishing-packages/publishing-nodejs-packages
+ - /actions/how-tos/use-cases-and-examples/publishing-packages/publishing-nodejs-packages
versions:
fpt: '*'
ghes: '*'
@@ -20,8 +21,6 @@ topics:
- JavaScript
---
-{% data reusables.actions.enterprise-github-hosted-runners %}
-
## Introduction
This guide shows you how to create a workflow that publishes Node.js packages to the {% data variables.product.prodname_registry %} and npm registries after continuous integration (CI) tests pass.
diff --git a/content/copilot/how-tos/administer/download-activity-report.md b/content/copilot/how-tos/administer/download-activity-report.md
new file mode 100644
index 000000000000..b1c889a9fef7
--- /dev/null
+++ b/content/copilot/how-tos/administer/download-activity-report.md
@@ -0,0 +1,58 @@
+---
+title: Downloading a Copilot activity report for your organization or enterprise
+intro: 'Monitor Copilot license usage with a detailed report.'
+permissions: Enterprise owners and organization owners
+product: '{% data variables.copilot.copilot_enterprise_short %} or {% data variables.copilot.copilot_business_short %}'
+versions:
+ feature: copilot
+allowTitleToDifferFromFilename: true
+type: how_to
+topics:
+ - Copilot
+ - Enterprise
+shortTitle: Download activity report
+---
+
+You can download a CSV report for {% data variables.product.prodname_copilot_short %} user activity in your organization. The data in the report allows you to:
+
+* Accurately monitor {% data variables.product.prodname_copilot_short %} license usage accurately.
+* Understand patterns in user authentication.
+* Manage licenses and measure key performance indicators.
+
+
+
+>[!NOTE] This report is replacing the {% data variables.product.prodname_copilot_short %} **usage report**. The new report adds clarity by introducing authentication information and improving timestamp resolution. The old usage report is closing down and will be removed on October 23rd, 2025.
+
+
+
+## Downloading the report for an enterprise
+
+1. Navigate to your enterprise account.
+{% data reusables.enterprise-accounts.policies-tab %}
+{% data reusables.enterprise-accounts.copilot-tab %}
+1. Next to "Access management", click **Activity report**.
+
+ 
+
+## Downloading the report for an organization
+
+1. Navigate to your organization settings.
+1. In the left sidebar, click **Copilot**, then click **Access**.
+1. Click **Get activity report**.
+
+ 
+
+## Downloading the report for a non-GHE enterprise
+
+These instructions apply if GitHub has provisioned you with a dedicated enterprise account for managing Copilot Business licenses. See [AUTOTITLE](/enterprise-cloud@latest/admin/copilot-business-only/about-enterprise-accounts-for-copilot-business).
+
+1. Navigate to your enterprise account.
+1. At the top of the page, click **{% octicon "credit-card" aria-hidden="true" aria-label="credit-card" %} Billing and licensing**.
+1. Click **Manage seats**.
+1. Click **Get activity report**.
+
+ 
+
+## Report fields
+
+For field definitions and details of included features, see [AUTOTITLE](/copilot/reference/metrics-data#copilot-activity-report).
diff --git a/content/copilot/how-tos/administer/index.md b/content/copilot/how-tos/administer/index.md
index 630285825852..dfdba0967b58 100644
--- a/content/copilot/how-tos/administer/index.md
+++ b/content/copilot/how-tos/administer/index.md
@@ -9,5 +9,6 @@ topics:
children:
- /organizations
- /enterprises
+ - /download-activity-report
---
diff --git a/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md b/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
index 96184a8e7707..ed0338bfc3c4 100644
--- a/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
+++ b/content/copilot/how-tos/administer/organizations/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization.md
@@ -18,8 +18,6 @@ redirect_from:
- /copilot/managing-copilot/managing-github-copilot-in-your-organization/reviewing-activity-related-to-github-copilot-in-your-organization/reviewing-user-activity-data-for-copilot-in-your-organization
---
-## Reviewing user activity data for {% data variables.product.prodname_copilot_short %}
-
{% data reusables.profile.access_org %}
{% data reusables.profile.org_settings %}
{% data reusables.copilot.access-settings %}
@@ -31,11 +29,14 @@ redirect_from:

{% endif %}
-1. For more detailed information, next to "Access management," click **Get report**.
+1. Alternatively, under "Access management," you can use the **Sort** options to sort the list of users by when they last used {% data variables.product.prodname_copilot %}.
+1. For more detailed information, you can retrieve the **Activity report**. {% data variables.product.prodname_dotcom %} generates a report for you, which you can download as a CSV file.
+
+
- {% data variables.product.prodname_dotcom %} generates a report for you, which you can download as a CSV file.
+ >[!NOTE] This report is replacing the {% data variables.product.prodname_copilot_short %} **usage report**. The new report adds clarity by introducing authentication information and improving timestamp resolution. The old usage report is closing down and will be removed on October 23rd, 2025.
-1. Alternatively, under "Access management," you can use the **Sort** options to sort the list of users by when they last used {% data variables.product.prodname_copilot %}.
+
## Using the API to retrieve assignment information
@@ -45,7 +46,7 @@ You can use {% data variables.product.prodname_dotcom %}'s REST API to get detai
If you believe a user's `last_activity_at` date should be more recent than shown in the CSV or API report, wait 24 hours and check again. If their recent Copilot usage is still not reflected in their `last_activity_at` date, have the user check that telemetry is enabled in their IDE settings.
-For more information about this property, see [AUTOTITLE](/copilot/reference/metrics-data#last_activity_at).
+For more information about this property and other data in the activity report, see [AUTOTITLE](/copilot/reference/metrics-data).
## Further reading
diff --git a/content/copilot/reference/metrics-data.md b/content/copilot/reference/metrics-data.md
index 55404af3cc47..48081a0e0810 100644
--- a/content/copilot/reference/metrics-data.md
+++ b/content/copilot/reference/metrics-data.md
@@ -44,3 +44,41 @@ Processing new telemetry events and updating a user's `last_activity_at` date ca
* After 90 days of no new activity, a user's `last_activity_at` value is set to `nil`.
For more information, see [Updating retention period for `last_activity_at` values on the Copilot user management API to 90 days](https://github.blog/changelog/2025-01-17-updating-retention-period-for-last_activity_at-values-on-the-user-management-api-public-preview-to-90-days/) on {% data variables.product.prodname_blog %}.
+
+## Copilot activity report
+
+The Copilot activity report shows user activity data for an organization or enterprise.
+
+Data in the report refreshes automatically every 30 minutes.
+
+### Fields
+
+| Field | Description |
+|-------|-------------|
+| `report_time` | UTC timestamp when the report was generated |
+| `login` | GitHub username of the Copilot user |
+| `last_authenticated_at` | UTC timestamp of the user's most recent authentication |
+| `last_activity_at` | UTC timestamp of the user's most recent Copilot interaction |
+| `last_surface_used` | The Copilot feature used most recently:
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: