Теперь у Travis есть бета-функция Cron Jobs, которая позволяет планировать сборку на ежедневной, еженедельной или ежемесячной основе. Чтобы включить Cron, просто отправьте электронное письмо в службу поддержки travis. Я получил ответ о том, что Cron был включен в моей учетной записи менее чем через 24 часа после отправки запроса.

Я использую AWS Lambda для нескольких проектов. AWS SDK для JavaScript входит в состав среды Lambda, поэтому его не нужно включать при загрузке встроенной функции Lambda (zip-файл). Однако последняя версия SDK и версия, доступная в Lambda, немного не синхронизированы. Мне нужен был способ сохранить последнюю версию SDK в devDependencies моих проектов без необходимости постоянно проверять документацию и обновлять закрепленную версию для каждого проекта. Введите aws-sdk-js-on-lambda. Этот репозиторий постоянно обновляется благодаря сборкам cron Трэвиса.

Как это работает

  1. npm pretest делает запрос на получение страницы среды выполнения из документации AWS, использует регулярное выражение для анализа версии SDK и выводит его в файл
  2. npm test просто сравнивает версию на странице документации (прочитанную из файла на предыдущем шаге) с версией в package.json. Если они одинаковые, то проходит, если нет — не получается.
  3. В случае сбоя теста запускается скрипт after_failure (из .travis.yml). Здесь становится интересно. after_failure настроен на выполнение update.sh. Этот скрипт проверяет ветку разработки, обновляет локальный пакет с помощью пряжи, а затем отправляет обратно на GitHub.
  4. Конечно, нажатие запускает другую сборку. На этот раз это должно пройти. После успеха срабатывает after_success. В этом случае он настроен на вызов merge.sh, который проверяет, пришла ли сборка из ветки разработки, и объединяет разработку с мастером, что, в свою очередь, запускает другую сборку. На этот раз мастер должен пройти без проблем.

Я решил использовать две разные ветки, чтобы избежать бесконечного цикла отправки и запуска сборок из одной и той же ветки. Если по какой-либо причине сборка в режиме разработки завершится ошибкой, дальнейшие действия выполняться не будут.

Вот схема процесса, которая поможет объяснить:

Результат

Теперь, в течение 24 часов после обновления документации, сборка завершится ошибкой, что приведет к развертыванию цепочки сборок, коммитов и отправок Руба Голдберга, что приведет к обновленной версии aws-sdk-js-on-lambda с без вмешательства человека. Я получу сообщение об ошибке сборки, когда оно будет обновлено, я не против 😁.

Спасибо, Трэвис, за добавление сборок cron! Я с нетерпением жду возможности использовать эту функцию в ближайшем будущем.

Примечания

  • Скрипты развертывания были адаптированы из domenic/auto-deploy.md (настоятельно рекомендую проверить это).