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