Управление файлами 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@v6 - name: rsync deploy uses: burnett01/rsync-deployments@v8 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