# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel # # SPDX-License-Identifier: AGPL-3.0-or-later trigger: branches: include: - '*' paths: exclude: - CHANGELOG.md tags: include: - '*' parameters: - name: services type: object default: - name: frontend imageBase: 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/ dependsOn: [] dependencyArtifacts: | node_modules/ .npm/ buildPool: 'Prod Private Agent Pool' buildTimeout: 60 buildArtifacts: | assets/icons/fradrive/*.svg assets/favicons/*.png assets/favicons/include.html frontend/src/env.sass config/manifest.json static/**/* well-known/**/* - name: backend imageBase: image: devfra.azurecr.io/de.fraport.build/haskell tag: 8.10.4 dependsOn: - Build_frontend dependencyArtifacts: | .stack/**/* buildPool: 'Prod Private Agent Pool DS3' buildTimeout: 1440 buildArtifacts: | bin/* .stack-work/**/* variables: buildImageUpstream: 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: - stage: Setup jobs: - ${{ each service in parameters.services }}: - template: .azure-pipelines/templates/jobs/setup_image.yaml parameters: imageName: ${{service.name}} imageBase: ${{service.imageBase}} - template: .azure-pipelines/templates/jobs/setup_dependencies.yaml parameters: serviceName: ${{service.name}} dependenciesBuildPool: ${{service.buildPool}} dependenciesBuildTimeout: ${{service.buildTimeout}} dependenciesArtifacts: ${{service.dependenciesArtifacts}} - stage: Build jobs: - ${{ each service in parameters.services }}: - job: Build_${{service.name}} displayName: Compile ${{service.name}} dependsOn: ${{service.dependsOn}} steps: - template: .azure-pipelines/templates/steps/make.yaml parameters: makeJob: compile makeService: ${{service.name}} - task: CopyFiles@2 displayName: Prepare ${{service.name}} build artifacts for upload inputs: Contents: ${{service.artifacts}} TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: PublishBuildArtifacts@1 displayName: Publish ${{service.name}} build artifacts inputs: PathtoPublish: '$(Build.ArtifactStagingDirectory)' ArtifactName: '${{service.name}}' publishLocation: 'Container' - stage: Test condition: eq(variables.skipTests, false) jobs: - ${{ each service in parameters.services }}: - job: Test_${{service.name}} displayName: Compile ${{service.name}} dependsOn: ${{service.dependsOn}} steps: - template: .azure-pipelines/templates/steps/make.yaml parameters: makeJob: lint makeService: ${{service.name}} - template: .azure-pipelines/templates/steps/make.yaml parameters: makeJob: test makeService: ${{service.name}} - job: TestReport_${{service.name}} displayName: Upload test reports for ${{service.name}} steps: - script: echo "Work in progress" # TODO - stage: Release condition: or(eq(variables.forceRelease, true), startsWith(variables['Build.SourceBranch'], 'refs/tags/')) jobs: - template: .azure-pipelines/templates/jobs/release.yaml parameters: releaseTag: ${{split(variables['Build.SourceBranch'], '/')[2]}}