简化 CI: 移除自定义脚本,参考 ServiceDiscovery 的 nuget workflow
Some checks failed
Publish Platform NuGet Packages / build (push) Failing after 30s
Some checks failed
Publish Platform NuGet Packages / build (push) Failing after 30s
This commit is contained in:
parent
7a71ef1daa
commit
96799a16b8
@ -1,37 +0,0 @@
|
|||||||
name: Publish NuGet Packages
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
tags:
|
|
||||||
- "v*"
|
|
||||||
|
|
||||||
env:
|
|
||||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
|
||||||
GITEA_URL: https://gitea.shtao1.cn
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup .NET
|
|
||||||
uses: actions/setup-dotnet@v4
|
|
||||||
with:
|
|
||||||
dotnet-version: "10.0.x"
|
|
||||||
|
|
||||||
- name: Pack Domain
|
|
||||||
if: startsWith(github.ref, "refs/tags/v")
|
|
||||||
run: dotnet pack fengling-platform/Fengling.Platform.Domain/Fengling.Platform.Domain.csproj -c Release -o ./packages
|
|
||||||
|
|
||||||
- name: Pack Infrastructure
|
|
||||||
if: startsWith(github.ref, "refs/tags/v")
|
|
||||||
run: dotnet pack fengling-platform/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj -c Release -o ./packages
|
|
||||||
|
|
||||||
- name: Push to Gitea
|
|
||||||
if: startsWith(github.ref, "refs/tags/v")
|
|
||||||
run: |
|
|
||||||
for pkg in ./packages/*.nupkg; do
|
|
||||||
dotnet nuget push "$pkg" --source "$GITEA_URL/gitea_registry/movingsam/go/__index" --skip-duplicate
|
|
||||||
done
|
|
||||||
@ -1,37 +1,41 @@
|
|||||||
name: Publish NuGet Packages
|
name: Publish Platform NuGet Packages
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [main]
|
branches:
|
||||||
|
- main
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- "v*"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
GITEA_TOKEN: ${{ secrets.GITEATOKEN }}
|
||||||
GITEA_URL: https://gitea.shtao1.cn
|
GITEA_URL: https://gitea.shtao1.cn
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- uses: actions/checkout@v4
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v4
|
uses: actions/setup-dotnet@v4
|
||||||
with:
|
with:
|
||||||
dotnet-version: '10.0'
|
dotnet-version: "10.0.x"
|
||||||
|
|
||||||
- name: Copy NuGet Config
|
- name: Pack Domain
|
||||||
run: cp NuGet.Config ~/.nuget/NuGet/NuGet.Config
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
run: dotnet pack Fengling.Platform.Domain/Fengling.Platform.Domain.csproj -c Release -o ./packages
|
||||||
|
|
||||||
- name: Clean nuget cache
|
- name: Pack Infrastructure
|
||||||
run: dotnet nuget locals all --clear
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
run: dotnet pack Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj -c Release -o ./packages
|
||||||
|
|
||||||
- name: Publish NuGet packages
|
- name: Push to Gitea
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
run: |
|
run: |
|
||||||
./push-platform-nuget.sh all
|
for pkg in ./packages/*.nupkg; do
|
||||||
env:
|
dotnet nuget push "$pkg" \
|
||||||
GITEA_HOST: gitea.shtao1.cn
|
--source "$GITEA_URL/api/packages/fengling/nuget/index.json" \
|
||||||
GITEA_ORG: fengling
|
--api-key "$GITEA_TOKEN" \
|
||||||
GITEA_API_TOKEN: ${{ secrets.GITEA_TOKEN }}
|
--skip-duplicate
|
||||||
|
done
|
||||||
|
|||||||
@ -1,311 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# =============================================================================
|
|
||||||
# Fengling.Platform NuGet 包上传脚本
|
|
||||||
# 用于上传 Fengling.Platform.Domain 和 Fengling.Platform.Infrastructure 到 Gitea NuGet
|
|
||||||
# 支持 CI/CD 集成,自动从 git tag 获取版本
|
|
||||||
# =============================================================================
|
|
||||||
|
|
||||||
# =========================== 环境变量配置 ===========================
|
|
||||||
# CI/CD 时通过环境变量传入,本地可修改默认值
|
|
||||||
|
|
||||||
## TODO: 请在这里填入你的 Gitea API Token,或通过环境变量 GITEA_API_TOKEN 传入
|
|
||||||
#export GITEA_HOST="${GITEA_HOST:-gitea.shtao1.cn}" # Gitea 域名
|
|
||||||
#export GITEA_ORG="${GITEA_ORG:-fengling}" # 组织名称
|
|
||||||
#export GITEA_API_TOKEN="${GITEA_API_TOKEN:-}" # Gitea API Token (必填)
|
|
||||||
#export GITEA_USE_HTTPS="${GITEA_USE_HTTPS:-true}" # 是否使用 HTTPS (外网用 true)
|
|
||||||
# CI/CD 时通过环境变量传入,本地可修改默认值
|
|
||||||
|
|
||||||
export GITEA_HOST="${GITEA_HOST:-gitea.shtao1.cn}" # Gitea 地址 (内网)
|
|
||||||
export GITEA_ORG="${GITEA_ORG:-fengling}" # 组织名称
|
|
||||||
export GITEA_API_TOKEN="${GITEA_API_TOKEN:-}" # Gitea API Token (必填)
|
|
||||||
export GITEA_USE_HTTPS="${GITEA_USE_HTTPS:-true}" # 是否使用 HTTPS (内网用 false)
|
|
||||||
|
|
||||||
# =========================== 内部变量 ===========================
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
NUGET_SOURCE_NAME="gitea"
|
|
||||||
|
|
||||||
# 根据是否使用 HTTPS 构建 URL
|
|
||||||
if [ "$GITEA_USE_HTTPS" = "true" ]; then
|
|
||||||
NUGET_SOURCE_URL="https://${GITEA_HOST}/api/packages/${GITEA_ORG}/nuget/index.json"
|
|
||||||
else
|
|
||||||
NUGET_SOURCE_URL="http://${GITEA_HOST}/api/packages/${GITEA_ORG}/nuget"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 输出目录
|
|
||||||
NUPKG_DIR="${SCRIPT_DIR}/nupkg"
|
|
||||||
if [ "$GITEA_USE_HTTPS" = "true" ]; then
|
|
||||||
NUGET_SOURCE_URL="https://${GITEA_HOST}/api/packages/${GITEA_ORG}/nuget/index.json"
|
|
||||||
else
|
|
||||||
NUPKG_DIR="${SCRIPT_DIR}/nupkg"
|
|
||||||
NUGET_SOURCE_URL="http://${GITEA_HOST}/api/packages/${GITEA_ORG}/nuget"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# NuGet 配置文件路径
|
|
||||||
NUGET_CONFIG_DIR="${SCRIPT_DIR}/.nuget"
|
|
||||||
NUGET_CONFIG_FILE="${NUGET_CONFIG_DIR}/NuGet.Config"
|
|
||||||
|
|
||||||
# =========================== 版本获取 ===========================
|
|
||||||
get_version_from_git() {
|
|
||||||
# 优先使用环境变量中的版本
|
|
||||||
if [ -n "$PACKAGE_VERSION" ]; then
|
|
||||||
echo "$PACKAGE_VERSION"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 尝试从 git tag 获取版本
|
|
||||||
local git_dir="${SCRIPT_DIR}/.git"
|
|
||||||
if [ -d "$git_dir" ]; then
|
|
||||||
local latest_tag=$(git -C "$SCRIPT_DIR" describe --tags --abbrev=0 2>/dev/null)
|
|
||||||
if [ -n "$latest_tag" ]; then
|
|
||||||
# 去掉 v 前缀 (如 v1.0.0 -> 1.0.0)
|
|
||||||
echo "${latest_tag#v}"
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 默认版本
|
|
||||||
echo "1.0.0"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 颜色输出 ===========================
|
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
log_info() {
|
|
||||||
echo -e "${GREEN}[INFO]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
log_warn() {
|
|
||||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
log_error() {
|
|
||||||
echo -e "${RED}[ERROR]${NC} $1"
|
|
||||||
}
|
|
||||||
|
|
||||||
log_debug() {
|
|
||||||
if [ "$DEBUG" = "true" ]; then
|
|
||||||
echo -e "${BLUE}[DEBUG]${NC} $1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 检查配置 ===========================
|
|
||||||
check_config() {
|
|
||||||
if [ -z "$GITEA_API_TOKEN" ]; then
|
|
||||||
log_error "请设置环境变量 GITEA_API_TOKEN"
|
|
||||||
echo ""
|
|
||||||
echo "设置方式:"
|
|
||||||
echo " export GITEA_API_TOKEN=你的GiteaToken"
|
|
||||||
echo ""
|
|
||||||
echo "或运行时传入:"
|
|
||||||
echo " GITEA_API_TOKEN=你的Token $0 all"
|
|
||||||
echo ""
|
|
||||||
echo "CI/CD 示例 (GitHub Actions):"
|
|
||||||
echo " env:"
|
|
||||||
echo " GITEA_API_TOKEN: \${{ secrets.GITEA_API_TOKEN }}"
|
|
||||||
echo " GITEA_ORG: fengling"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_info "Gitea: ${GITEA_HOST}, Org: ${GITEA_ORG}, HTTPS: ${GITEA_USE_HTTPS}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 创建 NuGet 配置 ===========================
|
|
||||||
create_nuget_config() {
|
|
||||||
# 创建 .nuget 目录
|
|
||||||
mkdir -p "${NUGET_CONFIG_DIR}"
|
|
||||||
|
|
||||||
# 创建 NuGet.Config,启用 HTTP 支持
|
|
||||||
cat > "${NUGET_CONFIG_FILE}" << 'EOF'
|
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<config>
|
|
||||||
<add key="allowInsecureConnections" value="true" />
|
|
||||||
</config>
|
|
||||||
<packageSources>
|
|
||||||
<clear />
|
|
||||||
</packageSources>
|
|
||||||
</configuration>
|
|
||||||
EOF
|
|
||||||
|
|
||||||
log_info "已创建 NuGet 配置文件: ${NUGET_CONFIG_FILE}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 还原并构建包 ===========================
|
|
||||||
restore_and_build() {
|
|
||||||
# 获取版本
|
|
||||||
PACKAGE_VERSION=$(get_version_from_git)
|
|
||||||
log_info "包版本: ${PACKAGE_VERSION}"
|
|
||||||
|
|
||||||
log_info "开始构建 NuGet 包..."
|
|
||||||
|
|
||||||
local projects=(
|
|
||||||
"${SCRIPT_DIR}/Fengling.Platform.Domain/Fengling.Platform.Domain.csproj"
|
|
||||||
"${SCRIPT_DIR}/Fengling.Platform.Infrastructure/Fengling.Platform.Infrastructure.csproj"
|
|
||||||
)
|
|
||||||
|
|
||||||
for project in "${projects[@]}"; do
|
|
||||||
if [ ! -f "$project" ]; then
|
|
||||||
log_error "项目文件不存在: $project"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local project_name=$(basename $(dirname $project))
|
|
||||||
log_info "正在构建: ${project_name}"
|
|
||||||
|
|
||||||
# 还原依赖
|
|
||||||
dotnet restore "$project" --configfile "${NUGET_CONFIG_FILE}"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
log_error "还原失败: $project"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 构建并打包
|
|
||||||
dotnet build "$project" -c Release --no-restore
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
log_error "构建失败: $project"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
dotnet pack "$project" -c Release --no-build -p:PackageVersion=${PACKAGE_VERSION} -o "${NUPKG_DIR}"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
log_error "打包失败: $project"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
log_info "NuGet 包构建完成!"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 配置 NuGet 源 ===========================
|
|
||||||
configure_nuget_source() {
|
|
||||||
log_info "配置 NuGet 源: ${NUGET_SOURCE_URL}"
|
|
||||||
|
|
||||||
# 使用 configfile 参数添加源
|
|
||||||
dotnet nuget add source \
|
|
||||||
--name "${NUGET_SOURCE_NAME}" \
|
|
||||||
--username "movingsam" \
|
|
||||||
--password "${GITEA_API_TOKEN}" \
|
|
||||||
--store-password-in-clear-text \
|
|
||||||
"${NUGET_SOURCE_URL}" \
|
|
||||||
--configfile "${NUGET_CONFIG_FILE}"
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
log_info "NuGet 源配置成功!"
|
|
||||||
else
|
|
||||||
log_error "NuGet 源配置失败"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 上传包 ===========================
|
|
||||||
push_packages() {
|
|
||||||
log_info "开始上传 NuGet 包..."
|
|
||||||
|
|
||||||
if [ ! -d "$NUPKG_DIR" ]; then
|
|
||||||
log_error "nupkg 目录不存在,请先运行构建"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 上传所有 nupkg 文件
|
|
||||||
for nupkg in "${NUPKG_DIR}"/*.nupkg; do
|
|
||||||
[ -f "$nupkg" ] || continue
|
|
||||||
|
|
||||||
local filename=$(basename $nupkg)
|
|
||||||
log_info "上传: $filename"
|
|
||||||
|
|
||||||
dotnet nuget push "$nupkg" \
|
|
||||||
--source "${NUGET_SOURCE_URL}" \
|
|
||||||
--api-key "${GITEA_API_TOKEN}" \
|
|
||||||
--configfile "${NUGET_CONFIG_FILE}" \
|
|
||||||
--skip-duplicate
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
log_info "上传成功: $filename"
|
|
||||||
else
|
|
||||||
log_warn "上传失败或包已存在: $filename"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 显示帮助 ===========================
|
|
||||||
show_help() {
|
|
||||||
echo "用法: $0 [命令]"
|
|
||||||
echo ""
|
|
||||||
echo "命令:"
|
|
||||||
echo " all 执行全部步骤 (构建 -> 配置源 -> 上传)"
|
|
||||||
echo " build 仅构建 NuGet 包"
|
|
||||||
echo " config 仅配置 NuGet 源"
|
|
||||||
echo " push 仅上传包 (需要先构建)"
|
|
||||||
echo " clean 清理构建产物"
|
|
||||||
echo " help 显示帮助"
|
|
||||||
echo ""
|
|
||||||
echo "环境变量:"
|
|
||||||
echo " GITEA_HOST Gitea 地址 (默认: 192.168.100.120:8418)"
|
|
||||||
echo " GITEA_ORG 组织名称 (默认: fengling)"
|
|
||||||
echo " GITEA_API_TOKEN Gitea API Token (必填)"
|
|
||||||
echo " GITEA_USE_HTTPS 是否使用 HTTPS (默认: false, 内网用 false)"
|
|
||||||
echo " PACKAGE_VERSION 包版本 (自动从 git tag 获取)"
|
|
||||||
echo ""
|
|
||||||
echo "示例:"
|
|
||||||
echo " # 方式1: 设置环境变量"
|
|
||||||
echo " export GITEA_API_TOKEN=your_token"
|
|
||||||
echo " $0 all"
|
|
||||||
echo ""
|
|
||||||
echo " # 方式2: 运行时传入环境变量"
|
|
||||||
echo " GITEA_API_TOKEN=your_token $0 all"
|
|
||||||
echo ""
|
|
||||||
echo " # 使用 HTTPS (外网)"
|
|
||||||
echo " GITEA_API_TOKEN=your_token GITEA_USE_HTTPS=true GITEA_HOST=gitea.shtao1.cn $0 all"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 清理 ===========================
|
|
||||||
clean() {
|
|
||||||
log_info "清理构建产物..."
|
|
||||||
rm -rf "${NUPKG_DIR}"
|
|
||||||
rm -rf "${NUGET_CONFIG_DIR}"
|
|
||||||
log_info "清理完成"
|
|
||||||
}
|
|
||||||
|
|
||||||
# =========================== 主程序 ===========================
|
|
||||||
main() {
|
|
||||||
local command="${1:-all}"
|
|
||||||
|
|
||||||
check_config
|
|
||||||
create_nuget_config
|
|
||||||
|
|
||||||
case "$command" in
|
|
||||||
all)
|
|
||||||
restore_and_build
|
|
||||||
configure_nuget_source
|
|
||||||
push_packages
|
|
||||||
log_info "全部完成!"
|
|
||||||
;;
|
|
||||||
build)
|
|
||||||
restore_and_build
|
|
||||||
;;
|
|
||||||
config)
|
|
||||||
configure_nuget_source
|
|
||||||
;;
|
|
||||||
push)
|
|
||||||
push_packages
|
|
||||||
;;
|
|
||||||
clean)
|
|
||||||
clean
|
|
||||||
;;
|
|
||||||
help|--help|-h)
|
|
||||||
show_help
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
log_error "未知命令: $command"
|
|
||||||
show_help
|
|
||||||
exit 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
Loading…
Reference in New Issue
Block a user