97 lines
3.5 KiB
YAML
97 lines
3.5 KiB
YAML
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
|
|
#
|
|
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
|
|
parameters:
|
|
- name: serviceName
|
|
type: string
|
|
# - name: dependenciesArtifacts
|
|
# type: string
|
|
- name: dependenciesCaches
|
|
type: object
|
|
default: []
|
|
- name: dependenciesBuildPool
|
|
type: string
|
|
default: 'Prod Private Agent Pool'
|
|
values:
|
|
- 'Prod Private Agent Pool'
|
|
- 'Prod Private Agent Pool DS2'
|
|
- 'Prod Private Agent Pool DS3'
|
|
- name: dependenciesBuildTimeout
|
|
type: number
|
|
default: 60
|
|
# - name: dependenciesSource
|
|
# type: string
|
|
# default: 'current'
|
|
# values:
|
|
# - 'current'
|
|
# - 'specific'
|
|
# - name: dependenciesVersion
|
|
# type: string
|
|
# default: 'latest'
|
|
# values:
|
|
# - 'latest'
|
|
# - 'latestFromBranch'
|
|
|
|
jobs:
|
|
- job: SetupDependencies_${{parameters.serviceName}}
|
|
displayName: Install ${{parameters.serviceName}} dependencies
|
|
dependsOn: SetupImage_${{parameters.serviceName}}
|
|
${{ if eq(variables.setupImages, true) }}:
|
|
condition: succeeded()
|
|
${{ else }}:
|
|
condition: always()
|
|
pool: '${{parameters.dependenciesBuildPool}}'
|
|
timeoutInMinutes: ${{parameters.dependenciesBuildTimeout}}
|
|
container:
|
|
# TODO: do not use latest on update branches
|
|
image: $(buildImageUpstream)/${{parameters.serviceName}}:latest
|
|
endpoint: devfra
|
|
env:
|
|
PROJECT_DIR: $(Build.Repository.LocalPath)
|
|
IN_CONTAINER: true
|
|
IN_CI: true
|
|
steps:
|
|
# Restore previously-built dependencies from caches
|
|
- ${{ each cache in parameters.dependenciesCaches }}:
|
|
- task: Cache@2
|
|
displayName: Restore cached ${{parameters.serviceName}} dependencies
|
|
inputs:
|
|
key: '"${{parameters.serviceName}}-dependencies" | ${{cache.key}}'
|
|
path: '${{cache.path}}'
|
|
# - task: DownloadPipelineArtifact@2
|
|
# displayName: Download previously built ${{parameters.serviceName}} dependencies
|
|
# condition: eq(variables.useCachedDependencies, true)
|
|
# continueOnError: true
|
|
# inputs:
|
|
# artifactName: '${{parameters.serviceName}}-dependencies'
|
|
# source: ${{parameters.dependenciesSource}}
|
|
# project: 'Fahrerausbildung' # TODO: hardcoded for now, could not figure out which predefined variable to use
|
|
# pipeline: $(System.DefinitionId)
|
|
# buildVersionToDownload: '${{parameters.dependenciesVersion}}'
|
|
# # tags: '${{dependenciesArtifacts}}'
|
|
# allowPartiallySucceededBuilds: true
|
|
# allowFailedBuilds: true
|
|
# patterns: '${{parameters.dependenciesArtifacts}}'
|
|
# targetPath: '$(Build.Repository.LocalPath)'
|
|
|
|
# Compile dependencies
|
|
- template: ./../../steps/make.yaml
|
|
parameters:
|
|
makeJob: dependencies
|
|
makeService: ${{parameters.serviceName}}
|
|
|
|
# (Note: a post-job for updating the dependency cache is automatically created, so no further step is due here.)
|
|
|
|
# Upload newly-built dependencies as artifacts
|
|
# - task: CopyFiles@2
|
|
# displayName: Copy ${{parameters.serviceName}} dependencies for upload
|
|
# inputs:
|
|
# Contents: '${{parameters.dependenciesArtifacts}}'
|
|
# TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
|
# - task: PublishBuildArtifacts@1
|
|
# displayName: Upload ${{parameters.serviceName}} dependencies as artifacts
|
|
# inputs:
|
|
# PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
|
# ArtifactName: '${{parameters.serviceName}}-dependencies'
|
|
# publishLocation: 'Container' |