#azure #azure-devops #azure-functions #azure-keyvault
#azure #azure-devops #azure-функции #azure-keyvault
Вопрос:
Я создал функцию Azure (Python), размещенную с планом использования Linux. App Engine находится в группе ресурсов разработчика. Теперь я хотел бы иметь возможность развернуть ее (и последующие изменения) в группах промежуточных ресурсов и prod ressource. Документация по множеству различных способов сделать это привела меня в замешательство, особенно с учетом того факта, что большинство методов развертывания (слоты развертывания …) недоступны с планом потребления Linux, и я не использую Премиум. Я думал о настройке контроля версий, но я не могу связать свою функцию Azure с репозиторием Azure DevOps (центр развертывания отключен, серый).
Как бы вы это сделали? В идеале с Azure DevOps.
Заранее спасибо
Комментарии:
1. Просто чтобы правильно вас понять: у вас есть 3 группы ресурсов в portal.azure.com , названный development, staging и production. Каждая группа ресурсов содержит 1 функциональное приложение, размещенное в Linux. И вы хотите иметь возможность создавать конвейер выпуска с промежуточным использованием dev.azure.com между функциональными приложениями 3-х групп ресурсов, с потоком разработки> промежуточной подготовки> производства?
2. Да, Эли, это все! Когда я редактирую свою функцию в среде разработки, я хочу, чтобы конвейер развертывал изменения в промежуточный этап, а затем в производство.
3. Хорошо, это определенно возможно. Это немного длинный ответ, если он должен быть тщательным. Я напишу ответ на этот вопрос позже, если я не слишком напьюсь сегодня вечером, или если никто другой не опередит меня в этом… И последний вопрос: есть ли какая-либо конкретная причина, по которой вы не используете 1 группу ресурсов с 1 функциональным приложением, используя 3 слота? Не то чтобы это имело большое значение, но похоже, что слоты были бы лучшим вариантом, или, скорее, это то, что вы на самом деле хотите.
4. Слоты — это функция для тарифного плана премиум-приложений, не поддерживаемая тарифным планом Linux. Кроме того, использование контроля версий упростило бы нашу жизнь для совместной работы. Спасибо за вашу помощь, наслаждайтесь 🙂
Ответ №1:
Прежде всего, вам нужно убедиться, что у вас есть доступ к соответствующей подписке с группами ресурсов и функциональными приложениями.
Сборка
В DevOps для проекта, содержащего репозиторий, перейдите в Pipelines > Конвейеры (выделены красным).
В правом верхнем углу вы должны увидеть и нажать «Новый конвейер». В этом ответе я буду выполнять конвейер «Azure Repos Git (YAML)», так что вы также можете согласиться. Если у вас есть какие-либо другие конкретные предпочтения, просто убедитесь, что вы изменили то, что необходимо изменить соответствующим образом. По сути, наша цель — просто опубликовать артефакт из нашего процесса сборки, который, в свою очередь, будет использоваться «конвейером выпуска».
Двигаясь вперед, для конвейера сборки, выбрав «Azure Repos Git (YAML)», вам будет предложено выбрать, какой репозиторий в вашем проекте, который будет 1) содержать файл YAML, который мы собираемся создать, и 2) иметь исходный код, доступный для конвейера. Не вдаваясь в подробности, также возможно поместить все файлы yaml-pipeline в свой собственный репозиторий, а затем включить (через ресурсы) репозитории, содержащие исходный код.
Следующий шаг — «Настроить ваш конвейер». На самом деле доступен шаблон «Приложение функции Python для Linux на Azure». Тем не менее, он также содержит этапы развертывания, и я обычно всегда помещаю все, что связано с развертыванием, в мой «конвейер выпуска». На данный момент, однако, я выбрал «начальный конвейер».
На самом деле появится онлайн-редактор. В верхней части редактирования вы увидите название репозитория и «azure-pipelines.yml». Нажмите на «azure-pipelines.yml», чтобы переименовать конвейер, а также имя yaml-файла, который в конечном итоге окажется в корне репозитория.
Я разместил версию вышеупомянутого шаблона, сведенную к тому, что необходимо, и она доступна здесь. Просто удалите все, что уже есть в «стартовом конвейере», и скопируйте-вставьте содержимое pastebin в конвейер.
Когда вы сохраните конвейер, вы, вероятно, захотите поместить его в другую ветку для начала вместо своей основной ветки (она предложит вам это), а затем создать PR. Примите PR, когда конвейер заработает (вы можете запустить конвейер, используя свою недавно созданную ветку). Когда конвейер сборки успешно запустится без ошибок, вы сможете увидеть опубликованный артефакт, если перейдете к обзору вашего успешного запуска (выделено красным). Вы можете щелкнуть и просмотреть содержимое, чтобы проверить, соответствуют ли они ожиданиям.
Выпуск
Перейдите в раздел «Релизы» (выделено зеленым, первая картинка). Отсюда вы должны увидеть и нажать кнопку » Создать».
Вам сразу же будет предложено выбрать, какой тип задания вы хотите. Для начала просто нажмите «Пустое задание».
Сначала выберите артефакт для использования. Нажмите на поле «Добавить артефакт» слева. Найдите только что созданный конвейер из выпадающего списка. Вы можете настроить версию для использования (если у вас есть определенные предпочтения) и присвоить артефакту псевдоним, который может использоваться во всем конвейере выпуска.
Далее необходимо настроить ваши этапы. Вам нужны 3 этапа: этап разработки, этап промежуточной подготовки и, наконец, этап производства. В настоящее время у вас должен быть «Этап 1″. Если вы наведете курсор мыши над этапом, вы увидите знак » «- под полем. Щелкните ее, чтобы добавить этап. Снова выберите пустое задание. Повторите это для вновь созданного окна этапа (наведите курсор, нажмите , добавьте пустое задание).
Теперь у вас должно быть что-то вроде этого:
Давайте начнем с настройки этапа 1. Щелкните этап (само поле) и назовите его «Разработка» или что-то по вашему усмотрению. Затем щелкните ссылку «1 задание, 0 задач». Щелкните поле «Задание агента» и настройте задание агента по своему усмотрению (убедитесь, что агент загружает ваш артефакт, его можно настроить в разделе «Загрузка артефакта»).
Затем нажмите » «-sign для задания агента, которое вы только что настроили. В командной строке используйте строку поиска, чтобы найти «Функции Azure». Обратите внимание, что это называется 3 заданиями. Вам нужен тот, который просто называется «Функции Azure». Щелкните и настройте вновь созданное задание. Здесь действительно должно быть все просто. Выберите функциональное приложение в Linux и найдите свое функциональное приложение «разработка» из списка. По умолчанию «Пакет или папка» должны быть чем-то вроде $(System.DefaultWorkingDirectory)/**/*.zip
, и этого должно быть достаточно, если вы не выполнили некоторые настройки для артефакта вашего конвейера сборки.
У вас должно быть что-то вроде этого:
Из выпадающего списка «Задачи» (с красным предупреждающим кругом) вы можете перейти к «Этапу 2» (вы, конечно, переименуете это, как и «Этап 1», в «Разработка»). Поскольку вы не используете слоты, обмен, к сожалению, невозможен между 2 функциональными приложениями в двух разных группах ресурсов — по крайней мере, насколько мне известно. Поэтому вам придется повторить весь процесс со стадии «Разработка», где вы используете артефакт для развертывания в функциональном приложении в промежуточной группе ресурсов. То же самое касается вашего последнего этапа «Этап 3», когда вы развертываете свое функциональное приложение в своей группе производственных ресурсов.
Постановка и утверждение
Я представляю, чего мы ждали. На картинке с обзором этапов вы можете видеть, что к каждому этапу прикреплено по 2 «кнопки» с каждой стороны окна. Когда с молнией и значком пользователя (слева), а с одним только значком пользователя. Слева — «действия перед этапом», а справа — «действия после этапа». В вашем сценарии вы, вероятно, захотите настроить «действия перед этапом» для вашего «Этапа 2» / «промежуточного» и для «Этапа 3» / «Производства». В обоих случаях я бы добавил «Утверждения перед развертыванием», например:
Вы можете добавлять конкретных пользователей или целые группы. Затем потребуется, чтобы кто-то перешел к обзору конвейера выпуска, а затем одобрил следующий этап, прежде чем он будет развернут (или, скорее, этап не начнется до его утверждения).).
Фух, это было долго… Я надеюсь, что это устранило некоторую путаницу, которая у вас была, и что это сработает для вас.
Комментарии:
1. Большое тебе спасибо, Эли. Это мне очень помогло. Для первоначального репозитория Azure Devops я могу просто создать его вручную, а затем зафиксировать все файлы для функции, созданной с помощью VS Code?
2. @Alssanro Да, вы должны инициализировать репозиторий и зафиксировать код, прежде чем приступить к созданию конвейеров.