137 lines
4.3 KiB
Go
137 lines
4.3 KiB
Go
name: Epic Go Build & Deploy
|
|
run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀
|
|
on:
|
|
push:
|
|
branches: [ main, master, develop ]
|
|
pull_request:
|
|
branches: [ main, master ]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: gitea_labels
|
|
steps:
|
|
- name: 检出代码
|
|
run: |
|
|
echo "📥 检出代码到工作目录..."
|
|
echo "当前目录: $(pwd)"
|
|
echo "工作目录: ${{ gitea.workspace }}"
|
|
|
|
- name: 安装Go环境
|
|
run: |
|
|
echo "🔧 安装Go 1.22环境..."
|
|
|
|
# 检查是否已安装Go
|
|
if command -v go &> /dev/null; then
|
|
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"
|
|
"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"
|
|
)
|
|
|
|
DOWNLOAD_SUCCESS=false
|
|
|
|
for mirror in "${MIRRORS[@]}"; do
|
|
echo "尝试从镜像下载: $mirror"
|
|
if wget -q --timeout=30 --tries=3 "$mirror" -O go.tar.gz; then
|
|
echo "✅ 下载成功: $mirror"
|
|
DOWNLOAD_SUCCESS=true
|
|
break
|
|
else
|
|
echo "❌ 下载失败: $mirror"
|
|
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环境..."
|
|
export PATH=$PATH:/usr/local/go/bin
|
|
go version
|
|
go env GOPATH
|
|
go env GOROOT
|
|
|
|
- name: 下载依赖
|
|
run: |
|
|
echo "📦 下载Go模块依赖..."
|
|
export PATH=$PATH:/usr/local/go/bin
|
|
go mod download
|
|
echo "✅ 依赖下载完成"
|
|
|
|
- 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 "📋 项目信息:"
|
|
export PATH=$PATH:/usr/local/go/bin
|
|
echo "Go 版本: $(go version)"
|
|
echo "模块名称: $(go list -m)"
|
|
echo "构建时间: $(date)"
|
|
echo "分支: ${{ gitea.ref }}"
|
|
echo "提交: ${{ gitea.sha }}"
|
|
|
|
- name: 准备部署
|
|
run: |
|
|
echo "🚀 准备部署..."
|
|
echo "运行器操作系统: ${{ runner.os }}"
|
|
echo "工作目录: ${{ gitea.workspace }}"
|
|
echo "任务状态: ${{ job.status }}"
|
|
|
|
# 创建部署包
|
|
mkdir -p deploy
|
|
cp epic-game-service deploy/
|
|
cp -r manifest deploy/
|
|
echo "📦 部署包已准备完成" |