From 86ff97b31113dee03b1c2cd8f958a5634b340732 Mon Sep 17 00:00:00 2001 From: trent Date: Thu, 15 Jan 2026 10:00:20 +0000 Subject: [PATCH] Update .woodpecker.yml --- .woodpecker.yml | 83 ++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 45 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index e4e1ea7..305d450 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -108,30 +108,9 @@ steps: --skip-duplicate done depends_on: [pack-datamodels] - select-projects-for-container: - image: mcr.microsoft.com/dotnet/sdk:latest - commands: - - | - set -euf - cd "${CI_WORKSPACE}" - > projects-to-build.txt - find . -name "*.csproj" -type f | while read csproj; do - PROJECT_TYPE=$(dotnet msbuild "$csproj" -getProperty:ProjectType -noLogo 2>/dev/null || echo "Unknown") - if [[ "$PROJECT_TYPE" == "Unknown" || "$PROJECT_TYPE" == "DataModel" || "$PROJECT_TYPE" == "LinuxLocal" ]]; then - : - else - PROJECT_NAME=$(basename "$csproj" .csproj) - PROJECT_DIR=$(dirname "$csproj") - echo "$PROJECT_DIR|$PROJECT_NAME" >> projects-to-build.txt - fi - done - depends_on: [publish-datamodels-to-baget] containerize-apps: - image: woodpeckerci/plugin-docker-buildx:latest - volumes: - - /var/run/docker.sock:/var/run/docker.sock + image: mcr.microsoft.com/dotnet/sdk:latest environment: - DOCKER_HOST: unix:///var/run/docker.sock GITEA_USER: from_secret: gitea_registry_user GITEA_TOKEN: @@ -140,35 +119,49 @@ steps: - | set -euf cd "${CI_WORKSPACE}" - echo "DEBUG: DOCKER_HOST = $DOCKER_HOST" + + # Instalacja Dockera CLI i buildx w obrazie Debian-based (.NET SDK) + apt-get update -y && apt-get install -y --no-install-recommends \ + ca-certificates curl gnupg lsb-release \ + && curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg \ + && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list \ + && apt-get update -y && apt-get install -y docker-ce-cli docker-buildx-plugin \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + echo "DEBUG: ls /var/run/docker.sock:" ls -l /var/run/docker.sock || echo "Socket NIE widoczny" + echo "DEBUG: Użytkownik = '$GITEA_USER'" echo "DEBUG: Token (pierwsze 4 znaki) = $GITEA_TOKEN..." + echo "$GITEA_TOKEN" | docker login git.modwad.pl -u "$GITEA_USER" --password-stdin - if [ ! -s projects-to-build.txt ]; then - echo "Brak projektów do zbudowania" - exit 0 - fi - while IFS='|' read -r PROJECT_DIR PROJECT_NAME; do - if [ -z "$PROJECT_NAME" ]; then continue; fi + + 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 "Pomijam $PROJECT_NAME ($PROJECT_TYPE)" + continue + fi IMAGE_NAME="trent/${PROJECT_NAME,,}" FULL_IMAGE="git.modwad.pl/${IMAGE_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"] - 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"] + EOF echo "Buduję → ${FULL_IMAGE}:${CI_COMMIT_SHA}" docker buildx build --platform linux/amd64 \ -t "${FULL_IMAGE}:${CI_COMMIT_SHA}" \ @@ -179,5 +172,5 @@ steps: docker push "${FULL_IMAGE}:latest" rm -f "${PROJECT_DIR}/Dockerfile.temp" echo "Opublikowano: ${FULL_IMAGE}:latest" - done < projects-to-build.txt - depends_on: [select-projects-for-container] \ No newline at end of file + done + depends_on: [publish-datamodels-to-baget] \ No newline at end of file