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


Действия GitHub и .NET

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

Действия GitHub

GitHub Actions представляют собой автономные команды, например:

  • действия извлечения . Это действие извлекает ваш репозиторий в $GITHUB_WORKSPACE, чтобы рабочий процесс смог получить к нему доступ.
  • действия/setup-dotnet. Это действие настраивает среду .NET для использования в рабочих процессах.
  • dotnet/versionsweeper - Это действие выполняет очистку репозиториев .NET для целевых версий .NET, которые не поддерживаются.

Хотя эти команды изолированы от одного действия, они являются мощными с помощью композиции рабочих процессов. В композиции рабочего процесса вы определяете события , которые активируют рабочий процесс. После запуска рабочего процесса есть различные задания , которые необходимо выполнить. Каждое задание определяет любое количество шагов . Шаги могут быть делегированы в GitHub Actions или, в качестве альтернативы, вызвать скрипты командной строки.

Дополнительные сведения см. в разделе Общие сведения оGitHub Actions. Думайте о файле рабочего процесса как композиции, представляющей различные шаги для сборки, тестирования и/или публикации приложения. Доступны многие команды .NET CLI, большинство из которых можно использовать в контексте действия GitHub.

Пользовательские сценарии GitHub

Хотя в Marketplaceесть много действий GitHub, вы можете создать свой собственный. Вы можете создать GitHub Actions, выполняющие приложения .NET. Для получения дополнительной информации см. Руководство: Создание действия GitHub с помощью .NET

Файл рабочего процесса

Действия GitHub используются через файл рабочего процесса. Файл рабочего процесса должен находиться в каталоге репозитория .github/workflows и должен быть YAML (либо *.yml, либо *.yaml). Файлы рабочих процессов определяют состав рабочего процесса. Рабочий процесс — это настраиваемый автоматизированный процесс, состоящий из одного или нескольких заданий. Дополнительные сведения см. в синтаксисе рабочего процесса дляGitHub Actions.

Примеры файлов рабочего процесса

Существует множество примеров файлов рабочих процессов .NET, предоставляемых в виде учебников и кратких руководств . Ниже приведены несколько хороших примеров имен файлов рабочего процесса:

имя файла рабочего процесса

Описание

Компилирует исходный код (или создает). Если исходный код не компилируется, это завершится ошибкой.

Выполняет модульные тесты в репозитории. Чтобы выполнить тесты, исходный код сначала должен быть скомпилирован— это действительно рабочий процесс сборки и тестирования (он заменяет рабочий процесс build-validation.yml). Сбой модульных тестов приведет к сбою рабочего процесса.

Упаковывает и публикует исходный код в место назначения.

Анализирует код для уязвимостей безопасности и ошибок кодирования. Любые обнаруженные уязвимости могут вызвать сбой.

Зашифрованные секреты

Чтобы использовать зашифрованные секреты в файлах рабочего процесса, вы ссылаетесь на секреты с помощью синтаксиса выражения рабочего процесса из объекта контекста secrets.

${{ secrets.MY_SECRET_VALUE }} # The MY_SECRET_VALUE must exist in the repository as a secret

Значения секретов никогда не печатаются в логах. Вместо этого их имена печатаются звездочкой, представляющей их значения. Например, когда каждый шаг выполняется в задании, все значения, которые он использует, записываются в журнал действий. Секретные значения представлены следующим образом:

MY_SECRET_VALUE: ***

важный

Контекст secrets предоставляет токен аутентификации GitHub, который связан с репозиторием, веткой и действием. Он предоставляется GitHub без вмешательства пользователя:

${{ secrets.GITHUB_TOKEN }}

Дополнительные сведения см. в разделе Использование зашифрованных секретов в рабочем процессе.

События

Рабочие процессы активируются различными типами событий. Помимо событий веб-перехватчика, которые являются наиболее распространенными, также существуют запланированные события и ручные события.

Пример события вебхука

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

name: code coverage

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main, staging

jobs:
  coverage:

    runs-on: ubuntu-latest

    # steps omitted for brevity

В предыдущем рабочем процессе события push и pull_request запустят рабочий процесс.

Пример запланированного события

В следующем примере показано, как указать триггер события для запланированного задания (cron job) в рабочем процессе.

name: scan
on:
  schedule:
  - cron: '0 0 1 * *'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    # steps omitted for brevity

В предыдущем рабочем процессе событие schedule определяет cron для '0 0 1 * *', которая запускает рабочий процесс в первый день каждого месяца. Выполнение рабочих процессов в расписании отлично подходит для рабочих процессов, которые занимают много времени для выполнения или выполнения действий, требующих меньшего внимания.

Пример ручного события

В следующем примере показано, как указать триггер события вручную для рабочего процесса:

name: build
on:
  workflow_dispatch:
    inputs:
      reason:
        description: 'The reason for running the workflow'
        required: true
        default: 'Manual run'
  # additional events omitted for brevity

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: 'Print manual run reason'
        if: ${{ github.event_name == 'workflow_dispatch' }}
        run: |
          echo 'Reason: ${{ github.event.inputs.reason }}'

    # additional steps omitted for brevity

В предыдущем рабочем процессе событие workflow_dispatch требует reason в качестве входных данных. GitHub видит это и его пользовательский интерфейс динамически изменяет запрос пользователя на предоставление причины выполнения рабочего процесса вручную. steps выводит предоставленную пользователем причину.

Дополнительные сведения см. в разделе События, которые активируют рабочие процессы.

.NET CLI

Интерфейс командной строки .NET (CLI) — это кроссплатформенная цепочка инструментов для разработки, создания, запуска и публикации приложений .NET. Интерфейс командной строки .NET используется для run в рамках отдельных steps в файле рабочего процесса. Частые команды включают:

Для получения дополнительной информации см. обзор .NET CLI

См. также

Дополнительные сведения о GitHub Actions с помощью .NET см. в следующих ресурсах: