Files
epic-go/.gitea/workflows/ci.yaml
hu xiaotong 69c95de5c5 ci: 添加 Gitea Actions 示例工作流
- 新增 ci.yaml 文件,定义 Gitea Actions 示例
2025-06-26 13:50:56 +08:00

212 lines
6.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 }}"
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环境..."
# 检查是否已安装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 "📦 部署包已准备完成"