ci(azure-pipelines): properly implement multi-entity caches for dependencies
This commit is contained in:
parent
6a279d262f
commit
8157746fea
@ -5,8 +5,11 @@
|
|||||||
parameters:
|
parameters:
|
||||||
- name: serviceName
|
- name: serviceName
|
||||||
type: string
|
type: string
|
||||||
- name: dependenciesArtifacts
|
# - name: dependenciesArtifacts
|
||||||
type: string
|
# type: string
|
||||||
|
- name: dependenciesCaches
|
||||||
|
type: array
|
||||||
|
default: []
|
||||||
- name: dependenciesBuildPool
|
- name: dependenciesBuildPool
|
||||||
type: string
|
type: string
|
||||||
default: 'Prod Private Agent Pool'
|
default: 'Prod Private Agent Pool'
|
||||||
@ -49,12 +52,13 @@ jobs:
|
|||||||
IN_CONTAINER: true
|
IN_CONTAINER: true
|
||||||
IN_CI: true
|
IN_CI: true
|
||||||
steps:
|
steps:
|
||||||
# Restore previously-built dependencies from cache
|
# Restore previously-built dependencies from caches
|
||||||
- task: Cache@2
|
- ${{ each cache in parameters.dependenciesCaches }}:
|
||||||
displayName: Restore cached ${{parameters.serviceName}} dependencies
|
- task: Cache@2
|
||||||
inputs:
|
displayName: Restore cached ${{parameters.serviceName}} dependencies
|
||||||
key: '${{parameters.serviceName}}-dependencies'
|
inputs:
|
||||||
path: '${{parameters.dependenciesArtifacts}}'
|
key: "'${{parameters.serviceName}}-dependencies' | ${{cache.key}}"
|
||||||
|
path: '${{cache.path}}'
|
||||||
# - task: DownloadPipelineArtifact@2
|
# - task: DownloadPipelineArtifact@2
|
||||||
# displayName: Download previously built ${{parameters.serviceName}} dependencies
|
# displayName: Download previously built ${{parameters.serviceName}} dependencies
|
||||||
# condition: eq(variables.useCachedDependencies, true)
|
# condition: eq(variables.useCachedDependencies, true)
|
||||||
@ -77,15 +81,17 @@ jobs:
|
|||||||
makeJob: dependencies
|
makeJob: dependencies
|
||||||
makeService: ${{parameters.serviceName}}
|
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
|
# Upload newly-built dependencies as artifacts
|
||||||
- task: CopyFiles@2
|
# - task: CopyFiles@2
|
||||||
displayName: Copy ${{parameters.serviceName}} dependencies for upload
|
# displayName: Copy ${{parameters.serviceName}} dependencies for upload
|
||||||
inputs:
|
# inputs:
|
||||||
Contents: '${{parameters.dependenciesArtifacts}}'
|
# Contents: '${{parameters.dependenciesArtifacts}}'
|
||||||
TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
# TargetFolder: '$(Build.ArtifactStagingDirectory)'
|
||||||
- task: PublishBuildArtifacts@1
|
# - task: PublishBuildArtifacts@1
|
||||||
displayName: Upload ${{parameters.serviceName}} dependencies as artifacts
|
# displayName: Upload ${{parameters.serviceName}} dependencies as artifacts
|
||||||
inputs:
|
# inputs:
|
||||||
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
# PathtoPublish: '$(Build.ArtifactStagingDirectory)'
|
||||||
ArtifactName: '${{parameters.serviceName}}-dependencies'
|
# ArtifactName: '${{parameters.serviceName}}-dependencies'
|
||||||
publishLocation: 'Container'
|
# publishLocation: 'Container'
|
||||||
@ -24,9 +24,15 @@ parameters:
|
|||||||
# extraBuildOptions: |
|
# extraBuildOptions: |
|
||||||
# --build-arg NPM_CUSTOM_REGISTRY=https://pkgs.dev.azure.com/fraport/_packaging/packages/npm/registry/
|
# --build-arg NPM_CUSTOM_REGISTRY=https://pkgs.dev.azure.com/fraport/_packaging/packages/npm/registry/
|
||||||
dependsOn: []
|
dependsOn: []
|
||||||
dependenciesArtifacts: |
|
dependenciesCaches:
|
||||||
node_modules/
|
- key: package.json | package-lock.json
|
||||||
.npm/
|
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'
|
buildPool: 'Prod Private Agent Pool'
|
||||||
buildTimeout: 60
|
buildTimeout: 60
|
||||||
buildArtifacts: |
|
buildArtifacts: |
|
||||||
@ -43,13 +49,13 @@ parameters:
|
|||||||
tag: 8.10.4
|
tag: 8.10.4
|
||||||
dependsOn:
|
dependsOn:
|
||||||
- Build_frontend
|
- Build_frontend
|
||||||
dependenciesArtifacts: |
|
dependenciesCaches:
|
||||||
.stack/**/*
|
- key: stack.yaml | stack.yaml.lock
|
||||||
|
path: .stack/
|
||||||
buildPool: 'Prod Private Agent Pool DS3'
|
buildPool: 'Prod Private Agent Pool DS3'
|
||||||
buildTimeout: 1440
|
buildTimeout: 1440
|
||||||
buildArtifacts: |
|
buildArtifacts: |
|
||||||
bin/*
|
bin/*
|
||||||
.stack-work/**/*
|
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
buildImageUpstream: devfra.azurecr.io/de.fraport.fradrive.build
|
buildImageUpstream: devfra.azurecr.io/de.fraport.fradrive.build
|
||||||
@ -69,9 +75,9 @@ stages:
|
|||||||
- template: .azure-pipelines/templates/jobs/setup_dependencies.yaml
|
- template: .azure-pipelines/templates/jobs/setup_dependencies.yaml
|
||||||
parameters:
|
parameters:
|
||||||
serviceName: ${{service.name}}
|
serviceName: ${{service.name}}
|
||||||
|
dependenciesCaches: ${{service.dependenciesCaches}}
|
||||||
dependenciesBuildPool: ${{service.buildPool}}
|
dependenciesBuildPool: ${{service.buildPool}}
|
||||||
dependenciesBuildTimeout: ${{service.buildTimeout}}
|
dependenciesBuildTimeout: ${{service.buildTimeout}}
|
||||||
dependenciesArtifacts: ${{service.dependenciesArtifacts}}
|
|
||||||
|
|
||||||
- stage: Build
|
- stage: Build
|
||||||
dependsOn: Setup
|
dependsOn: Setup
|
||||||
|
|||||||
Reference in New Issue
Block a user