Aggiunge nuove azioni per il versionamento e il deploy
Sono state aggiunte azioni per estrarre la versione da un tag, pubblicare un progetto .NET e distribuire su IIS. Queste azioni semplificano il processo di build e deploy per i progetti .NET, migliorando l'integrazione con Gitea Actions.
This commit is contained in:
79
publish-dotnet/action.yml
Normal file
79
publish-dotnet/action.yml
Normal file
@@ -0,0 +1,79 @@
|
||||
name: Publish .NET
|
||||
description: >
|
||||
Esegue restore, publish e rsync per un progetto .NET.
|
||||
|
||||
inputs:
|
||||
project:
|
||||
description: Path al file .csproj del progetto.
|
||||
required: true
|
||||
output-path:
|
||||
description: Directory di destinazione per i file pubblicati.
|
||||
required: true
|
||||
version:
|
||||
description: Versione applicativa da applicare (es. 1.0.0.0).
|
||||
required: true
|
||||
subpath:
|
||||
description: >
|
||||
Sottopath relativo alla cartella di publish da copiare
|
||||
(es. "wwwroot" per Blazor WASM). Vuoto per copiare tutto.
|
||||
required: false
|
||||
default: ""
|
||||
configuration:
|
||||
description: Configurazione di build (es. Release, Debug).
|
||||
required: false
|
||||
default: Release
|
||||
exclude-dirs:
|
||||
description: Directory da escludere dal rsync (separate da virgola, punto e virgola o newline).
|
||||
required: false
|
||||
default: store
|
||||
exclude-files:
|
||||
description: File da escludere dal rsync (separati da virgola, punto e virgola o newline).
|
||||
required: false
|
||||
default: appsettings.json
|
||||
|
||||
runs:
|
||||
using: composite
|
||||
steps:
|
||||
- name: Restore
|
||||
shell: bash
|
||||
run: dotnet restore "${{ inputs.project }}"
|
||||
|
||||
- name: Publish e rsync
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
|
||||
split_input_list() {
|
||||
local value="$1"
|
||||
if [ -z "$value" ]; then
|
||||
echo ""
|
||||
return
|
||||
fi
|
||||
echo "$value" | tr ',;\r\n' '\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' | grep -v '^$'
|
||||
}
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
trap 'rm -rf "$tmpdir"' EXIT
|
||||
|
||||
dotnet publish "${{ inputs.project }}" \
|
||||
-c "${{ inputs.configuration }}" \
|
||||
-p:Version="${{ inputs.version }}" \
|
||||
-o "$tmpdir"
|
||||
|
||||
src="$tmpdir"
|
||||
if [ -n "${{ inputs.subpath }}" ]; then
|
||||
src="$tmpdir/${{ inputs.subpath }}"
|
||||
fi
|
||||
|
||||
mkdir -p "${{ inputs.output-path }}"
|
||||
|
||||
exclude_args=()
|
||||
while IFS= read -r dir; do
|
||||
[ -n "$dir" ] && exclude_args+=(--exclude="$dir")
|
||||
done < <(split_input_list "${{ inputs.exclude-dirs }}")
|
||||
|
||||
while IFS= read -r file; do
|
||||
[ -n "$file" ] && exclude_args+=(--exclude="$file")
|
||||
done < <(split_input_list "${{ inputs.exclude-files }}")
|
||||
|
||||
rsync -a --delete "${exclude_args[@]}" "$src/" "${{ inputs.output-path }}/"
|
||||
Reference in New Issue
Block a user