122 lines
4.7 KiB
Go
122 lines
4.7 KiB
Go
name: Go Build & Release
|
||
on:
|
||
# push:
|
||
# branches: [main]
|
||
workflow_dispatch:
|
||
inputs:
|
||
servicePort:
|
||
description: '服务启动端口'
|
||
required: true
|
||
default: 8080
|
||
type: number
|
||
|
||
# 仅保留必要权限,和你最初一致
|
||
permissions:
|
||
contents: read
|
||
actions: read
|
||
|
||
env:
|
||
# 完全还原你最初的环境变量
|
||
CGO_ENABLED: 0
|
||
GO111MODULE: on
|
||
GOSUMDB: off
|
||
QINIU_REMOTE_DIR: releases/
|
||
|
||
jobs:
|
||
build-and-upload-qiniu:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
# 修复checkout:还原你最初的极简配置+补全鉴权,无任何多余配置
|
||
- uses: actions/checkout@v4
|
||
with:
|
||
fetch-depth: 1 # 和你最初一致,仅拉取最新提交
|
||
token: ${{ github.token }} # 仅加这一行鉴权,解决私有仓库克隆
|
||
|
||
# 生成版本号:完全还原你最初的逻辑,无cd无绝对路径
|
||
- name: 生成构建版本号
|
||
id: set-version
|
||
run: |
|
||
VERSION="v$(git rev-parse --short=8 HEAD)"
|
||
echo "build_version=${VERSION}" >> $GITHUB_OUTPUT
|
||
echo "构建版本号:${VERSION}" >> $GITHUB_STEP_SUMMARY
|
||
shell: bash
|
||
|
||
# 缓存Go依赖:完全和你最初一致
|
||
- name: 缓存Go依赖
|
||
uses: actions/cache@v4
|
||
with:
|
||
path: |
|
||
~/go/pkg/mod
|
||
~/.cache/go-build
|
||
key: ${{ runner.os }}-go-${{ hashFiles('**/go.mod', '**/go.sum') }}
|
||
restore-keys: |
|
||
${{ runner.os }}-go-
|
||
fail-on-cache-miss: false
|
||
|
||
# 配置Go环境:完全和你最初一致
|
||
- name: 配置Go 1.25环境
|
||
uses: actions/setup-go@v5
|
||
with:
|
||
go-version: '1.25'
|
||
cache: true
|
||
|
||
# 预下载依赖:完全和你最初一致,无cd
|
||
- name: 预下载Go依赖
|
||
run: go mod download -x
|
||
shell: bash
|
||
|
||
# 编译服务:完全还原你最初的逻辑,相对路径build,无任何绝对路径
|
||
- name: 编译Logic服务
|
||
run: |
|
||
mkdir -p build
|
||
BIN_NAME="logic_${{ steps.set-version.outputs.build_version }}"
|
||
go build -v \
|
||
-p=4 \
|
||
-trimpath \
|
||
-buildvcs=false \
|
||
-ldflags "-s -w -buildid= -extldflags '-static'" \
|
||
-o ./build/${BIN_NAME} \
|
||
./logic
|
||
if [ ! -f ./build/${BIN_NAME} ]; then
|
||
echo "❌ 编译失败:产物${BIN_NAME}不存在"
|
||
exit 1
|
||
fi
|
||
ls -lh ./build/
|
||
echo "产物名称:${BIN_NAME}" >> $GITHUB_STEP_SUMMARY
|
||
shell: bash
|
||
|
||
# 核心修复:七牛云上传改回你最初的相对路径build,删除所有$GITHUB_WORKSPACE
|
||
- name: 上传产物到七牛云
|
||
uses: cumt-robin/upload-to-qiniu-action@v1
|
||
with:
|
||
access_key: ${{ secrets.QINIU_AK }}
|
||
secret_key: ${{ secrets.QINIU_SK }}
|
||
bucket: ${{ secrets.QINIU_BUCKET_NAME }}
|
||
region: z2
|
||
local_dir: build # 还原你最初的写法,绝对正确
|
||
remote_dir: ${{ env.QINIU_REMOTE_DIR }}
|
||
overwrite: true
|
||
|
||
# 打印信息:完全还原你最初的逻辑,无cd无绝对路径
|
||
- name: 打印构建完成信息
|
||
run: |
|
||
BIN_NAME="logic_${{ steps.set-version.outputs.build_version }}"
|
||
CDN_URL="https://${{ secrets.QINIU_CDN_DOMAIN }}/${{ env.QINIU_REMOTE_DIR }}${BIN_NAME}"
|
||
echo "======================================"
|
||
echo "✅ 构建&七牛云上传完成!"
|
||
echo "版本号:${{ steps.set-version.outputs.build_version }}"
|
||
echo "触发方式:${{ github.event_name == 'workflow_dispatch' && '手动触发' || '代码推送' }}"
|
||
echo "服务端口:${{ github.event.inputs.servicePort || 8080 }}"
|
||
echo "七牛云CDN地址:${CDN_URL}"
|
||
echo "启动命令:./${BIN_NAME} -port=${{ github.event.inputs.servicePort || 8080 }}"
|
||
echo "对应Commit:${{ github.sha }}"
|
||
echo "======================================"
|
||
echo "## ✅ 构建&分发完成" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 版本号:${{ steps.set-version.outputs.build_version }}" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 触发方式:${{ github.event_name == 'workflow_dispatch' && '手动触发' || '代码推送' }}" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 服务端口:${{ github.event.inputs.servicePort || 8080 }}" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 七牛云CDN地址:[${CDN_URL}](${CDN_URL})" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 启动命令:`./${BIN_NAME} -port=${{ github.event.inputs.servicePort || 8080 }}`" >> $GITHUB_STEP_SUMMARY
|
||
echo "- 对应Commit:[${{ github.sha }}](https://github.com/${{ github.repository }}/commit/${{ github.sha }})" >> $GITHUB_STEP_SUMMARY
|
||
shell: bash
|