ci: 添加 Gitea Actions 示例工作流

- 新增 ci.yaml 文件,定义 Gitea Actions 示例
This commit is contained in:
hu xiaotong
2025-06-26 13:43:02 +08:00
parent b127e23c15
commit ee313a8133

View File

@@ -1,6 +1,6 @@
name: Epic Go Build & Deploy
run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀
on:
on:
push:
branches: [ main, master, develop ]
pull_request:
@@ -10,11 +10,78 @@ jobs:
build:
runs-on: gitea_labels
steps:
- name: 安装Node.js环境
run: |
echo "🔧 安装Node.js环境..."
# 检查是否已安装Node.js
if command -v node &> /dev/null; then
echo "✅ Node.js已安装: $(node --version)"
echo "✅ npm已安装: $(npm --version)"
else
echo "📥 下载并安装Node.js..."
# 下载Node.js 18 LTS - 使用国内镜像
NODE_VERSION="18.20.0"
NODE_ARCH="linux-x64"
# 尝试多个国内镜像源
NODE_MIRRORS=(
"https://npmmirror.com/mirrors/node/v${NODE_VERSION}/node-v${NODE_VERSION}-${NODE_ARCH}.tar.xz"
"https://mirrors.huaweicloud.com/nodejs/v${NODE_VERSION}/node-v${NODE_VERSION}-${NODE_ARCH}.tar.xz"
"https://mirrors.tencent.com/nodejs/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"
)
NODE_DOWNLOAD_SUCCESS=false
for mirror in "${NODE_MIRRORS[@]}"; do
echo "尝试从镜像下载Node.js: $mirror"
if wget -q --timeout=30 --tries=3 "$mirror" -O node.tar.xz; then
echo "✅ Node.js下载成功: $mirror"
NODE_DOWNLOAD_SUCCESS=true
break
else
echo "❌ Node.js下载失败: $mirror"
continue
fi
done
if [ "$NODE_DOWNLOAD_SUCCESS" = false ]; then
echo "❌ 所有Node.js镜像源下载失败"
exit 1
fi
# 解压到/usr/local
echo "解压Node.js到/usr/local..."
tar -C /usr/local -xJf node.tar.xz
# 创建软链接
ln -sf /usr/local/node-v${NODE_VERSION}-${NODE_ARCH}/bin/node /usr/local/bin/node
ln -sf /usr/local/node-v${NODE_VERSION}-${NODE_ARCH}/bin/npm /usr/local/bin/npm
# 设置环境变量
export PATH=$PATH:/usr/local/node-v${NODE_VERSION}-${NODE_ARCH}/bin
# 验证安装
echo "验证Node.js安装..."
/usr/local/bin/node --version
/usr/local/bin/npm --version
# 设置npm国内镜像
/usr/local/bin/npm config set registry https://registry.npmmirror.com
# 清理下载文件
rm node.tar.xz
echo "✅ Node.js安装完成"
fi
- name: 检出代码
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: 显示工作目录
run: |
echo "📥 代码检出完成"
@@ -22,7 +89,7 @@ jobs:
echo "工作目录: ${{ gitea.workspace }}"
echo "目录内容:"
ls -la
- name: 安装Go环境
run: |
echo "🔧 安装Go 1.22环境..."
@@ -32,11 +99,11 @@ jobs:
echo "✅ Go已安装: $(go version)"
else
echo "📥 下载并安装Go..."
# 下载Go 1.22 - 使用国内镜像
GO_VERSION="1.22.0"
GO_ARCH="linux-amd64"
# 尝试多个国内镜像源
MIRRORS=(
"https://golang.google.cn/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
@@ -45,9 +112,9 @@ jobs:
"https://mirrors.tencent.com/go/go${GO_VERSION}.${GO_ARCH}.tar.gz"
"https://go.dev/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
)
DOWNLOAD_SUCCESS=false
for mirror in "${MIRRORS[@]}"; do
echo "尝试从镜像下载: $mirror"
if wget -q --timeout=30 --tries=3 "$mirror" -O go.tar.gz; then
@@ -59,31 +126,31 @@ jobs:
continue
fi
done
if [ "$DOWNLOAD_SUCCESS" = false ]; then
echo "❌ 所有镜像源下载失败"
exit 1
fi
# 解压到/usr/local
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安装完成"
fi
- name: 检查Go环境
run: |
echo "🔍 检查Go环境..."
@@ -91,7 +158,7 @@ jobs:
go version
go env GOPATH
go env GOROOT
- name: 下载依赖
run: |
echo "📦 下载Go模块依赖..."
@@ -126,28 +193,28 @@ jobs:
# 显示下载的模块
echo "已下载的模块:"
go list -m all | head -10
- name: 验证依赖
run: |
echo "🔍 验证Go模块..."
export PATH=$PATH:/usr/local/go/bin
go mod verify
echo "✅ 模块验证完成"
- name: 构建项目
run: |
echo "🔨 开始构建 Epic Go 项目..."
export PATH=$PATH:/usr/local/go/bin
go build -v -o epic-game-service main.go
echo "✅ 构建完成"
- name: 检查构建产物
run: |
echo "📦 构建产物信息:"
ls -la epic-game-service
file epic-game-service
echo "文件大小: $(du -h epic-game-service | cut -f1)"
- name: 显示项目信息
run: |
echo "📋 项目信息:"
@@ -157,7 +224,7 @@ jobs:
echo "构建时间: $(date)"
echo "分支: ${{ gitea.ref }}"
echo "提交: ${{ gitea.sha }}"
- name: 准备部署
run: |
echo "🚀 准备部署..."