Я использую функцию Gitlab CD/CD Free для автоматического запуска кода в облаке.
Время от времени я сталкиваюсь с необходимостью автоматизировать задачу (написанную в коде), которая будет выполнена периодически, так что она будет работать сама по себе, без моего вмешательства. Такие задачи могут быть отправлены онлайн -формой, скрещивание данных с веб -сайта, запуск некоторого сценария, который обновляет что -то еще в Интернете и т. Д. Я, очевидно, не хочу, чтобы этот код работал на моем компьютере, так как он не включен и не готов все время, и при этом я не хочу настроить и подключить устройство Raspberry Pi или просто для этого.
Теперь запустить его периодически звучал как очень простая и прямая задача, но это оказалось немного сложно! После некоторого исследования ( Не слишком много , я признаю), я не смог найти бесплатный и простой в использовании инструмент/сервис, который позволил бы мне периодически пробежать некоторый кусок кода в облаке. Я не хотел вытаскивать большее оружие, такое как AWS или GCP Как раз для того, чтобы настроить крошечную без серверную функцию.
Моим решением было обратиться к Потрясающая функция CI/CD-CD-AS-AS-AS-AS-AS-AS-AS-AS-AS -Что я уже очень хорошо знаю и использовал во многих других личных/рабочих проектах. Эта функция, в двух словах, позволяет вам определить .yml
Файл с конфигурацией конвейера CI/CD в репо и установите его для запуска в любом автоматическом расписании (или с триггером). Трубопровод состоит из заданий, которые запускают любой сценарий, который вам нужен в любом контейнере.
Итак, в этом случае все, что нам нужно сделать, это:
- Создайте проект в Gitlab.
- Кодируйте задачу, которую мы хотим выполнить (на любом языке/структуре).
- Установите CD/CD проекта Gitlab Project, чтобы он запустил правильную работу с вашими нужными настройками (расписание, WebHook, вручную и т. Д.).
- Двигайтесь дальше с вашей (более легкой) жизнью.
Создайте проект Gitlab
- Зарегистрируйтесь, если вы еще этого не сделали, и перейдите к https://gitlab.com/projects/new#blank_project Чтобы создать новый проект.
- Заполните соответствующие детали и создайте проект.
Добавьте саму задачу
Для этого примера давайте создадим это Run-Me.js
файл:
console.log('Hi there, I ran and made your life easier!', new Date());
Вы можете либо клонировать репо, который вы только что создали, и совершить файл задачи с вашего компьютера, либо достаточно легко добавить его прямо в gitlab.com, используя свою хорошую «Web Ide»:
Сделайте изменения, и теперь у вас есть код задачи в репо-этот код будет доступен внутри контейнера, который будет запускать трубопровод.
Настройка CI/CD для запуска вашего кода по желанию
Точно так же, как вы сделали на предыдущем шаге, добавьте еще один файл с именем .gitlab-ci.yml
Анкет Gitlab предлагает несколько полезных шаблонов, но в нашем случае мы просто продолжим с пустым файлом, а в нем добавим ваше определение для изображения контейнера и что запустить в нем (включая задачу, которую вы написали):
image: node:alpine run-task: only: - schedules script: - node ./run-me.js
Примечания:
- Здесь я выбрал
Узел: альпийский
как контейнер. Почему?узел
Потому что мой код в node.js и: alpine
Потому что он легкий и быстрый (быстрее запустить). Почему нет? Вы не можете работать с node.js и в Альпийский Linux Возможно, вам потребуется установить дополнительные инструменты/программы, которые не выходят из коробки. -
Только:
Часть гарантирует, что наша работа работает только в запланированных пробегах, а не в каком -либо толчке кМастер
(который является дефолтом). - Что бы ни было
Скрипт:
Команды, которые вы запускаете вBash
(В альпийском этоsh
) , уже внутри каталога клонированного репо. Это уже сценарий сам по себе, поэтому, если выBash
Эксперт, продолжайте и делайте то, что вам нужно прямо там.
Для тестирования вы можете перейти к https://gitlab.com/your_gitlab_name/your_project/-/pipelines/new и (при условии, что вы совершаете Master
) Начните новый трубопровод вручную.
После бега вы можете перейти к https://gitlab.com/your_gitlab_name/your_project/-/pipelines и посмотрите новую линию с начавшимся трубопроводом:
Трубопровод принесет и запустит Узел: альпийский
Изображение, а затем выполнить наш код из Run-Me.js
внутри 💪.
Это уже потрясающе, так как теперь вы можете запустить любой код внутри контейнера в облаке!
Чтобы запланировать это, перейдите к https://gitlab.com/your_gitlab_name/your_project/-/pipeline_schedules/new и создайте новый график для трубопровода этого репо. В этом примере скажем, что мы хотим, чтобы это было с воскресенья по пятницу в 7:30, что означает установление пользовательской интервальной схемы как 30 7 * * 0–5
. Если вам нужна помощь с синтаксисом Cron, проверьте https://crontab.guru Анкет
Сохраните график трубопровода, и вы можете ожидать, что он вернется и независимо ☁.
- Бесплатный план Гитлаба Включает 400 CI/CD -минуты в месяц, что должно быть более чем достаточно для простых задач, работающих на худой контейнере (например, альпийский). Например, код в этом примере занимает 22 секунды, что означает, что он имеет ~ 1200 прогонов в месяц, прежде чем превышать 400 -минутную квоту. Если вам нужно больше, вы можете обновить свой план, либо Настройка собственного CI/CD -бегуна где угодно.
- Возможно, вы захотите раскрыть неудачу/успех вашего кода, запускаясь, выходя из кода. Так, например, если ваш код уходит с чем -либо, что не 0, он будет произносится на сбой, и оттуда вы можете отслеживать и даже получить уведомление.
- Приостановка графика может быть легко выполнена путем деактивации графика трубопровода.
- Gitlab CI/CD поддерживает любое общедоступное изображение Docker и использует Docker Hub по умолчанию. Поэтому либо используйте один оттуда (выбирайте тщательно), либо даже Публикуйте свой собственный Анкет
- У вас может быть более одной задачи в одном репо-вам нужно будет поиграть с разными ветвями или Настройте свой .gitlab-ci.yml правильно Анкет
- См. Gitlab CI/CD Обширная документация -Вы можете добиться действительно удивительных вещей с этим (особенно для больших серьезных проектов).
Оригинал: «https://dev.to/motilavian/running-scheduled-jobs-tasks-using-gitlab-ci-cd-5e73»