2.20.9. Деплой за допомогою GitHub Actions

GitHub Actions — це набір засобів автоматизації робочих процесів на GitHub. З їхньою допомогою можна запускати різні дії при настанні певних подій. Одним із прикладів є автоматичне вивантаження коду проекту з GitHub на хостинг при пуші змін до репозиторію.

Увага!

Каталог на хостингу при деплої очищується. Вміст каталогу буде відповідати вмісту репозиторію.

Налаштування автоматичного деплою на прикладі екшену Rsync Deployments Action.

  1. Налаштуйте SSH-аутентифікацію за ключами:
    1. Згенеруйте та додайте ключ в обліковий запис.
    2. Прив’яжіть ключ до хостинг-акаунту, куди має виконуватися деплой.
  2. Відкрийте свій репозиторій на GitHub.
  3. Додайте необхідні для деплою дані в секрети:

    Як додавати секрети:

    1. Перейдіть на вкладку «Settings».
    2. Виберіть «Secrets → Actions» у бічному меню.
    3. Натисніть «New repository secret».
    4. Вкажіть назву секрету у полі «Name» та значення у полі «Value».
    5. Натисніть «Add secret».

    Кожен параметр додається як окремий секрет.

    Name Value
    REMOTE_HOST Хост SSH
    REMOTE_USER Логін SSH
    REMOTE_KEY Дані приватного ключа у форматі PEM (починається з -----BEGIN RSA PRIVATE KEY-----). Увага! Ключ має бути приватний, не публічний.
    REMOTE_PATH Абсолютний шлях до каталогу на хостингу, куди має виконуватися деплой.
  4. Налаштуйте екшен:
    1. Перейдіть на вкладку «Actions».
    2. Натисніть «set up a workflow yourself» або спочатку «New workflow», а потім «set up a workflow yourself».
    3. Замініть код у полі «Edit new file» на такий:
      name: SSH deploy on push
      on: push
      jobs:
        build:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v3
            - name: rsync deploy
              uses: burnett01/rsync-deployments@5.2.1
              with:
                switches: -avzr --delete
                path: .
                remote_host: ${{ secrets.REMOTE_HOST }}
                remote_user: ${{ secrets.REMOTE_USER }}
                remote_key: ${{ secrets.REMOTE_KEY }}
                remote_path: ${{ secrets.REMOTE_PATH }}
    4. Натисніть «Start commit» і потім «Commit new file».
  5. Перейдіть на вкладку «Actions» та перевірте статус деплою. Щоб переглянути подробиці, натисніть назву робочого процесу в списку «All workflows» і потім на «build» — у разі успіху біля кожної операції має стояти галочка.

Увага!

Каталог на хостингу при деплої не очищується. Файли, яких немає у репозиторії, з каталогу не видаляються.

Налаштування автоматичного деплою на прикладі екшену FTP Deploy.

  1. Створіть на хостингу FTP-користувача з доступом до каталогу, куди повинен виконуватись деплой.
  2. Вимкніть обмеження доступу по FTP.
  3. Відкрийте свій репозиторій на GitHub.
  4. Додайте необхідні для деплою дані в секрети:

    Як додавати секрети:

    1. Перейдіть на вкладку «Settings».
    2. Виберіть «Secrets → Actions» у бічному меню.
    3. Натисніть «New repository secret».
    4. Вкажіть назву секрету у полі «Name» та значення у полі «Value».
    5. Натисніть «Add secret».

    Кожен параметр додається як окремий секрет.

    Name Value
    REMOTE_HOST FTP-хост
    FTP_USER Логін FTP
    FTP_PASSWORD Пароль FTP
    FTP_PATH Відносний шлях від каталогу доступу FTP до каталогу на хостингу, куди має виконуватися деплой. Увага! Шлях обов’язково повинен закінчуватися слешем /. Також, якщо у вашому проекті є каталоги lib або etc, каталог доступу користувача FTP повинен бути таким, щоб вони опинилися не в корені.
  5. Налаштуйте екшен:
    1. Перейдіть на вкладку «Actions».
    2. Натисніть «set up a workflow yourself» або спочатку «New workflow», а потім «set up a workflow yourself».
    3. Замініть код у полі «Edit new file» на такий:
      name: FTP deploy on push
      on: push
      jobs:
        web-deploy:
          name: Deploy
          runs-on: ubuntu-latest
          steps:
          - name: Get latest code
            uses: actions/checkout@v3
          - name: Sync files
            uses: SamKirkland/FTP-Deploy-Action@v4.3.4
            with:
              server: ${{ secrets.REMOTE_HOST }}
              username: ${{ secrets.FTP_USER }}
              password: ${{ secrets.FTP_PASSWORD }}
              server-dir: ${{ secrets.FTP_PATH }}
    4. Натисніть «Start commit» і потім «Commit new file».
  6. Перейдіть на вкладку «Actions» та перевірте статус деплою. Щоб переглянути подробиці, натисніть назву робочого процесу в списку «All workflows» і потім на «build» — у разі успіху біля кожної операції має стояти галочка.
Зміст