# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel # # SPDX-License-Identifier: AGPL-3.0-or-later parameters: - name: services type: object default: - name: frontend 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/ pool: 'Prod Private Agent Pool' timeout: 60 dependsOn: [] requiredArtifacts: [] artifacts: | assets/icons/fradrive/*.svg assets/favicons/*.png assets/favicons/include.html static/**/* well-known/**/* frontend/src/env.sass config/manifest.json - name: backend base: image: devfra.azurecr.io/de.fraport.build/haskell tag: 8.10.4 pool: 'Prod Private Agent Pool DS3' timeout: 1440 dependsOn: - frontend requiredArtifacts: - name: frontend source: current version: 'latest' artifact: frontend patterns: '**/*' continueOnError: false - name: backend-dependencies source: specific version: 'latestFromBranch' artifact: backend patterns: '.stack/**/*' continueOnError: true condition: eq(variables.useCachedDependencies, true) artifacts: | bin/* .stack/**/* variables: imageUpstream: devfra.azurecr.io/de.fraport.fradrive.build onMasterBranch: $[eq(variables['Build.SourceBranch'], 'refs/heads/master')] onUpdateBranch: $[startsWith(variables['Build.SourceBranch'], 'refs/heads/update')] pool: 'Prod Private Agent Pool' stages: - ${{ each service in parameters.services }}: - template: .azure-pipelines/templates/service.yaml parameters: serviceName: ${{ service.name }} serviceBase: ${{ service.base }} servicePool: ${{ service.pool }} serviceTimeout: ${{ service.timeout }} serviceDependsOn: ${{ service.dependsOn }} serviceRequiredArtifacts: ${{ service.requiredArtifacts }} serviceArtifacts: ${{ service.artifacts }} ${{ if eq(variables.skipTests, false) }}: buildSteps: - dependencies - compile - lint - test ${{ else }}: buildSteps: - dependencies - compile - stage: release dependsOn: - backend jobs: - job: test displayName: Release fradrive-test condition: eq(variables.releaseTest, true) container: image: devfra.azurecr.io/de.fraport.build/tools:1.1.0 endpoint: devfra steps: - checkout: self - task: DownloadPipelineArtifact@2 displayName: Download binaries inputs: artifactName: backend patterns: 'backend/bin/*' targetPath: '$(Build.Repository.LocalPath)' - script: | ls -a . pwd find . - task: Docker@2 displayName: Login to container registry inputs: command: login containerRegistry: devfra - task: Bash@3 displayName: Build container inputs: targetType: inline script: | cp docker/fradrive/Dockerfile . docker build \ --tag $(imageUpstream)/fradrive:$(Build.BuildNumber) \ --build-arg FROM_IMG=devfra.azurecr.io/de.fraport.trusted/ubuntu \ --build-arg FROM_TAG=20.04 \ --build-arg PROJECT_DIR=$(Build.Repository.LocalPath) \ --build-arg IN_CI=true \ --build-arg IN_CONTAINER=true \ . - task: Docker@2 displayName: Logout from container registry inputs: command: logout containerRegistry: devfra