版本部署者工作流操作是用于连续集成 /连续部署(CI / CD)的自动版本部署。它旨在自动化Web应用程序的部署过程。此操作处理设置环境,安装依赖项,构建项目(构建软件包),将其部署到远程服务器以及将通知发送到Slack。
| 输入 | 描述 | 必需的 | 默认 |
|---|---|---|---|
| 站点 - 乌尔 | 部署网站URL | 是的 | N/A。 |
| github token | github令牌。这是由GitHub自动提供的。使用默认值$ {{necrets.github_token}}。更多信息 | 是的 | N/A。 |
| Deploy-Pat | 将部署应用程序的远程服务器上的路径。 | 是的 | N/A。 |
| 部署主持人 | 远程服务器的主机名或IP地址。 | 是的 | N/A。 |
| 部署端口 | 远程服务器的SSH端口(通常22)。 | 是的 | N/A。 |
| 部署用户 | SSH访问远程服务器的用户名。 | 是的 | N/A。 |
| 部署键 | 用于访问远程服务器的专用SSH键。生成一个SSH键 | 是的 | N/A。 |
| 标签名 | 发行版构建的标签名称。 | 是的 | N/A。 |
| 小路 | GitHub Runner上构建目录的路径。 | 是的 | 构建/后备/ |
| 开关 | Rsync开关进行部署。这控制了文件同步过程的行为。 Rsync文档 | 不 | -avzr -exclude =“*。env” -exclude =“ env” -exclude =“。github” -exclude =“。git” - exclude =“。gitignore”。 |
| 松弛的webhook | Slack Webhook URL通知。从您的松弛设置中获取此功能。创建Slack Webhooks | 不 | N/A。 |
| 松弛通道 | 通知的松弛通道。 | 不 | 一般的 |
| 松懈的标题 | Slack Notification的标题。 | 不 | 部署了Web应用程序 |
| 松懈 | 消息主体,用于松弛通知。 | 不 | 部署过程完成。检查日志以获取详细信息。 |
| Slack-username | 用户名将显示为Slack Notification的发件人。 | 不 | WebApp部署机器人 |
| 松散的脚 | 步入式通知的页脚文字。 | 不 | Web应用程序更新状态 |
| php-version | PHP版本设置 | 不 | 7.4 |
| php延伸 | 安装的PHP扩展名 | 不 | PCOV |
| 节点version | node.js版本设置 | 不 | 16 |
| 使用php | 是否设置PHP | 不 | 真的 |
| 使用节点 | 是否设置node.js | 不 | 真的 |
| 使用远重型式安装 | 是否执行远程SSH安装/更新 | 不 | 错误的 |
| 上传释放资源 | 是否要上传释放资产 | 不 | 真的 |
| 释放文件 | 上传的文件 | 不 | build.zip; changelog.md |
| 用例 | 是否将缓存用于依赖关系 | 不 | 错误的 |
| 上传艺术 | 是否上传工件 | 不 | 错误的 |
| 人工制品名称 | 上传工件的名称 | 不 | 建筑物 |
| 文物路径 | 工件上传的途径 | 不 | 构建/后备/ |
要在工作流中使用此操作,请在github操作工作流文件中包含以下步骤。如果您是GitHub Action的新手,请在存储库的根部创建一个.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 Action”选项卡手动触发。它使用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许可发布的。