Настройте репозиторий Bitbucket для развертывания голосового приложения Jovo

В этой статье я покажу вам, как настроить Bitbucket Pipelines для непрерывной интеграции / непрерывного развертывания (CI / CD) с Jovo.

Несколько репозиториев Git включают инструменты для выполнения задач CI / CD:

Я работаю над Alexa Skill, и мой проект сохранен в Bitbucket. Перед автоматическим развертыванием с помощью CI / CD я запускаю следующие команды Jovo на своей консоли после того, как отправляю свой код в ветки _1 _ / _ 2 _ / _ 3_ в моем репозитории:

  • jovo deploy — stage dev
  • jovo deploy -p alexaSkill — stage dev -t info
  • jovo deploy -p alexaSkill — stage dev -t model
  • jovo deploy -p alexaSkill — stage dev -t lambda

Я запускал эти команды в одном и том же порядке каждый раз, когда отправлял свой код. Так что этот процесс было здорово автоматизировать с помощью конвейера CI / CD. Ниже объясняется, что я сделал для настройки конвейера Bitbucket.

1. Настройте файл bitbucket-pipelines.yml.

При работе с Bitbucket вы можете добавить файл с именем bitbucket-pipelines.yml в корневую папку, чтобы сохранить инструкции CI / CD. Вот файл, который у меня есть в моем репозитории:

В этом файле есть два специальных раздела:

  • Запросы на вытягивание: каждый раз, когда вы открываете запрос на вытягивание для ветки dev, запускается сценарий для установки пакетов npm и запуска файла run-ci.sh.

В моем run-ci.sh файле всего пять строк:

  • Ветви. Каждый раз, когда вы объединяете пул-реквест или отправляете прямую фиксацию в любую из этих ветвей, будет выполняться серия задач с соответствующей конфигурацией. Эти конфигурации представляют собой развертывания, которые мы создаем в Bitbucket, образ Docker, который будет использоваться, и сценарий deployAlexa.sh.

Кроме того, на каждом этапе развертывания вы увидите используемый образ Docker: omenocal/jovo-deploy. Вы можете найти его по этой ссылке. Этот образ Docker был создан с использованием этого репозитория:



Благодарим Бена Форса за создание этого образа Jovo Docker!

Я клонировал репозиторий и создал свой собственный образ Docker, ничего не меняя. Вы можете сделать это, если хотите, чтобы изображение было в вашей собственной учетной записи Docker. По этой ссылке вы можете найти инструкции по созданию образа Docker.

Благодаря этому образу, смонтированному в процессе компакт-диска, мы можем использовать ASK CLI и Jovo CLI, потому что они предустановлены.

Мой deployAlexa.sh файл находится здесь:

Обратите внимание на переменную среды $ASK_CLI_CONFIG. Вы можете настроить переменные среды в Bitbucket, и об этом следующий раздел.

2. Конфигурация конвейера Bitbucket

Чтобы настроить конвейер Bitbucket, вам необходимы права администратора в вашем репозитории. Перейдите в меню «Настройки» и в разделе «Конвейеры» щелкните ярлык «Развертывания».

Следующий экран, который вы увидите, позволяет вам настроить среды в конвейере и переменные, которые вы можете добавить в свои среды. В моем случае у меня есть среды разработки, подготовки и производства. Навыки Alexa и функции Lambda для каждого этапа находятся в разных учетных записях. Таким образом, значение моих переменных будет меняться в зависимости от среды.

Чтобы автоматизировать развертывание с помощью Jovo CLI для перехода к вашей функции AWS Lambda и к вашей модели взаимодействия на портале разработчиков Alexa Developer Portal, вам потребуются четыре переменные среды:

  • AWS_ACCESS_KEY_ID && AWS_SECRET_ACCESS_KEY: Вы можете создать ключи доступа на панели управления AWS IAM своей учетной записи AWS. Вам нужно только прикрепить политику с lambda:UpdateFunctionCode разрешением к пользователю IAM в функции Lambda, чтобы загрузить код вашего проекта.
  • AWS_DEFAULT_REGION: регион, для которого создана ваша лямбда-функция - например, us-east-1
  • ASK_CLI_CONFIG: это строка JSON, которую ASK CLI использует для развертывания метаданных навыков и модели взаимодействия в консоли разработчика Alexa. Эта строка выглядит так:

Чтобы создать файл с этой строкой на вашем компьютере, вам необходимо настроить профиль с помощью ASK CLI на вашем компьютере. Когда вы настраиваете профиль, этот файл будет создан по home пути вашего компьютера. На компьютерах Linux и Mac его можно найти здесь: ~/.ask/cli_config.

Возьмите значения access_token и refresh_token и поместите их в эту строку JSON. Затем вставьте его в переменную среды в конфигурации развертывания.

3. Отправьте Pull Request для CI.

Когда вы открываете запрос на вытягивание, конвейер выполнит часть запроса на вытягивание файла конфигурации конвейера в вашем репозитории Bitbucket для запуска ESLint и тестов. Вот как это выглядит:

4. Запрос на объединение для компакт-диска.

Когда вы объединяете этот запрос на перенос в любую из ветвей, фиксация слияния будет отправлена ​​в ветвь, и будет запущен процесс развертывания.

Заключительные слова

На этом этапе вы должны увидеть свою функцию AWS Lambda, а также обновленные метаданные Alexa Skills и модель взаимодействия.

В Jovo CLI есть набор полезных команд для создания новых голосовых приложений, построения моделей взаимодействия для навыков Alexa и агентов Dialogflow для ваших действий Google, а также для развертывания исходного кода для ваших функций Lambda. Вы можете автоматизировать этот процесс, используя инструменты автоматизации CI / CD из вашего репозитория.

Для получения дополнительной информации о Jovo CLI ознакомьтесь с официальной документацией.

Спасибо за прочтение!