mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 14:32:10 +01:00
215 lines
7.8 KiB
YAML
215 lines
7.8 KiB
YAML
name: '$(Major).$(Minor).$(Patch)-$(SourceBranchName)'
|
|
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- '*'
|
|
|
|
variables:
|
|
# Major Version einstellen
|
|
- name: 'Major'
|
|
value: '4'
|
|
# Minor Version einstellen
|
|
- name: 'Minor'
|
|
value: '5'
|
|
- name: 'Patch'
|
|
value: "$[counter(format('{0}.{1}', variables['Major'], variables['Minor']),0)]"
|
|
- name: 'BuildUniqueID'
|
|
value: '$(Build.BuildID)-$(Agent.Id)-$(System.DefinitionId)-$(System.JobId)'
|
|
- group: 'GithubCMF'
|
|
# Docker Tag Variablen
|
|
- name: 'DockerTagSourceBranch'
|
|
value: $[replace(replace(variables['Build.SourceBranch'], 'refs/heads/', ''), '/', '_')]
|
|
- name: 'CommitHash'
|
|
value: $[replace(variables['Build.SourceVersion'], format('{0}-', variables['Build.SourceBranchName']), '')]
|
|
- name: 'DockerTag'
|
|
value: |
|
|
$(Build.BuildNumber)-$(Build.SourceVersion)
|
|
$(Major).$(Minor).$(Patch)-$(DockerTagSourceBranch)-$(CommitHash)
|
|
|
|
jobs:
|
|
- job: unittests
|
|
displayName: Unit Tests
|
|
pool:
|
|
name: 'Default'
|
|
demands:
|
|
- Agent.OS -equals Linux
|
|
- docker
|
|
steps:
|
|
- task: npmAuthenticate@0
|
|
displayName: 'npm auth'
|
|
inputs:
|
|
workingFile: .npmrc
|
|
customEndpoint: GitHub-read-packages
|
|
- bash: |
|
|
echo Build and Run Tests in docker
|
|
docker build . \
|
|
-f $(Build.SourcesDirectory)/Dockerfile \
|
|
-t paragondata/test-$(BuildUniqueID):$(Build.BuildId) \
|
|
--no-cache \
|
|
--target test \
|
|
--build-arg SEMVERSION=$(Major).$(Minor).$(Patch) \
|
|
--build-arg BuildUniqueID=$(BuildUniqueID)
|
|
displayName: Build and Run Tests in docker
|
|
- bash: |
|
|
echo Copy Tests from docker container
|
|
docker run --name isatest$(BuildUniqueID) --rm -d paragondata/test-$(BuildUniqueID):$(Build.BuildId)
|
|
docker cp isatest$(BuildUniqueID):/app/testresults $(Build.StagingDirectory)/testresults
|
|
docker cp isatest$(BuildUniqueID):/app/coverage $(Build.StagingDirectory)/coverage
|
|
docker stop isatest$(BuildUniqueID)
|
|
condition: always()
|
|
displayName: Copy Tests from docker container
|
|
- task: PublishTestResults@2
|
|
displayName: Publish Test results
|
|
inputs:
|
|
testResultsFiles: '**/TESTS-*.xml'
|
|
searchFolder: $(Build.StagingDirectory)/testresults
|
|
testResultsFormat: JUnit
|
|
mergeTestResults: false
|
|
failTaskOnFailedTests: true
|
|
condition: always()
|
|
- task: PublishCodeCoverageResults@2
|
|
displayName: Publish code Coverage
|
|
inputs:
|
|
codeCoverageTool: Cobertura
|
|
summaryFileLocation: $(Build.StagingDirectory)/coverage/**/cobertura-coverage.xml
|
|
pathToSources: $(Build.SourcesDirectory)
|
|
condition: always()
|
|
- bash: |
|
|
echo ##############
|
|
docker images -f "label=build.uniqueid=$(BuildUniqueID)"
|
|
echo ##############
|
|
if [[ $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)") ]]; then
|
|
docker rmi -f $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)")
|
|
else
|
|
echo "build wurde nicht gefunden und nicht gelöscht"
|
|
fi
|
|
displayName: Remove docker image
|
|
condition: always()
|
|
|
|
- job: cibuild_debug
|
|
displayName: ISAClient CI Debug
|
|
pool:
|
|
name: 'Default'
|
|
demands:
|
|
- Agent.OS -equals Linux
|
|
- docker
|
|
condition: and(ne(variables['Build.SourceBranch'], 'refs/heads/integration'), ne(variables['Build.SourceBranch'], 'refs/heads/master'), not(startsWith(variables['Build.SourceBranch'], 'refs/heads/hotfix/')), not(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/')))
|
|
steps:
|
|
- task: npmAuthenticate@0
|
|
displayName: 'npm auth'
|
|
inputs:
|
|
workingFile: .npmrc
|
|
customEndpoint: GitHub-read-packages
|
|
- task: Docker@2
|
|
displayName: 'build ISAClient Debug'
|
|
inputs:
|
|
containerRegistry: 'Harbor isa'
|
|
repository: isa/ui
|
|
command: 'build'
|
|
Dockerfile: Dockerfile
|
|
buildContext:
|
|
tags: '$(DockerTag)'
|
|
arguments: |
|
|
--no-cache
|
|
--target publish
|
|
--build-arg SEMVERSION=$(Major).$(Minor).$(Patch)
|
|
--build-arg BuildUniqueID=$(BuildUniqueID)
|
|
--label BuildType=Debug
|
|
|
|
- task: Docker@2
|
|
displayName: 'push ISAClient Debug'
|
|
inputs:
|
|
containerRegistry: 'Harbor isa'
|
|
repository: 'isa/ui'
|
|
command: 'push'
|
|
tags: '$(DockerTag)'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Artefakt veröffentlichen: HelmValues'
|
|
inputs:
|
|
PathtoPublish: helmvalues
|
|
ArtifactName: HelmValues
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Artefakt veröffentlichen: ISAClientConfigs'
|
|
inputs:
|
|
PathtoPublish: 'apps/isa-app/src/config'
|
|
ArtifactName: SalesConfigs
|
|
|
|
- bash: |
|
|
echo ##############
|
|
docker images -f "label=build.uniqueid=$(BuildUniqueID)"
|
|
echo ##############
|
|
if [[ $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)") ]]; then
|
|
docker rmi -f $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)")
|
|
else
|
|
echo "build wurde nicht gefunden und nicht gelöscht"
|
|
fi
|
|
displayName: Remove docker image
|
|
condition: always()
|
|
|
|
- job: cibuild_prod
|
|
displayName: ISAClient CI Prod
|
|
pool:
|
|
name: 'Default'
|
|
demands:
|
|
- Agent.OS -equals Linux
|
|
- docker
|
|
condition: or(eq(variables['Build.SourceBranch'], 'refs/heads/integration'), eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/hotfix/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'))
|
|
steps:
|
|
- task: npmAuthenticate@0
|
|
displayName: 'npm auth'
|
|
inputs:
|
|
workingFile: .npmrc
|
|
customEndpoint: GitHub-read-packages
|
|
- task: Docker@2
|
|
displayName: 'build ISAClient Prod'
|
|
inputs:
|
|
containerRegistry: 'Harbor isa'
|
|
repository: isa/ui
|
|
command: 'build'
|
|
Dockerfile: Dockerfile
|
|
buildContext:
|
|
tags: '$(DockerTag)'
|
|
arguments: |
|
|
--no-cache
|
|
--target publish
|
|
--build-arg IS_PRODUCTION=true
|
|
--build-arg SEMVERSION=$(Major).$(Minor).$(Patch)
|
|
--build-arg BuildUniqueID=$(BuildUniqueID)
|
|
--label BuildType=Production
|
|
|
|
- task: Docker@2
|
|
displayName: 'push ISAClient Prod'
|
|
inputs:
|
|
containerRegistry: 'Harbor isa'
|
|
repository: 'isa/ui'
|
|
command: 'push'
|
|
tags: '$(DockerTag)'
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Artefakt veröffentlichen: HelmValues'
|
|
inputs:
|
|
PathtoPublish: helmvalues
|
|
ArtifactName: HelmValues
|
|
|
|
- task: PublishBuildArtifacts@1
|
|
displayName: 'Artefakt veröffentlichen: ISAClientConfigs'
|
|
inputs:
|
|
PathtoPublish: 'apps/isa-app/src/config'
|
|
ArtifactName: SalesConfigs
|
|
|
|
- bash: |
|
|
echo ##############
|
|
docker images -f "label=build.uniqueid=$(BuildUniqueID)"
|
|
echo ##############
|
|
if [[ $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)") ]]; then
|
|
docker rmi -f $(docker images -q -f "label=build.uniqueid=$(BuildUniqueID)")
|
|
else
|
|
echo "build wurde nicht gefunden und nicht gelöscht"
|
|
fi
|
|
displayName: Remove docker image
|
|
condition: always()
|