传统的 Web 开发人员常常喜欢通过 FTP 服务器直接编辑文件,而不是使用版本控制系统,主要原因是因为部署方便。
利用 GitHub actions 可以非常简单地实现自动化部署。本文为大家展示一个基本的 PHP 示例。
1 开始使用 GitHub Actions
首先转到存储库并单击“操作”选项卡。然后创建工作流程。
图片
可以创建多个操作。这基本上会创建一个名为 .github/workflows 的文件夹结构。
在此文件夹下创建 .yml 文件,以设置有关操作的规则。
2 部署 PHP 应用程序
以下是 PHP 示例的 FTP 部署操作:
on: push
name: 🚀 Deploy website on push
jobs:
web-deploy:
name: 🎉 Deploy
runs-on: ubuntu-latest
steps:
- name: 🚚 Get latest code
uses: actions/checkout@v3
- name: PHP Version
run: php --version
- name: Validate composer.json and composer.lock
run: composer validate
- name: Get Composer cache directory
id: composer-cache
#run: echo "::set-output name=dir::$(composer config cache-files-dir)"
run: echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT
- name: Cache Composer vendor directory
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install PHP dependencies
run: composer install --no-progress --no-dev --optimize-autoloader
- name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with:
server: ${{ secrets.FTP_SERVER }}
username: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
local-dir: ./
server-dir: ./api/
log-level: verbose
解释一下规则;
- on: 这是确定操作何时运行的地方。
- name: 上文提到可以有多个操作,这是此操作的名称。
- steps: 在同步操作之前设置步骤。在此示例中,检查 composer 文件和 PHP 版本,还使用另一个操作来缓存供应商文件。
最后,使用 FTP-Deploy-Action 将文件上传到服务器。
对于此部分,可以在 GitHub 密钥中存储。
图片
基本注意事项:
**local-dir: ** 此参数表示,可以指定 Git 仓库中的特定文件夹。
**server-dir: ** 此参数则指定了服务器上的文件夹。在示例中,直接将文件推送到了 /api/ 文件夹中。