
通過此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/Actions選項卡Blank workflow file或Set up a workflow yourself ,如果您看不到這些選項手動創建yaml文件Your_Project/.github/workflows/main.ymlsecrets部分中添加鍵。要添加secret請訪問項目中的Settings選項卡,然後選擇Secrets 。添加一個新的Secret private-ssh-key可以將密鑰直接添加到您的.yml配置文件中,也可以從項目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私鑰。必須指定為秘密。 | |
source-path | 不 | ./myFolderToPublish/ | ./ | 上傳到服務器上的路徑,必須以落後斜線/結束 |
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 | 在文件傳輸上打印詳細的統計信息,使您可以判斷Rsync的Delta-Transfer算法的有效性 |
--links | 遇到符號鏈接時,請在目的地重新創建符號鏈接 |
--compress | 將文件數據發送到目標計算機時壓縮文件數據,從而減少了要傳輸的數據量 |
--human-readable | 輸出字節以更容易讀的格式(K,M,G) |
--itemize-changes | 每個文件所做的更改的逐項列表,包括屬性更改 |
--delete-after | 當您在github上刪除文件時,它也將在服務器上刪除。在部署結束時刪除文件,以最大程度地減少停機時間。 |
--max-size '200K' | 在此限制上忽略同步文件。值是一個數字,其次是“ K”,“ M”或“ G” |
--exclude 'file.txt' | 從部署中排除文件。支持Glob Pattterns(例如: *.jpg )。您可以有多個排除! |
--include 'file.txt' | 即使排除了文件,包括文件。支持Glob Pattterns(例如: *.jpg )。您可以擁有多個包含! |
有關所有選項,請參見Rsync的手冊
確保您有一個名為“ build”的NPM腳本。此配置應適用於大多數節點構建的網站。
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/ OUPUTS將創建/修改以同步源而無需進行任何實際更改的文件列表
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或自託管跑步者,則需要在web-deploy步驟之前安裝Rsync。
這很容易做到!
在windows Runners上運行特定於Windows的步驟,然後使用ubuntu-latest步驟進行部署。
在自託管跑步者上,在web-deploy步驟之前安裝rsync。
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跑步者上,在web-deploy步驟之前安裝Rsync。
runs-on : macos-latest
steps :
- name : Install rsync
run : |
brew update
brew install rsync閱讀有關定制跑步者的更多信息
https://docs.github.com/en/actions/using-github-host-runners/customizing-github-host-runners