Рубрики
Uncategorized

Развертывание в Azure App Service с помощью GitHub Daisions

Начните с действиями GitHub в этом пошаговом учебном пособии по развертыванию в Azure App Service …. Tagged с Azure, GitHub, DevOps.

Начните с действиями GitHub в этом пошаговом учебном пособии по развертыванию в Azure App Service. Это видео покажет вам, как начать работу с действиями GitHub.

Ищете больше ресурсов? Вот несколько ключевых ресурсов, которые помогут вам начать работу с действиями GitHub:

Полная стенограмма:

Майк Пфайффер: Хорошо. Итак, давайте рассмотрим инфраструктуру, в которую мы собираемся развернуть. Когда мы используем рабочие процессы и действия GitHub, мы могли бы развернуть инфраструктуру, но мы не собираемся делать это в этом видео. Мы просто собираемся сосредоточиться на основе. Мы собираемся развернуть некоторую существующую инфраструктуру в этой группе ресурсов прямо здесь, и я объясню это для вас. Это просто простое веб -приложение. Таким образом, с помощью службы приложений вы можете увидеть, что у нас есть план обслуживания приложений и ресурс приложений. Итак, все, что нам нужно для запуска базового .NET Основное веб -приложение, позвольте мне показать вам, как я это создал. Я подошел к App Services и просто поднялся, чтобы добавить. И на экране я только что заполнил всю информацию, я создал группу ресурсов, я дал своему веб -приложению имя, я выбираю код для опции публикации.

Майк Пфайффер: А потом для стека выполнения, я сделал .NET Ядро 3.1. Это по умолчанию в операционную систему Windows, а затем я только что изменил регион на регион, который находится рядом со мной, я сделал West US 2. Регион важен, но другая важная вещь здесь — это размер SKU. Итак, мы делаем S1 SKU. Таким образом, в основном вариант плана обслуживания добычи начального уровня. Так что это важная вещь; Это операционная система, стек времени выполнения, и я просто сбегаю и создаю копейки. Итак, с этим давайте отправимся в GitHub. Я собираюсь выйти из этого, потому что у меня уже есть сервис приложений, которую мы собираемся использовать. Мы перейдем к репозиториям GitHub. Вписавшись в GitHub, я собираюсь создать здесь новый репозиторий, и я просто собираюсь называть это AppServiceDemo.

Майк Пфайффер: Я прокручиваю вниз, и мы сохраним это как общественный репозиторий. А потом мы сделаем инициализируем этот репозиторий с помощью Readme, чтобы в конечном итоге документировать все. Мы добавим Gitignore на основе файла Visual Studio Gitignore. А потом я добавлю лицензию, просто скажите, эй, это проект с открытым исходным кодом Apache. Итак, давайте продолжим и создадим этот репозиторий, и то, что сейчас строит этот репозиторий, мы готовы начать настраиваться. Так что первое, что я собираюсь сделать, это то, что я собираюсь перейти к настройкам сверху. Мы собираемся создать секрет. Итак, здесь, слева, перейдите к секретам этого репозитория GitHub, и мы собираемся построить новый секрет. Я собираюсь назвать это Azure_credentials. Вы можете видеть, что я уже делал это в прошлом для какого -то другого репозитория, так что это кэширует это.

Майк Пфайффер: И нам нужно поместить ценность для принципала обслуживания в эту коробку. Таким образом, мы будем использовать делегирование принципа обслуживания, чтобы убедиться, что действия GitHub могут аутентифицировать нашу подписку Azure и выполнять развертывание. И то, как мы собираемся это сделать здесь, просто запрыгнут в интерфейс командной строки. Так что я открою здесь облачное шоу. Позвольте мне пойти дальше и максимизировать это. Это появляется как PowerShell, потому что я использовал это раньше. Позвольте мне переключить его на Bash, потому что я собираюсь использовать AZ CLI. И первое, что я собираюсь сделать, это список AZ Group, потому что я хочу делегировать управление конкретной группой ресурсов. В этом случае группа ресурсов под названием WebApps-Dev-RG. Так что я собираюсь прокрутить здесь, я получу этот уникальный идентификатор для этой группы ресурсов.

Майк Пфайффер: Таким образом, это будет включать в себя идентификатор подписки, фактическое имя группы ресурсов, и это будет область применения принципа службы, который мы создаем и настраиваем. Итак, давайте сделаем это. Мы пойдем вперед и запустим AZ AD Creates, или AZ AD SP Creates For-RBAC. Таким образом, мы собираемся создать принцип обслуживания и одновременно настроить задание RBAC. Я собираюсь сказать -здесь. Так как же называется принцип обслуживания? Итак, мы просто скажем Appssvcdemo, а затем мы собираемся пойти -рассказать, чтобы указать роль контроля доступа на основе ролей. В этом случае я просто скажу участнику. Таким образом, роль участника, а затем важной частью здесь являются прицелы. И поэтому в этом случае я просто собираюсь сделать одну сферу, это просто ресурсная группа, на которую мы смотрели второй назад. Так что я собираюсь вставить идентификатор ресурса для этой конкретной группы ресурсов.

Майк Пфайффер: И тогда, наконец, это важно. Последнее в списке здесь, последний параметр, мы скажем SDK-Auth. И пока это выглядит хорошо. Отпусти меня и нажмите Enter. Давайте убедитесь, что это действительно работает. Таким образом, он создает принцип услуги, создает ролевое назначение, и вот наш выход. Так что это важная часть. Этот вывод JSON — это то, что мы собираемся использовать для нашего секрета в репозитории GitHub. Так что я просто собираюсь скопировать это, мы отправимся в секреты, и в этом поле здесь мы пойдем дальше и нажмите «Добавить», и мы пойдем. Поэтому имейте в виду, что вы не сможете получить эти данные. Итак, мы создали секрет этой информации, верно? И в этом окне здесь не будет просмотрено. Кроме того, обратите внимание, что секреты будут зашифрованы, и они подвергаются воздействию выбранных действий.

Майк Пфайффер: Так что мы не собираемся разоблачить эту информацию, эти конфиденциальные данные группе людей. Но теперь, когда мы понимаем инфраструктуру, мы настроили наш GitHub Repo, давайте перейдем к следующему шагу, и мы начнем настраивать проект веб -приложения ASP.NET. Хорошо. Итак, в вкладке «Код» здесь, в этом репозитории, мы собираемся сделать это локально клонировать это на местном уровне А потом мы собираемся добавить проект ASP.NET, подтолкнуть его к GitHub. Так что я собираюсь пойти в клон или раздел загрузки и просто взять URL -клон. Я собираюсь перепрыгнуть к своему терминалу, и в пустой папке здесь я собираюсь сделать клон GIT на этом URL -адресе клона. Я собираюсь переключиться в этот каталог. Итак, CD AppServiceDemo, а затем я собираюсь запустить период пространства кода. Итак, у меня установлен код Visual Studio.

Майк Пфайффер: Я собираюсь открыть эту папку в качестве рабочей области в коде Visual Studio. Итак, теперь, когда я нахожусь в коде Visual Studio, мы сделаем здесь терминал, и внутри этой пустой папки, что мы собираемся сделать, это Dotnet New WebApp. Таким образом, это создаст основное веб -приложение ASP.NET Core, используя один из доступных шаблонов по умолчанию. Это будет веб -приложение ASP.net Core Razor Pages. Не волнуйтесь, если вы не программист, это не очень важно. Мы не собираемся вносить большие изменения в это приложение. Позвольте мне закрыть это и то, что мы собираемся сделать здесь, теперь, когда у нас есть какой -то код приложения, я собираюсь добавить новый файл в этот проект. Поэтому я собираюсь нажать на новый файл здесь, и мы собираемся создать этот файл в скрытой папке с именем GitHub/Workflows/main.yml, main.yml.

Майк Пфайффер: И это приводит нас к редактору здесь. Итак, давайте пойдем вперед и разрушим это, чтобы мы могли увидеть, что происходит. Итак, давайте продолжим и определим этот файл рабочего процесса. Что я собираюсь сделать здесь, так это то, что я собираюсь начать писать немного YML. Я собираюсь сказать имя, как называется этот рабочий процесс? Мы собираемся назвать это ядро Deploy ASP.NET. И тогда следующее, что мы собираемся сделать, это то, что мы будем использовать команду ON здесь, чтобы в основном создать триггер. Итак, мы собираемся сказать на Push, в любое время, когда мы толкаем две ветви под названием Master. В этом случае только главная ветвь. Каждый раз, когда мы делаем толчок к главной ветви, мы собираемся начать этот рабочий процесс. Так что это выглядит хорошо. Я не собираюсь делать ничего более изощренного, чем это. А потом мы собираемся настроить некоторые переменные среды в этом рабочем процессе.

Майк Пфайффер: Итак, под Env, я скажу, Azure_Webapp_Name, и я собираюсь установить это на CSWEB06192020, и это было фактическое имя веб -приложения на портале. Так что это моя существующая инфраструктура. Оттуда я собираюсь создать еще одну переменную под названием Azure_webapp_path, и в основном я просто собираюсь установить это в текущую папку. И мы собираемся использовать эту переменную, когда делаем такие вещи, как создание проекта, создание опубликованных файлов, которые мы собираемся развернуть, все это. А потом я собираюсь указать версию Dotnet, которую мы собираемся использовать. Так что я собираюсь создать переменную под названием dotnet_version. Я собираюсь установить это на 2.2.101. И позвольте мне показать вам, почему я это делаю. Позвольте мне снова поднять мой терминал, давайте немного почистим это, чтобы мы могли увидеть, что происходит.

Майк Пфайффер: Я собираюсь сделать Dotnet —версию. Вы можете видеть, что это в настоящее время установлено на 2.2.101. Теперь помните, когда я создал услугу приложений, я показывал вам, что я использую .NET .NET Core 3.1 выполнение выполнения.СЕТЬ Ядро задом наперед. Я все еще использую старую версию .net Ядро на этой машине. Мне нужно обновить это, но я хотел быть явным и вроде дал вам знать, что здесь происходит именно с этим. Вот почему я использую определенную версию. Если вы используете .net 3.1, это прекрасно. И так давайте продолжим здесь. И сейчас мы собираемся определить нашу работу. Этот рабочий процесс просто будет иметь одну работу. Так что под работой я просто скажу, наращивание и развертка. Мы могли бы назвать работу все, что мы хотим здесь, и как только мы определим сборку и развертываем работу, мы начнем возврат, и то, что мы собираемся сказать, забегает.

Майк Пфайффер: Что на самом деле работает? Что работает эта работа? Итак, мы будем использовать Ubuntu-Latest. Так что, если вы знакомы с Azure Tipelines, вы знаете, что есть концепция принимающих агентов, самостоятельных агентов, а также в действиях GitHub и рабочих процессах GitHub, у нас есть те же вещи. У нас есть бегуны. Итак, мы собираемся использовать систему Ubuntu для запуска этого рабочего процесса И он запустит все шаги внутри этой работы. Итак, мы собираемся сказать шаги:, а затем нажмите возврат. А потом здесь, здесь мы укажем наши шаги. Эти шаги будут GitHub Deciates, и вот как это работает. Итак, шаги, это будет похоже на список шагов, верно? Поэтому, когда мы делаем шаги, мы хотим указать на них чертовски.

Майк Пфайффер: Итак, мы скажем, этот первый шаг использует, и здесь мы на самом деле определим имя действия, которое мы хотим использовать. Итак, мы собираемся сказать, это действия/проверки, и это конкретное действие GitHub, которое позволит нам проверить код из репо GitHub. Так что подумайте об этом таким образом, мы посвящаем код в главном филиале, который начинает рабочий процесс, потому что у нас есть триггер для этого, а затем, как только мы начнем запускать нашу работу, мы получим доступ к машине Ubuntu и Первое, что мы собираемся сделать, это проверить код из репозитория. Таким образом, мы можем затем построить приложение, развернуть его в Azure. Теперь, чтобы показать вам, позвольте мне скопировать это. Позвольте мне вернуться в мой браузер. И если вы просто ищете эти действия, конечно, есть тонны. Но если вы ищете их, вы найдете их на GitHub.

Майк Пфайффер: И поэтому этот конкретный хорошо задокументирован, и все они должны быть хорошо документированы. Когда вы приходите сюда, когда вы смотрите на одного, они расскажут о том, как это работает, какова используется, каков синтаксис, каковы поддерживаемые входные данные, все такое. Итак, позвольте мне закрыть это и вернуться к коду Visual Studio, и это первый шаг. Так что это первое, что нам нужно сделать. Нам не нужно заполнять что -либо еще для этого конкретного действия. Следующий, мы собираемся указать здесь имя. Поэтому, когда мы смотрим на журналы во время исполнения рабочего процесса в реальном времени, или позже после факта, мы можем определить, что это в этой последовательности шагов, которые действительно происходят. Так что я скажу, что этот шаг вперед войдет в лазурную. Так что войдите через Azure CLI.

Майк Пфайффер: И поэтому этот шаг использует действие, называемое Azure/Login, и тогда то, что я собираюсь сделать здесь, это скажем @v1. Со временем будут разные версии этих действий, и иногда имеет смысл быть явным в отношении фактической версии самого действия, а также .NET .NET. Основное время выполнения, все такое, верно? Имеет ли это смысл? Вы хотите убедиться, что это последовательно, и это повторяется, и именно поэтому я использую здесь версию. Новые версии могут прийти вместе с различными возможностями, но это гарантирует, что у нас нет никаких нарушительных изменений. Теперь, когда мы используем это действие, мы будем использовать это действие с определенными учетными данными. Так что я собираюсь сказать, с возвращением, и мы собираемся сказать кредит. Кредит будут равны полномочиям, которые мы хранили в секретах в репозитории.

Майк Пфайффер: Итак, значение, которое я собираюсь использовать здесь, и я бы использовал этот синтаксис при ссылке на мои переменные, так что знак доллара, пара открытых и закрытых кудрявых скобок, и внутри здесь я смогу получить доступ к моему секреты или работа с моими секретами. Так что я могу сказать, секреты. Azure_credentials. И тогда это действие сможет использовать эти сохраненные учетные данные на основе принципа обслуживания, воссоздать его и все такое. Так что это выглядит хорошо. Мы нажем возврат, а потом мы собираемся добавить еще один шаг. Итак, этот будет называться SETUP .NET ОСНОВНОЙ. Так что это убедится, что у нас есть правильное .NET Основная среда выполнения SDK доступна на нашем бегуне, чтобы сделать сборку и все такое. Поэтому нам нужно настроить этот. Итак, в дополнение к имени мы действительно должны установить то, что он использует, верно?

Майк Пфайффер: Итак, этот шаг использует действие. Так что это действия/настройка, и, как и раньше, я собираюсь прикрепить это к версии первой. А потом, наконец, что это будет на самом деле использовать? То, с чем мы собираемся это сделать, мы собираемся сказать, Dotnet-версия. Мы собираемся установить это на то, что я делал раньше, что в моих переменных, верно? Поэтому, если мы хотим ссылаться на наши переменные в этом рабочем процессе, ранее, одни и те же синтаксисы. Но я собираюсь сказать, Env., А потом это будет, dotnet_version. Это была одна из переменных, верно? Что я выставил здесь. Так что мы просто ссылаемся на это прямо здесь. Так что это получит .net Core SDK готова для нас, чтобы мы могли построить наше приложение. А потом наш следующий шаг на самом деле будет сделать это. Итак, мы собираемся сказать, имя: Dotnet Build and Pullish, и с помощью этого действия мы собираемся сделать здесь, мы собираемся запустить команду.

Майк Пфайффер: Итак, что я собираюсь сделать здесь, так это сказать, беги, я собираюсь сделать персонаж труб, нажимать возврат, это будет встроенный сценарий. Итак, мы собираемся сказать, давайте запустим сборку Dotnet. Мы сделаем это конфигурацией релиза. Итак, мы скажем релиз конфигурации, а затем мы сделаем, Dotnet Publish, а затем мы скажем, -c, это будет релиз, и мы скажем, -О для места вывода. Итак, еще раз, ссылаясь на переменные здесь, внутри этого рабочего процесса, скажем, Env. Azure_webapp_path. Теперь я собираюсь сделать что -то немного другого здесь, потому что я хочу ссылаться на настоящую подпапку этого пути. Так что я собираюсь сделать здесь, это просто сделать небольшие изменения. Внутри одиноких цитат, что я сделаю, это поместить это, а потом скажем,/myApp. Таким образом, в под папке, что мы сделаем там, мы опубликуем zip -файл, который станет нашим источником развертывания для нашего приложения.

Майк Пфайффер: И тогда все, что нам нужно сделать помимо этого, это просто развернуть это приложение .NET. Таким образом, этот шаг будет конкретным, выполняющим развертывание в Azure. Мы собираемся сказать, развернуть в службу приложений. Эта задача или этот шаг использует действие Azure/WebApps-Deploy. Мы собираемся использовать версию второй версии этого действия. И мы собираемся использовать это действие с двумя вещами; Приложение с именем, а затем мы будем ссылаемся на нашу переменную, наше фактическое имя приложения, которое находится в этом документе рабочего процесса. Мы скажем Env. Azure_webapp_name. А потом отсюда мы скажем пакет, а потом это будет наш путь. Так что я собираюсь просто украсть его прямо здесь. Так что возьмите это, подключите это прямо здесь, нажмите «Сохранить» и пока все хорошо. Итак, теперь, когда мы создали эту конфигурацию рабочего процесса, давайте перейдем к следующему шагу, который будет совершать наш код, подтолкнув ее к GitHub.

Майк Пфайффер: Хорошо, так что мы готовы опубликовать эту вещь. Давайте пойдем вперед и разберем терминал. Мы собираемся просто очистить экран здесь, и мы собираемся сделать рекламу GIT. Я просто пойду вперед и устрою все эти изменения. Мы собираемся сделать GIT Commits -m. Мы просто скажем, это первоначальный коммит, и тогда мы проясним это А потом мы сделаем жесткий толчок. Это отправит код обратно в репозиторий в GitHub, и это начнет наш рабочий процесс, верно? Потому что мы только что совершили изменение в главную ветвь. Итак, давайте вернемся в браузер. Давайте сделаем обновление на этой странице. Помните, это та старая версия. Теперь мы видим весь наш код, который был поднят в GitHub в этом репозитории, и вот ключ к пониманию действий и работе с этим. Если мы приедем сюда к действиям, мы увидим, что у нас есть этот первоначальный коммит, но мы видим, что есть неудача, верно?

Майк Пфайффер: Итак, давайте покопаемся в этом, посмотрим здесь, и он говорит, что рабочий процесс недопустим. Итак, строка 18 — этот парень прямо здесь, это действие для проверки кода. И знаешь, что? У меня здесь опечатка И это хорошо, что мы сталкиваемся с этим, потому что мы всегда сталкиваемся с этими небольшими проблемами, верно? Итак, давайте сделаем это. Давайте закроем терминал. Позвольте мне прокрутить здесь. То, что я должен был сделать для этого действия по проверке, сделано @master, потому что я хочу проверить главную ветвь. Так позволь мне спасти это. Давайте снова откроем терминал, и мы просто сделаем то, что делали раньше. Мы пойдем дальше и поставим это изменение, мы сделаем GIT Commits -m, обновляем файл YML, а затем нажимает GIT. В реальном мире я бы, вероятно, сделал бы лучшее послание коммита, чем это, но вы поняли идею. Итак, мы только что обновили это, так что давайте вернемся. Давайте вернемся к действиям, чтобы сделать обновление.

Майк Пфайффер: Мы можем увидеть это в очереди. Давайте буримся в этом. А потом мы можем увидеть все, что происходит, верно? Итак, мы получили работу в процессе. У нас пока нет никаких артефактов, но давайте перейдем к созданию и развертыванию этой работы, а затем мы сможем отслеживать, что происходит. Таким образом, мы видим, что настройка сделана, мы проверяем наш код, и теперь мы пытаемся войти в Azure с CLI, и похоже, что это сработало просто отлично. А теперь настройка .NET Core и он пройдет через весь процесс публикации. Итак, давайте дадим эту штуку всего секунду. Хорошо. Пару минут спустя почти все сработало, за исключением развертывания в службу приложений, так что это довольно важно, верно? Так что, если мы сверлим в это, мы увидим, что это жалуется, потому что этого ресурса не существует. На самом деле, вы должны быть толстыми пальцами. Похоже, год был неправильным.

Майк Пфайффер: Если я вернусь сюда, просто чтобы подтвердить это, позвольте мне закрыть оболочку. Вот реальное имя веб -приложения, которое я должен пытаться развернуть. Итак, в последний раз давайте вернемся и давайте обновим этот документ. Я возьму имя WebApp, сохранить его, а затем, конечно, я мог бы сделать это просто прямо в GitHub, но вы поняли, верно? Итак, мы пойдем дальше и скажем, git add, git commit -m, фиксированное имя службы приложений, а затем git push. Так что это начнет наш рабочий процесс А потом мы вернемся и проверем в последний раз. Пойдем в GitHub, давайте перейдем к действиям. Мы можем видеть, что этот сейчас работает. Итак, давайте следим за этим и посмотрим, что будет дальше. Хорошо. Пару минут спустя это выглядит хорошо. Нет ошибок. Если мы перепрыгнем на портал Azure, вот URL для приложения, верно?

Майк Пфайффер: Итак, давайте направимся туда, и мы пойдем. Существует шаблон по умолчанию для основного веб -приложения ASP.NET. Все сработало просто отлично. Итак, теперь вы видите, как просто выполнять базовую настройку, верно? Развертывание простого приложения. И в будущих видео я рассмотрю вас через это более подробно. Но я оставлю этот репозиторий здесь, если вы хотите прийти сюда и взять файл рабочего процесса. И следите за этим каналом, я буду публиковать гораздо больше вещей о Azure DevOps, действиях GitHub и многое другое.

** Эта статья была первоначально опубликована на Cloudskills.io ** https://cloudskills.io/blog/github-actions-azure

Оригинал: «https://dev.to/cloudskills/deploying-to-azure-app-service-with-github-actions-5199»