This commit is contained in:
104
.github/workflows/nextjs.yml
vendored
Normal file
104
.github/workflows/nextjs.yml
vendored
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
name: 部署 Next.js 站点到 Gitea
|
||||||
|
|
||||||
|
# 定义触发工作流程的条件
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# 当推送到 "main" 分支时触发工作流程
|
||||||
|
branches: ["main"]
|
||||||
|
# 手动触发工作流程
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
#permissions:
|
||||||
|
# contents: read
|
||||||
|
# pages: write
|
||||||
|
# id-token: write
|
||||||
|
|
||||||
|
# 设置工作流程中所需的权限
|
||||||
|
permissions:
|
||||||
|
# 只读权限用于读取仓库内容
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
#concurrency:
|
||||||
|
# group: "pages"
|
||||||
|
# cancel-in-progress: false
|
||||||
|
|
||||||
|
# 设置工作流的并发控制
|
||||||
|
concurrency:
|
||||||
|
group: "deploy" # 定义并发组名称为 "deploy"
|
||||||
|
cancel-in-progress: false # 不取消正在运行的工作流
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
# 指定在最新的 Ubuntu 环境下运行
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
# 主要执行的步骤
|
||||||
|
steps:
|
||||||
|
# 第一步:检出(checkout)代码
|
||||||
|
- name: 检出代码
|
||||||
|
# 使用 GitHub 官方的 actions/checkout@v4
|
||||||
|
#uses: actions/checkout@v4
|
||||||
|
uses: https://git.aoun.ltd/actions/checkout@v4
|
||||||
|
|
||||||
|
# 第二步:将代码通过 SCP 传输到群晖服务器上
|
||||||
|
- name: 🚚 将项目文件复制到目标服务器
|
||||||
|
# 使用 appleboy 的 SCP 动作传输文件到远程服务器
|
||||||
|
#uses: appleboy/scp-action@v0.1.7
|
||||||
|
uses: https://git.aoun.ltd/298977887/scp-action@v0.1.7
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SYNOLOGY_HOST }}
|
||||||
|
username: ${{ secrets.SYNOLOGY_USERNAME }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
port: ${{ secrets.SYNOLOGY_SSH_PORT }}
|
||||||
|
source: "."
|
||||||
|
target: "/volume2/docker/aounsaas/"
|
||||||
|
|
||||||
|
- name: 🛠️ 在群晖上构建并运行Docker镜像
|
||||||
|
#uses: appleboy/ssh-action@master
|
||||||
|
# 使用 appleboy 的 SSH 动作来连接服务器并运行命令
|
||||||
|
#uses: appleboy/ssh-action@v1.0.3
|
||||||
|
#使用自定义的 SSH 动作
|
||||||
|
uses: https://git.aoun.ltd/298977887/ssh-action@v1.0.3
|
||||||
|
with:
|
||||||
|
host: ${{ secrets.SYNOLOGY_HOST }}
|
||||||
|
username: ${{ secrets.SYNOLOGY_USERNAME }}
|
||||||
|
key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
|
port: ${{ secrets.SYNOLOGY_SSH_PORT }}
|
||||||
|
script: |
|
||||||
|
# 通过 set -e 使脚本在遇到错误时立即停止
|
||||||
|
set -e
|
||||||
|
echo "🚀 开始执行部署..."
|
||||||
|
#cd /volume1/docker/aounsaas
|
||||||
|
cd /volume2/docker/aounsaas
|
||||||
|
echo "🔧 正在构建临时镜像..."
|
||||||
|
#/usr/local/bin/docker build -t aounsaas-temp .
|
||||||
|
if /usr/local/bin/docker build -t aounsaas-temp .; then
|
||||||
|
echo "✅ 镜像构建成功,开始更新容器..."
|
||||||
|
echo "🔧 正在停止旧容器..."
|
||||||
|
/usr/local/bin/docker stop aounsaas || true
|
||||||
|
echo "🔧 正在删除旧容器..."
|
||||||
|
/usr/local/bin/docker rm aounsaas || true
|
||||||
|
echo "🔧 正在删除旧镜像..."
|
||||||
|
/usr/local/bin/docker rmi aounsaas || true
|
||||||
|
echo "🔧 重命名新镜像..."
|
||||||
|
/usr/local/bin/docker tag aounsaas-temp aounsaas
|
||||||
|
/usr/local/bin/docker rmi aounsaas-temp
|
||||||
|
echo "🚀 正在运行新容器..."
|
||||||
|
#/usr/local/bin/docker run -d -p 3300:3000 --name aounsaas -e TZ=Asia/Shanghai aounsaas
|
||||||
|
# 启动新的容器,使用指定的环境变量和端口映射,并设置自动重启功能
|
||||||
|
# 容器名称为 aounsaas,镜像名称为 aounsaas
|
||||||
|
# 自动重启容器,除非手动停止
|
||||||
|
# 将本地 3300 端口映射到容器的 3000 端口
|
||||||
|
# 设置时区为上海
|
||||||
|
# 设置 API 地址,最后一行没有反斜杠
|
||||||
|
# 使用 aounsaas 镜像运行容器
|
||||||
|
/usr/local/bin/docker run -d \
|
||||||
|
--name aounsaas \
|
||||||
|
--restart unless-stopped \
|
||||||
|
-p 3300:3000 \
|
||||||
|
-e TZ=Asia/Shanghai \
|
||||||
|
-e NEXT_PUBLIC_API=https://emoji.aoun.ltd/ \
|
||||||
|
aounsaas
|
||||||
|
echo "🎉 部署完成!"
|
||||||
|
else
|
||||||
|
echo "❌ 镜像构建失败!,保留旧容器运行。"
|
||||||
|
fi
|
||||||
26
rules/nextjs.mdc
Normal file
26
rules/nextjs.mdc
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
---
|
||||||
|
description:
|
||||||
|
globs:
|
||||||
|
alwaysApply: true
|
||||||
|
---
|
||||||
|
Always respond in 中文
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
### 开发规范
|
||||||
|
- 现在已启用TypeScript严格模式,不要出现类型错误,禁止出现未使用变量
|
||||||
|
- UI使用Ant Design 5.X 注意兼容性问题
|
||||||
|
- 使用现代简约。扁平化的设计来制作设计UI/UX
|
||||||
|
- 开发时,不要画蛇添足! 禁止使用any类型!
|
||||||
|
- 必须包含三级注释体系:
|
||||||
|
▸ 文件头注释(作者:阿瑞/功能/版本)
|
||||||
|
▸ 模块级注释(逻辑分段说明)
|
||||||
|
▸ 关键代码行注释(复杂逻辑解释)
|
||||||
|
- 当前在Windows 11环境下使用PowerShell终端进行开发,禁用类Unix命令,使用`Get-ChildItem` 替代ls ;
|
||||||
|
- 已使用pnpm run dev启动了项目,禁止重复运行启动命令!
|
||||||
|
- 当修改超过300行的文件时,确保每次修改代码行数 ≤ 100行,分多次修改。
|
||||||
|
|
||||||
|
## 补充
|
||||||
|
1. 适当使用useMemo、React.memo来优化性能和防止不必要的重新渲染,但是要注意防止React.memo过度使用、useCallback依赖项设置错误的问题,要合理使用。
|
||||||
|
2. 当执行终端命令时,先解释这个命令的作用;如果要使用pnpm安装包时,先解释为什么需要这个包;
|
||||||
|
|
||||||
Reference in New Issue
Block a user