5 votes

Permission refusée lors de la restauration du cache dans un job CircleCi

Chaque fois que mon travail est exécuté, il faut toujours environ 40s pour télécharger et installer libreoffice. Je vais stocker cela dans le cache et restaurer le cache pour le réutiliser dans le prochain travail.

      - restore_cache:
          key: cache-libre-6.3-b             # Restore libreoffice
      - run:
          name: install libreoffice 6.3
          command: |
            if [[ ! -d /opt/libreoffice6.3/ ]]; then
                # download & install the .deb
                mkdir -p /tmp/libreoffice
                l=download.tar.gz
                cd /tmp/libreoffice
                  wget -O $l https://download.documentfoundation.org/libreoffice/stable/6.3.3/deb/x86_64/LibreOffice_6.3.3_Linux_x86-64_deb.tar.gz
                  tar -xvf $l
                  d=`ls -td */ | head -n1`
                  cd $d/DEBS/
                  sudo dpkg -i *.deb
                cd -

                # install dependencies required when run :soffice binary  ref. https://github.com/microsoft/vscode/issues/13089
                sudo apt update
                sudo apt install -y libxinerama1 libgtk2.0-0 libxss-dev libgconf-2-4 libasound2

            fi
            # make :libreoffice softlink to libreoffice binary 6.3
            sudo ln -s /opt/libreoffice6.3/program/soffice /usr/bin/libreoffice
            sudo chmod -R 777 /opt/libreoffice6.3/
      - save_cache:
          key: cache-libre-6.3-b
          paths:
            # Save cache libreoffice
            - /opt/libreoffice6.3/
            - /home/circleci/cache-libre

Lorsque je réexécute le travail, je ne peux pas restaurer le cache. J'ai obtenu une permission refusée ci-dessous :

Found a cache from build 7593 at cache-libre-6.3-b
Size: 271 MB
Cached paths:
  * /opt/libreoffice6.3
  * /home/circleci/cache-libre

Downloading cache archive...
Validating cache...

Unarchiving cache...

Failed to unarchive cache

Error untarring cache: Error extracting tarball /tmp/cache785237819 : tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/CREDITS.fodt: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/LICENSE: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/LICENSE.html: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/NOTICE: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help: Cannot mkdir: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help/a11y-toggle.js: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdir: Permission denied tar: opt/libreoffice6.3/help/default.css: Cannot open: No such file or directory tar: opt/libreoffice6.3: Cannot mkdi: exit status 2

Comment puis-je résoudre ce problème ?

5voto

Matt Mazzola Points 450

Cela m'est aussi arrivé récemment. Étant donné que j'ai eu de nombreuses constructions sauvegardant et restaurant ce cache en utilisant cette clé auparavant, il se peut que ce soit intermittent et il est peu probable que ce soit une cause directe ; cependant, je le mentionne juste au cas où cela se produirait pour aider les gens.

J'avais auparavant joué avec le working_directory pour tenter d'utiliser le persist-to-workspace y attach_workspace et je pense que cela pourrait avoir causé le problème.

Séquence qui pourrait avoir causé l'erreur :

  • Construire A :

    1. définir le répertoire de travail working_directory: ~/tmp
    2. sauvegarder le cache avec la clé X
  • Construire B :

    1. répertoire de travail par défaut (n'a pas utilisé working_directory commande)
    2. tentative de restauration du cache avec la même clé X (mais un répertoire de travail différent)
    3. Error untarring cache: Error extracting tarball

La solution qui l'a résolu était simplement de changer la clé du cache. Par exemple, de v1 préfixe pour v2 . Cela évite d'essayer de restaurer le cache qui a été fait pour le répertoire de travail tmp pour être tenté d'être restauré dans un autre répertoire de travail. Il en utilise maintenant un nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X