Skip to content

Instantly share code, notes, and snippets.

@mpetuska
Last active September 30, 2020 14:56
Show Gist options
  • Save mpetuska/f38540f1e7b482ede3727c98337b1fee to your computer and use it in GitHub Desktop.
Save mpetuska/f38540f1e7b482ede3727c98337b1fee to your computer and use it in GitHub Desktop.
parameters:
- name: workingDirectory
default: .
type: string
- name: packageManager
default: yarn
values:
- yarn
- npm
- name: bundleDir
default: build/
- name: jfrogUser
default: ''
- name: jfrogToken
default: ''
- name: sonarQubeEndpoint
default: ''
- name: disableSonarQube
default: false
type: boolean
- name: sonarProjectKey
type: string
default: $(Build.Repository.Name)
- name: nodeBundleName
type: string
default: NodeBundle
steps:
- ${{ if and( ne(parameters.jfrogUser, ''), ne(parameters.jfrogToken, '') ) }}:
- template: ./npmAuth.template.yml
parameters:
jfrogUser: ${{parameters.jfrogUser}}
jfrogToken: ${{parameters.jfrogToken}}
- bash: ${{parameters.packageManager}} install
displayName: Install
workingDirectory: ${{parameters.workingDirectory}}
- bash: ${{parameters.packageManager}} run test
displayName: Test
workingDirectory: ${{parameters.workingDirectory}}
env:
CI: true
- task: PublishTestResults@2
inputs:
#testResultsFormat: 'JUnit' # Options: JUnit, NUnit, VSTest, xUnit, cTest
testResultsFiles: '**/junit.xml'
mergeTestResults: true
failTaskOnFailedTests: true
testRunTitle: Jest-Junit Results
workingDirectory: ${{parameters.workingDirectory}}
- task: PublishCodeCoverageResults@1
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: $(System.DefaultWorkingDirectory)/${{parameters.workingDirectory}}/coverage/cobertura-coverage.xml
pathToSources: $(System.DefaultWorkingDirectory)/${{parameters.workingDirectory}}/src
workingDirectory: ${{parameters.workingDirectory}}
- ${{if and(ne(parameters.sonarQubeEndpoint, ''), ne(parameters.disableSonarQube, true)) }}:
- template: ./publishSonarQubeReports.template.yml
parameters:
endpoint: ${{ parameters.sonarQubeEndpoint }}
workingDirectory: ${{parameters.workingDirectory}}
projectKey: ${{parameters.sonarProjectKey}}
- bash: ${{parameters.packageManager}} run build
displayName: Bundle
workingDirectory: ${{parameters.workingDirectory}}
env:
CI: true
- publish: ${{parameters.workingDirectory}}/${{parameters.bundleDir}}
artifact: ${{parameters.nodeBundleName}}
displayName: Publish NodeBundle
parameters:
- name: jfrogUser
type: string
- name: jfrogToken
type: string
steps:
- bash: |
export JFROG_BASE64=$(printf '%s' '${{parameters.jfrogUser}}:${{parameters.jfrogToken}}' | base64 | tr -d '\n')
echo '@mycompany:registry=https://mycompany.jfrog.io/artifactory/api/npm/npm-dev-local/' >> ~/.npmrc
echo '//mycompany.jfrog.io/artifactory/api/npm/npm-dev-local/:always-auth=true' >> ~/.npmrc
echo '//mycompany.jfrog.io/artifactory/api/npm/npm-dev-local/:email=${{parameters.jfrogUser}}' >> ~/.npmrc
echo "//mycompany.jfrog.io/artifactory/api/npm/npm-dev-local/:_auth=$JFROG_BASE64" >> ~/.npmrc
displayName: Jfrog NPM Auth Setup
parameters:
- name: workingDirectory
default: .
type: string
- name: continueOnError
default: true
type: boolean
- name: projectKey
type: string
default: $(Build.Repository.Name)
- name: endpoint
steps:
- task: SonarQubePrepare@4
displayName: 'Prepare analysis on SonarQube'
inputs:
workingDirectory:
SonarQube: ${{ parameters.endpoint }}
scannerMode: CLI
configMode: file
extraProperties: |
sonar.projectKey=${{parameters.projectKey}}
sonar.projectBaseDir=$(Build.SourcesDirectory)/${{parameters.workingDirectory}}
project.settings=$(Build.SourcesDirectory)/${{parameters.workingDirectory}}/sonar-project.properties
- task: SonarQubeAnalyze@4
displayName: Run Code Analysis
continueOnError: ${{ parameters.continueOnError }}
- task: SonarQubePublish@4
displayName: Publish Quality Gate Result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment