Update .woodpecker.yml
This commit is contained in:
167
.woodpecker.yml
167
.woodpecker.yml
@@ -1,127 +1,50 @@
|
|||||||
kind: template
|
|
||||||
name: dotnet-build-publish
|
|
||||||
|
|
||||||
variables:
|
|
||||||
- DOTNET_VERSION: "8.0"
|
|
||||||
clone:
|
|
||||||
disable: true
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
restore:
|
||||||
|
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||||
|
commands:
|
||||||
|
- dotnet restore --no-cache --force
|
||||||
|
|
||||||
clone-manual:
|
build:
|
||||||
image: woodpeckerci/plugin-git
|
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||||
settings:
|
commands:
|
||||||
remote: http://gitea:3000/FA/FA_WEB.git # wewnętrzny URL, agent widzi gitea po nazwie serwisu!
|
- dotnet build --no-restore -c Release
|
||||||
branch: master
|
depends_on:
|
||||||
depth: 1
|
- 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
|
||||||
|
|
||||||
# Krok 1: Detekcja, które projekty zmieniły się w tym commicie
|
pack-nuget:
|
||||||
detect-changed-projects:
|
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||||
image: alpine/git:latest
|
commands:
|
||||||
commands:
|
- |
|
||||||
- echo "Pobieram listę zmienionych plików..."
|
for proj in $(find . -name "*DataModel.csproj"); do
|
||||||
- git fetch origin $CI_COMMIT_BEFORE $CI_COMMIT_SHA
|
echo "Packaging $proj"
|
||||||
- |
|
dotnet pack "$proj" --no-build -c Release -o ./nuget-packages
|
||||||
CHANGED_FILES=$(git diff --name-only $CI_COMMIT_BEFORE $CI_COMMIT_SHA || echo "")
|
done
|
||||||
echo "Zmienione pliki:"
|
when:
|
||||||
echo "$CHANGED_FILES"
|
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||||
|
event: push
|
||||||
|
path:
|
||||||
|
include:
|
||||||
|
- "**/*DataModel.csproj"
|
||||||
|
|
||||||
# Resetujemy env
|
publish-api:
|
||||||
> $CI_WORKSPACE/.env
|
image: mcr.microsoft.com/dotnet/sdk:8.0
|
||||||
|
commands:
|
||||||
# Sprawdzamy po folderach / konwencjach
|
- |
|
||||||
if echo "$CHANGED_FILES" | grep -Eq "^(DataModel|src/DataModel|Models)/"; then
|
for proj in $(find . -name "*API.csproj"); do
|
||||||
echo "BUILD_DATAMODEL=true" >> $CI_WORKSPACE/.env
|
proj_name=$(basename "$proj" .csproj)
|
||||||
echo "Zmieniono projekt DataModel"
|
echo "Publishing $proj"
|
||||||
fi
|
dotnet publish "$$ proj" --no-build -c Release -o ./publish/ $${proj_name}
|
||||||
|
done
|
||||||
if echo "$CHANGED_FILES" | grep -Eq "^(Api|src/Api|Backend)/"; then
|
when:
|
||||||
echo "BUILD_API=true" >> $CI_WORKSPACE/.env
|
branch: ${CI_REPO_DEFAULT_BRANCH}
|
||||||
echo "Zmieniono projekt API"
|
event: push
|
||||||
fi
|
path:
|
||||||
|
include:
|
||||||
if echo "$CHANGED_FILES" | grep -Eq "^(Web|Blazor|Frontend|src/Blazor)/"; then
|
- "**/*API.csproj"
|
||||||
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
|
|
||||||
Reference in New Issue
Block a user