2

使用GitHub Actions自动化部署FTP

 4 months ago
source link: https://server.51cto.com/article/780254.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

传统的 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/[email protected]
      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/ 文件夹中。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK