是否可以使用 GitHub Action 和 GitHub FTP Deploy 将 Laravel Web 应用程序部署到共享托管?

Mad*_*ghe 2 deployment ftp github laravel

是否可以使用 GitHub Action 和 GitHub FTP Deploy将Laravel Web 应用程序部署到共享托管?如果可能的话我应该如何更改.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: /
Run Code Online (Sandbox Code Playgroud)

wat*_*att 7

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


GitHub 操作设置

本指南假设您有一个可用的 Laravel 安装、一个 GitHub 帐户和一个可以使用用户名/密码通过 FTP 访问的共享托管帐户。

我发现此视频https://www.youtube.com/watch?v=UNWIXYSZfZY有助于基本了解如何部署简单的应用程序。为了使这个答案对更广泛的人有帮助,我将简要概述我的设置。实际上没有任何特定于 Laravel 的步骤。

工作流程目录设置

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

工作流程文件的屏幕截图

设计您的工作流程

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

基本操作文件由 2 个部分组成:工作流程和作业。工作流程触发作业。

工作流程

第 1-4 行表示每次我们push到master分支时都会运行该命令。

on:
  push:
    branches:
      - master
Run Code Online (Sandbox Code Playgroud)

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

name:  Deploy website on push (Master)
Run Code Online (Sandbox Code Playgroud)

设置职位

此部分有 5 个职位。有些接受参数,有些则不接受。我不会在这里解释所有细节,但如果您需要详细信息,我会链接到相应的存储库。

  1. 检查您的代码,以便工作流程可以访问它, https://github.com/actions/checkout
name:  Get latest code
uses: actions/checkout@v2
Run Code Online (Sandbox Code Playgroud)
  1. 设置临时 PHP 环境,以便您可以运行 Composer 之类的东西,https://github.com/shivammathur/setup-php。请务必在此处设置您的 PHP 版本,否则在安装具有意外 PHP 版本的 Composer 软件包时可能会遇到问题。
name: Setup PHP
uses: shivammathur/setup-php@v2
with:
  php-version: 7.2
Run Code Online (Sandbox Code Playgroud)
  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-
Run Code Online (Sandbox Code Playgroud)
  1. composer.json从和文件安装依赖项composer.lock 。
name: Install dependencies
run: composer install --prefer-dist --no-progress
Run Code Online (Sandbox Code Playgroud)
  1. 将您的代码部署到远程共享托管站点 https://github.com/SamKirkland/FTP-Deploy-Action。${{ secrets.ftp_username }}注意和的使用${{ secrets.ftp_password }}。这些是在您的存储库的机密部分中设置的。请参阅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/
Run Code Online (Sandbox Code Playgroud)

最终文件

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/
Run Code Online (Sandbox Code Playgroud)

运行工作流程

  1. 将.github\workflows\master.yml和其他内容(如果适用)签入您的 GitHub 存储库。如果没有签入这些文件,当您将更改推送到分支时,什么也不会发生。

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

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

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

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

祝你好运! 节点运行