web-dev-qa-db-fra.com

Comment activer la mise en cache de couche Docker dans Azure Devops

J'exécute le script YamL ci-dessous pour construire des images Docker et appuyer sur KubeNettes Cluster, mais je voulais en même temps activer la mise en cache de couche Docker dans la Devops Azure tout en créant le script YAML.Coulez-vous s'il vous plaît expliquer comment activer ou comment ajouter le Tâche à Azure Devops pour le faire.

YAML :

# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml

trigger:
- master

pool:
  vmImage: 'ubuntu-latest'

variables:
  tag: 'web'
  DockerImageName: 'boiyaa/google-cloud-sdk-nodejs'


steps:
- task: Docker@2
  inputs:
    command: 'build'
    Dockerfile: '**/Dockerfile'
    tags: 'web'

- script: |
    echo ${GCLOUD_SERVICE_KEY_STAGING} > ${HOME}/gcp-key.json
               gcloud auth activate-service-account --key-file ${HOME}/gcp-key.json --project ${GCLOUD_PROJECT_ID_STAGING}
               gcloud container clusters get-credentials ${GCLOUD_PROJECT_CLUSTER_ID_STAGING} \
        --zone ${GCLOUD_PROJECT_CLUSTER_ZONE_STAGING} \
        --project ${GCLOUD_PROJECT_ID_STAGING}
  displayName: 'Setup-staging_credentials'


- bash: bash ./deploy/deploy-all.sh staging
  displayName: 'Deploy_script_staging'
6
PRAVEEN

La cache de couche Docker n'est pas prise en charge dans Azure Devops actuellement. Le raison est indiqué ci-dessous:

Dans la conception actuelle d'agents hébergés Microsoft, chaque travail est envoyé à une machine virtuelle nouvellement provisoire. Ces machines virtuelles sont nettoyées après que le travail atteigne l'achèvement, non persisté et non réutilisable pour des emplois ultérieurs. La nature éphémère des machines virtuelles empêche la réutilisation des couches de docker mis en cache.

1 Cependant, cependant, la mise en cache de couche Docker est possible en utilisant des agents auto-hébergés. Vous pouvez essayer créer vos agents sur site pour exécuter votre pipeline de construction.

Vous devrez peut-être désactiver l'option du travail ' Autoriser les scripts d'accéder au OAuth jeton'. Pour $ (System.AccessToken) est transmis à Docker Catégorie à l'aide d'un accès - Butand-arg Access_Token = $ (système.AccessToken) et sa valeur varie pour chaque exécution, qui invalidera la mise en cache.

2, vous pouvez également utiliser tâche de cache et docker save/load commondes Pour télécharger la couche de docker sauvegardée sur Azure Devops Server et la restaurer sur la course future. Vérifiez cela thread pour plus d'informations.

3, une autre solution de contournement comme décrit dans cet article blog est d'utiliser --cache-from and --target Dans votre dockerfile.

Si le contournement ci-dessus n'est pas satisfaisant. Vous pouvez soumettre une Demande de fonctionnalité à Microsoft Developpe Team. Cliquez Suggérez une fonctionnalité et choisissez Azure Devops. enter image description here

6
Levi Lu-MSFT