Рубрики
Uncategorized

Автоматически развернуть ваш .NET Основное приложение с использованием действий GitHub

Я недавно обнаружил Действия GitHub как удивительно простой способ настроить непрерывную интеграцию для … Теги с dotnet, devops, github.

Я недавно обнаружил Действия GitHub Как удивительно простой способ настроить непрерывную интеграцию для моего .NET Основные веб-приложения.

Давным-давно Я писал о том, как я принимаю свои веб-пары на небольшом VPS Linux Отказ Чтобы развернуть новую версию, которую я должен создать мое веб-приложение, скопировать файлы на моем сервере, а затем перезапустить мою систему Systemd Service, которая запускает время выполнения Dotnet и запускает приложение.

С Действием GitHub весь этот процесс можно автоматизировать, добавив один файл в ваш репозиторий. Каждое действие состоит из рабочий процесс Файл определения, который размещен в ..Github/Workflows/ папка. Рабочий процесс состоит из ряда действий, которые либо запускают скрипт напрямую или выполняют контейнер докера.

Вы можете добавить рабочий процесс прямо в GitHub, если вы идете на Действия вкладка вашего репозитория. Отсюда вы можете выбрать ряд Стартер Рабочие процессы для различных инструментов разработки или создают новый рабочий процесс с нуля. Великое — это редактор, который позволяет вам быстро посмотреть все различные действия, которые вы можете использовать в своем рабочем процессе с рынка на левой стороне.

Файл рабочего процесса выглядит так:

name: CI

on: [push]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Run a one-line script
      run: echo Hello, world!
    - name: Run a multi-line script
      run: |
        echo Add other actions to build,
        echo test, and deploy your project.

Файл определяет, когда действие срабатывает и какие шаги выполняются.

Мой рабочий процесс

Я публикую .NET Приложение Core MVC, поэтому мне нужно выполнить следующее, когда сделан коммит для моего Мастер ветка:

  • Оформить заказ мой репозиторий
  • Беги Dotnet Publish построить мое приложение
  • Скопируйте файлы на мой сервер
  • Перезапустите сервис на моем сервере

Поэтому сначала мы настроили скрипт, чтобы запустить, когда сделан коммит. Но мы хотим ограничить его только Мастер ветка:

on: 
  push:
    branches:
    - master

Далее в Работа Раздел Мы собираемся добавить нашу работу и определить, какая система виртуальной машины будет использоваться для его запуска. GitHub предоставляет бегунам для Linux, Windows и MacO. Увидев, как я парень Linux, я собираюсь использовать это:

jobs:
  build:

    runs-on: ubuntu-latest

Далее мы добавляем каждый шаг, нам нужно сделать, чтобы развернуть наше приложение, как указано выше. Это настроено в Шаги раздел. Сначала мы оформием репозиторий:

steps:
    - uses: actions/checkout@v1

Тогда нам нужно настроить .NET Ядро и построить наше приложение. Обратите внимание на версию .NET Вам нужно — это должно соответствовать вашему приложению:

    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 2.2.108
    - name: Dotnet Publish
      run: dotnet publish src -c Release -o deploy

Это создает и опубликовал наши файлы на /развертывать каталог на виртуальной машине. Далее хороший бит! Мы используем пару отличных сторонних команд с рынка, чтобы скопировать файлы, используя SCP на сервер.

- name: Copy via ssh
      uses: garygrossgarten/github-action-scp@v0.5.3
      with:
        local: /home/runner/work/deferat/deferat/src/deploy/
        remote: ${{ secrets.REMOTE_TARGET }}
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}

Очень важно, чтобы мы не совершаем пароли в коде к нашему репозитории (включая определение нашего рабочего процесса — это код в конце концов!) Как они могут быть прочитаны кем-либо! Итак, мы используем Секреты вкладка в Настройки вкладки репозитория. Добавлены любые переменные, добавленные здесь, будут доступны в сценарии INT, он формат $ {{Секреты. Secret_name}} :

Наконец, я собираюсь запустить команду ssh, чтобы перезапустить сервис, у меня на моем сервере. Команда запустить Сервис Deferat Start. Итак, мы делаем это так:

- name: Run SSH command
      uses: garygrossgarten/github-action-ssh@v0.3.0
      with:
        command: sudo service deferat start
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}

Рабочий процесс теперь завершен! Как только файл будет совершен (прямо на Master филиал конечно 😄), это будет вызвать действие. Теперь, когда вы переходите на вкладку «Действия», вы можете увидеть журнал каждый раз, когда рабочий процесс запускается, и вы можете увидеть подробный журнал каждого шага. Каждый шаг можно расширить, чтобы увидеть больше информации.

Финал Main.yml Файл выглядит так:

name: CI

on: 
  push:
    branches:
    - master

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v1
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v1
      with:
        dotnet-version: 2.2.108
    - name: Dotnet Publish
      run: dotnet publish src -c Release -o deploy
    - name: Copy via ssh
      uses: garygrossgarten/github-action-scp@v0.5.3
      with:
        local: /home/runner/work/deferat/deferat/src/deploy/
        remote: ${{ secrets.REMOTE_TARGET }}
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}
    - name: Run SSH command
      uses: garygrossgarten/github-action-ssh@v0.3.0
      with:
        command: sudo service deferat start
        host: ${{ secrets.REMOTE_HOST }}
        username: ${{ secrets.REMOTE_USER }}
        privateKey: ${{ secrets.REMOTE_SSH_KEY }}

И там это! Простой файл И у вас есть создание вашего приложения и развертывание непосредственно на сервер 🎉

Увидеть это в действии в моем репозитории в блоге здесь: https://github.com/euronay/deferat

Оригинал: «https://dev.to/euronay/automatically-deploy-your-net-core-app-using-github-actions-45a»