ci: 添加 Gitea Actions 示例工作流
- 新增 ci.yaml 文件,定义 Gitea Actions 示例
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
name: Epic Go Build & Deploy
|
name: Epic Go Build & Deploy
|
||||||
run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀
|
run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ main, master, develop ]
|
branches: [ main, master, develop ]
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -10,86 +10,59 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: gitea_labels
|
runs-on: gitea_labels
|
||||||
steps:
|
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: 检出代码
|
- name: 检出代码
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 1
|
|
||||||
|
|
||||||
- name: 显示工作目录
|
|
||||||
run: |
|
run: |
|
||||||
echo "📥 代码检出完成"
|
echo "📥 检出代码到工作目录..."
|
||||||
|
|
||||||
|
# 显示当前环境信息
|
||||||
echo "当前目录: $(pwd)"
|
echo "当前目录: $(pwd)"
|
||||||
echo "工作目录: ${{ gitea.workspace }}"
|
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 "目录内容:"
|
echo "目录内容:"
|
||||||
ls -la
|
ls -la
|
||||||
|
|
||||||
- name: 安装Go环境
|
- name: 安装Go环境
|
||||||
run: |
|
run: |
|
||||||
echo "🔧 安装Go 1.22环境..."
|
echo "🔧 安装Go 1.22环境..."
|
||||||
@@ -99,11 +72,11 @@ jobs:
|
|||||||
echo "✅ Go已安装: $(go version)"
|
echo "✅ Go已安装: $(go version)"
|
||||||
else
|
else
|
||||||
echo "📥 下载并安装Go..."
|
echo "📥 下载并安装Go..."
|
||||||
|
|
||||||
# 下载Go 1.22 - 使用国内镜像
|
# 下载Go 1.22 - 使用国内镜像
|
||||||
GO_VERSION="1.22.0"
|
GO_VERSION="1.22.0"
|
||||||
GO_ARCH="linux-amd64"
|
GO_ARCH="linux-amd64"
|
||||||
|
|
||||||
# 尝试多个国内镜像源
|
# 尝试多个国内镜像源
|
||||||
MIRRORS=(
|
MIRRORS=(
|
||||||
"https://golang.google.cn/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
"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://mirrors.tencent.com/go/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||||
"https://go.dev/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
"https://go.dev/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||||
)
|
)
|
||||||
|
|
||||||
DOWNLOAD_SUCCESS=false
|
DOWNLOAD_SUCCESS=false
|
||||||
|
|
||||||
for mirror in "${MIRRORS[@]}"; do
|
for mirror in "${MIRRORS[@]}"; do
|
||||||
echo "尝试从镜像下载: $mirror"
|
echo "尝试从镜像下载: $mirror"
|
||||||
if wget -q --timeout=30 --tries=3 "$mirror" -O go.tar.gz; then
|
if wget -q --timeout=30 --tries=3 "$mirror" -O go.tar.gz; then
|
||||||
@@ -126,31 +99,31 @@ jobs:
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ "$DOWNLOAD_SUCCESS" = false ]; then
|
if [ "$DOWNLOAD_SUCCESS" = false ]; then
|
||||||
echo "❌ 所有镜像源下载失败"
|
echo "❌ 所有镜像源下载失败"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 解压到/usr/local
|
# 解压到/usr/local
|
||||||
echo "解压Go到/usr/local..."
|
echo "解压Go到/usr/local..."
|
||||||
tar -C /usr/local -xzf go.tar.gz
|
tar -C /usr/local -xzf go.tar.gz
|
||||||
|
|
||||||
# 设置环境变量
|
# 设置环境变量
|
||||||
export PATH=$PATH:/usr/local/go/bin
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
export GOROOT=/usr/local/go
|
export GOROOT=/usr/local/go
|
||||||
export GOPATH=$HOME/go
|
export GOPATH=$HOME/go
|
||||||
|
|
||||||
# 验证安装
|
# 验证安装
|
||||||
echo "验证Go安装..."
|
echo "验证Go安装..."
|
||||||
/usr/local/go/bin/go version
|
/usr/local/go/bin/go version
|
||||||
|
|
||||||
# 清理下载文件
|
# 清理下载文件
|
||||||
rm go.tar.gz
|
rm go.tar.gz
|
||||||
|
|
||||||
echo "✅ Go安装完成"
|
echo "✅ Go安装完成"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 检查Go环境
|
- name: 检查Go环境
|
||||||
run: |
|
run: |
|
||||||
echo "🔍 检查Go环境..."
|
echo "🔍 检查Go环境..."
|
||||||
@@ -158,7 +131,7 @@ jobs:
|
|||||||
go version
|
go version
|
||||||
go env GOPATH
|
go env GOPATH
|
||||||
go env GOROOT
|
go env GOROOT
|
||||||
|
|
||||||
- name: 下载依赖
|
- name: 下载依赖
|
||||||
run: |
|
run: |
|
||||||
echo "📦 下载Go模块依赖..."
|
echo "📦 下载Go模块依赖..."
|
||||||
@@ -193,28 +166,28 @@ jobs:
|
|||||||
# 显示下载的模块
|
# 显示下载的模块
|
||||||
echo "已下载的模块:"
|
echo "已下载的模块:"
|
||||||
go list -m all | head -10
|
go list -m all | head -10
|
||||||
|
|
||||||
- name: 验证依赖
|
- name: 验证依赖
|
||||||
run: |
|
run: |
|
||||||
echo "🔍 验证Go模块..."
|
echo "🔍 验证Go模块..."
|
||||||
export PATH=$PATH:/usr/local/go/bin
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
go mod verify
|
go mod verify
|
||||||
echo "✅ 模块验证完成"
|
echo "✅ 模块验证完成"
|
||||||
|
|
||||||
- name: 构建项目
|
- name: 构建项目
|
||||||
run: |
|
run: |
|
||||||
echo "🔨 开始构建 Epic Go 项目..."
|
echo "🔨 开始构建 Epic Go 项目..."
|
||||||
export PATH=$PATH:/usr/local/go/bin
|
export PATH=$PATH:/usr/local/go/bin
|
||||||
go build -v -o epic-game-service main.go
|
go build -v -o epic-game-service main.go
|
||||||
echo "✅ 构建完成"
|
echo "✅ 构建完成"
|
||||||
|
|
||||||
- name: 检查构建产物
|
- name: 检查构建产物
|
||||||
run: |
|
run: |
|
||||||
echo "📦 构建产物信息:"
|
echo "📦 构建产物信息:"
|
||||||
ls -la epic-game-service
|
ls -la epic-game-service
|
||||||
file epic-game-service
|
file epic-game-service
|
||||||
echo "文件大小: $(du -h epic-game-service | cut -f1)"
|
echo "文件大小: $(du -h epic-game-service | cut -f1)"
|
||||||
|
|
||||||
- name: 显示项目信息
|
- name: 显示项目信息
|
||||||
run: |
|
run: |
|
||||||
echo "📋 项目信息:"
|
echo "📋 项目信息:"
|
||||||
@@ -224,7 +197,7 @@ jobs:
|
|||||||
echo "构建时间: $(date)"
|
echo "构建时间: $(date)"
|
||||||
echo "分支: ${{ gitea.ref }}"
|
echo "分支: ${{ gitea.ref }}"
|
||||||
echo "提交: ${{ gitea.sha }}"
|
echo "提交: ${{ gitea.sha }}"
|
||||||
|
|
||||||
- name: 准备部署
|
- name: 准备部署
|
||||||
run: |
|
run: |
|
||||||
echo "🚀 准备部署..."
|
echo "🚀 准备部署..."
|
||||||
@@ -236,4 +209,4 @@ jobs:
|
|||||||
mkdir -p deploy
|
mkdir -p deploy
|
||||||
cp epic-game-service deploy/
|
cp epic-game-service deploy/
|
||||||
cp -r manifest deploy/
|
cp -r manifest deploy/
|
||||||
echo "📦 部署包已准备完成"
|
echo "📦 部署包已准备完成"
|
||||||
Reference in New Issue
Block a user