diff --git a/.azure-pipelines/templates/service.yaml b/.azure-pipelines/templates/service.yaml index 785be42e0..d493d3060 100644 --- a/.azure-pipelines/templates/service.yaml +++ b/.azure-pipelines/templates/service.yaml @@ -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' \ No newline at end of file diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 00fccec46..784ae10ee 100644 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -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 }} \ No newline at end of file + serviceName: ${{ service.name }} + serviceBase: ${{ service.base }} + servicePool: ${{ service.pool }} + serviceDependencies: ${{ service.dependencies }} + serviceArtifacts: ${{ service.artifacts }} \ No newline at end of file