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'
GitHub变量配置:
THE END