MIRROR/.github/workflows/nextjs.yml
LIRUI 0a04c408cf
All checks were successful
部署 Next.js 站点到 Gitea / deploy (push) Successful in 5s
0228.1
2025-02-28 17:00:45 +08:00

105 lines
4.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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/mirror/"
- 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/mirror
cd /volume2/docker/mirror
echo "🔧 正在构建临时镜像..."
#/usr/local/bin/docker build -t mirror-temp .
if /usr/local/bin/docker build -t mirror-temp .; then
echo "✅ 镜像构建成功,开始更新容器..."
echo "🔧 正在停止旧容器..."
/usr/local/bin/docker stop mirror || true
echo "🔧 正在删除旧容器..."
/usr/local/bin/docker rm mirror || true
echo "🔧 正在删除旧镜像..."
/usr/local/bin/docker rmi mirror || true
echo "🔧 重命名新镜像..."
/usr/local/bin/docker tag mirror-temp mirror
/usr/local/bin/docker rmi mirror-temp
echo "🚀 正在运行新容器..."
#/usr/local/bin/docker run -d -p 3301:3000 --name mirror -e TZ=Asia/Shanghai mirror
# 启动新的容器,使用指定的环境变量和端口映射,并设置自动重启功能
# 容器名称为 mirror镜像名称为 mirror
# 自动重启容器,除非手动停止
# 将本地 3301 端口映射到容器的 3000 端口
# 设置时区为上海
# 设置 API 地址,最后一行没有反斜杠
# 使用 mirror 镜像运行容器
/usr/local/bin/docker run -d \
--name mirror \
--restart unless-stopped \
-p 3301:3000 \
-e TZ=Asia/Shanghai \
-e NEXT_PUBLIC_API=https://emoji.aoun.ltd/ \
mirror
echo "🎉 部署完成!"
else
echo "❌ 镜像构建失败!,保留旧容器运行。"
fi