Heroku CI Pipeline - Кэширование драгоценных камней между сборками - PullRequest
7 голосов
/ 06 апреля 2020

Я только что настроил приложение Ruby на Rails на Heroku, но у меня возникла проблема с производительностью установки CI, которая довольно раздражает.

Во время настройки наших модульных тестов Heroku всегда переустанавливает наши драгоценные камни, создавая журналы, такие как:

Fetching activestorage 6.0.2.2
Installing activestorage 6.0.2.2

Это не так при настройке нашего приложения, как это показано строки, подобные этой:

Using activestorage 6.0.2.2

В обоих случаях, упаковщик выглядит так, чтобы вызываться с правильными аргументами:

(для настройки CI)

Running: bundle install --without development --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment

(для настройка приложения)

Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment

В обоих случаях у нас есть строка:

Bundled gems are installed into `./vendor/bundle`

Итак, я задаюсь вопросом: знаете ли вы, почему Heroku не кэширует драгоценные камни между CI тестовые настройки, в то время как это происходит во время последующих сборок нашего приложения? Если да, есть ли способ принудительного повторного использования драгоценных камней, ранее установленных в нашем конвейере CI? Это занимает много времени и может извлечь из этого пользу.

Большое спасибо

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Спросив команду Героку, это была ошибка в пакете ruby. Теперь это исправлено и работает хорошо. Создатели Buildpack могут кэшировать данные между сборками CI, они были просто отключены во время одного из обновлений.

0 голосов
/ 13 апреля 2020

Heroku не кэширует драгоценные камни между настройками теста CI

Файловая система Heroku является эфемерной файловой системой. Когда вы запускаете тесты, dyno запускается с новой операционной системой. Затем heroku устанавливает все зависимости и запускает ваши тесты.

Я думаю, что это общий сценарий для всех платформ CI. Каждый раз, когда мы запускаем тесты, они запускают новую среду с самого начала, устанавливая все зависимости.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...