
このGitHubアクションでWebサイトなどを展開する自動化。無料です!
以下を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 Your_Project/.github/workflows/main.ymlsecretsセクションにキーを追加する必要があります。 secretを追加するには、プロジェクトのSettingsタブに移動して、 Secretsを選択します。 private-ssh-keyの新しいSecretを追加しますキーは、.yml configファイルに直接追加したり、Project Secrets Storageから参照したりできます。
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のマニュアルを参照してください。あなたはあなたが望むだけ多くの引数を使用することができ、それらをスペースで分離することができます
以下は、一般的に使用されるargsの不完全なリストです。
| オプション | 説明 |
|---|---|
--archive | あなたが再帰を望み、ほとんどすべてを保存したいという簡単な言い方 |
--dry-run | 何もアップロードまたは削除することはありませんが、これが実際の展開である場合、それがアップロード/削除するものを教えてください |
--stats | ファイル転送にverbose統計を印刷して、RSYNCのDelta-Transferアルゴリズムがデータ用の効果がどれほど効果的かを知ることができます |
--links | Symlinksが遭遇したら、宛先のSymlinkを再作成します |
--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のマニュアルを参照してください
「ビルド」という名前のNPMスクリプトがあることを確認してください。この構成は、ほとんどのノードビルドWebサイトで機能するはずです。
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/ 実際の変更を加えずにソースを同期するように作成/変更されるファイルのリストをouruts
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アクションに感謝する場合は、以下のバッジの1つで披露するか、披露してください。テキストや色を自由に編集してください。
[ < 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ランナーで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-hosted-runners/customizing-github-hosted-runners