91 lines
3.8 KiB
YAML
91 lines
3.8 KiB
YAML
name: ci
|
||
on:
|
||
push:
|
||
branches: [main, master]
|
||
pull_request:
|
||
|
||
jobs:
|
||
build-test:
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
# 内网无 GitHub,不能用 actions/checkout@v4;手动 clone 本仓库(Gitea Actions 已注入 GITHUB_TOKEN)
|
||
- name: 拉取源码(内网手动 clone)
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
git clone --depth 1 --branch "$GITHUB_REF_NAME" "http://x-access-token:${GITHUB_TOKEN}@gitea.yunhaixingtong.com/${{ github.repository }}.git" /tmp/src
|
||
cp -a /tmp/src/. .
|
||
rm -rf /tmp/src
|
||
|
||
- name: 确认 dotnet SDK
|
||
run: |
|
||
if ! command -v dotnet >/dev/null 2>&1; then
|
||
echo "dotnet 不存在,安装 .NET 8 SDK..."
|
||
curl -sSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
|
||
chmod +x /tmp/dotnet-install.sh
|
||
/tmp/dotnet-install.sh --channel 8.0 --install-dir /usr/share/dotnet
|
||
ln -s /usr/share/dotnet/dotnet /usr/local/bin/dotnet
|
||
fi
|
||
dotnet --version
|
||
|
||
- name: Restore
|
||
run: dotnet restore BasePlatformDotnet/yh-platform-net.sln
|
||
|
||
- name: Build
|
||
run: dotnet build BasePlatformDotnet/yh-platform-net.sln --no-restore -c Release
|
||
|
||
- name: Test
|
||
run: dotnet test BasePlatformDotnet/yh-platform-net.sln --no-build -c Release --logger "console;verbosity=normal"
|
||
|
||
- name: Pack
|
||
run: dotnet pack BasePlatformDotnet/yh-platform-net.sln --no-build -c Release -o BasePlatformDotnet/artifacts
|
||
|
||
publish:
|
||
# 仅主分支 push 时发版到 Nexus 私服(PR 不触发)
|
||
if: github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/master')
|
||
needs: build-test
|
||
runs-on: ubuntu-latest
|
||
steps:
|
||
- name: 拉取源码(无内网 GitHub)
|
||
env:
|
||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||
run: |
|
||
git clone --depth 1 --branch "$GITHUB_REF_NAME" "http://x-access-token:${GITHUB_TOKEN}@gitea.yunhaixingtong.com/${{ github.repository }}.git" /tmp/src
|
||
cp -a /tmp/src/. .
|
||
rm -rf /tmp/src
|
||
|
||
- name: 确认 dotnet SDK
|
||
run: |
|
||
if ! command -v dotnet >/dev/null 2>&1; then
|
||
echo "dotnet 不存在,安装 .NET 8 SDK..."
|
||
curl -sSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
|
||
chmod +x /tmp/dotnet-install.sh
|
||
/tmp/dotnet-install.sh --channel 8.0 --install-dir /usr/share/dotnet
|
||
ln -s /usr/share/dotnet/dotnet /usr/local/bin/dotnet
|
||
fi
|
||
dotnet --version
|
||
|
||
- name: Pack
|
||
run: dotnet pack BasePlatformDotnet/yh-platform-net.sln -c Release -o BasePlatformDotnet/artifacts
|
||
|
||
- name: Push to Nexus
|
||
# Nexus 的 NuGet 推送认证走 HTTP Basic(账号+密码),不校验 api-key;
|
||
# 且 Nexus 为 http 源,SDK 8 需在 nuget.config 显式 allowInsecureConnections=true。
|
||
# 动态生成带凭据的 nuget.config 并指定 --configfile,避免凭据入 git。
|
||
run: |
|
||
cat > nuget-push.config <<EOF
|
||
<?xml version="1.0" encoding="utf-8"?>
|
||
<configuration>
|
||
<packageSources>
|
||
<clear />
|
||
<add key="nexus-nuget" value="${{ secrets.NEXUS_URL }}" allowInsecureConnections="true" />
|
||
</packageSources>
|
||
<packageSourceCredentials>
|
||
<nexus-nuget>
|
||
<add key="Username" value="${{ secrets.NEXUS_USER }}" />
|
||
<add key="ClearTextPassword" value="${{ secrets.NEXUS_PASS }}" />
|
||
</nexus-nuget>
|
||
</packageSourceCredentials>
|
||
</configuration>
|
||
EOF
|
||
dotnet nuget push "BasePlatformDotnet/artifacts/*.nupkg" --source nexus-nuget --configfile nuget-push.config --api-key nexus |