From e7e5e7fbb081340633b652d5a89f43b39c3db3dc Mon Sep 17 00:00:00 2001 From: trent Date: Fri, 2 Jan 2026 21:13:19 +0100 Subject: [PATCH] Update .woodpecker.yml --- .woodpecker.yml | 148 ++++++++++++++++++++++++++++-------------------- 1 file changed, 88 insertions(+), 60 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 13625a0..aba41e9 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,71 +1,99 @@ -skip_clone: true +# .woodpecker.yml – uniwersalny dla dowolnej wersji .NET (6.0+) + +when: + event: [push, tag] + branch: [main] steps: - add-local-nuget-source: - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet nuget add source http://srv51.mikr.us:20120/nuget/index.json --name local-baget - - clone-manual: - image: woodpeckerci/plugin-git - settings: - remote: http://gitea:3000/FA/FA_WEB.git - branch: master - depth: 1 - restore: - image: mcr.microsoft.com/dotnet/sdk:8.0 + image: mcr.microsoft.com/dotnet/sdk:latest commands: - - dotnet restore --no-cache --force - depends_on: - - clone-manual - - add-local-nuget-source - - build: - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - dotnet build --no-restore -c Release - depends_on: - - restore + - dotnet restore + volumes: + - nuget-cache:/root/.nuget/packages test: - image: mcr.microsoft.com/dotnet/sdk:8.0 + image: mcr.microsoft.com/dotnet/sdk:latest commands: - - dotnet test --no-build -c Release --logger "trx" --results-directory ./test-results - depends_on: - - build + - dotnet test --no-restore --configuration Release --logger "trx" --results-directory /tmp/test-results - pack-nuget: - image: mcr.microsoft.com/dotnet/sdk:8.0 + build: + image: mcr.microsoft.com/dotnet/sdk:latest + commands: + - dotnet build --no-restore --configuration Release + + deploy: + image: mcr.microsoft.com/dotnet/sdk:latest + secrets: [baget_api_key, baget_url] + volumes: + - /opt/deployment:/deploy-host + - nuget-cache:/root/.nuget/packages commands: - | - for proj in $(find . -name "*DataModel.csproj"); do - echo "Packaging $proj" - dotnet pack "$proj" --no-build -c Release -o ./nuget-packages - done - when: - branch: ${CI_REPO_DEFAULT_BRANCH} - event: push - path: - include: - - "**/*DataModel.csproj" - depends_on: - - test # opcjonalnie, dodaj jeśli chcesz zależności + set -euo pipefail - publish-api: - image: mcr.microsoft.com/dotnet/sdk:8.0 - commands: - - | - for proj in $(find . -name "*API.csproj"); do - proj_name=$(basename "$proj" .csproj) - echo "Publishing $proj" - dotnet publish "$proj" --no-build -c Release -o ./publish/$proj_name - done - when: - branch: ${CI_REPO_DEFAULT_BRANCH} - event: push - path: - include: - - "**/*API.csproj" - depends_on: - - test # opcjonalnie \ No newline at end of file + echo "=== Informacje o projekcie ===" + echo "Repo: ${CI_REPO_NAME}" + echo "Commit: ${CI_COMMIT_SHA:0:8}" + echo "Branch/Tag: ${CI_COMMIT_REF}" + echo "SDK version: $(dotnet --version)" + + # Odczytujemy tylko metadane typu projektu + PROJECT_TYPE=$(dotnet msbuild -getProperty:ProjectType -noLogo 2>/dev/null || echo "Unknown") + DEPLOY_TO_CENTRAL=$(dotnet msbuild -getProperty:DeployToCentral -noLogo 2>/dev/null || echo "false") + + echo "ProjectType: $PROJECT_TYPE" + echo "DeployToCentral: $DEPLOY_TO_CENTRAL" + + case "$PROJECT_TYPE" in + DataModel) + echo "→ Pakowanie i publikacja do BaGet" + dotnet pack --no-build --configuration Release -o /tmp/nupkg + + for pkg in /tmp/nupkg/*.nupkg; do + dotnet nuget push "$pkg" \ + --api-key "${BAGET_API_KEY}" \ + --source "${BAGET_URL}" \ + --skip-duplicate + done + echo "Publikacja NuGet zakończona." + ;; + + ConsoleApp|Api|Blazor) + if [[ "$DEPLOY_TO_CENTRAL" != "true" ]]; then + echo "DeployToCentral=false – pomijam deploy." + exit 0 + fi + + echo "→ Publikacja $PROJECT_TYPE" + + PUBLISH_ARGS="--no-build -c Release -o /tmp/publish" + + if [[ "$PROJECT_TYPE" == "ConsoleApp" ]]; then + RID=$(dotnet msbuild -getProperty:RuntimeIdentifier -noLogo 2>/dev/null || echo "linux-x64") + SELF_CONTAINED=$(dotnet msbuild -getProperty:SelfContained -noLogo 2>/dev/null || echo "true") + SINGLE_FILE=$(dotnet msbuild -getProperty:PublishSingleFile -noLogo 2>/dev/null || echo "true") + PUBLISH_ARGS="$PUBLISH_ARGS --self-contained $SELF_CONTAINED -r $RID -p:PublishSingleFile=$SINGLE_FILE" + else + TRIMMED=$(dotnet msbuild -getProperty:PublishTrimmed -noLogo 2>/dev/null || echo "true") + PUBLISH_ARGS="$PUBLISH_ARGS -p:PublishTrimmed=$TRIMMED" + fi + + dotnet publish $PUBLISH_ARGS + + TARGET_DIR="/deploy-host/$PROJECT_TYPE/${CI_REPO_NAME}" + mkdir -p "$TARGET_DIR" + cp -r /tmp/publish/* "$TARGET_DIR/" + find "$TARGET_DIR" -type f \( -name "*.dll" -o -name "*.exe" -o -perm /111 \) -exec chmod +x {} \; 2>/dev/null || true + + echo "Deploy zakończony → $TARGET_DIR" + ;; + + *) + echo "Nieznany ProjectType – brak akcji." + ;; + esac + +volumes: + - name: nuget-cache + temp: {} \ No newline at end of file