Как кэшировать Elixir / Phoenix на CircleCI?

Итак, другие ответы здесь в значительной степени проигнорировали ваш пост. Будем надеяться, что я не сделал то же самое.

Мне кажется, что вы хотите только кодировать базовое имя? Если это так, эта функция ad-hoc должна выполнить трюк:

function encode_basename($url) {
    $url = explode('/', $url);
    $base = array_pop($url);

    return implode('/', $url) . '/' . urlencode($base);
}
//returns: http://www.example.com/Data/image/office-d%25C3%25B4n-s%25C3%25AC-%25C3%25A0.jpg
0
задан Kamil Lelonek 13 July 2018 в 10:01
поделиться

2 ответа

Решение должно было выполнить:

  - restore_cache:
      keys:
        - v{{ .Environment.CACHE_VERSION }}-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
  - restore_cache:
      keys:
        - v{{ .Environment.CACHE_VERSION }}-build-cache-{{ .Branch }}

  - save_cache:
      key: v{{ .Environment.CACHE_VERSION }}-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
      paths: deps
  - save_cache:
      key: v{{ .Environment.CACHE_VERSION }}-build-cache-{{ .Branch }}
      paths: _build
0
ответ дан Kamil Lelonek 17 August 2018 в 13:12
поделиться

Отказ от ответственности: я сторонник разработчика CircleCI

Я вижу 1 проблему и одну потенциальную проблему здесь.

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

Во-вторых, поддерживает ли Elixir частичный кеш? Я не использую его сам, поэтому пока не знаю его достаточно хорошо. Если это не так, вы можете восстановить полный кеш-ключ, а не какие-либо частичные ключи.

Для моей первой точки:

  - restore_cache:
      keys:
        - v1-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
        - v1-mix-cache-{{ .Branch }}
        - v1-mix-cache
        - v1-build-cache-{{ .Branch }}
        - v1-build-cache

  - save_cache:
      key: v1-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
      paths: deps
  - save_cache:
      key: v1-build-cache-{{ .Branch }}
      paths: _build

и для моей второй точки:

  - restore_cache:
      keys:
        - v1-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
        - v1-build-cache-{{ .Branch }}

  - save_cache:
      key: v1-mix-cache-{{ .Branch }}-{{ checksum "mix.lock" }}
      paths: deps
  - save_cache:
      key: v1-build-cache-{{ .Branch }}
      paths: _build
1
ответ дан FelicianoTech 17 August 2018 в 13:12
поделиться
  • 1
    Проблема, которую я получаю, по-прежнему: 10:08:04.821 [error] Loading of /home/circleci/project/_build/test/lib/hackney/ebin/hackney.beam failed: :badfile 10:08:04.822 [error] beam/beam_load.c(1863): Error loading module hackney: This BEAM file was compiled for a later version of the run-time system than 20. To fix this, please recompile this module with an 20 compiler. (Use of opcode 162; this emulator supports only up to 159.) – Kamil Lelonek 17 July 2018 в 15:03
  • 2
    @KamilLelonek Похоже, ваш кеш содержит сборку, в которой используется другая версия Erlang / OTP. Попробуйте разбить кеш, нажимая номер версии ключа. – Zach 10 August 2018 в 04:27
Другие вопросы по тегам:

Похожие вопросы: