Теперь у 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 Трэвиса.
Как это работает
npm pretest
делает запрос на получение страницы среды выполнения из документации AWS, использует регулярное выражение для анализа версии SDK и выводит его в файлnpm test
просто сравнивает версию на странице документации (прочитанную из файла на предыдущем шаге) с версией в package.json. Если они одинаковые, то проходит, если нет — не получается.- В случае сбоя теста запускается скрипт after_failure (из .travis.yml). Здесь становится интересно. after_failure настроен на выполнение update.sh. Этот скрипт проверяет ветку разработки, обновляет локальный пакет с помощью пряжи, а затем отправляет обратно на GitHub.
- Конечно, нажатие запускает другую сборку. На этот раз это должно пройти. После успеха срабатывает after_success. В этом случае он настроен на вызов merge.sh, который проверяет, пришла ли сборка из ветки разработки, и объединяет разработку с мастером, что, в свою очередь, запускает другую сборку. На этот раз мастер должен пройти без проблем.
Я решил использовать две разные ветки, чтобы избежать бесконечного цикла отправки и запуска сборок из одной и той же ветки. Если по какой-либо причине сборка в режиме разработки завершится ошибкой, дальнейшие действия выполняться не будут.
Вот схема процесса, которая поможет объяснить:
Результат
Теперь, в течение 24 часов после обновления документации, сборка завершится ошибкой, что приведет к развертыванию цепочки сборок, коммитов и отправок Руба Голдберга, что приведет к обновленной версии aws-sdk-js-on-lambda с без вмешательства человека. Я получу сообщение об ошибке сборки, когда оно будет обновлено, я не против 😁.
Спасибо, Трэвис, за добавление сборок cron! Я с нетерпением жду возможности использовать эту функцию в ближайшем будущем.
Примечания
- Скрипты развертывания были адаптированы из domenic/auto-deploy.md (настоятельно рекомендую проверить это).