From ee88885d6bf30c430a27f7a82bd948da7f14bb7e Mon Sep 17 00:00:00 2001 From: hu xiaotong <416314413@163.com> Date: Thu, 26 Jun 2025 13:54:19 +0800 Subject: [PATCH] =?UTF-8?q?ci:=20=E6=B7=BB=E5=8A=A0=20Gitea=20Actions=20?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 ci.yaml 文件,定义 Gitea Actions 示例 --- .gitea/workflows/ci.yaml | 228 ++++----------------------------------- 1 file changed, 22 insertions(+), 206 deletions(-) diff --git a/.gitea/workflows/ci.yaml b/.gitea/workflows/ci.yaml index b518e31..d7d15fe 100644 --- a/.gitea/workflows/ci.yaml +++ b/.gitea/workflows/ci.yaml @@ -1,212 +1,28 @@ -name: Epic Go Build & Deploy -run-name: ${{ gitea.actor }} 正在构建 Epic Go 项目 🚀 -on: +# 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: push: - branches: [ main, master, develop ] + branches: [ $default-branch ] pull_request: - branches: [ main, master ] + branches: [ $default-branch ] jobs: + build: - runs-on: gitea_labels + runs-on: ubuntu-latest 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 "📦 部署包已准备完成" \ No newline at end of file + - 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