Skip to content

Create Power Platform Pipeline #1033

@MarvinBangert

Description

@MarvinBangert

User Story

As a Terraform user, I want to create Power Platform Pipeline through Terraform so that I can automate the built-in ALM user experience, when creating a multistage environment deployment.

Use case:

  • Create and manage Pipeline Host
  • Create and manage Pipeline
  • Create and manage Pipeline Stage

We deploy DEV-TEST-PROD environments and would like to also create built-in pipelines to connect these environments and give end users the full experience to deploy their solutions.

Resource

Potential Terraform Configuration

# Sample Terraform config that describes how the new resource might look.

resource "powerplatform_data_record" "pipeline" {
  environment_id     = var.environment_id
  table_logical_name = "deploymentpipeline"
  columns = {
    name        = "String"
    description = "String"
    deploymenttype = "Choice" # Standard, Source Control, ADO Pipeline
    enableaideploymentnotes = true/false #Yes/No Choice Enabled, Disabled
    enableredeployment = true/false #Yes/No Choice Enabled, Disabled
  }
}

resource "powerplatform_data_record" "pipeline_stage" {
  environment_id     = var.environment_id
  table_logical_name = "deploymentstage"
  columns = {
    name        = "String"
    description = "String"
    deploymentpipelineid = id #Lookup Pipeline ID
    previousdeploymentstageid = id #Lookup Pipeline Stage
    targetdeploymentenvironmentid = id #Lookup Pipeline Stage
    isdelegateddeployment = true/false #Yes/No Choice Enabled, Disabled
    predeploymentsteprequired = true/false #Yes/No Choice Enabled, Disabled
    delegateddeploymenttype = "Choice" # Stage Owner, Service Principal
    issharingenabled = true/false #Yes/No Choice Enabled, Disabled
    preexportsteprequired = true/false #Yes/No Choice Enabled, Disabled
    spnclientid = "String" # SPN Client ID
  }
}

---OR---

resource "powerplatform_pipeline" "pipeline" {
  environment_id     = var.environment_id
  name        = "String"
  description = "String"
  deploymenttype = "Choice" # Standard, Source Control, ADO Pipeline
  enableaideploymentnotes = true/false #Yes/No Choice Enabled, Disabled
  enableredeployment = true/false #Yes/No Choice Enabled, Disabled
}

resource "powerplatform_pipeline_stage" "stage" {
  environment_id     = var.environment_id
  name        = "String"
  description = "String"
  deploymentpipelineid = id #Lookup Pipeline ID
  previousdeploymentstageid = id #Lookup Pipeline Stage
  targetdeploymentenvironmentid = id #Lookup Pipeline Stage
  isdelegateddeployment = true/false #Yes/No Choice Enabled, Disabled
  predeploymentsteprequired = true/false #Yes/No Choice Enabled, Disabled
  delegateddeploymenttype = "Choice" # Stage Owner, Service Principal
  issharingenabled = true/false #Yes/No Choice Enabled, Disabled
  preexportsteprequired = true/false #Yes/No Choice Enabled, Disabled
  spnclientid = "String" # SPN Client ID
}

Additional Validation Rules

API documentation

Action Verb URL Status Codes Comments
Create POST /api/v1/resources 201
Read GET /api/v1/resources/{id} 200
Update PUT /api/v1/resources/{id} 200
Delete DELETE /api/v1/resources/{id} 204

JSON

{}

Definition of Done

  • Data Transfer Objects (dtos) in dto.go
  • Resource Model in model.go
  • API Client functions in api_{name}.go
  • Resource Implementation in resource_{name}.go
  • Unit Tests in resource_{name}_test.go for Happy Path, Error conditions, boundry cases
  • Acceptance Tests in resource_{name}_test.go for Happy Path
  • Resource Added to provider.go and provider_test.go
  • Example in the /examples folder
  • Schema documented using MarkdownDescription
  • Change log entry changie new -k added
  • Run make precommit before PR

See the contributing guide for more information about what's expected for contributions.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestresourceterraform resource

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions