diff --git a/.gitea/workflows/release-deploy.yml b/.gitea/workflows/release-deploy.yml index b408293..d568561 100644 --- a/.gitea/workflows/release-deploy.yml +++ b/.gitea/workflows/release-deploy.yml @@ -81,13 +81,27 @@ jobs: id: extract_branch run: | BRANCH_NAME=${GITHUB_REF#refs/heads/} - VERSION=${BRANCH_NAME#Release/} + VERSION_RAW=${BRANCH_NAME#Release/} + + # Remove 'V' prefix se existir + VERSION=$(echo "$VERSION_RAW" | sed 's/^[Vv]//') + + # Se versão vazia, usar padrão + if [ -z "$VERSION" ]; then + VERSION="0.0.1" + fi + COMMIT_SHA=${GITHUB_SHA::7} + echo "branch=$BRANCH_NAME" >> $GITHUB_OUTPUT echo "version=$VERSION" >> $GITHUB_OUTPUT echo "commit=$COMMIT_SHA" >> $GITHUB_OUTPUT echo "tag=$VERSION-$COMMIT_SHA" >> $GITHUB_OUTPUT - + + echo "📋 Branch: $BRANCH_NAME" + echo "📦 Version: $VERSION (from $VERSION_RAW)" + echo "🔑 Commit: $COMMIT_SHA" + - name: Build and push multi-arch Docker image run: | echo "Building multi-arch image for platforms: linux/amd64,linux/arm64" diff --git a/BCards.sln b/BCards.sln index b49ff96..a951079 100644 --- a/BCards.sln +++ b/BCards.sln @@ -15,6 +15,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{02EA EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pipeline", "Pipeline", "{3F3DEEDF-9E0A-434D-8130-1FBAC43FD1F7}" ProjectSection(SolutionItems) = preProject + docker-compose.staging.yml = docker-compose.staging.yml + docker-compose.yml = docker-compose.yml + Dockerfile.release = Dockerfile.release .gitea\workflows\release-deploy.yml = .gitea\workflows\release-deploy.yml EndProjectSection EndProject diff --git a/Dockerfile.release b/Dockerfile.release index 32e5e69..ff72e23 100644 --- a/Dockerfile.release +++ b/Dockerfile.release @@ -1,9 +1,8 @@ -# Dockerfile.release - Multi-architecture build for Release environment +# Dockerfile.release - Multi-architecture build for Release environment # Supports: linux/amd64, linux/arm64 - ARG BUILDPLATFORM=linux/amd64 ARG TARGETPLATFORM -ARG VERSION=unknown +ARG VERSION=0.0.1 ARG COMMIT=unknown # Base runtime image with multi-arch support @@ -33,21 +32,32 @@ ARG COMMIT WORKDIR /src -# Copy project files and restore dependencies +# Copy project file and restore dependencies COPY ["src/BCards.Web/BCards.Web.csproj", "src/BCards.Web/"] -RUN dotnet restore "src/BCards.Web/BCards.Web.csproj" \ - --runtime $(echo $TARGETPLATFORM | tr '/' '-') + +# CORREÇÃO: Mapear plataforma para RID correto do .NET +RUN case "$TARGETPLATFORM" in \ + "linux/amd64") RID="linux-x64" ;; \ + "linux/arm64") RID="linux-arm64" ;; \ + *) echo "Unsupported platform: $TARGETPLATFORM" && exit 1 ;; \ + esac && \ + echo "🏗️ Building for platform: $TARGETPLATFORM -> RID: $RID" && \ + dotnet restore "src/BCards.Web/BCards.Web.csproj" --runtime $RID # Copy source code COPY . . WORKDIR "/src/src/BCards.Web" # Build application with Release configuration -RUN dotnet build "BCards.Web.csproj" \ +RUN case "$TARGETPLATFORM" in \ + "linux/amd64") RID="linux-x64" ;; \ + "linux/arm64") RID="linux-arm64" ;; \ + esac && \ + dotnet build "BCards.Web.csproj" \ -c Release \ -o /app/build \ --no-restore \ - --runtime $(echo $TARGETPLATFORM | tr '/' '-') \ + --runtime $RID \ -p:Version=$VERSION \ -p:InformationalVersion=$COMMIT @@ -57,12 +67,16 @@ ARG TARGETPLATFORM ARG VERSION ARG COMMIT -RUN dotnet publish "BCards.Web.csproj" \ +RUN case "$TARGETPLATFORM" in \ + "linux/amd64") RID="linux-x64" ;; \ + "linux/arm64") RID="linux-arm64" ;; \ + esac && \ + dotnet publish "BCards.Web.csproj" \ -c Release \ -o /app/publish \ --no-restore \ --no-build \ - --runtime $(echo $TARGETPLATFORM | tr '/' '-') \ + --runtime $RID \ --self-contained false \ -p:PublishReadyToRun=true \ -p:PublishSingleFile=false \ @@ -72,7 +86,7 @@ RUN dotnet publish "BCards.Web.csproj" \ # Final stage - runtime optimized for Release environment FROM base AS final -ARG VERSION=unknown +ARG VERSION=0.0.1 ARG COMMIT=unknown ARG TARGETPLATFORM @@ -90,8 +104,7 @@ COPY --from=publish /app/publish . # Create non-root user for security RUN groupadd -r bcards && useradd -r -g bcards bcards \ - && chown -R bcards:bcards /app \ - && chmod +x /app/BCards.Web.dll + && chown -R bcards:bcards /app # Environment variables for Release ENV ASPNETCORE_ENVIRONMENT=Release @@ -118,6 +131,3 @@ USER bcards # Entry point with optimized runtime settings ENTRYPOINT ["dotnet", "BCards.Web.dll"] - -# Runtime configuration for better performance -CMD ["--urls", "http://0.0.0.0:8080"] \ No newline at end of file