diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index dba7fb2..b518e31 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -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,86 +10,59 @@ 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 "📥 代码检出完成" + echo "📥 检出代码到工作目录..." + + # 显示当前环境信息 echo "当前目录: $(pwd)" echo "工作目录: ${{ gitea.workspace }}" + echo "仓库: ${{ gitea.repository }}" + echo "分支: ${{ gitea.ref }}" + echo "提交: ${{ gitea.sha }}" + + # 检查是否已经有代码 + if [ -f "go.mod" ]; then + echo "✅ 代码已存在,go.mod文件找到" + else + echo "📥 需要检出代码..." + + # 如果工作目录存在,使用它 + if [ -n "${{ gitea.workspace }}" ] && [ -d "${{ gitea.workspace }}" ]; then + echo "切换到工作目录: ${{ gitea.workspace }}" + cd "${{ gitea.workspace }}" + else + echo "工作目录不存在,尝试检出到当前目录" + # 尝试从git仓库检出 + if [ -n "${{ gitea.repository }}" ]; then + echo "检出仓库: ${{ gitea.repository }}" + # 使用git clone检出代码 + git clone "https://gitea.com/${{ gitea.repository }}.git" . + + # 切换到指定分支 + if [ -n "${{ gitea.ref }}" ]; then + BRANCH_NAME=$(echo "${{ gitea.ref }}" | sed 's/refs\/heads\///') + echo "切换到分支: $BRANCH_NAME" + git checkout "$BRANCH_NAME" + fi + fi + fi + + # 再次检查 + if [ -f "go.mod" ]; then + echo "✅ 代码检出成功" + else + echo "❌ 代码检出失败" + echo "当前目录内容:" + ls -la + exit 1 + fi + fi + + echo "最终工作目录: $(pwd)" echo "目录内容:" ls -la - + - name: 安装Go环境 run: | echo "🔧 安装Go 1.22环境..." @@ -99,11 +72,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" @@ -112,9 +85,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 @@ -126,31 +99,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环境..." @@ -158,7 +131,7 @@ jobs: go version go env GOPATH go env GOROOT - + - name: 下载依赖 run: | echo "📦 下载Go模块依赖..." @@ -193,28 +166,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 "📋 项目信息:" @@ -224,7 +197,7 @@ jobs: echo "构建时间: $(date)" echo "分支: ${{ gitea.ref }}" echo "提交: ${{ gitea.sha }}" - + - name: 准备部署 run: | echo "🚀 准备部署..." @@ -236,4 +209,4 @@ jobs: mkdir -p deploy cp epic-game-service deploy/ cp -r manifest deploy/ - echo "📦 部署包已准备完成" \ No newline at end of file + echo "📦 部署包已准备完成" \ No newline at end of file