Действия GitHub являются отличным бесплатным инструментом, чтобы иметь постоянную интеграцию вашей библиотеки вашего OpenSource .NET бесплатно, прямо в GitHub, сохраняя вас от настройки других инструментов и связывающих учетных записей. Установка его может почувствовать сложный задание, но, если вы будете следовать этим руководству, вы сможете настроить его через 10 минут!
Что я достичь
После этих шагов вы сможете создать и запустить тесты, нацеленные на несколько версий .СЕТЬ Core , отчетность, тогда статус к запросам потягивания. Наконец, когда вы выпустите новую версию (либо создавая выпуск на GitHub или нажатие нового тега), он подготовит ваш Nuget Пакеты и загрузить их на Nuget.org Отказ
Каковы предпосылки
Это руководство предполагает, что вы строят либо .NET Стандарт или .NET. Основные библиотеки. Испытания запускают многотарцевые несколько версий .NET Ядро, хотя это не требование.
Он также предполагает, что для выпуска новых версий библиотеки вы создадите новый тег (это можно сделать из выпусков вкладки вкладку на Github ) с номером версии как именем тега, например, a.g. 1.2.3 Отказ Чтобы выпустить предварительную версию, вы будете использовать пленнее имя AS тег , например 1.2.3-Предварительный просмотр.1 Отказ
Поскольку этот шаг сборки полагается на Packot Pack Чтобы упаковать свои библиотеки, вам необходимо убедиться, что вы исключаете все тестовые проекты, образцы и другие библиотеки, которые вы не хотите пакет и публиковать в Nuget, добавляя свойство к Csproj S или A Directory.build.props файл.
Примечание: при использовании Каталог. Cuild.props. Файл, поскольку эти сборки будут работать на агентах Linux, корпус в имени файла имеет значение!
Вот образец Csproj Файл для проекта не будет генерироваться как Nuget упаковка:
netstandard2.0 false
Хорошо, покажи мне код
Создайте файл в папке .Github/Workflows назван build.yml Со следующим контентом:
name: Build
on:
push:
branches: master
tags: '**'
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- name: Checkout
uses: actions/checkout@v1
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 2.1.607
- name: Setup .NET Core 3.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.0.101
- name: .NET Core SxS
run: |
rsync -a ${DOTNET_ROOT/3.0.101/2.1.607}/* $DOTNET_ROOT/
- name: Build
run: dotnet build --configuration Release
- name: Test
run: dotnet test --no-build --configuration Release
pack:
runs-on: ubuntu-latest
needs: build
if: github.event_name == 'push'
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Setup .NET Core 3.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.0.101
- name: Determine version
run: echo "::set-env name=VERSION::$(git describe --tags --dirty)"
- name: Pack
run: dotnet pack --output ./artifacts --configuration Release -p:Version=$VERSION
- uses: actions/upload-artifact@v1
with:
name: artifacts
path: ./artifacts
publish:
runs-on: ubuntu-latest
needs: pack
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
steps:
- name: Setup .NET Core 3.0
uses: actions/setup-dotnet@v1
with:
dotnet-version: 3.0.101
- uses: actions/download-artifact@v1
with:
name: artifacts
path: ./artifacts
- name: Publish packages
run: dotnet nuget push ./artifacts/**.nupkg --source nuget.org --api-key ${{secrets.NUGET_TOKEN}}
Тогда иди в свой Nuget.org Учетная запись, Перейти к API Ключ и создать новый ключ. Если например ваш проект называется Расплавлять И это генерирует пакет под названием Расплавлять И один называется Elt.aspnetcore. , вы могли бы назвать ключ Действия Github elt и установить шаблон шаблона как Таять * Отказ
Обратите внимание, что есть нет . перед * , в противном случае, то ТАЯТЬ Базовый пакет не будет соответствовать.
Тогда иди в Настройки вашего проекта GitHub, затем на левом навигационном меню выберите Секреты Тогда Добавить новый ключ и назвать ключ Nuget_token Отказ
Сделанный!
Теперь вам просто нужно подтолкнуть build.yml Для мастера и, после этого все новые PR (или новые толкания для ранее существующих) начнут создавать и прикрепить статус к пр.
Когда PR состоит в мастере, он также создаст пакеты (с временным предварительным выпуском версией, не строго следуя семивером, однако, что не имеет значения, поскольку эти пакеты не публикуются) и загружать их в качестве артефактов в результатах постройки в результате Действия GitHub Так что вы можете проверить, какие пакеты были созданы и загрузить их, если вам нужно что-то проверить.
Если вы счастливы, вы можете создать выпуск, чтобы фактические пакеты с правильным номером версии будут сгенерированы и загружены в Nuget.org Отказ
Счастливое здание!
Приложение: Изменить версию .NET Основной
Эта статья предполагает, что вы используете тесты против нескольких версий .NET Ядро, конкретно .NET Core 3.0 и 2.1, так что он устанавливает .NET Core SDK 2.1.607 и 3.0.101. Если вам нужно изменить эту версию, вы должны оба обновить версию в шагах для установки SDK, а также в rsync команда в .СЕТЬ Core SXS Шаг на линии 29 из build.yml файл, показанный выше, который является обходной путь Чтобы преодолеть Текущее ограничение установить несколько версий .NET Ядро в Действия GitHub Отказ
Первоначально опубликовано alessio.franceschelli.me 4 декабря 2019 года.
Оригинал: «https://dev.to/alefranz/build-a-net-library-with-github-actions-3g22»