ci(azure-pipelines):
This commit is contained in:
parent
7e014c037e
commit
d35c524f99
@ -3,16 +3,23 @@
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
parameters:
|
||||
- name: service
|
||||
- name: serviceName
|
||||
type: string
|
||||
default: serviceName
|
||||
- name: serviceBase
|
||||
type: object
|
||||
default:
|
||||
name: service
|
||||
baseImage: baseImage
|
||||
baseImageTag: baseImageTag
|
||||
pool: 'Prod Private Agent Pool'
|
||||
# extraBuildOptions: ''
|
||||
buildArtifacts: ''
|
||||
dependsOn: []
|
||||
image: baseImage
|
||||
tag: baseImageTag
|
||||
- name: servicePool
|
||||
type: string
|
||||
default: 'Prod Private Agent Pool'
|
||||
# extraBuildOptions: ''
|
||||
- name: serviceArtifacts
|
||||
type: string
|
||||
default: ''
|
||||
- name: serviceDependencies
|
||||
default: []
|
||||
- name: buildSteps
|
||||
type: object
|
||||
default:
|
||||
@ -22,8 +29,8 @@ parameters:
|
||||
- test
|
||||
|
||||
jobs:
|
||||
- job: ImageBuild_${{parameters.service.name}}
|
||||
displayName: Build ${{parameters.service.name}} image
|
||||
- job: ImageBuild_${{parameters.serviceName}}
|
||||
displayName: Build ${{parameters.serviceName}} image
|
||||
condition: or(eq(variables.onMasterBranch, true), eq(variables.onUpdateBranch, true))
|
||||
container:
|
||||
image: devfra.azurecr.io/de.fraport.build/tools:1.1.0
|
||||
@ -36,15 +43,15 @@ jobs:
|
||||
command: login
|
||||
containerRegistry: devFra
|
||||
- task: Bash@3
|
||||
displayName: Build ${{parameters.service.name}} image
|
||||
displayName: Build ${{parameters.serviceName}} image
|
||||
inputs:
|
||||
targetType: inline
|
||||
script: |
|
||||
cp docker/${{parameters.service.name}}/Dockerfile .
|
||||
cp docker/${{parameters.serviceName}}/Dockerfile .
|
||||
docker build \
|
||||
--tag $(imageUpstream)/${{parameters.service.name}}:$(Build.BuildNumber) \
|
||||
--build-arg FROM_IMG=${{parameters.service.baseImage}} \
|
||||
--build-arg FROM_TAG=${{parameters.service.baseImageTag}} \
|
||||
--tag $(imageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber) \
|
||||
--build-arg FROM_IMG=${{parameters.serviceBase.image}} \
|
||||
--build-arg FROM_TAG=${{parameters.serviceBase.tag}} \
|
||||
--build-arg HTTPS_PROXY=http://proxy.frankfurt-airport.de:8080 \
|
||||
--build-arg HTTP_PROXY=http://proxy.frankfurt-airport.de:8080 \
|
||||
--build-arg NO_PROXY='localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io' \
|
||||
@ -55,37 +62,37 @@ jobs:
|
||||
--build-arg IN_CONTAINER=true \
|
||||
.
|
||||
- task: Bash@3
|
||||
displayName: Push ${{ parameters.service.name }} image
|
||||
displayName: Push ${{ parameters.serviceName }} image
|
||||
inputs:
|
||||
targetType: inline
|
||||
script: |
|
||||
docker push $(imageUpstream)/${{parameters.service.name}}:$(Build.BuildNumber)
|
||||
docker push $(imageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber)
|
||||
- task: Bash@3
|
||||
displayName: Update latest ${{parameters.service.name}} image
|
||||
displayName: Update latest ${{parameters.serviceName}} image
|
||||
condition: eq(variables.onMasterBranch, true)
|
||||
inputs:
|
||||
targetType: inline
|
||||
script: |
|
||||
docker tag $(imageUpstream)/${{parameters.service.name}}:$(Build.BuildNumber) $(imageUpstream)/${{parameters.service.name}}:latest
|
||||
docker push $(imageUpstream)/${{parameters.service.name}}:latest
|
||||
docker tag $(imageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber) $(imageUpstream)/${{parameters.serviceName}}:latest
|
||||
docker push $(imageUpstream)/${{parameters.serviceName}}:latest
|
||||
- task: Docker@2
|
||||
displayName: Logout from container registry
|
||||
inputs:
|
||||
command: logout
|
||||
containerRegistry: devFra
|
||||
|
||||
- job: Build_${{parameters.service.name}}
|
||||
displayName: Build ${{parameters.service.name}}
|
||||
- job: Build_${{parameters.serviceName}}
|
||||
displayName: Build ${{parameters.serviceName}}
|
||||
dependsOn:
|
||||
- ImageBuild_${{parameters.service.name}}
|
||||
- ${{ each dep in parameters.service.dependsOn }}:
|
||||
- ImageBuild_${{parameters.serviceName}}
|
||||
- ${{ each dep in parameters.serviceDependencies }}:
|
||||
- ${{ dep }}
|
||||
condition: in(dependencies.ImageBuild_${{parameters.service.name}}.result, 'Succeeded', 'Skipped')
|
||||
pool: '${{ parameters.service.pool }}'
|
||||
condition: in(dependencies.ImageBuild_${{parameters.serviceName}}.result, 'Succeeded', 'Skipped')
|
||||
pool: '${{ parameters.servicePool }}'
|
||||
container:
|
||||
# TODO: use BuildNumber instead of latest in update branches
|
||||
# image: devfra.azurecr.io/de.fraport.fradrive.build/frontend:$(Build.BuildNumber)
|
||||
image: $(imageUpstream)/${{parameters.service.name}}:latest
|
||||
image: $(imageUpstream)/${{parameters.serviceName}}:latest
|
||||
endpoint: devfra
|
||||
env:
|
||||
PROJECT_DIR: $(Build.Repository.LocalPath)
|
||||
@ -96,16 +103,16 @@ jobs:
|
||||
- ${{ each buildStep in parameters.buildSteps }}:
|
||||
- template: ./service/build-step.yaml
|
||||
parameters:
|
||||
service: ${{ parameters.service.name }}
|
||||
service: ${{ parameters.serviceName }}
|
||||
buildStep: ${{ buildStep }}
|
||||
- task: CopyFiles@2
|
||||
displayName: Copy ${{parameters.service.name}} artifacts
|
||||
displayName: Copy ${{parameters.serviceName}} artifacts
|
||||
inputs:
|
||||
Contents: ${{ parameters.service.buildArtifacts }}
|
||||
Contents: ${{ parameters.serviceArtifacts }}
|
||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||
- task: PublishBuildArtifacts@1
|
||||
displayName: Publish ${{parameters.service.name}} artifacts
|
||||
displayName: Publish ${{parameters.serviceName}} artifacts
|
||||
inputs:
|
||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
||||
ArtifactName: '${{parameters.service.name}}'
|
||||
ArtifactName: '${{parameters.serviceName}}'
|
||||
publishLocation: 'Container'
|
||||
@ -7,11 +7,12 @@ parameters:
|
||||
type: object
|
||||
default:
|
||||
- name: frontend
|
||||
baseImage: devfra.azurecr.io/de.fraport.build/npm
|
||||
baseImageTag: node-20
|
||||
base:
|
||||
image: devfra.azurecr.io/de.fraport.build/npm
|
||||
tag: node-20
|
||||
# extraBuildOptions: |
|
||||
# --build-arg NPM_CUSTOM_REGISTRY=https://pkgs.dev.azure.com/fraport/_packaging/packages/npm/registry/
|
||||
buildArtifacts: |
|
||||
artifacts: |
|
||||
assets/icons
|
||||
assets/favicons
|
||||
static/
|
||||
@ -19,10 +20,11 @@ parameters:
|
||||
frontend/src/env.sass
|
||||
config/manifest.json
|
||||
- name: backend
|
||||
baseImage: devfra.azurecr.io/de.fraport.build/haskell
|
||||
baseImageTag: 8.10.4
|
||||
base:
|
||||
image: devfra.azurecr.io/de.fraport.build/haskell
|
||||
tag: 8.10.4
|
||||
pool: 'Prod Private Agent Pool DS2'
|
||||
buildArtifacts: |
|
||||
artifacts: |
|
||||
.stack/
|
||||
.stack-work/
|
||||
|
||||
@ -37,4 +39,8 @@ jobs:
|
||||
- ${{ each service in parameters.services }}:
|
||||
- template: .azure-pipelines/templates/service.yaml
|
||||
parameters:
|
||||
service: ${{ service }}
|
||||
serviceName: ${{ service.name }}
|
||||
serviceBase: ${{ service.base }}
|
||||
servicePool: ${{ service.pool }}
|
||||
serviceDependencies: ${{ service.dependencies }}
|
||||
serviceArtifacts: ${{ service.artifacts }}
|
||||
Loading…
Reference in New Issue
Block a user