Files
FA_WEB/.woodpecker.yml
2026-01-02 14:07:09 +01:00

127 lines
4.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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