From 531260eb9c5628c1f9e17ba724db0f1bd76b0cd5 Mon Sep 17 00:00:00 2001 From: trent Date: Thu, 15 Jan 2026 08:14:11 +0000 Subject: [PATCH] Update .woodpecker.yml --- .woodpecker.yml | 98 +++++++++++++++++++++---------------------------- 1 file changed, 41 insertions(+), 57 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index b3ee2af..a1ef11a 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -11,14 +11,12 @@ steps: - pwd - ls -la - find /woodpecker -maxdepth 4 -type d 2>/dev/null - 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:latest commands: @@ -28,7 +26,6 @@ steps: echo "Aktualna ścieżka: $(pwd)" echo "=== Restore wszystkich projektów ===" find . -name "*.csproj" -type f -exec dotnet restore "{}" \; - test: image: mcr.microsoft.com/dotnet/sdk:latest commands: @@ -38,7 +35,6 @@ steps: echo "=== Uruchamianie testów ===" dotnet test --no-restore --configuration Release --logger "trx" depends_on: [restore] - pack-datamodels: image: mcr.microsoft.com/dotnet/sdk:latest commands: @@ -82,7 +78,6 @@ steps: echo "=== Spakowane pakiety ===" ls -la nupkg/ || echo "Brak spakowanych pakietów!" depends_on: [test] - publish-datamodels-to-baget: image: mcr.microsoft.com/dotnet/sdk:latest environment: @@ -113,20 +108,31 @@ steps: --skip-duplicate done depends_on: [pack-datamodels] - - prepare-restore-for-docker: + select-projects-for-docker: image: mcr.microsoft.com/dotnet/sdk:latest commands: - | set -euf cd "${CI_WORKSPACE}" - echo "=== Przygotowanie do budowania obrazów ===" - dotnet restore - echo "Restore dla projektów zakończone" + echo "" > projects-to-build.txt + find . -name "*.csproj" -type f | while read csproj; do + PROJECT_DIR=$(dirname "$csproj") + PROJECT_NAME=$(basename "$csproj" .csproj) + PROJECT_TYPE=$(dotnet msbuild "$csproj" -getProperty:ProjectType -noLogo 2>/dev/null || echo "Unknown") + DEPLOY_TO_CENTRAL=$(dotnet msbuild "$csproj" -getProperty:DeployToCentral -noLogo 2>/dev/null || echo "false") + if [ "$DEPLOY_TO_CENTRAL" = "true" ] && [ "$PROJECT_TYPE" != "Unknown" ] && [ "$PROJECT_TYPE" != "DataModel" ] && [ "$PROJECT_TYPE" != "LinuxLocal" ]; then + echo "$PROJECT_DIR|$PROJECT_NAME" >> projects-to-build.txt + echo "Wybrano do builda: $PROJECT_NAME ($PROJECT_TYPE, DeployToCentral=true)" + else + echo "Pomijam $PROJECT_NAME ($PROJECT_TYPE, DeployToCentral=$DEPLOY_TO_CENTRAL)" + fi + done + echo "=== Lista wybranych projektów ===" + cat projects-to-build.txt || echo "Brak projektów do builda" depends_on: [publish-datamodels-to-baget] - containerize-apps: image: woodpeckerci/plugin-docker-buildx:latest + privileged: true environment: GITEA_USER: from_secret: gitea_registry_user @@ -135,64 +141,42 @@ steps: commands: - | set -euf - cd "${CI_WORKSPACE}" - echo "DEBUG: Użytkownik = '$GITEA_USER'" - echo "DEBUG: Token (pierwsze 4 znaki) = ${GITEA_TOKEN:0:4}..." - - echo "$GITEA_TOKEN" | docker login git.modwad.pl -u "$GITEA_USER" --password-stdin || { - echo "Błąd logowania do rejestru" - exit 1 - } - - find . -name "*.csproj" -type f | while read csproj; do - PROJECT_DIR=$(dirname "$csproj") - PROJECT_NAME=$(basename "$csproj" .csproj) - - # Tymczasowo pomijamy projekty, które nie mają iść do centralnego rejestru - # Jeśli masz dokładne kryterium → możesz dodać grep po true - # Na razie prosty filtr po nazwie (dostosuj do swoich konwencji) - case "$PROJECT_NAME" in - *DataModel*|*LinuxLocal*) - echo "Pomijam $PROJECT_NAME (DataModel / LinuxLocal)" - continue ;; - esac - + echo "DEBUG: Token (pierwsze 4 znaki) = $GITEA_TOKEN..." + echo "$GITEA_TOKEN" | docker login git.modwad.pl -u "$GITEA_USER" --password-stdin + if [ ! -f projects-to-build.txt ]; then + echo "Brak pliku projects-to-build.txt – nic nie budujemy" + exit 0 + fi + cat projects-to-build.txt | while IFS='|' read PROJECT_DIR PROJECT_NAME; do + if [ -z "$PROJECT_NAME" ]; then continue; fi IMAGE_NAME="trent/${PROJECT_NAME,,}" FULL_IMAGE="git.modwad.pl/${IMAGE_NAME}" - - echo "Przygotowuję Dockerfile dla ${PROJECT_NAME}" - cat > "${PROJECT_DIR}/Dockerfile.temp" <<-EOF - FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base - WORKDIR /app - EXPOSE 8080 - - FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build - WORKDIR /src - COPY . . - RUN dotnet restore "${PROJECT_NAME}.csproj" - RUN dotnet publish "${PROJECT_NAME}.csproj" -c Release -o /app/publish /p:UseAppHost=false - - FROM base AS final - WORKDIR /app - COPY --from=build /app/publish . - ENV ASPNETCORE_URLS=http://+:8080 - ENTRYPOINT ["dotnet", "${PROJECT_NAME}.dll"] + FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base + WORKDIR /app + EXPOSE 8080 + FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build + WORKDIR /src + COPY . . + RUN dotnet restore "${PROJECT_NAME}.csproj" + RUN dotnet publish "${PROJECT_NAME}.csproj" -c Release -o /app/publish /p:UseAppHost=false + FROM base AS final + WORKDIR /app + COPY --from=build /app/publish . + ENV ASPNETCORE_URLS=http://+:8080 + ENTRYPOINT ["dotnet", "${PROJECT_NAME}.dll"] EOF - echo "Buduję → ${FULL_IMAGE}:${CI_COMMIT_SHA}" - docker buildx build --platform linux/amd64 \ -t "${FULL_IMAGE}:${CI_COMMIT_SHA}" \ -t "${FULL_IMAGE}:latest" \ -f "${PROJECT_DIR}/Dockerfile.temp" \ - --push \ "${PROJECT_DIR}" - + docker push "${FULL_IMAGE}:${CI_COMMIT_SHA}" + docker push "${FULL_IMAGE}:latest" rm -f "${PROJECT_DIR}/Dockerfile.temp" - echo "Opublikowano: ${FULL_IMAGE}:latest" done - depends_on: [prepare-restore-for-docker] \ No newline at end of file + depends_on: [select-projects-for-docker] \ No newline at end of file