【问题标题】:How to deploy laravel application using github action如何使用 github 操作部署 laravel 应用程序
【发布时间】:2020-11-03 15:26:18
【问题描述】:

我正在尝试使用 Github 操作将我的 laravel 应用程序部署到我的服务器以进行构建和测试,然后通过 ssh 进行部署。

我有一个用于开发的主存储库,然后我有一个附加到操作脚本的生产存储库。

我尝试关注this tutorial 进行 github 操作部署。

我的构建工作正常,但在部署时找不到我的部署脚本,即 server_deploy.sh

这是我的 main.yml 文件

name: CD

on:
  push:
    branches: [ production ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        token: ${{ secrets.PUSH_TOKEN }}
    - name: Set up Node
      uses: actions/setup-node@v1
      with:
        node-version: '12.x'
    - run: npm install
    - run: npm run production
    - name: Commit built assets
      run: |
        git config --local user.email "action@github.com"
        git config --local user.name "GitHub Action"
        git checkout -B deploy
        git add -f public/
        git commit -m "Build front-end assets"
        git push -f origin deploy
    - name: Deploy to production
      uses: appleboy/ssh-action@master
      with:
        username: ${{ secrets.SSH_USERNAME }}
        host: ${{ secrets.SSH_HOST }}
        password: ${{ secrets.SSH_PASSWORD }}
        script: 'cd /home/admin/web/case4.example.co/public_html/ && ls && sh server_deploy.sh'

这是我的 server_deploy.sh

#!/bin/sh
set -e

echo "Deploying application ..."

# Enter maintenance mode
(php artisan down --message 'The app is being (quickly!) updated. Please try again in a minute.') || true
    # Update codebase
    git fetch origin deploy
    git reset --hard origin/deploy

    # Install dependencies based on lock file
    composer install --no-interaction --prefer-dist --optimize-autoloader

# Exit maintenance mode
php artisan up

echo "Application deployed!"

但是,当我执行此工作流时,它找不到 server_deploy.sh 文件。

我尝试ls 看看是否连我的仓库都签出了,但没有。

请帮忙。

【问题讨论】:

    标签: php laravel deployment github-actions


    【解决方案1】:

    你没有按照教程设置你的服务器

    请注意,服务器始终位于部署分支上。

    完成所有这些设置后,将您的 Laravel 应用程序安装到 /var/www/html 并签出 deploy 分支。如果它还不存在,你可以通过git checkout production && git checkout -b deploy 来创建它。

    你必须在你的服务器上运行一次并检查包含部署脚本server_deploy.sh的部署分支

    【讨论】:

    • 所以我应该克隆 public_html 目录中的存储库,然后检查部署分支吗?我以为它会自动创建,如果我将.git目录放在public_html中会不会成为安全问题?
    • 您必须设置您的服务器,使.git 目录无法从外部提供/访问。部署脚本取决于您在那里有一个 git 存储库,因为它使用的 git 命令需要一个现有的签出存储库。
    【解决方案2】:

    您需要先登录到您的服务器,然后将server_deploy.sh 上传到您的根文件夹;例如:/var/www/html

    【讨论】:

      猜你喜欢
      • 2021-12-19
      • 2021-12-19
      • 2021-08-22
      • 2021-04-13
      • 2020-10-20
      • 2020-12-03
      • 1970-01-01
      • 2020-09-25
      • 2020-12-03
      相关资源
      最近更新 更多