diff --git a/.woodpecker.yml b/.woodpecker.yml index f7deadf..8d62793 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -117,41 +117,48 @@ steps: done depends_on: [pack-datamodels] - containerize-apps: - image: woodpeckerci/plugin-docker-buildx:latest - environment: - GITEA_USER: - from_secret: gitea_registry_user - GITEA_TOKEN: - from_secret: gitea_registry_token - commands: - - | - set -euf - cd "${CI_WORKSPACE}" + containerize-apps: + image: mcr.microsoft.com/dotnet/sdk:latest + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + GITEA_USER: + from_secret: gitea_registry_user + GITEA_TOKEN: + from_secret: gitea_registry_token + commands: + - | + set -euf + cd "${CI_WORKSPACE}" - echo "DEBUG: Użytkownik = '$GITEA_USER'" - echo "DEBUG: Token (pierwsze 4 znaki) = $GITEA_TOKEN..." + # Instalacja Docker CLI i buildx (potrzebne w kontenerze .NET) + apk update && apk add --no-cache docker docker-cli-buildx + # Uruchomienie dockerd jeśli potrzeba (nie zawsze wymagane przy sock) + # dockerd-entrypoint.sh & sleep 5 # opcjonalne, jeśli masz problemy z sock - echo "$GITEA_TOKEN" | docker login git.modwad.pl -u "$GITEA_USER" --password-stdin + echo "DEBUG: Użytkownik = '$GITEA_USER'" + echo "DEBUG: Token (pierwsze 4 znaki) = $GITEA_TOKEN:0:4..." - dotnet restore + echo "$GITEA_TOKEN" | docker login git.modwad.pl -u "$GITEA_USER" --password-stdin - find . -name "*.csproj" -type f | while read csproj; do - PROJECT_DIR=$(dirname "$csproj") - PROJECT_NAME=$(basename "$csproj" .csproj) + dotnet restore - 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") + find . -name "*.csproj" -type f | while read csproj; do + PROJECT_DIR=$(dirname "$csproj") + PROJECT_NAME=$(basename "$csproj" .csproj) - if [ "$DEPLOY_TO_CENTRAL" != "true" ] || [[ "$PROJECT_TYPE" == "Unknown" || "$PROJECT_TYPE" == "DataModel" || "$PROJECT_TYPE" == "LinuxLocal" ]]; then - echo "Pomijam $PROJECT_NAME ($PROJECT_TYPE)" - continue - fi + 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") - IMAGE_NAME="trent/${PROJECT_NAME,,}" - FULL_IMAGE="git.modwad.pl/${IMAGE_NAME}" + if [ "$DEPLOY_TO_CENTRAL" != "true" ] || [[ "$PROJECT_TYPE" == "Unknown" || "$PROJECT_TYPE" == "DataModel" || "$PROJECT_TYPE" == "LinuxLocal" ]]; then + echo "Pomijam $PROJECT_NAME ($PROJECT_TYPE)" + continue + fi - cat > "${PROJECT_DIR}/Dockerfile.temp" <<-EOF + 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 @@ -167,20 +174,20 @@ steps: COPY --from=build /app/publish . ENV ASPNETCORE_URLS=http://+:8080 ENTRYPOINT ["dotnet", "${PROJECT_NAME}.dll"] - EOF + 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" \ - "${PROJECT_DIR}" + 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" \ + "${PROJECT_DIR}" - docker push "${FULL_IMAGE}:${CI_COMMIT_SHA}" - docker push "${FULL_IMAGE}:latest" + docker push "${FULL_IMAGE}:${CI_COMMIT_SHA}" + docker push "${FULL_IMAGE}:latest" - rm -f "${PROJECT_DIR}/Dockerfile.temp" + rm -f "${PROJECT_DIR}/Dockerfile.temp" - echo "Opublikowano: ${FULL_IMAGE}:latest" - done - depends_on: [publish-datamodels-to-baget] \ No newline at end of file + echo "Opublikowano: ${FULL_IMAGE}:latest" + done + depends_on: [publish-datamodels-to-baget] \ No newline at end of file