diff --git a/.azure-pipelines/templates/jobs/setup_dependencies.yaml b/.azure-pipelines/templates/jobs/setup_dependencies.yaml index 702c701d9..3275880cc 100644 --- a/.azure-pipelines/templates/jobs/setup_dependencies.yaml +++ b/.azure-pipelines/templates/jobs/setup_dependencies.yaml @@ -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' \ No newline at end of file + # - 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' \ No newline at end of file diff --git a/azure-pipelines.yaml b/azure-pipelines.yaml index 3f665aebb..b6bdf7eb4 100755 --- a/azure-pipelines.yaml +++ b/azure-pipelines.yaml @@ -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