优化文档

This commit is contained in:
qxa 2025-11-06 13:56:38 +08:00
parent 1ea27868df
commit e79a1bbe48
3 changed files with 208 additions and 34 deletions

70
.gitignore vendored
View File

@ -1,2 +1,68 @@
.vs
.vscode
# Visual Studio
.vs/
.vscode/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# Build outputs
bin/
obj/
Release/
Debug/
publish/
# NuGet
.nuget/
packages/
*.nupkg
# OS files
.DS_Store
Thumbs.db
# Temporary files
*.tmp
*.temp
entrypoint.sh
# Logs
*.log
# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# Docker
.dockerignore
Dockerfile.local
# GitHub Actions
*.workflow
# Editor directories and files
.idea/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# OS generated files
Thumbs.db
Thumbs.db:encryptable
ehthumbs.db
ehthumbs_vista.db
*.stackdump
[Dd]esktop.ini
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk

View File

@ -1 +1,69 @@
# aspnet编译插件
# ASP.NET 编译插件
这是一个用于 GitHub Actions 的 ASP.NET 项目编译插件,可以帮助您自动化编译、构建和发布 ASP.NET 项目。
## 功能特性
- 支持自定义项目名称
- 可配置构建配置Debug/Release
- 支持目标运行时和操作系统设置
- 提供NuGet包缓存选项
- 可选的代码混淆功能使用Obfuscar
## 使用方法
在您的 GitHub Actions 工作流文件中添加以下步骤:
```yaml
- name: 编译ASP.NET项目
uses: actions/aspnet@6.0
with:
project_name: YourProjectName
configuration: Release
publish: publish
```
## 输入参数
| 参数名 | 描述 | 是否必需 | 默认值 |
|-------|------|----------|--------|
| `project_name` | 要编译的项目名称 | 是 | 无 |
| `configuration` | 发布所对应的配置 | 否 | Release |
| `runtime` | 要发布的目标运行时 | 否 | 无 |
| `os` | 目标操作系统 | 否 | 无 |
| `publish` | 输出目录 | 否 | publish |
| `nuget_dir` | NuGet包还原地址 | 否 | /opt/hostedtoolcache/.nuget/packages |
## 示例
### 基本编译
```yaml
- name: 编译ASP.NET项目
uses: actions/aspnet@6.0
with:
project_name: MyWebApp
```
### 指定运行时和操作系统
```yaml
- name: 编译ASP.NET项目
uses: actions/aspnet@6.0
with:
project_name: MyWebApp
configuration: Release
runtime: win-x64
os: win
```
### 使用代码混淆
确保项目中存在 `obfuscar.xml` 配置文件,插件会自动检测并执行混淆:
```yaml
- name: 编译并混淆ASP.NET项目
uses: actions/aspnet@6.0
with:
project_name: MyWebApp
```

View File

@ -1,16 +1,16 @@
name: aspnet
description: build aspnet
description: ASP.NET 项目自动化编译、构建和发布插件
author: qxa
inputs:
project_name:
description: 要编译的项目名称
description: 要编译的项目名称(相对于工作目录的路径)
required: true
configuration:
description: 发布所对应的配置,默认值为 "Debug"
description: 发布所对应的配置,默认值为 "Release"
required: false
default: Release
runtime:
description: 要发布的目标运行时在创建自包含部署时使用
description: 要发布的目标运行时在创建自包含部署时使用
required: false
os:
description: 目标操作系统
@ -20,42 +20,81 @@ inputs:
required: false
default: publish
nuget_dir:
description: nuget包还原地址,如需缓存请挂载目录
description: NuGet包还原地址如需缓存请挂载目录
required: false
default: /opt/hostedtoolcache/.nuget/packages
self_contained:
description: 是否创建自包含部署
required: false
default: "false"
runs:
using: composite
steps:
- name: 给脚本配置权限
- name: 创建编译脚本
shell: bash
env:
script: |
#! /bin/bash
option="--no-self-contained -o $INPUT_PUBLISH -c $INPUT_CONFIGURATION"
if [ -n "$INPUT_RUNTIME" ]; then
option="$option -r $INPUT_RUNTIME"
fi
if [ -n "$INPUT_OS" ]; then
option="$option --os $INPUT_OS"
fi
echo "option=$option"
dotnet --version
dotnet restore $INPUT_PROJECT_NAME --packages ${{ inputs.nuget_dir }}
dotnet build $INPUT_PROJECT_NAME --packages ${{ inputs.nuget_dir }}
dotnet publish $option $INPUT_PROJECT_NAME --packages ${{ inputs.nuget_dir }}
run: |
echo "$script">entrypoint.sh
cat > entrypoint.sh << 'EOF'
#!/bin/bash
# 设置错误时退出
set -e
echo "===== ASP.NET 编译插件开始执行 ====="
echo "项目名称: $INPUT_PROJECT_NAME"
echo "配置: $INPUT_CONFIGURATION"
echo "输出目录: $INPUT_PUBLISH"
if [ "$INPUT_SELF_CONTAINED" = "true" ]; then
SELF_CONTAINED_OPTION="--self-contained"
else
SELF_CONTAINED_OPTION="--no-self-contained"
fi
option="$SELF_CONTAINED_OPTION -o $INPUT_PUBLISH -c $INPUT_CONFIGURATION"
if [ -n "$INPUT_RUNTIME" ]; then
option="$option -r $INPUT_RUNTIME"
echo "目标运行时: $INPUT_RUNTIME"
fi
if [ -n "$INPUT_OS" ]; then
option="$option --os $INPUT_OS"
echo "目标操作系统: $INPUT_OS"
fi
echo "发布选项: $option"
echo "NuGet包缓存目录: $INPUT_NUGET_DIR"
echo "\n===== 检查 .NET SDK 版本 ====="
dotnet --version
echo "\n===== 还原 NuGet 包 ====="
dotnet restore "$INPUT_PROJECT_NAME" --packages "$INPUT_NUGET_DIR"
echo "\n===== 构建项目 ====="
dotnet build "$INPUT_PROJECT_NAME" --packages "$INPUT_NUGET_DIR" --no-restore
echo "\n===== 发布项目 ====="
dotnet publish $option "$INPUT_PROJECT_NAME" --packages "$INPUT_NUGET_DIR" --no-build
if [ -f "$INPUT_CONFIGURATION/obfuscar.xml" ]; then
echo "\n===== 检测到 obfuscar.xml开始代码混淆 ====="
echo "安装混淆工具..."
dotnet tool install -g obfuscar.globaltool
echo "执行代码混淆..."
obfuscar.console "$INPUT_CONFIGURATION/obfuscar.xml"
echo "代码混淆完成"
else
echo "\n未检测到 $INPUT_CONFIGURATION/obfuscar.xml跳过代码混淆"
fi
echo "\n===== ASP.NET 编译插件执行完成 ====="
EOF
chmod +x entrypoint.sh
- name: 在docker中编译
- name: Docker中编译ASP.NET项目
uses: docker://dotnet/sdk:6.0
with:
entrypoint: ./entrypoint.sh
@ -66,7 +105,8 @@ runs:
os: ${{ inputs.os }}
publish: ${{ inputs.publish }}
- name: 删除文件
- name: 清理临时文件
shell: bash
run: |
rm -f entrypoint.sh
echo "临时文件已清理"