Forum Discussion
Automate PBIVIZ Cert Create and Install on Azure Devops CI/CD
- 6 years ago
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
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: