This repository contains Issue Templates and a Actions Workflow that automates the management of Copilot licenses to users. The workflow is triggered when an issue is labeled with copilot-request
or copilot-remove
.
This template works for Copilot for Business and Copilot Enterprise.
The main goal of this solution is to automate the process of assigning or removing Copilot licenses. Instead of manually managing licenses, the organization can leverage a self-service solution to simply let the users open an issue using the provided issue templates. The workflow will automatically assign or remove the license to them, when the user opens an issue to request a license they are committing to use Copilot.
Click on Use this template to create a new repository in your organization where you want to automate the Copilot license management solution.
Create two new labels in the new repository named
copilot-request
andcopilot-remove
to trigger the workflow that assigns or removes the Copilot license.
- The Enterprise Owner or Organization Owner needs to enable Copilot for the organization where the repository is located. For more details, refer to the official documentation.
- In the Organization, create a new App by going to
Settings
, thenDeveloper settings
and thenApps
, click onNew App
and provide theName
,Homepage URL
(could be any URL) and the following permissions:repository:metadata:ready-only
organization: Copilot Business:read and write
- Copy the App ID and store it in the repository secrets with the name
APPLICATION_ID
.
- In the
App Settings
, scroll down to thePrivate keys
section and click onGenerate a private key
for the App and store the plain text of the .pem file in the repository secrets with the nameAPPLICATION_PRIVATE_KEY
.
The private key should be stored in the repository secrets in the following format:
-----BEGIN RSA PRIVATE KEY-----
// The private key
-----END RSA PRIVATE KEY-----
- In the App Settings click on
Install App
in the left menu and select the repository that you created before.
Tip
The workflow use the _TOKEN
to comment and close the issue, this token is automatically created by and is available to use in the workflow, however the _TOKEN
needs to have Read and write permissions
, you can check this out in the Organization settings
, then Actions
and scroll down to the the Workflow permissions
section of General
.
Note
At this point Copilot should be enabled in the organization, the labels copilot-request
and copilot-removal
should be created and the App configured with the secrets APPLICATION_ID
and APPLICATION_PRIVATE_KEY
already stored in the repository.
Users can now open a new issue in this repository using the issue template 'Request Copilot License' or open a new issue in this repository using the issue template 'Remove Copilot License'.
The workflow will be triggered automatically and if successful, a Copilot license will be assigned or removed in the user's account.
One of the easiest way to add an approval process to the Copilot license assignment is by doing the following steps:
Create a new environment in the repository. Go to
Settings
, thenEnvironments
and click onNew environment
. Provide a name to the environment, for example,Copilot
orcopilot-request-approval
.In the environment settings, check the
Required reviewers
option and add the users that will be able to approve the requests. (You can add up to 6 users).In the workflow file assign__copilot_license.yml, add
environment: <name of your environment>
, in the jobs that assigns or removes the Copilot (line 15 and 99), for example:
13. jobs:
14. assign__copilot_license:
15. environment: Copilot
//...
98. remove__copilot_license:
99. environment: Copilot
Now, when a user opens an issue with the label copilot-request
or , the workflow will wait for the approval of the users added to the environment before assigning the Copilot license.
The repository contains the following files:
There are two issue templates provided with this repository:
Assign Copilot is provided to standardize the license request process. The template uses the label
copilot-request
to trigger the workflow that assigns Copilot licenses, this label needs to be created in the repository before opening an issue. The template contains a notice to the user about the commitment they're making by requesting the Copilot license, informing the user about what will happen once their license request is fulfilled, a motivational message for the user, and a thank you note to the user.Remove Copilot is provided to standardize the license removal process. The template uses the label
copilot-remove
to trigger the workflow that removes Copilot licenses, this label needs to be created in the repository before opening an issue. The template contains a notice to the user about the commitment they're making by requesting the Copilot license removal, informing the user about what will happen once their license removal request is fulfilled, a motivational message for the user, and a thank you note to the user.
The workflow _copilot_license_management.yml is triggered when an issue is labeled with copilot-request
or copilot-remove
. The workflow uses the API through octokit to assign the Copilot license to the user who opened the issue. A token is generated using Peter Murray's Action. Upon successful execution, the workflow comments on the issue and closes it. In case of failure, it comments on the issue to notify about the failure and leaves the issue open. The workflow uses the _TOKEN to comment and close the issue opened by the user. The execution of the workflow takes less than 1 minute.
The repository contains an index.html
file that is used in Pages as informational website about this solution. The index.html
file can be removed and the README.md
file can be updated with a custom description for the users of your Organization.
If you have any feedback, please create an issue in this repository. We would love to hear from you! 🚀