如何使用github操作部署laravel应用程序

时间:2020-07-14 10:05:51

标签: php laravel deployment github-actions

我正在尝试使用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文件。 Deployment error

我尝试ls来查看我的回购协议是否也签出,但是没有。

请帮助。

2 个答案:

答案 0 :(得分:1)

您没有按照教程设置服务器

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

完成所有这些步骤后,将Laravel应用程序安装到/var/www/html中,并签出deploy分支。如果尚不存在,可以执行git checkout production && git checkout -b deploy来创建它。

您必须在服务器上运行一次,然后检出包含部署脚本server_deploy.sh的deploy分支

答案 1 :(得分:1)

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