Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
safalkishore
Employee
Employee

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
safalkishore
Employee
Employee

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

5 REPLIES 5
Adam1983
New Member

Hello,

 

Applying npm command can build the visual. At my end, problem was ConsoleWriter javascript file was not found:

C:\npm\prefix\node_modules\powerbi-visuals-tools\bin\pbiviz.js:30
import ConsoleWriter from '../lib/ConsoleWriter.js';
I had to copy folder ..\lib to  ..\AppData\Roaming\npm\node_modules\powerbi-visuals-tools\bin.
Then build ran smootly.
jppp
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.

safalkishore
Employee
Employee

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

Hi All

Thank you so much for the sample YAML. I tried the above option and tried to build my application.

Getting error as below at the npn install cert step:

npm ERR! missing script: cert
 
npm ERR! A complete log of this run can be found in:
npm ERR! /home/vsts/.npm/_logs/2021-10-30T07_46_06_594Z-debug.log
 
Any leads would be of much help!
 

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.