Рубрики
Uncategorized

Построить библиотеку .NET с действиями GitHub

Действия GitHub являются отличным бесплатным инструментом, чтобы иметь постоянную интеграцию вашей библиотеки OpenSource .NET … Теги с dotnet, csharp, devops, github.

Действия 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, добавляя свойство false к 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»