Правильный способ настройки конвейера выпуска в Devure для Azure для функции Azure на основе Python - PullRequest
0 голосов
/ 28 января 2019

У меня есть рабочий конвейер сборки в Azure Devops, который по сути устанавливает Python3.6, настраивает виртуальную среду (.env) и затем выполняет все модульные тесты.Затем он использует в качестве последнего шага операцию копирования для перемещения всех файлов, включая виртуальную среду, в папку размещения.

Моя проблема возникает из-за создания канала выпуска.Я запускаю сценарий bash для конвейера выпуска, который по существу устанавливает инструменты команд функций azure, а затем активирую виртуальную среду python перед тем, как вызвать команду публикации func azure.

В сообщении об ошибке указано, что настройки зашифрованы и мне нужно вызвать функцию func add для добавления настроек, однако при локальном запуске сценарий выполняется без каких-либо ошибок.

Есть ли у кого-нибудь рабочий конвейер выпуска в Azure Devops для функции Azure на основе Python, которым они могли бы поделиться со мной, поэтому я, возможно, смогу понять, что я делаю неправильно?

Вот соответствующий бит сценария, который выполняется:

#!/usr/bin/env bash
FUNCTION_APP_NAME="secret"
FUNCTION_APP_FOLDER="evenMoreSecret"


# Install Azure Functions Core Tools
echo "--> Install Azure Functions Core Tools"
wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install azure-functions-core-tools -y

echo ">>>>>>>> Initialize Python Virtual Environment"
source .env/bin/activate

echo "--> Publish the function app to Azure Functions"
cd $FUNCTION_APP_FOLDER
func azure functionapp publish $FUNCTION_APP_NAME --build-native-deps

Сценарий выполняется с помощью интерфейса командной строки Azure, используя субъект безопасности, привязанный к учетной записи Azure, на которую он нацелен.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Я отвечу сам, как решил проблему.To @Oliver Dolk: Мы НЕ хотим публиковать как часть конвейера сборки.Единственное, что меня интересует, - это настроить виртуальную среду, а затем запустить модульные тесты.

На этапе RELEASE мы хотим развернуть сценарии, скопированные с этапа сборки.Эти артефакты являются основой для выпуска в среду разработки, тестирования и производства.

Я пропустил очень важный шаг в моем сценарии;Создать файл local.settings.json, который содержит зашифрованные настройки для функции app.

Чтобы решить проблему, мне нужно было только вызвать следующее:

func azure functionapp fetch-app-settings $FUNCTION_APP_NAME

Это вызывает функцию azure functionApp и извлекает ее настройки в зашифрованный файл local.settings.json, которыйзатем используется во время публикации.

Для полной ссылки на сценарий как сценария сборки YAML, так и сценария bash, который выполняет развертывание, я поместил оба в анимированный репозиторий github:

https://github.com/digitaldias/Python-Examples

0 голосов
/ 29 января 2019

Обычно с помощью Azure DevOps вы создаете несколько шагов сборки, которые приводят к некоторым артефактам сборки - они определены в файле azure-pipelines.yml.Затем вы делаете шаг выпуска, чтобы освободить созданные артефакты - они создаются в пользовательском интерфейсе.Это может включать развертывание на тестовом сервере, а затем на рабочем месте или, как вы хотите, настроить его.То, что вы описываете, - это выполнение шага сборки и выпуска в одном файле yaml, так как публикация func, по сути, делает выпуск, и, похоже, все это в одном сценарии.

В следующем выпуске azВ результате появилась новая команда az functionapp devops-build, которая настроит конвейер DevOps с отдельными шагами сборки и выпуска.Однако, в то же время, мы создали серию бета-файлов yaml, которые, как мы надеемся, вы можете просто перетаскивать, чтобы выполнить шаги сборки и выпуска только внутри части сборки (как вы делаете).

Бета-файлы yaml находятся здесь: https://github.com/Azure/azure-functions-devops-build/wiki/Yaml-Samples

Я должен отрицать, что они не полностью протестированы и пока не поддерживаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...