2.20.9. Деплой за допомогою GitHub Actions
GitHub Actions — це набір засобів автоматизації робочих процесів на GitHub. З їхньою допомогою можна запускати різні дії при настанні певних подій. Одним із прикладів є автоматичне вивантаження коду проекту з GitHub на хостинг при пуші змін до репозиторію.
Деплой по SSH
Увага!
Каталог на хостингу при деплої очищується. Вміст каталогу буде відповідати вмісту репозиторію.Налаштування автоматичного деплою на прикладі екшену Rsync Deployments Action.
-
Налаштуйте SSH-аутентифікацію за ключами:
-
Згенеруйте та додайте ключ в обліковий запис.
-
Прив’яжіть ключ до хостинг-акаунту, куди має виконуватися деплой.
-
-
Відкрийте свій репозиторій на GitHub.
-
Додайте необхідні для деплою дані в секрети:
Як додавати секрети:
-
Перейдіть на вкладку «Settings».
-
Виберіть «Secrets → Actions» у бічному меню.
-
Натисніть «New repository secret».
-
Вкажіть назву секрету у полі «Name» та значення у полі «Value».
-
Натисніть «Add secret».
Кожен параметр додається як окремий секрет.
Name Value REMOTE_HOST
Хост SSH REMOTE_USER
Логін SSH REMOTE_KEY
Дані приватного ключа у форматі PEM (починається з -----BEGIN RSA PRIVATE KEY-----
). Увага! Ключ має бути приватний, не публічний.REMOTE_PATH
Абсолютний шлях до каталогу на хостингу, куди має виконуватися деплой. -
-
Налаштуйте екшен:
-
Перейдіть на вкладку «Actions».
-
Натисніть «set up a workflow yourself» або спочатку «New workflow», а потім «set up a workflow yourself».
-
Замініть код у полі «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 }}
-
Натисніть «Start commit» і потім «Commit new file».
-
-
Перейдіть на вкладку «Actions» та перевірте статус деплою. Щоб переглянути подробиці, натисніть назву робочого процесу в списку «All workflows» і потім на «build» — у разі успіху біля кожної операції має стояти галочка.
Деплой по FTP
Увага!
Каталог на хостингу при деплої не очищується. Файли, яких немає у репозиторії, з каталогу не видаляються.Налаштування автоматичного деплою на прикладі екшену FTP Deploy.
-
Створіть на хостингу FTP-користувача з доступом до каталогу, куди повинен виконуватись деплой.
-
Вимкніть обмеження доступу по FTP.
-
Відкрийте свій репозиторій на GitHub.
-
Додайте необхідні для деплою дані в секрети:
Як додавати секрети:
-
Перейдіть на вкладку «Settings».
-
Виберіть «Secrets → Actions» у бічному меню.
-
Натисніть «New repository secret».
-
Вкажіть назву секрету у полі «Name» та значення у полі «Value».
-
Натисніть «Add secret».
Кожен параметр додається як окремий секрет.
Name Value REMOTE_HOST
FTP-хост FTP_USER
Логін FTP FTP_PASSWORD
Пароль FTP FTP_PATH
Відносний шлях від каталогу доступу FTP до каталогу на хостингу, куди має виконуватися деплой. Увага! Шлях обов’язково повинен закінчуватися слешем /
. Також, якщо у вашому проекті є каталогиlib
абоetc
, каталог доступу користувача FTP повинен бути таким, щоб вони опинилися не в корені. -
-
Налаштуйте екшен:
-
Перейдіть на вкладку «Actions».
-
Натисніть «set up a workflow yourself» або спочатку «New workflow», а потім «set up a workflow yourself».
-
Замініть код у полі «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 }}
-
Натисніть «Start commit» і потім «Commit new file».
-
-
Перейдіть на вкладку «Actions» та перевірте статус деплою. Щоб переглянути подробиці, натисніть назву робочого процесу в списку «All workflows» і потім на «build» — у разі успіху біля кожної операції має стояти галочка.