Поделиться через


Быстрое начало: создание GitHub workflow для публикации приложения

Из этого краткого руководства вы узнаете, как создать рабочий процесс GitHub для публикации приложения .NET из исходного кода. Автоматическая публикация приложения .NET из GitHub в место назначения называется непрерывным развертыванием (CD). Существует множество возможных платформ для публикации приложения. В этом кратком руководстве вы опубликуете его в Azure.

Предпосылки

Добавление профиля публикации

Чтобы опубликовать приложение в Azure, откройте портал Azure для экземпляра службы приложений приложения. В ресурсе Обзор выберите Получить профиль публикации и сохраните *.PublishSetting файл локально.

Портал Azure, ресурс службы приложений: получение профиля публикации

Предупреждение

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

В репозитории GitHub перейдите в раздел "Параметры " и выберите "Секреты " в меню навигации слева. Выберите новый секрет репозитория, чтобы добавить новый секрет.

GitHub / Settings / Secret: добавление нового секрета репозитория

Введите AZURE_PUBLISH_PROFILE как Имя, и вставьте XML-содержимое из профиля публикации в текстовое поле Значение. Выберите Добавить секрет. Дополнительные сведения см. в разделе "Зашифрованные секреты".

Создание файла рабочего процесса

В репозитории GitHub добавьте новый ФАЙЛ YAML в каталог github/workflows . Выберите понятное имя файла, которое четко указывает, что рабочий процесс предназначен для выполнения. Дополнительные сведения см. в файле рабочего процесса.

Это важно

GitHub требует, чтобы файлы композиции рабочих процессов размещались в каталоге github/workflows .

Файлы рабочих процессов обычно определяют композицию одного или нескольких GitHub Actions через 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 используется для настройки .NET SDK с указанной версией из переменной среды DOTNET_VERSION.
    • Команда dotnet restore вызывается.
    • Вызывается dotnet build команда.
    • Команда dotnet publish вызывается.
    • Вызывается dotnet test команда.
    • Действие GitHub azure/webapps-deploy@v2 развертывает приложение с заданными publish-profile и package.
      • Он publish-profile назначается из секрета AZURE_PUBLISH_PROFILE репозитория.

Создание индикатора состояния рабочего процесса

В репозиториях GitHub обычно используется файл README.md в корне каталога репозитория. Аналогичным образом, приятно сообщить о последнем состоянии различных рабочих процессов. Все рабочие процессы могут генерировать значок состояния, который визуально привлекателен в файле README.md. Чтобы добавить значок состояния рабочего процесса, выполните следующие действия.

  1. В репозитории GitHub выберите параметр навигации Actions .

  2. Все рабочие процессы репозитория отображаются слева, выберите нужный рабочий процесс и кнопку с многоточием (...).

    • Кнопка с многоточием (...) расширяет параметры меню для выбранного рабочего процесса.
  3. Выберите пункт меню " Создать индикатор состояния ".

    GitHub: создание индикатора состояния

  4. Нажмите кнопку "Копировать значок с состоянием в формате Markdown".

    GitHub: копирование индикатора состояния Markdown

  5. Вставьте Markdown в файл README.md , сохраните файл, зафиксируйте и отправьте изменения.

Дополнительные сведения см. в разделе "Добавление индикатора состояния рабочего процесса".

Пример индикатора состояния рабочего процесса публикации

Процесс передачи Неисправный Нет состояния
GitHub: публикация значка успешного прохождения GitHub: публикация индикатора сбоя GitHub: опубликовать значок без статуса

См. также

Дальнейшие шаги