Last active
September 30, 2020 14:54
-
-
Save mpetuska/d6f4382e8df012a38a603b47335232ad to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# azure-pipelines-backend.yml | |
pool: | |
vmImage: 'ubuntu-latest' | |
trigger: | |
- master | |
pr: | |
- master | |
name: $(Rev:r) | |
variables: | |
- group: JFrog-access | |
stages: | |
- stage: Build | |
jobs: | |
- job: Build | |
steps: | |
- bash: | | |
export JFROG_BASE64=$(printf '%s' '$(JFROG_USER):$(JFROG_TOKEN)' | 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 | |
- bash: yarn install | |
displayName: Install | |
- bash: yarn run test | |
displayName: Test | |
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 | |
- task: PublishCodeCoverageResults@1 | |
inputs: | |
codeCoverageTool: 'cobertura' | |
summaryFileLocation: $(System.DefaultWorkingDirectory)/coverage/cobertura-coverage.xml | |
pathToSources: $(System.DefaultWorkingDirectory)/src | |
- task: SonarQubePrepare@4 | |
displayName: 'Prepare analysis on SonarQube' | |
inputs: | |
workingDirectory: | |
SonarQube: SonarQubeServiceConnection | |
scannerMode: CLI | |
configMode: file | |
extraProperties: | | |
sonar.projectKey=$(Build.Repository.Name) | |
sonar.projectBaseDir=$(Build.SourcesDirectory) | |
project.settings=$(Build.SourcesDirectory)/sonar-project.properties | |
- task: SonarQubeAnalyze@4 | |
displayName: Run Code Analysis | |
- task: SonarQubePublish@4 | |
displayName: Publish Quality Gate Result | |
- bash: yarn run build | |
displayName: Bundle | |
env: | |
CI: true | |
- publish: ./build | |
artifact: NodeBundle | |
displayName: Publish NodeBundle | |
- stage: Publish${{parameters.suffix}} | |
condition: | | |
and( | |
succeeded(), | |
or( | |
eq(variables['Build.SourceBranchName'], 'master'), | |
eq(variables['Build.Reason'], 'Manual') | |
) | |
) | |
jobs: | |
- job: Docker | |
steps: | |
- task: DownloadPipelineArtifact@2 | |
inputs: | |
artifact: NodeBundle | |
path: $(Build.SourcesDirectory)/build | |
- bash: | | |
branch_lowercases=$(echo $(Build.SourceBranch) | tr '[:upper:]' '[:lower:]' | tr -d - | tr -d _) | |
branch_ref=$branch_lowercases | |
prefix="refs/heads/" | |
removed_prefix=${branch_ref#"$prefix"} | |
echo "lower cases $branch_lowercases" | |
echo "##vso[task.setvariable variable=branch;isOutput=true]$removed_prefix" | |
displayName: 'Remove prefix' | |
name: removed_prefix | |
- bash: | | |
echo "repository name: $(Build.Repository.Name)" | |
repository_name=$(echo $(Build.Repository.Name) | tr '[:upper:]' '[:lower:]') | |
repo_name=$repository_name | |
prefix="mycompany/" | |
fixed_repo_name=${repo_name#"$prefix"} | |
echo "fixed repository name: $fixed_repo_name" | |
echo "##vso[task.setvariable variable=repo;isOutput=true]$fixed_repo_name" | |
echo "##vso[task.setvariable variable=dockerGroup]" | |
displayName: 'Fix repository name' | |
name: fixed_repo_name | |
- ${{ if ne(parameters.dockerGroup, '') }}: | |
- bash: echo "##vso[task.setvariable variable=dockerGroup]$(dockerGroup)/" | |
displayName: Prepare Docker Group | |
- bash: echo "##vso[task.setVariable variable=${{ parameters.repoVariable }}]mycompany-docker-dev.jfrog.io/$(dockerGroup)$(fixed_repo_name.repo)/$(removed_prefix.branch)" | |
displayName: Push Image Repository Variable [${{ parameters.repoVariable }}] | |
- bash: echo "##vso[task.setVariable variable=dockerImageTag]$(dockerImageRepository):$(build.buildNumber)" | |
displayName: Push Image Tag Variable [dockerImageTag] | |
- bash: docker build -t $(dockerImageTag) $(DOCKER_BUILD_ARGS) . | |
displayName: Docker Build | |
- bash: | | |
mkdir -p $(System.DefaultWorkingDirectory)/DockerBundle | |
printf '%s' "$(dockerImageRepository)" > $(System.DefaultWorkingDirectory)/DockerBundle/repository | |
printf '%s' "$(Build.BuildNumber)" > $(System.DefaultWorkingDirectory)/DockerBundle/tag | |
displayName: Prepare DockerBundle | |
- publish: $(System.DefaultWorkingDirectory)/DockerBundle | |
artifact: DockerBundle | |
displayName: Publish DockerBundle | |
- bash: docker login mycompany-docker-dev.jfrog.io --username $(JFROG_USER) --password $(JFROG_TOKEN) | |
displayName: Login to JFrog | |
- bash: docker push $(dockerImageTag) | |
displayName: Push Image to JFrog |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment