GitHub Action 自动部署BuildAdmin后端框架到服务器

Workflows:

name: CI

on:
  push:
    # 仅在 main 分支和 v2 分支 push 时触发
    branches:
      - main
      - v2
    # 可手动触发
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      # 服务器目标路径
      TARGET_PATH: '/www/wwwroot/Example.com'
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      # 安装 Composer依赖
      - name: Install PhpDepend
        run: |
          composer install
          ls -la

      # 安装 Npm包
      - name: Install Npm
        run: |
          cd web
          npm install
          ls -la

      # 删除某些目录/文件(这些目录文件保持和代码仓库一致,具体看业务)
      - name: Set Dir Permissions
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.REMOTE_HOST }}
          username: ${{ secrets.REMOTE_USER }}
          key: ${{ secrets.REMOTE_KEY }}
          port: ${{ secrets.REMOTE_PORT }}
          script: |
            rm -rf /www/wwwroot/Example.cn/app
            rm -rf /www/wwwroot/Example.cn/config
            rm -rf /www/wwwroot/Example.cn/database
            rm -rf /www/wwwroot/Example.cn/extend
            rm -rf /www/wwwroot/Example.cn/public/assets
            rm -rf /www/wwwroot/Example.cn/web/src
            rm  /www/wwwroot/Example.cn/public/index.html

      #部署全部文件
      - name: Deploy ALL File
        uses: easingthemes/ssh-deploy@main
        with:
          # 服务器地址
          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
          # 服务器用户名
          REMOTE_USER: ${{ secrets.REMOTE_USER }}
          # 服务器端口
          REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
          # 服务器秘钥
          SSH_PRIVATE_KEY: ${{ secrets.REMOTE_KEY }}
          # Scp参数 --delete:删除目标目录中源目录中不存在的文件,使目标目录与源目录完全同步
          #          ARGS: '-avz --delete'
          # 配置忽略文件
          EXCLUDE: '.git,.github,.gitignore,.gitattributes,.vscode'
          # 本地文件夹
          SOURCE: '.'
          # 服务器文件夹
          TARGET: $TARGET_PATH


      # 如果使用的宝塔,可以使用下面的Action给文件设置www权限。
      - name: Set Dir Permissions
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.REMOTE_HOST }}
          username: ${{ secrets.REMOTE_USER }}
          key: ${{ secrets.REMOTE_KEY }}
          port: ${{ secrets.REMOTE_PORT }}
          # 设置文件夹权限
          script: |
            chown -R www:www '/www/wwwroot/Example.com'
            chmod -R 755 '/www/wwwroot/Example.com'

a967444861162428

GitHub变量配置:

f1d3d38da0162233

THE END
喜欢就支持一下吧
点赞0 分享