优化文档
This commit is contained in:
parent
1ea27868df
commit
e79a1bbe48
|
|
@ -1,2 +1,68 @@
|
||||||
.vs
|
# Visual Studio
|
||||||
.vscode
|
.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
|
name: aspnet
|
||||||
description: build aspnet
|
description: ASP.NET 项目自动化编译、构建和发布插件
|
||||||
author: qxa
|
author: qxa
|
||||||
inputs:
|
inputs:
|
||||||
project_name:
|
project_name:
|
||||||
description: 要编译的项目名称
|
description: 要编译的项目名称(相对于工作目录的路径)
|
||||||
required: true
|
required: true
|
||||||
configuration:
|
configuration:
|
||||||
description: 发布所对应的配置,默认值为 "Debug"
|
description: 发布所对应的配置,默认值为 "Release"
|
||||||
required: false
|
required: false
|
||||||
default: Release
|
default: Release
|
||||||
runtime:
|
runtime:
|
||||||
description: 要发布的目标运行时。在创建自包含部署时使用
|
description: 要发布的目标运行时,在创建自包含部署时使用
|
||||||
required: false
|
required: false
|
||||||
os:
|
os:
|
||||||
description: 目标操作系统
|
description: 目标操作系统
|
||||||
|
|
@ -20,42 +20,81 @@ inputs:
|
||||||
required: false
|
required: false
|
||||||
default: publish
|
default: publish
|
||||||
nuget_dir:
|
nuget_dir:
|
||||||
description: nuget包还原地址,如需缓存请挂载目录
|
description: NuGet包还原地址,如需缓存请挂载目录
|
||||||
required: false
|
required: false
|
||||||
default: /opt/hostedtoolcache/.nuget/packages
|
default: /opt/hostedtoolcache/.nuget/packages
|
||||||
|
self_contained:
|
||||||
|
description: 是否创建自包含部署
|
||||||
|
required: false
|
||||||
|
default: "false"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- name: 给脚本配置权限
|
- name: 创建编译脚本
|
||||||
shell: bash
|
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: |
|
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
|
chmod +x entrypoint.sh
|
||||||
|
|
||||||
- name: 在docker中编译
|
- name: 在Docker中编译ASP.NET项目
|
||||||
uses: docker://dotnet/sdk:6.0
|
uses: docker://dotnet/sdk:6.0
|
||||||
with:
|
with:
|
||||||
entrypoint: ./entrypoint.sh
|
entrypoint: ./entrypoint.sh
|
||||||
|
|
@ -66,7 +105,8 @@ runs:
|
||||||
os: ${{ inputs.os }}
|
os: ${{ inputs.os }}
|
||||||
publish: ${{ inputs.publish }}
|
publish: ${{ inputs.publish }}
|
||||||
|
|
||||||
- name: 删除文件
|
- name: 清理临时文件
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
rm -f entrypoint.sh
|
rm -f entrypoint.sh
|
||||||
|
echo "临时文件已清理"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue