リリース展開ワークフローアクションは、継続的な統合 /継続展開(CI / CD)のための自動リリース展開です。 Webアプリケーションの展開プロセスを自動化するように設計されています。このアクションは、環境のセットアップ、依存関係のインストール、プロジェクトの構築(ビルドパッケージ)、リモートサーバーへの展開、およびSLACKに通知を送信することを処理します。
| 入力 | 説明 | 必須 | デフォルト |
|---|---|---|---|
| Site-url | 展開サイトURL | はい | n/a |
| github-token | githubトークン。これはGitHubによって自動的に提供されます。デフォルト値$ {{secrets.github_token}}を使用します。詳細 | はい | n/a |
| デプロイパス | アプリケーションが展開されるリモートサーバー上のパス。 | はい | n/a |
| deploy-host | リモートサーバーのホスト名またはIPアドレス。 | はい | n/a |
| 展開ポート | リモートサーバーのSSHポート(通常22)。 | はい | n/a |
| Deploy-User | リモートサーバーへのSSHアクセスのユーザー名。 | はい | n/a |
| Deploy-Key | リモートサーバーにアクセスするためのプライベートSSHキー。 SSHキーを生成します | はい | n/a |
| タグ名 | リリースビルドのタグ名。 | はい | n/a |
| パス | GitHubランナーのビルドディレクトリへのパス。 | はい | ビルド/トランク/ |
| スイッチ | 展開用のRSYNCスイッチ。これにより、ファイル同期プロセスの動作が制御されます。 RSYNCドキュメント | いいえ | -avzr -exclude = "*。env" -exclude = "env" -exclude = "。github" - exclude = "。git" -exclude = "。gitignore" -exclude = "。user.ini" |
| slack-webhook | 通知用のSlack WebHook URL。スラック設定からこれを取得します。 Slack Webhookを作成します | いいえ | n/a |
| スラックチャネル | 通知用のスラックチャネル。 | いいえ | 一般的な |
| スラックタイトル | Slack通知のタイトル。 | いいえ | Webアプリケーションが展開されました |
| スラックメッセージ | スラック通知のメッセージ本文。 | いいえ | 展開プロセスが完了しました。詳細については、ログを確認してください。 |
| Slack-Username | Slack通知の送信者として表示されるユーザー名。 | いいえ | WebAppデプロイボット |
| スラックフッター | Slack通知のフッターテキスト。 | いいえ | Webアプリケーションの更新ステータス |
| php-version | セットアップへのPHPバージョン | いいえ | 7.4 |
| PHP-Extensions | インストールするPHP拡張機能 | いいえ | PCOV |
| ノードバージョン | node.jsバージョンからセットアップ | いいえ | 16 |
| use-php | PHPをセットアップするかどうか | いいえ | 真実 |
| 使用ノード | node.jsをセットアップするかどうか | いいえ | 真実 |
| 使用リモートインストール | リモートSSHのインストール/更新を実行するかどうか | いいえ | 間違い |
| アップロードリリースアセット | リリース資産をアップロードするかどうか | いいえ | 真実 |
| リリースファイル | アップロードするファイルをリリースします | いいえ | build.zip; changelog.md |
| ユースキャッシュ | 依存関係にキャッシュを使用するかどうか | いいえ | 間違い |
| アップロードアーティファクト | アーティファクトをアップロードするかどうか | いいえ | 間違い |
| Artifact-name | アップロードするアーティファクトの名前 | いいえ | ビルドアーティファクト |
| アーティファクトパス | アップロードするアーティファクトのパス | いいえ | ビルド/トランク/ |
ワークフローでこのアクションを使用するには、GitHubアクションワークフローファイルに次の手順を含めます。 GitHubアクションを初めて使用する場合は、リポジトリのrootに.github/workflowsディレクトリを作成し、次のコンテンツでyamlファイル( release-deployer.ymlなど)を追加します。
基本例:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications各パラメーターのコメント付きの例:
name : Release Deployer
on :
pull_request :
types :
- closed
workflow_dispatch :
jobs :
release :
runs-on : ubuntu-latest
steps :
- name : Run release-please
uses : googleapis/release-please-action@v4
id : release
with :
token : ${{ secrets.GITHUB_TOKEN }}
command : manifest
default-branch : main
- name : Run Custom Deployer Action
if : ${{ steps.release.outputs.releases_created }}
uses : devuri/rdx-release-deployer-action@v1
with :
# Required parameters
site-url : ${{ secrets.SITE_URL }} # Deployment site URL
github-token : ${{ secrets.GITHUB_TOKEN }} # GitHub Token
deploy-path : ${{ secrets.DEPLOY_PATH }} # Remote deploy path
deploy-host : ${{ secrets.DEPLOY_HOST }} # Remote deploy host
deploy-port : ${{ secrets.DEPLOY_PORT }} # Remote deploy port
deploy-user : ${{ secrets.DEPLOY_USER }} # Remote deploy user
deploy-key : ${{ secrets.DEPLOY_KEY }} # Remote deploy key
tag-name : ${{ steps.release.outputs.tag_name }} # Release tag name
# Optional parameters with defaults
path : build/trunk/ # Path to the build directory on the GitHub runner (default: build/trunk/)
switches : ' -avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini" ' # Rsync switches for deployment (default: '-avzr --exclude="*.env" --exclude="env" --exclude=".github" --exclude=".git" --exclude=".gitignore" --exclude=".user.ini"')
slack-webhook : ${{ secrets.SLACK_WEBHOOK }} # Slack webhook URL for notifications
slack-channel : general # Slack channel for notifications (default: general)
slack-title : " Web Application Deployed " # Title for the Slack notification (default: "Web Application Deployed")
slack-message : " Deployment process completed. " # Message body for the Slack notification (default: "Deployment process completed. Check logs for details.")
slack-username : " WebApp Deploy Bot " # Username that will appear as the sender of the Slack notification (default: "WebApp Deploy Bot")
slack-footer : " Web Application Update Status " # Footer text for the Slack notification (default: "Web Application Update Status")
# Optional setup parameters with defaults
php-version : ' 7.4 ' # PHP version to setup (default: '7.4')
php-extensions : ' pcov ' # PHP extensions to install (default: 'pcov')
node-version : ' 16 ' # Node.js version to setup (default: '16')
# Boolean flags
use-php : true # Whether to setup PHP (default: true)
use-node : true # Whether to setup Node.js (default: true)
use-remote-install : true # Whether to execute remote SSH updates (default: false)
upload-release-assets : true # Whether to upload release assets (default: true)
# Files to upload to release
release-files : ' build.zip;CHANGELOG.md ' # Files to upload to release (default: 'build.zip;CHANGELOG.md')
この例では、ワークフローはクローズドプルリクエストでトリガーされ、[GitHubアクション]タブを介して手動でトリガーすることもできます。 googleapis/release-please-actionを使用してリリースを管理し、リリースが作成された場合にカスタム展開アクションを実行します。
警告
switches内の--deleteオプションは、サーバー上の重要なファイルまたはコンテンツが削除される可能性があるため、危険な場合があります。
ビルドディレクトリ: path入力(デフォルトbuild/trunk/ )は、 rsyncを使用してファイルがリモートサーバーにコピーされるディレクトリを指定します。ビルドプロセスが必要なファイルをこのディレクトリに出力するか、それに応じてpath入力を調整して、ビルド出力の場所に合わせて調整します。
rsync --deleteオプション: switches入力の--deleteオプションは、ローカルに存在しなくなったリモートサーバー上のファイルを削除することにより、ローカルビルドディレクトリと同期してリモートディレクトリを保持するために使用されます。これは、ユーザーが使用する画像やその他の資産など、サーバー上の重要なファイルやコンテンツを削除する可能性があるため、危険です。このオプションを使用して、意図しないデータ損失を避けてください。 switches入力の--excludeリストにそれらを追加して削除すべきではないディレクトリを除外することを検討してください。参照:rsync削除オプション
rsyncを使用して、構築されたアーティファクトをリモートサーバーに展開します。set -eo )で実行を停止します。これにより、以前のステップが失敗した場合に後続のステップが実行されないようにします。| 秘密 | 説明 |
|---|---|
GITHUB_TOKEN | 認証用のgithubトークン(githubアクションでデフォルトで提供) |
DEPLOY_PATH | リモート展開パス |
DEPLOY_HOST | リモートデプロイホスト |
DEPLOY_PORT | リモート展開ポート |
DEPLOY_USER | リモートデプロイユーザー |
DEPLOY_KEY | リモートデプロイキー |
SLACK_WEBHOOK | 通知用のSlack WebHook URL |
リポジトリに秘密を追加するには:
CI/CDは、アプリ開発の段階に自動化を導入することにより、顧客にアプリを頻繁に配信する方法です。 CI/CDに起因する主な概念は、継続的な統合、継続的な配信、および継続的な展開です。このアクションは、展開プロセスを自動化することにより、CI/CDを実装し、アプリケーションがそうであることを確認するのに役立ちます
常に展開可能な状態で、その更新はユーザーに迅速かつ効率的に配信されます。
このアクションをワークフローに組み込むことにより、より信頼性の高い安全な展開プロセスを実現し、開発ワークフローを改善し、アプリケーションが一貫して迅速に展開されるようにします。
重要
GitHubは、計画に応じて毎月一定の無料分を提供します。これは、小規模から中規模のプロジェクトに十分である可能性があります。 GitHubアクションの使用は、ワークフローを実行するのに必要な計算時間に基づいています。これは、使用されるランナーと消費される合計分によって異なる場合があります。使用率を効果的に管理するには、ワークフローを最適化し、大規模なプロジェクトに自己ホストされたランナーを使用することを検討します。価格計算機。
このプロジェクトのスクリプトとドキュメントは、MITライセンスの下でリリースされます。