Travis CI: изменение таймзоны

01 June 2015 #jekyll #tips #travis

После того, как перенес свой сайт на Amazon S3 и генерацию с использованием Travis CI, попытался опубликовать об этом статью. И столкнулся с тем, что публикация завершалась успешно, но новой статьи на сайте не было. Разбирался долго, пока не понял, что все дело в том, что время на сервере Travis установленно в UTC, а в настройках Jekyll у меня отключена публикация статей с будущей датой. То есть все мои новые статьи для Travis выступали как будущие, так как у меня таймзона +4 часа.

Как временный воркараунд включил возможность публикации статьей с будущей датой. И стал искать варианты изменения таймзоны во время генарации.

Первый способ нашелся довольно быстро. Потребовалось указать в настройках использование sudo и выполнить стандартны е команды по изменению таймзоны в Ubuntu. Все это выглядит следующим образом в .travis.yml:

sudo: required
before_install:
  - echo "Europe/Samara" | sudo tee /etc/timezone
  - sudo dpkg-reconfigure --frontend noninteractive tzdata

Первая строка разрешает использование sudo, а последующий блок перед запуском установки выполняет команды смены таймзоны. Но, как в дальнейшем оказалось, использование sudo нарушает работу кеша зависимостей и время генерации сайта, пусть и незначительно, но выросло.

Как оказалось, есть более простой способ задания временной зоны, который не требует запуска от имени администратора. Для этого используется следующий блок в файле .travis.yml:

before_install:
  - export TZ=Europe/Samara
  - date

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

Еще одной проблемой меньше. Возможность публикации статей с будущими датами выключил (теперь можно ее использовать для драфтовых записей).