fradrive/azure-pipelines.yaml

90 lines
2.7 KiB
YAML
Executable File

# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# 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
condition: or(eq(variables.forceRelease, true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
dependsOn:
- backend
jobs:
- template: .azure-pipelines/templates/release.yaml
parameters:
releaseTag: split(variables['Build.SourceBranch'], '/')[2]