From 6770e41a6ee7b6b13238d7a4eab97c2f0e40fd56 Mon Sep 17 00:00:00 2001 From: trent Date: Fri, 2 Jan 2026 14:11:52 +0100 Subject: [PATCH] Update .woodpecker.yml --- .woodpecker.yml | 175 ++++++++++++++---------------------------------- 1 file changed, 49 insertions(+), 126 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 3670a56..755159b 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,127 +1,50 @@ -kind: template -name: dotnet-build-publish - -variables: - - DOTNET_VERSION: "8.0" -clone: - disable: true - steps: - - clone-manual: - image: woodpeckerci/plugin-git - settings: - remote: http://gitea:3000/FA/FA_WEB.git # wewnętrzny URL, agent widzi gitea po nazwie serwisu! - branch: master - depth: 1 - - - # Krok 1: Detekcja, które projekty zmieniły się w tym commicie - detect-changed-projects: - image: alpine/git:latest - commands: - - echo "Pobieram listę zmienionych plików..." - - git fetch origin $CI_COMMIT_BEFORE $CI_COMMIT_SHA - - | - CHANGED_FILES=$(git diff --name-only $CI_COMMIT_BEFORE $CI_COMMIT_SHA || echo "") - echo "Zmienione pliki:" - echo "$CHANGED_FILES" - - # Resetujemy env - > $CI_WORKSPACE/.env - - # Sprawdzamy po folderach / konwencjach - if echo "$CHANGED_FILES" | grep -Eq "^(DataModel|src/DataModel|Models)/"; then - echo "BUILD_DATAMODEL=true" >> $CI_WORKSPACE/.env - echo "Zmieniono projekt DataModel" - fi - - if echo "$CHANGED_FILES" | grep -Eq "^(Api|src/Api|Backend)/"; then - echo "BUILD_API=true" >> $CI_WORKSPACE/.env - echo "Zmieniono projekt API" - fi - - if echo "$CHANGED_FILES" | grep -Eq "^(Web|Blazor|Frontend|src/Blazor)/"; then - echo "BUILD_BLAZOR=true" >> $CI_WORKSPACE/.env - echo "Zmieniono projekt Blazor/Web" - fi - - # Jeśli nic nie zmieniono w projektach – kończymy szybko - if ! grep -q "BUILD_" $CI_WORKSPACE/.env; then - echo "Brak zmian w projektach .NET – pomijam build." - exit 0 - fi - - cat $CI_WORKSPACE/.env - - # Krok 2: Restore (wspólny) - restore: - image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} - commands: - - dotnet nuget add source "http://srv51.mikr.us:20120/v3/index.json" --name baget || true - - dotnet restore --locked-mode - - # Krok 3: Testy (zawsze jeśli coś się zmieniło) - test: - image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} - commands: - - dotnet test --no-restore -c Release - when: - event: [push, pull_request, tag] - - # Krok 4: Build & Publish – osobne kroki dla każdego typu - publish-datamodel: - image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} - commands: - - source $CI_WORKSPACE/.env - - | - if [ "$BUILD_DATAMODEL" != "true" ]; then - echo "Pomijam publikację DataModel – brak zmian" - exit 0 - fi - - | - VERSION=${CI_COMMIT_TAG:-$(git rev-parse --short HEAD)} - # Zakładam, że projekt DataModel ma .csproj w folderze DataModel/ - dotnet pack DataModel/*.csproj --no-restore --no-build -c Release -o /workspace/nupkg /p:Version=$VERSION - for pkg in /workspace/nupkg/*.nupkg; do - dotnet nuget push "$pkg" --source baget --api-key ${BAGET_API_KEY} --skip-duplicate - done - secrets: [baget_api_key] - when: - event: [push, tag] - branch: main - - publish-api: - image: docker:latest - commands: - - source $CI_WORKSPACE/.env - - | - if [ "$BUILD_API" != "true" ]; then - echo "Pomijam budowanie API – brak zmian" - exit 0 - fi - - | - cd Api # lub ścieżka do Dockerfile - docker build -t myregistry/${CI_REPO_OWNER}/${CI_REPO_NAME}-api:${CI_COMMIT_TAG:-latest} . - echo ${DOCKER_PASSWORD} | docker login myregistry -u ${DOCKER_USERNAME} --password-stdin - docker push myregistry/${CI_REPO_OWNER}/${CI_REPO_NAME}-api:${CI_COMMIT_TAG:-latest} - secrets: [docker_username, docker_password] - when: - event: [push, tag] - branch: main - - publish-blazor: - image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} - commands: - - source $CI_WORKSPACE/.env - - | - if [ "$BUILD_BLAZOR" != "true" ]; then - echo "Pomijam publikację Blazor – brak zmian" - exit 0 - fi - - dotnet publish Web/*.csproj --no-restore -c Release -o /workspace/publish - - echo "Pliki Blazor gotowe do deployu w /workspace/publish" - # Tu później możesz dodać rsync, az copy, itp. - when: - event: [push, tag] - branch: main \ No newline at end of file + restore: + image: mcr.microsoft.com/dotnet/sdk:8.0 + commands: + - dotnet restore --no-cache --force + + build: + image: mcr.microsoft.com/dotnet/sdk:8.0 + commands: + - dotnet build --no-restore -c Release + depends_on: + - restore + + test: + image: mcr.microsoft.com/dotnet/sdk:8.0 + commands: + - dotnet test --no-build -c Release --logger "trx" --results-directory ./test-results + depends_on: + - build + + pack-nuget: + image: mcr.microsoft.com/dotnet/sdk:8.0 + 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" + + 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" \ No newline at end of file