Разрешение отклонено при восстановлении кеша в задании CircleCi

Всякий раз, когда моя работа выполняется, им всегда требуется около 40 секунд, чтобы загрузить и установить libreoffice. Я собираюсь сохранить это в кеш и восстановить кеш, чтобы повторно использовать его в следующем задании.

      - 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

Когда я снова запускаю задание, я не могу восстановить кеш. Мне было отказано в разрешении ниже:

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

Как я могу это решить.


person bxdoan    schedule 13.11.2019    source источник
comment
Кажется, я припоминаю, что появилось на их форуме - поищите на дискуссиях.circleci.com.   -  person halfer    schedule 13.11.2019


Ответы (1)


Это случилось и со мной недавно. Учитывая, что у меня было много сборок, сохраняющих и восстанавливающих этот кеш с использованием этого ключа, прежде чем он мог быть прерывистым, и маловероятно, что это было прямой причиной; однако я бы упомянул об этом на всякий случай, если это поможет людям.

Раньше я играл с командой working_directory, пытаясь использовать persist-to-workspace и attach_workspace, и думаю, что это могло вызвать проблему.

Последовательность, которая могла вызвать ошибку:

  • Построить:

    1. set working directory working_directory: ~/tmp
    2. сохранить кеш с ключом X
  • Сборка Б:

    1. default working directory (did not use working_directory command)
    2. попытаться восстановить кеш с тем же ключом X (но другой рабочий каталог)
    3. Error untarring cache: Error extracting tarball

Решение, которое исправило это, просто изменило ключ кеша. Например, с префикса v1 на v2. Это позволяет избежать попыток восстановления кэша, созданного для рабочего каталога tmp, в другой рабочий каталог. Сейчас используется свежий.

person Matt Mazzola    schedule 16.11.2019