From 5665a0adfd0d22a0d19c9b886efb914a635b6521 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 13:47:31 +0000 Subject: [PATCH 01/16] Trigger build From 54389c03e0df8139a7898ad48ed762962ee51dcd Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:03:44 +0000 Subject: [PATCH 02/16] Fix workflow: use DinD instead of docker:latest --- .github/workflows/kub-deploy.yml | 74 ++++++++++++++++++-------------- 1 file changed, 41 insertions(+), 33 deletions(-) diff --git a/.github/workflows/kub-deploy.yml b/.github/workflows/kub-deploy.yml index 965e695..1e49f46 100644 --- a/.github/workflows/kub-deploy.yml +++ b/.github/workflows/kub-deploy.yml @@ -5,44 +5,52 @@ on: branches: - kub-stage -env: - REGISTRY: 194.5.195.53:30080 - IMAGE_NAME: admin/frontoffice-bff - jobs: - build-and-deploy: + build-and-push: runs-on: ubuntu-latest container: - image: docker:latest + image: catthehacker/ubuntu:act-latest options: --privileged - env: - HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 - + + services: + dind: + image: docker:27-dind + options: --privileged + env: + DOCKER_TLS_CERTDIR: "" + HTTP_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" + HTTPS_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" + NO_PROXY: "localhost,127.0.0.1,gitea-svc,194.5.195.53" + + env: + DOCKER_HOST: tcp://dind:2375 + HTTP_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" + HTTPS_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" + NO_PROXY: "localhost,127.0.0.1,dind,gitea-svc,194.5.195.53" + steps: - - name: Install git - run: apk add --no-cache git - - - name: Clone repository - run: git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . - - - name: Start Docker daemon + - uses: actions/checkout@v4 + + - name: Wait for Docker run: | - mkdir -p /etc/docker - echo '{"insecure-registries": ["194.5.195.53:30080"]}' > /etc/docker/daemon.json - dockerd & - for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break || sleep 2; done - - - name: Build Docker Image + for i in {1..30}; do + if docker info >/dev/null 2>&1; then + echo "Docker is ready" + exit 0 + fi + echo "Waiting for Docker... ($i/30)" + sleep 2 + done + exit 1 + + - name: Build image run: | - docker build -t $REGISTRY/$IMAGE_NAME:${{ github.sha }} \ - -t $REGISTRY/$IMAGE_NAME:latest \ - --build-arg HTTP_PROXY=$HTTP_PROXY \ - --build-arg HTTPS_PROXY=$HTTPS_PROXY . - - - name: Push to Registry + docker build -t 194.5.195.53:30080/admin/frontoffice-bff:latest . + + - name: Login to registry run: | - echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login $REGISTRY -u admin --password-stdin - docker push $REGISTRY/$IMAGE_NAME:${{ github.sha }} - docker push $REGISTRY/$IMAGE_NAME:latest + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login 194.5.195.53:30080 -u admin --password-stdin + + - name: Push image + run: docker push 194.5.195.53:30080/admin/frontoffice-bff:latest From 04c4580fcf62cb45c3f1ee22ae47708d793a5a58 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:07:01 +0000 Subject: [PATCH 03/16] Trigger build again From 5a32c98e26d5aa274c0fcda6d68f829a7a0e4b4b Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:13:21 +0000 Subject: [PATCH 04/16] Simplify Dockerfile: copy all src at once --- Dockerfile | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index ca00821..9098ceb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,13 @@ FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src -COPY src/FrontOffice.BFF.sln ./ -COPY src/FrontOffice.BFF.WebApi/*.csproj ./FrontOffice.BFF.WebApi/ -COPY src/FrontOffice.BFF.Application/*.csproj ./FrontOffice.BFF.Application/ -COPY src/FrontOffice.BFF.Infrastructure/*.csproj ./FrontOffice.BFF.Infrastructure/ -COPY src/FrontOffice.BFF.Domain/*.csproj ./FrontOffice.BFF.Domain/ -COPY src/Protobufs/FrontOffice.BFF.Commission.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.Commission.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.UserWallet.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.UserWallet.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.User.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.User.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.Package.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.Package.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.UserOrder.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.UserOrder.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.UserAddress.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.UserAddress.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.Products.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.Products.Protobuf/ -COPY src/Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/*.csproj ./Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/ - -RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" - +# Copy all source files COPY src/ ./ +# Restore dependencies +RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" + +# Build and publish RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime From 29e60ba22dd553c1c31f0a248aeed773b1e509a1 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:20:13 +0000 Subject: [PATCH 05/16] Add Docker CLI installation step to workflow --- .github/workflows/kub-deploy.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/kub-deploy.yml b/.github/workflows/kub-deploy.yml index 1e49f46..1c9d38a 100644 --- a/.github/workflows/kub-deploy.yml +++ b/.github/workflows/kub-deploy.yml @@ -31,6 +31,11 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Install Docker CLI + run: | + apt-get update -qq + apt-get install -y -qq docker.io + - name: Wait for Docker run: | for i in {1..30}; do From 30f509c9b64bb9d165141fb9dd7964dd548c3b5a Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:26:34 +0000 Subject: [PATCH 06/16] Force trigger build From 5633b5e48b87cb96bdf08f068117ce190064d9c1 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:45:59 +0000 Subject: [PATCH 07/16] Fix: move workflow to .gitea/workflows/ (Gitea standard) --- .github/workflows/kub-deploy.yml | 61 -------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 .github/workflows/kub-deploy.yml diff --git a/.github/workflows/kub-deploy.yml b/.github/workflows/kub-deploy.yml deleted file mode 100644 index 1c9d38a..0000000 --- a/.github/workflows/kub-deploy.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Build and Deploy to Kubernetes - -on: - push: - branches: - - kub-stage - -jobs: - build-and-push: - runs-on: ubuntu-latest - container: - image: catthehacker/ubuntu:act-latest - options: --privileged - - services: - dind: - image: docker:27-dind - options: --privileged - env: - DOCKER_TLS_CERTDIR: "" - HTTP_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" - HTTPS_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" - NO_PROXY: "localhost,127.0.0.1,gitea-svc,194.5.195.53" - - env: - DOCKER_HOST: tcp://dind:2375 - HTTP_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" - HTTPS_PROXY: "http://proxyuser:87zH26nbqT2@46.249.98.211:3128" - NO_PROXY: "localhost,127.0.0.1,dind,gitea-svc,194.5.195.53" - - steps: - - uses: actions/checkout@v4 - - - name: Install Docker CLI - run: | - apt-get update -qq - apt-get install -y -qq docker.io - - - name: Wait for Docker - run: | - for i in {1..30}; do - if docker info >/dev/null 2>&1; then - echo "Docker is ready" - exit 0 - fi - echo "Waiting for Docker... ($i/30)" - sleep 2 - done - exit 1 - - - name: Build image - run: | - docker build -t 194.5.195.53:30080/admin/frontoffice-bff:latest . - - - name: Login to registry - run: | - echo "${{ secrets.REGISTRY_PASSWORD }}" | \ - docker login 194.5.195.53:30080 -u admin --password-stdin - - - name: Push image - run: docker push 194.5.195.53:30080/admin/frontoffice-bff:latest From b5b8cefc4237dc26f2e9ce4927b538203d90138a Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:50:28 +0000 Subject: [PATCH 08/16] Add NuGet.config for private packages and .gitea workflow --- .gitea/workflows/kub-deploy.yml | 68 +++++++++++++++++++++++++++++++++ NuGet.config | 18 +++++++++ 2 files changed, 86 insertions(+) create mode 100644 .gitea/workflows/kub-deploy.yml create mode 100644 NuGet.config diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml new file mode 100644 index 0000000..90e96dd --- /dev/null +++ b/.gitea/workflows/kub-deploy.yml @@ -0,0 +1,68 @@ +name: Build and Deploy to Kubernetes + +on: + push: + branches: + - kub-stage + +env: + REGISTRY: 194.5.195.53:30080 + IMAGE_NAME: admin/frontoffice-bff + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + container: + image: docker:latest + options: --privileged + env: + HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 + steps: + - name: Install git + run: apk add --no-cache git + + - name: Clone repo + run: | + git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . + + - name: Start Docker daemon with insecure registry + run: | + mkdir -p /etc/docker + cat > /etc/docker/daemon.json << 'DAEMON' + { + "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] + } + DAEMON + mkdir -p ~/.docker + cat > ~/.docker/config.json << 'CONF' + { + "proxies": { + "default": { + "httpProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "httpsProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "noProxy": "localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8" + } + } + } + CONF + dockerd & + for i in $(seq 1 30); do + docker info >/dev/null 2>&1 && break || sleep 2 + done + docker info + + - name: Build Docker Image + run: | + docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ + --build-arg HTTP_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + --build-arg HTTPS_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ + . + + - name: Push to Registry + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ env.REGISTRY }} -u admin --password-stdin + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest diff --git a/NuGet.config b/NuGet.config new file mode 100644 index 0000000..81da29b --- /dev/null +++ b/NuGet.config @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + From 027b76c2e54c2cb0bf16cf0e5c96a7d2957f708c Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 14:59:52 +0000 Subject: [PATCH 09/16] Update Dockerfile: add proxy env vars and copy NuGet.config --- Dockerfile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9098ceb..c1011e5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,19 @@ FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build + +ARG HTTP_PROXY +ARG HTTPS_PROXY + +ENV HTTP_PROXY=${HTTP_PROXY} +ENV HTTPS_PROXY=${HTTPS_PROXY} +ENV http_proxy=${HTTP_PROXY} +ENV https_proxy=${HTTPS_PROXY} + WORKDIR /src -# Copy all source files COPY src/ ./ +COPY NuGet.config ./ -# Restore dependencies RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" - -# Build and publish RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime From 44b87ecf509c53c22f868011c78afba11d6ac21f Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 15:07:52 +0000 Subject: [PATCH 10/16] Move Dockerfile & NuGet.config to WebApi directory, update workflow --- .gitea/workflows/kub-deploy.yml | 1 + Dockerfile | 26 ------------- src/FrontOffice.BFF.WebApi/Dockerfile | 37 +++++++++++++++++++ .../FrontOffice.BFF.WebApi/NuGet.config | 0 4 files changed, 38 insertions(+), 26 deletions(-) delete mode 100644 Dockerfile create mode 100644 src/FrontOffice.BFF.WebApi/Dockerfile rename NuGet.config => src/FrontOffice.BFF.WebApi/NuGet.config (100%) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index 90e96dd..803f8f9 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -55,6 +55,7 @@ jobs: - name: Build Docker Image run: | + cd src/FrontOffice.BFF.WebApi docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ --build-arg HTTP_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index c1011e5..0000000 --- a/Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build - -ARG HTTP_PROXY -ARG HTTPS_PROXY - -ENV HTTP_PROXY=${HTTP_PROXY} -ENV HTTPS_PROXY=${HTTPS_PROXY} -ENV http_proxy=${HTTP_PROXY} -ENV https_proxy=${HTTPS_PROXY} - -WORKDIR /src - -COPY src/ ./ -COPY NuGet.config ./ - -RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore - -FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime -WORKDIR /app -COPY --from=build /app/publish . - -ENV ASPNETCORE_URLS=http://+:8080 -EXPOSE 8080 - -ENTRYPOINT ["dotnet", "FrontOffice.BFF.WebApi.dll"] diff --git a/src/FrontOffice.BFF.WebApi/Dockerfile b/src/FrontOffice.BFF.WebApi/Dockerfile new file mode 100644 index 0000000..4f3c334 --- /dev/null +++ b/src/FrontOffice.BFF.WebApi/Dockerfile @@ -0,0 +1,37 @@ +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src + +# Copy NuGet config +COPY NuGet.config ./ + +# Copy solution file +COPY ../FrontOffice.BFF.sln ./ + +# Copy all project files +COPY FrontOffice.BFF.WebApi.csproj ./FrontOffice.BFF.WebApi/ +COPY ../FrontOffice.BFF.Application/*.csproj ./FrontOffice.BFF.Application/ +COPY ../FrontOffice.BFF.Infrastructure/*.csproj ./FrontOffice.BFF.Infrastructure/ +COPY ../FrontOffice.BFF.Domain/*.csproj ./FrontOffice.BFF.Domain/ +COPY ../Protobufs/*/*.csproj ./Protobufs/ + +# Restore with NuGet.config +RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile NuGet.config + +# Copy all source code +COPY . ./FrontOffice.BFF.WebApi/ +COPY ../FrontOffice.BFF.Application/ ./FrontOffice.BFF.Application/ +COPY ../FrontOffice.BFF.Infrastructure/ ./FrontOffice.BFF.Infrastructure/ +COPY ../FrontOffice.BFF.Domain/ ./FrontOffice.BFF.Domain/ +COPY ../Protobufs/ ./Protobufs/ + +# Build and publish +RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore + +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime +WORKDIR /app +COPY --from=build /app/publish . + +ENV ASPNETCORE_URLS=http://+:8080 +EXPOSE 8080 + +ENTRYPOINT ["dotnet", "FrontOffice.BFF.WebApi.dll"] diff --git a/NuGet.config b/src/FrontOffice.BFF.WebApi/NuGet.config similarity index 100% rename from NuGet.config rename to src/FrontOffice.BFF.WebApi/NuGet.config From 57f73e3dccf01b08e342225edf6bbf9800934cd2 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 15:09:15 +0000 Subject: [PATCH 11/16] Simplify Dockerfile: copy all from src/ parent dir --- src/FrontOffice.BFF.WebApi/Dockerfile | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/FrontOffice.BFF.WebApi/Dockerfile b/src/FrontOffice.BFF.WebApi/Dockerfile index 4f3c334..8ac0009 100644 --- a/src/FrontOffice.BFF.WebApi/Dockerfile +++ b/src/FrontOffice.BFF.WebApi/Dockerfile @@ -1,28 +1,11 @@ FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src -# Copy NuGet config -COPY NuGet.config ./ +# Copy everything from parent directory (src/) +COPY ../ ./ -# Copy solution file -COPY ../FrontOffice.BFF.sln ./ - -# Copy all project files -COPY FrontOffice.BFF.WebApi.csproj ./FrontOffice.BFF.WebApi/ -COPY ../FrontOffice.BFF.Application/*.csproj ./FrontOffice.BFF.Application/ -COPY ../FrontOffice.BFF.Infrastructure/*.csproj ./FrontOffice.BFF.Infrastructure/ -COPY ../FrontOffice.BFF.Domain/*.csproj ./FrontOffice.BFF.Domain/ -COPY ../Protobufs/*/*.csproj ./Protobufs/ - -# Restore with NuGet.config -RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile NuGet.config - -# Copy all source code -COPY . ./FrontOffice.BFF.WebApi/ -COPY ../FrontOffice.BFF.Application/ ./FrontOffice.BFF.Application/ -COPY ../FrontOffice.BFF.Infrastructure/ ./FrontOffice.BFF.Infrastructure/ -COPY ../FrontOffice.BFF.Domain/ ./FrontOffice.BFF.Domain/ -COPY ../Protobufs/ ./Protobufs/ +# Restore using NuGet.config in WebApi folder +RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile FrontOffice.BFF.WebApi/NuGet.config # Build and publish RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore From 05c378c00b414c8701bee16d78fee0c3ada942ce Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 15:46:01 +0000 Subject: [PATCH 12/16] Fix: Use standard VS Dockerfile pattern with correct build context --- .gitea/workflows/kub-deploy.yml | 41 ++++++--------------------- src/FrontOffice.BFF.WebApi/Dockerfile | 39 ++++++++++++++----------- 2 files changed, 31 insertions(+), 49 deletions(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index 803f8f9..b6b9586 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy to Kubernetes +name: Build and Deploy on: push: @@ -10,43 +10,17 @@ env: IMAGE_NAME: admin/frontoffice-bff jobs: - build-and-deploy: + build: runs-on: ubuntu-latest container: image: docker:latest options: --privileged - env: - HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 steps: - - name: Install git - run: apk add --no-cache git + - name: Checkout code + uses: actions/checkout@v4 - - name: Clone repo + - name: Start Docker daemon run: | - git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . - - - name: Start Docker daemon with insecure registry - run: | - mkdir -p /etc/docker - cat > /etc/docker/daemon.json << 'DAEMON' - { - "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] - } - DAEMON - mkdir -p ~/.docker - cat > ~/.docker/config.json << 'CONF' - { - "proxies": { - "default": { - "httpProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", - "httpsProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", - "noProxy": "localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8" - } - } - } - CONF dockerd & for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break || sleep 2 @@ -55,8 +29,9 @@ jobs: - name: Build Docker Image run: | - cd src/FrontOffice.BFF.WebApi - docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ + cd src + docker build -f FrontOffice.BFF.WebApi/Dockerfile \ + -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} \ -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ --build-arg HTTP_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ --build-arg HTTPS_PROXY=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 \ diff --git a/src/FrontOffice.BFF.WebApi/Dockerfile b/src/FrontOffice.BFF.WebApi/Dockerfile index 8ac0009..d4e1f27 100644 --- a/src/FrontOffice.BFF.WebApi/Dockerfile +++ b/src/FrontOffice.BFF.WebApi/Dockerfile @@ -1,20 +1,27 @@ -FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build -WORKDIR /src - -# Copy everything from parent directory (src/) -COPY ../ ./ - -# Restore using NuGet.config in WebApi folder -RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile FrontOffice.BFF.WebApi/NuGet.config - -# Build and publish -RUN dotnet publish "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish --no-restore - -FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime +FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base WORKDIR /app -COPY --from=build /app/publish . - -ENV ASPNETCORE_URLS=http://+:8080 EXPOSE 8080 +FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build +WORKDIR /src +COPY ["FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj", "FrontOffice.BFF.WebApi/"] +COPY ["FrontOffice.BFF.WebApi/NuGet.config", "FrontOffice.BFF.WebApi/"] +COPY ["FrontOffice.BFF.Application/FrontOffice.BFF.Application.csproj", "FrontOffice.BFF.Application/"] +COPY ["FrontOffice.BFF.Infrastructure/FrontOffice.BFF.Infrastructure.csproj", "FrontOffice.BFF.Infrastructure/"] +COPY ["FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj", "FrontOffice.BFF.Domain/"] + +RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile "FrontOffice.BFF.WebApi/NuGet.config" + +COPY . . +WORKDIR "/src/FrontOffice.BFF.WebApi" +RUN dotnet build "FrontOffice.BFF.WebApi.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "FrontOffice.BFF.WebApi.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . + +ENV ASPNETCORE_URLS=http://+:8080 ENTRYPOINT ["dotnet", "FrontOffice.BFF.WebApi.dll"] From 49cad96962b4bbef6d0618d4cf3138eac1f9e4f6 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 16:12:59 +0000 Subject: [PATCH 13/16] Add all Protobuf projects to Dockerfile --- src/FrontOffice.BFF.WebApi/Dockerfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/FrontOffice.BFF.WebApi/Dockerfile b/src/FrontOffice.BFF.WebApi/Dockerfile index d4e1f27..6059356 100644 --- a/src/FrontOffice.BFF.WebApi/Dockerfile +++ b/src/FrontOffice.BFF.WebApi/Dockerfile @@ -4,12 +4,29 @@ EXPOSE 8080 FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build WORKDIR /src + +# Copy main projects COPY ["FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj", "FrontOffice.BFF.WebApi/"] COPY ["FrontOffice.BFF.WebApi/NuGet.config", "FrontOffice.BFF.WebApi/"] COPY ["FrontOffice.BFF.Application/FrontOffice.BFF.Application.csproj", "FrontOffice.BFF.Application/"] COPY ["FrontOffice.BFF.Infrastructure/FrontOffice.BFF.Infrastructure.csproj", "FrontOffice.BFF.Infrastructure/"] COPY ["FrontOffice.BFF.Domain/FrontOffice.BFF.Domain.csproj", "FrontOffice.BFF.Domain/"] +# Copy all Protobuf projects +COPY ["Protobufs/FrontOffice.BFF.Category.Protobuf/FrontOffice.BFF.Category.Protobuf.csproj", "Protobufs/FrontOffice.BFF.Category.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/FrontOffice.BFF.ClubMembership.Protobuf.csproj", "Protobufs/FrontOffice.BFF.ClubMembership.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.Commission.Protobuf/FrontOffice.BFF.Commission.Protobuf.csproj", "Protobufs/FrontOffice.BFF.Commission.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/FrontOffice.BFF.DiscountShop.Protobuf.csproj", "Protobufs/FrontOffice.BFF.DiscountShop.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/FrontOffice.BFF.NetworkMembership.Protobuf.csproj", "Protobufs/FrontOffice.BFF.NetworkMembership.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.Package.Protobuf/FrontOffice.BFF.Package.Protobuf.csproj", "Protobufs/FrontOffice.BFF.Package.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.Products.Protobuf/FrontOffice.BFF.Products.Protobuf.csproj", "Protobufs/FrontOffice.BFF.Products.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/FrontOffice.BFF.ShopingCart.Protobuf.csproj", "Protobufs/FrontOffice.BFF.ShopingCart.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.Transaction.Protobuf/FrontOffice.BFF.Transaction.Protobuf.csproj", "Protobufs/FrontOffice.BFF.Transaction.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.User.Protobuf/FrontOffice.BFF.User.Protobuf.csproj", "Protobufs/FrontOffice.BFF.User.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.UserAddress.Protobuf/FrontOffice.BFF.UserAddress.Protobuf.csproj", "Protobufs/FrontOffice.BFF.UserAddress.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.UserOrder.Protobuf/FrontOffice.BFF.UserOrder.Protobuf.csproj", "Protobufs/FrontOffice.BFF.UserOrder.Protobuf/"] +COPY ["Protobufs/FrontOffice.BFF.UserWallet.Protobuf/FrontOffice.BFF.UserWallet.Protobuf.csproj", "Protobufs/FrontOffice.BFF.UserWallet.Protobuf/"] + RUN dotnet restore "FrontOffice.BFF.WebApi/FrontOffice.BFF.WebApi.csproj" --configfile "FrontOffice.BFF.WebApi/NuGet.config" COPY . . From 9fe93e04d8fd45f2f30018e29b2a061aa9a5f11e Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 16:49:10 +0000 Subject: [PATCH 14/16] Fix: Replace actions/checkout with manual git clone (Node.js not available in docker:latest) --- .gitea/workflows/kub-deploy.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index b6b9586..ee9692b 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -16,8 +16,14 @@ jobs: image: docker:latest options: --privileged steps: + - name: Install git + run: | + apk add --no-cache git + - name: Checkout code - uses: actions/checkout@v4 + run: | + git clone --depth 1 --branch kub-stage http://194.5.195.53:30080/admin/FrontOffice.BFF.git . + git log -1 --format="%H %s" - name: Start Docker daemon run: | From 07f781982030598f5384b6b9bb850654ff2f865f Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 17:14:50 +0000 Subject: [PATCH 15/16] Add insecure-registries config for Docker daemon --- .gitea/workflows/kub-deploy.yml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index ee9692b..eb419f5 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -16,8 +16,15 @@ jobs: image: docker:latest options: --privileged steps: + - name: Set proxy for apk + run: | + export http_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + export https_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + - name: Install git run: | + export http_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + export https_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 apk add --no-cache git - name: Checkout code @@ -25,8 +32,14 @@ jobs: git clone --depth 1 --branch kub-stage http://194.5.195.53:30080/admin/FrontOffice.BFF.git . git log -1 --format="%H %s" - - name: Start Docker daemon + - name: Start Docker daemon with insecure registry run: | + mkdir -p /etc/docker + cat > /etc/docker/daemon.json << 'DOCKER_EOF' + { + "insecure-registries": ["194.5.195.53:30080"] + } + DOCKER_EOF dockerd & for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break || sleep 2 From 609f79723f8e017e7e573742001f398319d9c4e2 Mon Sep 17 00:00:00 2001 From: masoud Date: Sat, 6 Dec 2025 17:21:47 +0000 Subject: [PATCH 16/16] Use CMS workflow pattern with insecure registry config --- .gitea/workflows/kub-deploy.yml | 37 ++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index eb419f5..d9693e9 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -15,31 +15,38 @@ jobs: container: image: docker:latest options: --privileged + env: + HTTP_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + HTTPS_PROXY: http://proxyuser:87zH26nbqT2@46.249.98.211:3128 + NO_PROXY: localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8 steps: - - name: Set proxy for apk - run: | - export http_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - export https_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - - name: Install git - run: | - export http_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - export https_proxy=http://proxyuser:87zH26nbqT2@46.249.98.211:3128 - apk add --no-cache git + run: apk add --no-cache git - - name: Checkout code + - name: Clone repo run: | - git clone --depth 1 --branch kub-stage http://194.5.195.53:30080/admin/FrontOffice.BFF.git . - git log -1 --format="%H %s" + git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . - name: Start Docker daemon with insecure registry run: | mkdir -p /etc/docker - cat > /etc/docker/daemon.json << 'DOCKER_EOF' + cat > /etc/docker/daemon.json << 'DAEMON' { - "insecure-registries": ["194.5.195.53:30080"] + "insecure-registries": ["194.5.195.53:30080", "gitea-svc:3000"] } - DOCKER_EOF + DAEMON + mkdir -p ~/.docker + cat > ~/.docker/config.json << 'CONF' + { + "proxies": { + "default": { + "httpProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "httpsProxy": "http://proxyuser:87zH26nbqT2@46.249.98.211:3128", + "noProxy": "localhost,127.0.0.1,gitea-svc,194.5.195.53,10.0.0.0/8" + } + } + } + CONF dockerd & for i in $(seq 1 30); do docker info >/dev/null 2>&1 && break || sleep 2