Warehouses #1

Merged
trent merged 159 commits from Warehouses into master 2026-01-10 20:24:17 +00:00
Showing only changes of commit 6770e41a6e - Show all commits

View File

@@ -1,127 +1,50 @@
kind: template
name: dotnet-build-publish
variables:
- DOTNET_VERSION: "8.0"
clone:
disable: true
steps: 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: restore:
image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} image: mcr.microsoft.com/dotnet/sdk:8.0
commands: commands:
- dotnet nuget add source "http://srv51.mikr.us:20120/v3/index.json" --name baget || true - dotnet restore --no-cache --force
- dotnet restore --locked-mode
build:
image: mcr.microsoft.com/dotnet/sdk:8.0
commands:
- dotnet build --no-restore -c Release
depends_on:
- restore
# Krok 3: Testy (zawsze jeśli coś się zmieniło)
test: test:
image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} image: mcr.microsoft.com/dotnet/sdk:8.0
commands: commands:
- dotnet test --no-restore -c Release - dotnet test --no-build -c Release --logger "trx" --results-directory ./test-results
when: depends_on:
event: [push, pull_request, tag] - build
# Krok 4: Build & Publish osobne kroki dla każdego typu pack-nuget:
publish-datamodel: image: mcr.microsoft.com/dotnet/sdk:8.0
image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION}
commands: commands:
- source $CI_WORKSPACE/.env
- | - |
if [ "$BUILD_DATAMODEL" != "true" ]; then for proj in $(find . -name "*DataModel.csproj"); do
echo "Pomijam publikację DataModel brak zmian" echo "Packaging $proj"
exit 0 dotnet pack "$proj" --no-build -c Release -o ./nuget-packages
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 done
secrets: [baget_api_key]
when: when:
event: [push, tag] branch: ${CI_REPO_DEFAULT_BRANCH}
branch: main event: push
path:
include:
- "**/*DataModel.csproj"
publish-api: publish-api:
image: docker:latest image: mcr.microsoft.com/dotnet/sdk:8.0
commands: commands:
- source $CI_WORKSPACE/.env
- | - |
if [ "$BUILD_API" != "true" ]; then for proj in $(find . -name "*API.csproj"); do
echo "Pomijam budowanie API brak zmian" proj_name=$(basename "$proj" .csproj)
exit 0 echo "Publishing $proj"
fi dotnet publish "$$ proj" --no-build -c Release -o ./publish/ $${proj_name}
- | done
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: when:
event: [push, tag] branch: ${CI_REPO_DEFAULT_BRANCH}
branch: main event: push
path:
publish-blazor: include:
image: mcr.microsoft.com/dotnet/sdk:${DOTNET_VERSION} - "**/*API.csproj"
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