Available GitHub Actions for Microsoft Power Platform development
GitHub Actions for Microsoft Power Platform are described in the following sections. In addition, sample GitHub workflows are shown as well. For more information about GitHub Actions and how to download them, go to GitHub Actions for Microsoft Power Platform.
Configure credentials to use with GitHub Actions with Microsoft Power Platform
Many of the actions require you to connect to a Microsoft Dataverse environment. You can add service principal or user credentials as secrets in your GitHub repository and then use them in your workflows.
For details on how to set up secrets in GitHub, see Encrypted secrets
For details how to set up service principal authentication for Microsoft Power Platform, see DevOps Build tools
Once configured, you can call the Service Principal from with in your Action scripts.
Parameters to define within your GitHub Action Script as Environment Variables:
- Application ID such as:
WF_APPLICATION_ID:<your application id>
- Tenant ID such as:
WF_TENANT_ID:<your tenant id>
The client Secret must be added and stored as a GitHub Secret, and will be referenced from within the workflow using a parameter like:
client secret: ${{secrets.CLIENT_SECRET_GITHUB_ACTIONS}}
Helper tasks
The available helper task is described below.
actions-install
When a GitHub Actions workflow forces an install of Power Platform CLI in the context of a runner, and timeout error occurs then you must use version 1 (@v1) with an additional action (actions-install
) as below.
Important
- Using version 1 (@v1) might lead to updates to existing GitHub actions that can result in current workflows being updated.
- You must add the Install Power Platform Tools task as a first task in your workflow prior to any other GitHub Actions for Power Platform.
jobs:
builds:
runs-on: windows-latest # alternate runner OS is: ubuntu-latest
steps:
- name: Install Power Platform Tools
uses: microsoft/powerplatform-actions/actions-install@v1
- name: Export Solution
uses: microsoft/powerplatform-actions/export-solution@v1
with:
environment-url: 'https://myenv.crm.dynamics.com'
user-name: 'me@myenv.onmicrosoft.com'
password-secret: ${{ secrets.MYPASSWORD }}
solution-name: aSolution
solution-output-file: 'aSolution.zip'
working-directory: 'out'
You can find additional samples of GitHub Actions at Power Platform Actions.
whoAmI
Verifies the service connection by connecting to the service and sending a WhoAmI
[SDK/Web API] request. This task can be useful to include early in your GitHub workflow, to verify connectivity before processing begins.
Parameter | Description |
---|---|
environment-url | The URL for the environment you're connecting to. |
user-name | The username of the account you're using to connect with. |
password-secret | The password for user-name. GitHub passwords are defined in Settings under Secrets. You can't retrieve a secret after it has been defined and saved. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
Solution tasks
These tasks perform actions against solutions and include the following.
import-solution
Imports a solution into a target environment.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the target environment that you want to import the solution into (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
solution-file | (Required) The path and name of the solution file you want to import. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
export-solution
Exports a solution from a source environment.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to export the solution from (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for user-name. GitHub passwords are defined in Settings under Secrets. You can't retrieve a secret after it has been defined and saved. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
solution-name | (Required) The name of the solution to export. Always use the solution's name, not its display name. |
solution-output-file | (Required) The path and name of the solution.zip file to export the source environment to. |
managed | (Required) Set to true to export as a managed solution; the default (false) is to export as an unmanaged solution. |
unpack-solution
Takes a compressed solution file and decomposes it into multiple XML files so these files can be more easily read and managed by a source control system.
Parameter | Description |
---|---|
solution-file | (Required) The path and file name of the solution.zip file to unpack. |
solution-folder | (Required) The path and target folder you want to unpack the solution into. |
solution-type | (Required) The type of solution you want to unpack. Options include Unmanaged (recommended), Managed, and Both. |
pack-solution
Packs a solution represented in source control into a solution.zip file that can be imported into another environment.
Parameter | Description |
---|---|
solution-file | (Required) The path and file name of the solution.zip file to pack the solution into (for example, out/CI/ALMLab.zip). |
solution-folder | (Required) The path and source folder of the solution to pack. |
solution-type | (Optional) The type of solution to pack. Options include Unmanaged (recommended), Managed, and Both. |
publish-solution
Publishes the solution customizations.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to publish the solution into (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
solution-file | (Required) The path and name of the solution file you want to import. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
clone-solution
Clones the solution for a given environment.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to clone the solution from (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
solution-file | (Required) The path and name of the solution file you want to import. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
solution-name | (Required) The path and name of the solution.zip file needed to clone (for example, out/CI/ALMLab.zip). |
solution-version | Version of the solution to clone. |
target-folder | Target folder to place the extracted solution into. (for example, Git repository\target-solution-folder). |
Working-directory | Temporary folder for work in progress artifacts needed for cloning the solution. default: root of the repository |
check-solution
Checks the solution file to detect inconsistencies.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to clone the solution from (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
path | (Required) The path and name of the solution file you want to check. |
geo | Which geo location of the Microsoft Power Platform Checker service to use. Default value is 'united states'. |
rule-level-override | Path to file a containing a JSON array of rules and their levels. Accepted values are: Critical, High, Low, and Informational. Example: [{"Id":"meta-remove-dup-reg","OverrideLevel":"Medium"},{"Id":"il-avoid-specialized-update-ops","OverrideLevel":"Medium"}] |
checker-logs-artifact-name | The name of the artifact folder for which Microsoft Power Platform checker logs will be uploaded. Default value is 'CheckSolutionLogs'. |
upgrade-solution
Provides the ability to upgrade the solution.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to clone the solution from (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
solution-file | (Required) The path and name of the solution file you want to import. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
solution-name | (Required) Name of the solution to upgrade. |
async | Upgrades the solution asynchronously. |
max-async-wait-time | Maximum asynchronous wait time in minutes. Default value is 60 minutes. |
Package tasks
These tasks perform actions against packages and include the following.
deploy-package
Provides the ability to deploy a package dll or a zip file with a package.
Note
This action is only supported on a Windows.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to clone the solution from (for example, https://YourOrg.crm.dynamics.com ). |
user-name | (Required) If you're using username/password authentication, the username of the account you're using to connect with. |
password-secret | (Required) If you're using username/password authentication, the password for the account you're using to connect with. |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
package | (Required) The path to the package dll or zip file with a package. |
Portal tasks
These tasks perform the following actions against Power Pages.
upload-paportal
Uploads data to Power Pages.
Parameter | Description |
---|---|
environment-url | (Required) The URL for the environment that you want to import the solution into (for example, https://YourOrg.crm.dynamics.com ). |
app-id | The application ID to authenticate with. This parameter is required when authenticating with Service Principal credentials. |
client-secret | The client secret used to authenticate the GitHub pipeline. This parameter is required when authenticating with Service Principal credentials. |
tenant-id | The tenant ID when authenticating with app-id and client-secret . |
upload-path | Path where the website content is stored (alias: -p). |
deployment-profile | Upload portal data with environment details defined through profile variables in deployment-profiles/[profile-name].deployment.yaml file. |
model-version | Indicates if the site data to be uploaded will use the standard (1 ) or enhanced data model (2 ). Default value is '1'. |
Learn more about Microsoft Power Platform CLI support for Power Pages.
Catalog tasks (preview)
These tasks perform actions against the catalog in Power Platform and include the following.
Note
Currently, catalog tasks for Power Platform are a preview release.
install
Install a catalog item to the target environment.
Parameter | Description |
---|---|
catalog-item-id | (Required) Catalog item to be installed on the target environment. |
target-url | (Required) The Url of the target environment for the catalog item installation into (for example, "https://YourOrg.crm.dynamics.com"). |
settings | (Required) Runtime package settings for the installation framework to execute. The format of the string must be key=value|key=value . |
target-version | Target version to install. If left empty, the published version is selected. |
poll-status | Poll to check the status of your request. |
submit
List all published catalog items from the current Dataverse environment (organization).
Parameter | Description |
---|---|
path | (Required) Path to catalog submission document. |
package-zip | Path to package zip file. |
solution-zip | Path to solution zip file. |
poll-status | Poll to check status of your request. |
status
Get status of the catalog install/submit request.
Parameter | Description |
---|---|
tracking-id | (Required) Request tracking id. |
type | (Required) Request type (Values: Install, Submit) |
GitHub workflow authoring
To learn more about composing GitHub workflows using GitHub actions, complete the GitHub Actions for Microsoft Power Platform labs.
More information: About GitHub Actions