Настройте репозиторий Bitbucket для развертывания голосового приложения Jovo
В этой статье я покажу вам, как настроить Bitbucket Pipelines для непрерывной интеграции / непрерывного развертывания (CI / CD) с Jovo.
Несколько репозиториев Git включают инструменты для выполнения задач CI / CD:
- На GitHub есть Действия
- Bitbucket имеет конвейеры и развертывания
- В GitLab есть 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-1ASK_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 ознакомьтесь с официальной документацией.
Спасибо за прочтение!