ci: 添加 Epic UI 构建和部署工作流
- 新增 CI/CD 工作流文件,实现前端项目的自动构建和部署 - 支持 main、master 和 develop 分支的自动构建- 包含代码检出、环境安装、依赖管理、项目构建等步骤 - 实现构建产物的自动部署和 Docker 容器重启
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
name: Epic Go Build & Deploy
|
||||
run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀
|
||||
name: Epic UI Build & Deploy
|
||||
run-name: ${{ gitea.actor }} 正在构建 Epic UI 前端项目 🚀
|
||||
on:
|
||||
push:
|
||||
branches: [ main, master, develop ]
|
||||
@@ -48,27 +48,25 @@ jobs:
|
||||
echo "✅ 代码检出成功,分支和提交校验通过"
|
||||
ls -la
|
||||
|
||||
- name: 安装Go环境
|
||||
- name: 安装Node.js环境
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔧 安装Go 1.22环境..."
|
||||
if [ -x /usr/local/go/bin/go ]; then
|
||||
echo "✅ Go已安装: $(/usr/local/go/bin/go version)"
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
echo "🔧 安装Node.js环境..."
|
||||
if command -v node &> /dev/null; then
|
||||
echo "✅ Node.js已安装: $(node --version)"
|
||||
echo "✅ npm已安装: $(npm --version)"
|
||||
else
|
||||
echo "📥 下载并安装Go..."
|
||||
GO_VERSION="1.22.0"
|
||||
GO_ARCH="linux-amd64"
|
||||
echo "📥 下载并安装Node.js..."
|
||||
NODE_VERSION="18.19.0"
|
||||
NODE_ARCH="linux-x64"
|
||||
MIRRORS=(
|
||||
"https://mirrors.aliyun.com/golang/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
"https://mirrors.huaweicloud.com/golang/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
"https://mirrors.tencent.com/go/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
"https://go.dev/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
"https://mirrors.aliyun.com/nodejs-release/v${NODE_VERSION}/node-v${NODE_VERSION}-${NODE_ARCH}.tar.xz"
|
||||
"https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-${NODE_ARCH}.tar.xz"
|
||||
)
|
||||
DOWNLOAD_SUCCESS=false
|
||||
for mirror in "${MIRRORS[@]}"; do
|
||||
echo "尝试从镜像下载: $mirror"
|
||||
if wget -q --timeout=30 --tries=3 "$mirror" -O go.tar.gz; then
|
||||
if wget -q --timeout=30 --tries=3 "$mirror" -O node.tar.xz; then
|
||||
echo "✅ 下载成功: $mirror"
|
||||
DOWNLOAD_SUCCESS=true
|
||||
break
|
||||
@@ -81,81 +79,95 @@ jobs:
|
||||
echo "❌ 所有镜像源下载失败"
|
||||
exit 1
|
||||
fi
|
||||
echo "解压Go到/usr/local..."
|
||||
tar -C /usr/local -xzf go.tar.gz
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
export GOROOT=/usr/local/go
|
||||
export GOPATH=$HOME/go
|
||||
echo "验证Go安装..."
|
||||
/usr/local/go/bin/go version
|
||||
rm go.tar.gz
|
||||
echo "✅ Go安装完成"
|
||||
echo "解压Node.js到/usr/local..."
|
||||
tar -C /usr/local -xJf node.tar.xz --strip-components=1
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
echo "验证Node.js安装..."
|
||||
node --version
|
||||
npm --version
|
||||
rm node.tar.xz
|
||||
echo "✅ Node.js安装完成"
|
||||
fi
|
||||
|
||||
- name: 检查Go环境
|
||||
- name: 检查Node.js环境
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔍 检查Go环境..."
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
go version
|
||||
go env GOPATH
|
||||
go env GOROOT
|
||||
echo "🔍 检查Node.js环境..."
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
node --version
|
||||
npm --version
|
||||
echo "Node.js路径: $(which node)"
|
||||
echo "npm路径: $(which npm)"
|
||||
|
||||
- name: 安装pnpm
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📦 安装pnpm包管理器..."
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
if command -v pnpm &> /dev/null; then
|
||||
echo "✅ pnpm已安装: $(pnpm --version)"
|
||||
else
|
||||
echo "📥 安装pnpm..."
|
||||
npm install -g pnpm
|
||||
echo "✅ pnpm安装完成: $(pnpm --version)"
|
||||
fi
|
||||
|
||||
- name: 下载依赖
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📦 下载Go模块依赖..."
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
echo "📦 下载前端项目依赖..."
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
echo "当前工作目录: $(pwd)"
|
||||
echo "目录内容:"
|
||||
ls -la
|
||||
if [ -f "go.mod" ]; then
|
||||
echo "✅ 找到go.mod文件"
|
||||
cat go.mod | head -5
|
||||
if [ -f "package.json" ]; then
|
||||
echo "✅ 找到package.json文件"
|
||||
cat package.json | head -10
|
||||
else
|
||||
echo "❌ 未找到go.mod文件"
|
||||
echo "❌ 未找到package.json文件"
|
||||
exit 1
|
||||
fi
|
||||
export GO111MODULE=on
|
||||
export GOPROXY=https://goproxy.cn,direct
|
||||
echo "Go环境变量:"
|
||||
echo "GOPROXY: $GOPROXY"
|
||||
echo "GO111MODULE: $GO111MODULE"
|
||||
go mod download
|
||||
echo "✅ 依赖下载完成"
|
||||
echo "已下载的模块:"
|
||||
go list -m all | head -10
|
||||
echo "使用pnpm安装依赖..."
|
||||
pnpm install
|
||||
echo "✅ 依赖安装完成"
|
||||
|
||||
- name: 验证依赖
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔍 验证Go模块..."
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
go mod verify
|
||||
echo "✅ 模块验证完成"
|
||||
echo "🔍 验证项目依赖..."
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
pnpm list --depth=0
|
||||
echo "✅ 依赖验证完成"
|
||||
|
||||
- name: 构建项目
|
||||
shell: bash
|
||||
run: |
|
||||
echo "🔨 开始构建 Epic Go 项目..."
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
go build -v -o epic-game-service main.go
|
||||
echo "🔨 开始构建 Epic UI 前端项目..."
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
pnpm build
|
||||
echo "✅ 构建完成"
|
||||
|
||||
- name: 检查构建产物
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📦 构建产物信息:"
|
||||
ls -la epic-game-service
|
||||
echo "文件大小: $(du -h epic-game-service | cut -f1)"
|
||||
if [ -d "dist" ]; then
|
||||
echo "✅ 找到dist目录"
|
||||
ls -la dist/
|
||||
echo "dist目录大小: $(du -sh dist | cut -f1)"
|
||||
else
|
||||
echo "❌ 未找到dist目录"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: 显示项目信息
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📋 项目信息:"
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
echo "Go 版本: $(go version)"
|
||||
echo "模块名称: $(go list -m)"
|
||||
export PATH=$PATH:/usr/local/bin
|
||||
echo "Node.js 版本: $(node --version)"
|
||||
echo "npm 版本: $(npm --version)"
|
||||
echo "pnpm 版本: $(pnpm --version)"
|
||||
echo "构建时间: $(date)"
|
||||
echo "分支: ${{ gitea.ref }}"
|
||||
echo "提交: ${{ gitea.sha }}"
|
||||
@@ -168,22 +180,22 @@ jobs:
|
||||
echo "工作目录: ${{ gitea.workspace }}"
|
||||
echo "任务状态: ${{ job.status }}"
|
||||
mkdir -p deploy
|
||||
cp epic-game-service deploy/
|
||||
cp -r manifest deploy/
|
||||
cp -r dist/* deploy/
|
||||
echo "📦 部署包已准备完成"
|
||||
|
||||
- name: 复制构建产物到目标目录并重命名
|
||||
- name: 复制构建产物到目标目录
|
||||
shell: bash
|
||||
run: |
|
||||
echo "📤 复制构建产物到 /opt/dockeropt/epic-go 并重命名为 main ..."
|
||||
mkdir -p /opt/dockeropt/epic-go
|
||||
cp epic-game-service /opt/dockeropt/epic-go/main
|
||||
echo "✅ 构建产物已复制并重命名为 /opt/dockeropt/epic-go/main"
|
||||
ls -l /opt/dockeropt/epic-go
|
||||
echo "📤 复制构建产物到 /opt/dockeropt/epic-ui ..."
|
||||
mkdir -p /opt/dockeropt/epic-ui
|
||||
cp -r dist/* /opt/dockeropt/epic-ui/
|
||||
echo "✅ 构建产物已复制到 /opt/dockeropt/epic-ui"
|
||||
ls -la /opt/dockeropt/epic-ui/
|
||||
|
||||
- name: 重启 Docker 容器
|
||||
shell: bash
|
||||
run: |
|
||||
echo "♻️ 重启 epic-go 容器..."
|
||||
echo "♻️ 重启 epic-ui 容器..."
|
||||
if ! command -v docker &> /dev/null; then
|
||||
if command -v apt-get &> /dev/null; then
|
||||
apt-get update && apt-get install -y docker.io
|
||||
@@ -197,5 +209,5 @@ jobs:
|
||||
fi
|
||||
fi
|
||||
docker ps -a
|
||||
docker restart epic-go
|
||||
echo "✅ epic-go 容器已重启"
|
||||
docker restart epic-ui
|
||||
echo "✅ epic-ui 容器已重启"
|
||||
Reference in New Issue
Block a user