是否可以使用 GitHub 操作和 GitHub FTP 部署将 Laravel Web 应用程序部署到共享主机?

Is that possible to deploy Laravel web application to shared hosting using GitHub Action & GitHub FTP Deploy?

是否可以部署 Laravel Web 应用程序到共享主机 使用 GitHub 操作 & GitHub FTP 部署?如果可能我应该如何更改.github\workflows\master.yml?

on: 
  push:
    branches:
      - master
name:  Deploy website on push
jobs:
  web-deploy:
    name:  Deploy
    runs-on: ubuntu-latest
    steps:
    - name:  Get latest code
      uses: actions/checkout@v2
    
    - name:  Sync files
      uses: SamKirkland/FTP-Deploy-Action@4.2.0
      with:
        server: ${{ secrets.ftp_server }}
        username: ${{ secrets.ftp_username }}
        password: ${{ secrets.ftp_password }}
        server-dir: /

看起来你非常接近,但缺少 2 个重要步骤:设置临时 PHP 环境,并使用该环境安装你的依赖项(Composer)。


GitHub 操作设置

本指南假设您有一个有效的 Laravel 安装、一个 GitHub 帐户和一个共享主机帐户,您可以使用 username/password 通过 FTP 访问该帐户。

我发现此视频 https://www.youtube.com/watch?v=UNWIXYSZfZY 有助于基本了解如何部署简单的应用程序。为了让这个答案对更广泛的人有所帮助,我将简要介绍一下我的设置。确实没有任何 Laravel 具体步骤。

工作流目录设置

在项目的根目录下创建目录 .github\workflows。在 workflows 目录中,创建一个以您要推送到共享主机帐户的分支命名的 yml 文件。前任。 master.ymlstaging.ymldevelopment.yml 等。如果您只有一个分支,则只需创建一个文件。名称很重要,应与分支名称匹配。

设计您的工作流程

这在很大程度上取决于您的项目,但假设您有一个基本的 Laravel 应用程序而不需要其他组件,例如 Node,那么这是一个对我有用的基本 GitHub 操作各种项目。

一个基本动作文件由 2 个部分组成,the workflow, and the jobs。工作流触发作业。

工作流程

Lines 1-4 说这将 运行 每次我们 pushmaster 分支。

on:
  push:
    branches:
      - master

Line 5 是此工作流程的名称,将显示在您的“操作”页面上。将其设置为描述性的内容。

name:  Deploy website on push (Master)

设置作业

在这个动作中,有 5 个作业。有些接受参数,有些则不接受。我不打算在这里解释所有细节,但如果您需要详细信息,我会链接到相应的存储库。

  1. 检查您的代码以便工作流可以访问它, https://github.com/actions/checkout
name:  Get latest code
uses: actions/checkout@v2
  1. 设置一个临时 PHP 环境,这样您就可以 运行 诸如此类的事情 作曲家,https://github.com/shivammathur/setup-php。确保在此处设置您的 PHP 版本,否则您可能 运行 在安装具有意外 PHP 版本的 Composer 软件包时出现问题。
name: Setup PHP
uses: shivammathur/setup-php@v2
with:
  php-version: 7.2
  1. 缓存您的依赖项以加快部署速度, https://github.com/actions/cache
name: Cache Composer packages
id: composer-cache
uses: actions/cache@v2
with:
  path: vendor
  key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
  restore-keys: |
    ${{ runner.os }}-php-
  1. composer.jsoncomposer.lock 安装依赖项 文件。
name: Install dependencies
run: composer install --prefer-dist --no-progress
  1. 将您的代码部署到您的远程共享主机站点, https://github.com/SamKirkland/FTP-Deploy-Action. Note the use of ${{ secrets.ftp_username }} and ${{ secrets.ftp_password }}. These are set up in your repository's secrets section. See https://docs.github.com/en/actions/security-guides/encrypted-secrets
name:  Sync files
uses: SamKirkland/FTP-Deploy-Action@4.0.0
with:
  server: name_of_server.com
  username: ${{ secrets.ftp_username }}
  password: ${{ secrets.ftp_password }}
  server-dir: public_html/

最终文件

on:
  push:
    branches:
      - master
name:  Deploy website on push (Master)
jobs:
  web-deploy:
    name:  Deploy
    runs-on: ubuntu-latest
    steps:
      - name:  Get latest code
        uses: actions/checkout@v2

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: 7.2

      - name: Cache Composer packages
        id: composer-cache
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
          restore-keys: |
            ${{ runner.os }}-php-

      - name: Install dependencies
        run: composer install --prefer-dist --no-progress

      - name:  Sync files
        uses: SamKirkland/FTP-Deploy-Action@4.0.0
        with:
          server: name_of_server.com
          username: ${{ secrets.ftp_username }}
          password: ${{ secrets.ftp_password }}
          server-dir: public_html/

运行工作流程

  1. Check-in .github\workflows\master.yml,以及其他合适的, 进入您的 GitHub 存储库。如果没有这些文件,则什么也没有签入 将更改推送到分支时会发生。

  2. 转到“操作”选项卡并确保工作流显示在那里。

  3. 将更改推送到您的分支并查看“操作”选项卡。点击进入 运行ning 操作以查看有关 运行 的详细信息。 Action
details

  4. 修复控制台中显示的任何错误。

最后,您在评论中提到了一些关于 NPM 的事情。如果您将 Node 作为项目中的一个组件,您只需 运行 两个额外的步骤即可捆绑您的资产并与其余代码一起部署。

祝你好运!