Skip to content

CI/CD pipeline templates for Power Platform/Dataverse development (GitHub Actions & Azure DevOps)

License

Notifications You must be signed in to change notification settings

joshsmithxrm/ppds-alm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PPDS ALM

CI/CD templates for Power Platform Application Lifecycle Management (ALM).

Part of the Power Platform Developer Suite ecosystem.

Quick Start

GitHub Actions

name: Deploy to QA

on:
  push:
    branches: [develop]

jobs:
  deploy:
    uses: joshsmithxrm/ppds-alm/github/workflows/solution-deploy.yml@v1
    with:
      solution-name: MySolution
      solution-folder: solutions/MySolution/src
      build-plugins: true
      package-type: Managed
    secrets:
      environment-url: ${{ vars.POWERPLATFORM_ENVIRONMENT_URL }}
      tenant-id: ${{ vars.POWERPLATFORM_TENANT_ID }}
      client-id: ${{ vars.POWERPLATFORM_CLIENT_ID }}
      client-secret: ${{ secrets.POWERPLATFORM_CLIENT_SECRET }}

Azure DevOps

resources:
  repositories:
    - repository: ppds-alm
      type: github
      name: joshsmithxrm/ppds-alm
      ref: refs/tags/v1.0.0
      endpoint: 'GitHub Connection'

stages:
  - template: azure-devops/templates/solution-deploy.yml@ppds-alm
    parameters:
      solutionName: MySolution
      solutionFolder: solutions/MySolution/src
      serviceConnection: 'Dataverse QA'

Reusable Workflows

Workflow Purpose
solution-export.yml Export solution from environment with noise filtering
solution-import.yml Import solution with version check and retry logic
solution-build.yml Build .NET code and pack solution
solution-validate.yml PR validation with build, pack, and Solution Checker
solution-deploy.yml Full deployment: build, pack, import
plugin-deploy.yml Deploy plugins using PPDS.Tools
plugin-extract.yml Extract plugin registrations from assembly
full-alm.yml Complete ALM pipeline (export, build, deploy)

Composite Actions

Granular, reusable actions for building custom workflows:

Action Purpose
setup-pac-cli Install .NET SDK and Power Platform CLI
pac-auth Authenticate to Power Platform environment
export-solution Export and unpack solution
import-solution Import with version check and retry
pack-solution Pack solution from source
build-solution Build .NET solution with tests
check-solution Run PowerApps Solution Checker
analyze-changes Filter noise from exports
copy-plugin-assemblies Copy built DLLs to solution
copy-plugin-packages Copy NuGet packages to solution

See Actions Reference for detailed documentation.

Key Features

Smart Import

The import action automatically:

  • Compares versions - Skips import if target has same or newer version
  • Retries transient failures - Handles concurrent import conflicts with configurable retry
  • Applies deployment settings - Auto-detects environment-specific configuration files
- uses: joshsmithxrm/ppds-alm/.github/actions/import-solution@v1
  with:
    solution-path: ./exports/MySolution_managed.zip
    solution-name: MySolution
    skip-if-same-version: 'true'
    max-retries: '3'
    settings-file: ./config/qa.deploymentsettings.json

Noise Filtering

Solution exports often contain volatile changes that aren't real customizations:

  • Solution.xml version timestamps
  • Canvas app random URI suffixes
  • Workflow session IDs
  • Whitespace-only changes

The analyze-changes action filters these, preventing unnecessary commits.

Solution Checker Integration

Validate solution quality before deployment:

- uses: joshsmithxrm/ppds-alm/.github/actions/check-solution@v1
  with:
    solution-path: ./exports/MySolution_managed.zip
    fail-on-level: High  # Critical, High, Medium, Low, Informational
    geography: unitedstates

Documentation

Getting Started

Reference

Strategy Guides

Repository Structure

ppds-alm/
├── .github/
│   ├── actions/                    # Composite actions
│   │   ├── setup-pac-cli/
│   │   ├── pac-auth/
│   │   ├── export-solution/
│   │   ├── import-solution/
│   │   ├── pack-solution/
│   │   ├── build-solution/
│   │   ├── check-solution/
│   │   ├── analyze-changes/
│   │   ├── copy-plugin-assemblies/
│   │   └── copy-plugin-packages/
│   └── workflows/
│       └── ci.yml                  # CI for this repo
├── github/
│   └── workflows/                  # Reusable workflows (workflow_call)
│       ├── solution-export.yml
│       ├── solution-import.yml
│       ├── solution-build.yml
│       ├── solution-validate.yml
│       ├── solution-deploy.yml
│       ├── plugin-deploy.yml
│       ├── plugin-extract.yml
│       └── full-alm.yml
├── azure-devops/
│   ├── templates/                  # Pipeline templates
│   └── examples/                   # Example pipelines
├── docs/
│   ├── github-quickstart.md
│   ├── azure-devops-quickstart.md
│   ├── authentication.md
│   ├── actions-reference.md
│   ├── features.md
│   ├── troubleshooting.md
│   └── strategy/
│       ├── ALM_OVERVIEW.md
│       ├── BRANCHING_STRATEGY.md
│       └── ENVIRONMENT_STRATEGY.md
├── CHANGELOG.md
└── README.md

Compatibility

ALM Version Requires PPDS.Tools
v1.0.x >= 1.1.0

Versioning

Use version tags for stability:

Tag Description Recommendation
@v1 Latest v1.x release Recommended for production
@v1.0.0 Specific version Maximum stability
@main Latest development Not recommended for production

PPDS Ecosystem

Repository Purpose Install
power-platform-developer-suite VS Code Extension VS Code Marketplace
ppds-sdk .NET Plugin Attributes dotnet add package PPDS.Plugins
ppds-tools PowerShell Module Install-Module PPDS.Tools
ppds-alm CI/CD Templates Reference in pipelines
ppds-demo Reference Implementation Clone

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run actionlint on GitHub Actions workflows
  5. Test with actual CI/CD environment
  6. Submit a pull request

License

MIT License - see LICENSE for details.

Support

About

CI/CD pipeline templates for Power Platform/Dataverse development (GitHub Actions & Azure DevOps)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •