
Автоматизируйте развертывание веб -сайтов и многое другое с помощью этого действия GitHub. Это бесплатно!
Поместите следующее в Your_Project/.github/workflows/main.yml
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ActionsBlank workflow file или Set up a workflow yourself , если вы не видите эти параметры вручную создать файл yaml Your_Project/.github/workflows/main.ymlsecrets в вашем проекте. Чтобы добавить secret , перейдите на вкладку Settings в вашем проекте, затем выберите Secrets . Добавьте новый Secret для private-ssh-key Ключи могут быть добавлены непосредственно в ваш файл .yml config или ссылаться на Secrets вашего проекта.
Чтобы добавить secret , перейдите на вкладку Settings в вашем проекте, затем выберите Secrets . Я настоятельно рекомендую вам хранить свой private-ssh-key как секрет.
| Ключевое имя | Необходимый? | Пример | По умолчанию | Описание |
|---|---|---|---|---|
target-server | Да | example.com | Назначение сервера для развертывания для | |
destination-path | Да | ~/folderOnServerThatAlreadyExists/ | Путь на сервере для развертывания. Должен уже существовать. | |
remote-user | Да | username | Пользователь SSH для входа в систему как | |
private-ssh-key | Да | -----BEGIN RSA PRIVATE KEY----- ...... | SSH Private Key. Должен быть указан как секрет. | |
source-path | Нет | ./myFolderToPublish/ | ./ | Путь к загрузке на сервер, должен заканчиваться с помощью Trailing Slash / |
ssh-port | Нет | 12345 | 22 | SSH порт для использования. Большинство хостов изменяют это по умолчанию. Это не ваш порт веб -сайтов. |
rsync-options | Нет | См. Раздел rsync-options ниже | --archive --verbose --compress --human-readable --progress --delete-after --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore | ПРИМЕЧАНИЕ. При настройке вы должны повторно определить значения по умолчанию (при условии, что вы хотите их). Пользовательские аргументы RSYNC, это поле передается непосредственно в сценарий RSYNC. |
rsync-optionsПользовательские аргументы, это поле передается непосредственно в сценарий RSYNC. См. Руководство RSYNC для всех вариантов. Вы можете использовать столько аргументов, сколько захотите, разделить их с пространством
Ниже приведен неполный список обычно используемых ARG:
| Вариант | Описание |
|---|---|
--archive | Быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все |
--dry-run | Ничего не загружает и не удаляет, но говорит вам, что это будет загружать/удалить, если это было реальное развертывание |
--stats | Распечатайте условную статистику по передаче файла, позволяя вам сообщить, насколько эффективно алгоритм Delta-переноса RSYNC для ваших данных |
--links | Когда встречаются символики, воссоздайте символическую ссылку на пункт назначения |
--compress | Сжимает данные файла, когда они отправляются на машину назначения, что уменьшает объем передаваемых данных |
--human-readable | Выходные байты в более читаемом человеке формате (K, M, G) |
--itemize-changes | Искусственный список изменений, которые вносятся в каждый файл, включая изменения атрибутов |
--delete-after | Когда вы удалите файл на GitHub, он также будет удален на сервере. Файлы удаляются в конце развертывания, чтобы минимизировать время простоя. |
--max-size '200K' | Игнорируйте синхронизацию файлов по этому пределу. Значение - это число, за которым следует "k", "m" или "g" |
--exclude 'file.txt' | Исключает файлы (ы) из развертывания. Поддерживает глобусные паттерны (например: *.jpg ). Вы можете получить несколько исключений! |
--include 'file.txt' | Включает файлы (ы), даже если он был исключен. Поддерживает глобусные паттерны (например: *.jpg ). Вы можете иметь несколько включения! |
См. Руководство RSYNC для всех вариантов
Убедитесь, что у вас есть сценарий NPM под названием «Build». Эта конфигурация должна работать для большинства встроенных узлов веб -сайтов.
on : push
name : Publish Website
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : ? Install Packages
- uses : actions/setup-node@v3
with :
node-version : 18
cache : " npm "
- run : npm ci
- name : ? Build
run : npm run build
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
destination-path : ~/destinationFolder/ Устает список файлов, которые будут созданы/изменены для синхронизации вашего источника без каких -либо фактических изменений
on : push
name : Publish Website Dry Run
jobs :
web-deploy :
name : Deploy Website Every Commit
runs-on : ubuntu-latest
steps :
- name : ? Get Latest Code
uses : actions/checkout@v3
- name : Sync Files
uses : SamKirkland/web-deploy@v1
with :
target-server : example.com
remote-user : username
private-ssh-key : ${{ secrets.SSH_KEY }}
ssh-port : 22
destination-path : ~/destinationFolder/
rsync-options : --dry-run --archive --verbose --compress --delete-after --human-readable --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignoreХотите еще один пример? Дайте мне знать, создав проблему GitHub
Если вы цените это действие GitHub, дайте ему или показателю с одним из значков ниже. Не стесняйтесь редактировать текст или цвет.
[ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=0077b6 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Deployed with web deploy " src = " https://img.shields.io/badge/Deployed With-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=297FA9 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=2b9348 " > ] ( https://github.com/SamKirkland/web-deploy ) [ < img alt = " Website Deployed for Free with web deploy " src = " https://img.shields.io/badge/Website deployed for free with-web deploy-%3CCOLOR%3E?style=for-the-badge&color=d00000 " > ] ( https://github.com/SamKirkland/web-deploy ) Файлы GIT исключены по умолчанию
Если есть настраиваемые rsync-options вам нужно будет повторно добавить параметры исключения по умолчанию с использованием --exclude=.git* --exclude=.git/ --exclude=README.md --exclude=readme.md --exclude=.gitignore
Вы можете использовать rsync-options и пройти столько --exclude , сколько захотите. По умолчанию это действие исключает файлы GitHub. Если вы решите настраивать rsync-options убедитесь, что вы копируете по умолчанию.
Пример, исключая все файлы .jpg :
rsync-options: --exclude "*.jpg"
Пример, исключая определенную папку:
rsync-options: --exclude "wp-content/themes/"
Эта библиотека использует rsync для синхронизации файлов. Сценарий не смог обнаружить rsync на машине, выполняя действие. Если вы используете runs-on: ubuntu-latest у вас всегда будет rsync .
Если вы используете windows-latest , windows-XXXX , macos-latest , macos-12 или самостоятельный бегун, вам нужно будет установить RSYNC перед шагом web-deploy .
Это довольно легко сделать!
В windows Runners запустите ваши конкретные шаги Windows, затем используйте самый шаг ubuntu-latest для развертывания.
На самостоятельные бегуны устанавливают rsync перед шагом web-deploy .
runs-on : [self-hosted, linux, my-self-hosted-runner-label]
steps :
- name : Install rsync
run : |
sudo apt-get update
sudo apt-get install rsync На macos Runners установите RSYNC перед шагом web-deploy .
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsyncУзнайте больше о настройке бегунов
https://docs.github.com/en/actions/using-github-hosted-runners/customizing-github-hosted-srunners