diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index e558e49..8ae80c6 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -1,28 +1,161 @@ -# This workflow will build a golang project -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go - -name: Go - -on: +name: Epic Go Build & Deploy +run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀 +on: push: - branches: [ $default-branch ] + branches: [ main, master, develop ] pull_request: - branches: [ $default-branch ] + branches: [ main, master ] jobs: - build: runs-on: gitea_labels steps: - uses: actions/checkout@v4 - - name: Set up Go - uses: actions/setup-go@v4 - with: - go-version: '1.20' - - - name: Build - run: go build -v ./... - - - name: Test - run: go test -v ./... \ No newline at end of file + - 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 + + # 显示当前目录和文件 + echo "当前工作目录: $(pwd)" + echo "目录内容:" + ls -la + + # 检查go.mod文件 + if [ -f "go.mod" ]; then + echo "✅ 找到go.mod文件" + cat go.mod | head -5 + else + echo "❌ 未找到go.mod文件" + exit 1 + fi + + # 设置Go模块环境 + 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 + + - 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 "📦 部署包已准备完成" \ No newline at end of file