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


Краткое руководство. Создание рабочего процесса GitHub для публикации приложения

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

Необходимые компоненты

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

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

Azure Portal, App Service resource: Get publish profile

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

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

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

GitHub / Settings / Secret: Add new repository secret

Введите 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-versionactions/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 . Чтобы добавить значок состояния рабочего процесса, выполните следующие действия.

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

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

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

    GitHub: Create status badge

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

    GitHub: Copy status badge Markdown

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

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

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

Прохождения Неудача Нет состояния
GitHub: publish passing badge GitHub: publish failing badge GitHub: publish no-status badge

См. также

Следующие шаги