Учебники семафор (10 частей серии)
В этом руководстве я хочу показать, что вы узнаете, как постоянно проверять и развертывать функции без сервеса CloudFlare. Рабочие облака Живи на краю своей сети и сможете перехватывать HTTP-запросы. С ними мы можем дополнить веб-сайты, создавать новые приложения и услуги или перенаправить и перенаправить трафик баланса.
Когда вы переходите с «сервера Full» в бессмертное мышление, вы остановитесь на FRETTING о Как и начать думать с точки зрения что Отказ Ваше сосредоточенность может перейти от управляющей инфраструктуры — будь то серверы или контейнеры — для записи кода. Это на поставщике облака, чтобы выяснить, как запустить его.
Предварительные условия
Вам нужно будет настроить несколько вещей, прежде чем читать в конце концов, это практическое руководство.
Начните с регистрации с Семафор и установка SEM CLI Отказ Мы будем использовать семафор, чтобы проверить и развернуть наш код без сервеса. После этого вилка Демо и клонировать это. После того, как разложили, добавьте CI/CD на ваш репо с:
$ cd semaphore-demo-cloudflare-workers $ sem init
Вам также понадобится CloudFlare Аккаунт Активный домен проксированный через сервис Отказ
Смертные рамки
Давайте займем несколько минут, чтобы изучить приложение. Основная функция можно найти в Hello.js
:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)); }); async function handleRequest(request) { return new Response('Hello World!'); }
О да, здесь у нас есть архетипические Привет-мир Пример, только на этот раз в неверной форме. Функция отвечает на «Hello World!» к любому HTTP-запросу, и это об этом.
Чтобы понять, как работает этот развертывание через серверу, мы должны уменьшить масштаб и узнать о Смертный фреймворк. Первоначально разработано для AWS LAMBDA , Рамки скрывают все причуды облачных поставщиков облака и сводится к описанию развертывания в один файл манифеста. С момента его создания многие другие поставщики, такие как CloudFlare, начали его поддерживать.
Откройте манифест, Serverless.yml
чтобы быстро посмотреть. Сервис
Определяет имя сервиса и данные с конкретной учетной записи. Вот как мы делаем Определение Для CloudFlare:
service: name: semaphore-demo-cloudflare-workers config: accountId: $CLOUDFLARE_ACCOUNT_ID zoneId: $CLOUDFLARE_ZONE_ID provider: name: cloudflare stage: prod plugins: - serverless-cloudflare-workers
Тогда нам нужно определить наши Функции
и События
это вызывает их. В нашем примере запросы на example.com/hello
отвечали на Привет
Функция (CORECTION MSS УДАЛЕНИЕ может быть опущена):
functions: hello: name: hello worker: hello script: hello events: - http: url: example.com/hello method: GET
Непрерывная интеграция и развертывание
Нравится все, неверно, имеет свои недостатки. Возможно, самый большой — это то, что тестирование становится более сложной. Облачное время выполнения трудно реплицироваться в тестовой среде.
CI/CD Рабочий процесс проверит код на каждом обновлении, а затем при условии, что нет никаких ошибок, разверните его на CloudFlare.
- Трубопровод CI
- ⚙️Install зависимости
- 👟 пробежать тесты
- CD-трубопровод
- ☑️ Развертывание до CloudFlare
Мы узнаем о трубопроводе CI рядом.
Тестирование в семафоре
Непрерывная интеграция (CI) это все о тестировании. Давайте рассмотрим, как это делает трубопровод CI. Возьмите заглянуть в файл трубопровода, расположенный в .semaphore/semaphore.yml
Отказ
Вступление к трубопроводу определяет его имя и какое из Типы машин собирается запустить работу.
version: v1.0 name: CI agent: machine: type: e1-standard-2 os_image: ubuntu1804
В семафор, завод исполнения организован рабочие места
и блоки
. Работа работает параллельно. Как только все задания в блоке сделаны, начинается следующий блок. Если какая-либо работа не удается, то рабочий процесс останавливается с ошибкой.
Пролог
выполняется до каждая работа; В нашем случае мы используем NVM Чтобы установить Active Node.js версию и NPM Для установки модулей:
blocks: - name: Install dependencies task: jobs: - name: npm install commands: - checkout - nvm use - node -v - cache restore - npm install - cache store
Оформить заказ клоны репозитория GitHub, пока кэш Обнаруживает структуру проекта и цифры, какие файлы должны быть кэшированы для будущих прогонов.
Второй блок имеет два тестовых задания:
- Код Lint с Jshint Отказ
- Агрегатные тесты: репликация выполнения CloudFlare с Cloudworker Отказ
- name: Run tests task: prologue: commands: - checkout - cache restore - nvm use - node -v jobs: - name: Lint commands: - npm run lint - name: Unit tests commands: - npm test
Последний раздел в трубопроводе определяет Продвижение Отказ Продвижение цепных трубопроводов вместе для создания более сложных рабочих процессов.
promotions: - name: Deploy pipeline_file: deploy.yml auto_promote_on: - result: passed branch: - master
Развертывание с семафором
Несколько вещей чувствуют себя лучше, чем полностью проверенный код. Он заполняет меня определением ♥ ️ для продолжения развертывания. Постоянное развертывание трубопровод Запускается сразу после окончания интеграции.
Вы должны настроить Serverless.yml
немного сейчас. Откройте файл и найдите URL
ключ. Заменить example.com
с Ваш область CloudFlare . Вы можете использовать подстановочные знаки, такие как example.com/*
или * .example.com.
.
Далее, открыть .semaphore/Deploy.yml
Для рассмотрения трубопровода развертывания. Я пропущу раздел введения, так как мы уже видели его, и отправляйтесь непосредственно к блоку:
blocks: - name: Deploy task: secrets: - name: cloudflare prologue: commands: - checkout - cache restore - nvm use - node -v jobs: - name: Deploy to Cloudflare commands: - cat serverless.yml | envsubst | tee serverless.yml - npm run deploy - npm run hello
В этом блоке мы используем Serverless CLI развернуть. Последняя команда вызывает функцию непосредственно из облака, чтобы проверить, что он работает.
Нажмите на GitHub & Test
Мы должны поделиться нашими деталями учетной записи CloudFlare с семафором, прежде чем мы сможем развернуть. Семафор обеспечивает Секреты в качестве безопасного механизма для хранения конфиденциальных данных.
Чтобы получить свой токен CloudFlare:
- Мой профиль> Токен API> Глобальная клавиша API> Изменение или просмотр
Скопируйте отображаемый токен и создайте секрет, чтобы сохранить его:
$ sem create secret cloudflare \ -e CLOUDFLARE_ACCOUNT_ID=YOUR_ACCOUNT_ID \ -e CLOUDFLARE_ZONE_ID=YOUR_ZONE_ID \ -e CLOUDFLARE_AUTH_EMAIL=YOUR_ACCOUNT_EMAIL \ -e CLOUDFLARE_AUTH_KEY=YOUR_API_TOKEN
Идентификаторы зоны и учетных записей можно найти на нижней части панели приборной панели.
Нажмите код в GitHub, чтобы запустить рабочий процесс:
$ git add serverless.yml $ git commit -m "deploy to cloudflare" $ git push origin master
Вы можете проверить прогресс в семафор; Через несколько секунд мы должны увидеть блок развертывания завершен. Вы можете нажать на любой блок, чтобы наблюдать за журналами. 👀
Нажав на последнюю работу в рабочем процессе, вызывает журнал выполнения:
Serverless: Packaging service... Serverless: Excluding development dependencies... Serverless: Starting Serverless Cloudflare-Worker deployment. Serverless: Starting deployment Serverless: deploying script: hello Serverless: Finished deployment hello in 1.412 seconds Serverless: ✅ Script Deployed. Name: hello, Size: 0.19K Serverless: ✅ Routes Deployed Serverless: Finished deployment in 18.061 seconds. Serverless: Finished Serverless Cloudflare-Worker deployment. exit code: 0 duration: 20s
Давайте посмотрим, действительно ли это работает. Попробуйте посетить URL-адрес функции с вашим браузером или сделать запрос с помощью Curl Отказ Заменить example.com/hello
при необходимости:
$ curl -w "\n" http://example.com/hello Hello World!
Ну, привет тебе тоже мало функции. 👋
Серверы имеют свои дни
Вы развернули свою первую функцию без сердечности. Мы узнали о своих силах и слабостях, и как сбалансировать их с семафором CI/CD. Не его простота дыхание свежего воздуха? Если вы подобны мне, как только вы попробуете маршрут без сервеса, вы хотите, чтобы вы могли использовать его для всего. 🏖
Хочу больше практики? Попробуйте просмотр GloudFlare Gallery , который имеет много полезных шаблонов для изучения.
Вы нашли пост полезным? Дайте мне знать, ударив тех ❤️ и 🦄, следуя за мной или, оставив комментарий ниже.
Как всегда, спасибо за чтение!
Учебники семафор (10 частей серии)
Оригинал: «https://dev.to/semaphore/going-serverless-with-cloudflare-workers-452k»