Краткое руководство. Создание рабочего процесса GitHub для публикации приложения
Из этого краткого руководства вы узнаете, как создать рабочий процесс GitHub для публикации приложения .NET из исходного кода. Автоматическая публикация приложения .NET из GitHub в место назначения называется непрерывным развертыванием (CD). Существует множество возможных назначений для публикации приложения, в этом кратком руководстве вы будете публиковать в Azure.
Необходимые компоненты
- Учетная запись GitHub.
- Репозиторий исходного кода .NET.
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Веб-приложение ASP.NET Core.
- Ресурс службы приложение Azure.
Добавление профиля публикации
Чтобы опубликовать приложение в Azure, откройте портал Azure для Служба приложений экземпляра приложения. В обзоре ресурса выберите "Получить профиль публикации" и сохраните *. Файл PublishSetting локально.
Предупреждение
Профиль публикации содержит конфиденциальную информацию, например учетные данные для доступа к ресурсу службы приложение Azure. Эта информация всегда должна быть очень тщательно обработана.
В репозитории GitHub перейдите к Параметры и выберите секреты в меню навигации слева. Выберите новый секрет репозитория, чтобы добавить новый секрет.
Введите AZURE_PUBLISH_PROFILE
имя и вставьте XML-содержимое из профиля публикации в текстовое поле "Значение". Выберите Добавить секрет. Дополнительные сведения см. в разделе "Зашифрованные секреты".
Создание файла рабочего процесса
В репозитории GitHub добавьте новый ФАЙЛ YAML в каталог github/workflows . Выберите понятное имя файла, которое четко указывает, что рабочий процесс предназначен для выполнения. Дополнительные сведения см . в файле рабочего процесса.
Внимание
GitHub требует, чтобы файлы композиции рабочих процессов размещались в каталоге github/workflows .
Файлы рабочих процессов обычно определяют композицию одного или нескольких GitHub Action с помощью .jobs.<job_id>/steps[*]
Дополнительные сведения см. в синтаксисе рабочего процесса для GitHub Actions.
Создайте файл с именем publish-app.yml, скопируйте и вставьте в него следующее содержимое YML:
name: publish
on:
push:
branches: [ production ]
env:
AZURE_WEBAPP_NAME: DotNetWeb
AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET Core
uses: actions/setup-dotnet@v3
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install dependencies
run: dotnet restore
- name: Build
run: |
cd DotNet.WebApp
dotnet build --configuration Release --no-restore
dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
- name: Test
run: |
cd DotNet.WebApp.Tests
dotnet test --no-restore --verbosity normal
- uses: azure/webapps-deploy@v2
name: Deploy
with:
app-name: ${{ env.AZURE_WEBAPP_NAME }}
publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
В приведенной выше композиции рабочего процесса:
Определяет
name: publish
имя, "публикация" будет отображаться в индикаторах состояния рабочего процесса.name: publish
Узел
on
обозначает события, которые активируют рабочий процесс:on: push: branches: [ production ]
- Активируется при
push
возникновении ветвиproduction
.
- Активируется при
Узел
env
определяет именованные переменные среды (env var).env: AZURE_WEBAPP_NAME: DotNetWeb AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root: DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
- Переменная
AZURE_WEBAPP_NAME
среды присваивается значениюDotNetWeb
. - Переменная
AZURE_WEBAPP_PACKAGE_PATH
среды присваивается значению'.'
. - Переменная
DOTNET_VERSION
среды присваивается значению'6.0.401'
. Позже переменная среды ссылается на указаниеdotnet-version
actions/setup-dotnet@v3
действия GitHub.
- Переменная
Узел
jobs
создает шаги для выполнения рабочего процесса.jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup .NET Core uses: actions/setup-dotnet@v3 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: Install dependencies run: dotnet restore - name: Build run: | cd DotNet.WebApp dotnet build --configuration Release --no-restore dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true - name: Test run: | cd DotNet.WebApp.Tests dotnet test --no-restore --verbosity normal - uses: azure/webapps-deploy@v2 name: Deploy with: app-name: ${{ env.AZURE_WEBAPP_NAME }} publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }} package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
- Существует одно задание с именем
publish
, которое будет выполняться в последней версии Ubuntu. - Действие
actions/setup-dotnet@v3
GitHub используется для настройки пакета SDK для .NET с указанной версией из переменнойDOTNET_VERSION
среды. - Вызывается
dotnet restore
команда. - Вызывается
dotnet build
команда. - Вызывается
dotnet publish
команда. - Вызывается
dotnet test
команда. - Действие
azure/webapps-deploy@v2
GitHub развертывает приложение с заданнымpublish-profile
иpackage
.- Он
publish-profile
назначается из секретаAZURE_PUBLISH_PROFILE
репозитория.
- Он
- Существует одно задание с именем
Создание индикатора состояния рабочего процесса
В репозиториях GitHub обычно используется файл README.md в корне каталога репозитория. Аналогичным образом, приятно сообщить о последнем состоянии для различных рабочих процессов. Все рабочие процессы могут создать значок состояния, который визуально привлекательно в файле README.md . Чтобы добавить значок состояния рабочего процесса, выполните следующие действия.
В репозитории GitHub выберите параметр навигации Actions .
Все рабочие процессы репозитория отображаются слева, выберите нужный рабочий процесс и кнопку с многоточием (...).
- Кнопка с многоточием (...) расширяет параметры меню для выбранного рабочего процесса.
Выберите пункт меню "Создать индикатор состояния".
Нажмите кнопку "Копировать состояние" Markdown .
Вставьте Markdown в файл README.md , сохраните файл, зафиксируйте и отправьте изменения.
Дополнительные сведения см. в разделе "Добавление индикатора состояния рабочего процесса".
Пример индикатора состояния рабочего процесса публикации
Прохождения | Неудача | Нет состояния |
---|---|---|