Керування файлами cookie, які використовуються для реклами, таких як персоналізація реклами, ремаркетинг і аналіз ефективності реклами.
2.19.9. Деплой за допомогою GitHub Actions
GitHub Actions — це набір засобів автоматизації робочих процесів на GitHub. З їхньою допомогою можна запускати різні дії при настанні певних подій. Одним із прикладів є автоматичне вивантаження коду проєкту з GitHub на хостинг після пушу змін у репозиторій.
SSH
Увага!
При деплої каталог на хостингу очищається. Вміст каталогу відповідатиме вмісту репозиторію.Налаштування автоматичного деплою на прикладі екшену Rsync Deployments Action.
- Налаштуйте SSH-аутентифікацію за ключами:
- Згенеруйте та додайте ключ в обліковий запис.
- Прив'яжіть ключ до хостинг-акаунту, куди має виконуватися деплой.
- Відкрийте свій репозиторій на GitHub.
- Додайте необхідні для деплою дані в секрети:
Як додавати секрети:
- Переключіться на вкладку «Settings».
- Виберіть «Secrets and variables → Actions» у бічному меню.
- Натисніть «New repository secret».
- Вкажіть назву секрету в полі «Name» і значення в полі «Value».
- Натисніть «Add secret».
Кожен параметр додається як окремий секрет.
Name Value REMOTE_HOSTХост SSH REMOTE_USERЛогін SSH REMOTE_KEYДані приватного ключа в форматі PEM (починається з -----BEGIN RSA PRIVATE KEY-----). ⚠️ Ключ має бути приватний, не публічний.REMOTE_KEY_PASSПарольна фраза приватного ключа (якщо не використовується, можна не додавати або додати з будь-яким значенням). 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: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: rsync deploy uses: burnett01/rsync-deployments@7.0.2 with: switches: -avzr --delete path: . remote_host: ${{ secrets.REMOTE_HOST }} remote_user: ${{ secrets.REMOTE_USER }} remote_key: ${{ secrets.REMOTE_KEY }} remote_key_pass: ${{ secrets.REMOTE_KEY_PASS }} remote_path: ${{ secrets.REMOTE_PATH }} - Натисніть «Start commit» і потім «Commit new file».
- Переключіться на вкладку «Actions» і перевірте статус деплою. Для перегляду подробиць натисніть на назву робочого процесу в списку «All workflows» і потім на «build» — у разі успіху біля кожної операції має стояти галочка.
FTP
Увага!
При деплої каталог на хостингу не очищається. Файли, яких немає в репозиторії, з каталогу не видаляються.Server sent FIN packet unexpectedly
Якщо при деплої проекту з великою кількістю файлів виникає помилка «Server sent FIN packet unexpectedly», рекомендується перейти на використання SSH. Для FTP може допомогти зниження версії екшену до 3.1.2-patch. Для цього потрібно змінити екшен: рядокuses: SamKirkland/FTP-Deploy-Action@v4.3.5 замінити на uses: SamKirkland/FTP-Deploy-Action@v3.1.2-patch, параметри server, username і password перейменувати на ftp-server, ftp-username і ftp-password. Також параметр 'server-dir у цьому випадку працювати не буде і каталог деплоя потрібно буде задавати тільки зміною каталогу доступу FTP-користувача.
Налаштування автоматичного деплою на прикладі екшену FTP Deploy.
- Створіть на хостингу FTP-користувача з доступом до каталогу, куди має виконуватися деплой.
- Вимкніть обмеження доступу по FTP.
- Відкрийте свій репозиторій на GitHub.
- Додайте необхідні для деплою дані в секрети:
Як додавати секрети:
- Переключіться на вкладку «Settings».
- Виберіть «Secrets and variables → 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: branches: - main jobs: web-deploy: name: Deploy runs-on: ubuntu-latest steps: - name: Get latest code uses: actions/checkout@v4 - name: Sync files uses: SamKirkland/FTP-Deploy-Action@v4.3.5 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» — у разі успіху біля кожної операції має стояти галочка.
(3)
Коментарі
Будь ласка, додайте інструкцію для Gitlab
Підтримую. Цікавить інструкція для GitLab. Дякую.
як налаштувати деплой через sftp в GitHub Actions?
Спосіб «SSH» в цій статті це по суті і є такий деплой.
on:
push:
branches:
- main