cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Microsoft
Microsoft

Automate PBIVIZ Cert Create and Install on Azure Devops CI/CD

In order to package a custom visual we need to run the below command :

 

pbiviz package

 

However a pre-requisite to this is the --create-cert and --install-cert steps.

 

Is it possible to automate the same on Azure Devops such that the CI can generate the required package. (*..pbiviz)

1 ACCEPTED SOLUTION

Accepted Solutions
Microsoft
Microsoft

We were able to automate the same on Azure Devops using the usual NPM tasks. However the trick here was 'install the certificate' and using powershell 'to import this on the cert store' before packaging and generating the *.pbiviz file.

 

Sample YAML file for reference - 

 

pool:
name: Azure Pipelines
steps:
- task: NodeTool@0
displayName: 'Use Node 10.x'
inputs:
versionSpec: 10.x
checkLatest: true

- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false

- task: Npm@1
displayName: 'npm test'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run test -- --reporter mocha-junit-reporter'
enabled: false

- task: Npm@1
displayName: 'npm install pbiviz'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'install -g powerbi-visuals-tools'

- task: Npm@1
displayName: 'npm install cert'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run cert'

- powershell: |
$ExtensionFile = "C:\npm\prefix\node_modules\powerbi-visuals-tools\config.json"

$jsondata = Get-Content -Raw -Path $ExtensionFile | ConvertFrom-Json

CERTUTIL -f -p $jsondata.server.passphrase -importpfx “C:\npm\prefix\node_modules\powerbi-visuals-tools\certs\PowerBICustomVisualTest_public.pfx”
displayName: 'PowerShell Script - Import Pfx to Trusted Root '

- task: Npm@1
displayName: 'npm package'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run package'

- task: PublishBuildArtifacts@1
displayName: 'Publish artifacts: drop'
inputs:
PathtoPublish: dist

- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/coverage/cobertura-coverage.xml'
reportDirectory: '$(Build.SourcesDirectory)/coverage/'
enabled: false

- task: PublishTestResults@2
displayName: 'Publish Test Results **/test-results.xml'
inputs:
testResultsFiles: '**/test-results.xml'
enabled: false
a

View solution in original post

3 REPLIES 3
Microsoft
Microsoft

We were able to automate the same on Azure Devops using the usual NPM tasks. However the trick here was 'install the certificate' and using powershell 'to import this on the cert store' before packaging and generating the *.pbiviz file.

 

Sample YAML file for reference - 

 

pool:
name: Azure Pipelines
steps:
- task: NodeTool@0
displayName: 'Use Node 10.x'
inputs:
versionSpec: 10.x
checkLatest: true

- task: Npm@1
displayName: 'npm install'
inputs:
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false

- task: Npm@1
displayName: 'npm test'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run test -- --reporter mocha-junit-reporter'
enabled: false

- task: Npm@1
displayName: 'npm install pbiviz'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'install -g powerbi-visuals-tools'

- task: Npm@1
displayName: 'npm install cert'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run cert'

- powershell: |
$ExtensionFile = "C:\npm\prefix\node_modules\powerbi-visuals-tools\config.json"

$jsondata = Get-Content -Raw -Path $ExtensionFile | ConvertFrom-Json

CERTUTIL -f -p $jsondata.server.passphrase -importpfx “C:\npm\prefix\node_modules\powerbi-visuals-tools\certs\PowerBICustomVisualTest_public.pfx”
displayName: 'PowerShell Script - Import Pfx to Trusted Root '

- task: Npm@1
displayName: 'npm package'
inputs:
command: custom
workingDir: '$(System.DefaultWorkingDirectory)'
verbose: false
customCommand: 'run package'

- task: PublishBuildArtifacts@1
displayName: 'Publish artifacts: drop'
inputs:
PathtoPublish: dist

- task: PublishCodeCoverageResults@1
displayName: 'Publish code coverage'
inputs:
codeCoverageTool: Cobertura
summaryFileLocation: '$(Build.SourcesDirectory)/coverage/cobertura-coverage.xml'
reportDirectory: '$(Build.SourcesDirectory)/coverage/'
enabled: false

- task: PublishTestResults@2
displayName: 'Publish Test Results **/test-results.xml'
inputs:
testResultsFiles: '**/test-results.xml'
enabled: false
a

View solution in original post

MVP

Hi @safalkishore ,

 

The certificate is only needed if you want to use the visual with the Power BI Developer visual. All other action do not need the certificate, like pbiviz package and testing.

I am using the following yml to build, lint, test and package my custom visual via Azure DevOps: https://github.com/liprec/powerbi-hierarchySlicer/blob/master/azure-pipelines.yml

 

-JP

Thanks very much for this @jppp ! Will also check this out and switch as its cleaner. However I recollect that when I simply ran the 'pbiviz package' cmd on the pipelines agent, it did throw back an error that the cmd is missing the cert installed.

Helpful resources

Announcements
November Update

Check it Out!

Click here to read more about the November 2020 Updates!

Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

secondImage

Power Platform October Community Highlights

Check out the top community contributors across all of the communities

secondImage

Create an end-to-end data and analytics solution

Learn how Power BI works with the latest Azure data and analytics innovations at the digital event with Microsoft CEO Satya Nadella.

Top Kudoed Authors