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.
80 lines
2.3 KiB
YAML
80 lines
2.3 KiB
YAML
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 }}/"
|