优化文档
This commit is contained in:
parent
1ea27868df
commit
e79a1bbe48
|
|
@ -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
|
||||
|
|
|
|||
70
README.md
70
README.md
|
|
@ -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
|
||||
```
|
||||
102
action.yaml
102
action.yaml
|
|
@ -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 "临时文件已清理"
|
||||
|
|
|
|||
Loading…
Reference in New Issue