ci(azure-pipelines): properly implement multi-entity caches for dependencies
This commit is contained in:
parent
6a279d262f
commit
8157746fea
@ -5,8 +5,11 @@
|
||||
parameters:
|
||||
- name: serviceName
|
||||
type: string
|
||||
- name: dependenciesArtifacts
|
||||
type: string
|
||||
# - name: dependenciesArtifacts
|
||||
# type: string
|
||||
- name: dependenciesCaches
|
||||
type: array
|
||||
default: []
|
||||
- name: dependenciesBuildPool
|
||||
type: string
|
||||
default: 'Prod Private Agent Pool'
|
||||
@ -49,12 +52,13 @@ jobs:
|
||||
IN_CONTAINER: true
|
||||
IN_CI: true
|
||||
steps:
|
||||
# Restore previously-built dependencies from cache
|
||||
- task: Cache@2
|
||||
displayName: Restore cached ${{parameters.serviceName}} dependencies
|
||||
inputs:
|
||||
key: '${{parameters.serviceName}}-dependencies'
|
||||
path: '${{parameters.dependenciesArtifacts}}'
|
||||
# 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)
|
||||
@ -77,15 +81,17 @@ jobs:
|
||||
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'
|
||||
# - 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'
|
||||
@ -24,9 +24,15 @@ parameters:
|
||||
# extraBuildOptions: |
|
||||
# --build-arg NPM_CUSTOM_REGISTRY=https://pkgs.dev.azure.com/fraport/_packaging/packages/npm/registry/
|
||||
dependsOn: []
|
||||
dependenciesArtifacts: |
|
||||
node_modules/
|
||||
.npm/
|
||||
dependenciesCaches:
|
||||
- key: package.json | package-lock.json
|
||||
path: node_modules/
|
||||
- key: package.json | package-lock.json
|
||||
path: .npm/
|
||||
- key: package.json | esbuild.config.mjs | utils/renamer.pl | utils/faviconize.pl | frontend/src/icons.scss
|
||||
path: assets/icons/
|
||||
- key: package.json | esbuild.config.mjs | utils/renamer.pl | utils/faviconize.pl | frontend/src/icons.scss
|
||||
path: assets/favions/
|
||||
buildPool: 'Prod Private Agent Pool'
|
||||
buildTimeout: 60
|
||||
buildArtifacts: |
|
||||
@ -43,13 +49,13 @@ parameters:
|
||||
tag: 8.10.4
|
||||
dependsOn:
|
||||
- Build_frontend
|
||||
dependenciesArtifacts: |
|
||||
.stack/**/*
|
||||
dependenciesCaches:
|
||||
- key: stack.yaml | stack.yaml.lock
|
||||
path: .stack/
|
||||
buildPool: 'Prod Private Agent Pool DS3'
|
||||
buildTimeout: 1440
|
||||
buildArtifacts: |
|
||||
bin/*
|
||||
.stack-work/**/*
|
||||
|
||||
variables:
|
||||
buildImageUpstream: devfra.azurecr.io/de.fraport.fradrive.build
|
||||
@ -69,9 +75,9 @@ stages:
|
||||
- template: .azure-pipelines/templates/jobs/setup_dependencies.yaml
|
||||
parameters:
|
||||
serviceName: ${{service.name}}
|
||||
dependenciesCaches: ${{service.dependenciesCaches}}
|
||||
dependenciesBuildPool: ${{service.buildPool}}
|
||||
dependenciesBuildTimeout: ${{service.buildTimeout}}
|
||||
dependenciesArtifacts: ${{service.dependenciesArtifacts}}
|
||||
|
||||
- stage: Build
|
||||
dependsOn: Setup
|
||||
|
||||
Loading…
Reference in New Issue
Block a user