ci: 添加 Gitea Actions 示例工作流

- 新增 ci.yaml 文件,定义 Gitea Actions 示例
This commit is contained in:
hu xiaotong
2025-06-26 13:50:56 +08:00
parent ee313a8133
commit 69c95de5c5

View File

@@ -10,83 +10,56 @@ 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