From de6c34b50b62478f75239efafc6eab7df06030b9 Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Thu, 29 Jan 2026 04:46:05 +0330 Subject: [PATCH] feat: add publish-packages job to CI/CD workflow - Auto-detect and pack *Protobuf*.csproj files - Push to Nexus with --skip-duplicate - Build job now depends on publish-packages --- .gitea/workflows/kub-deploy.yml | 67 ++++++++++++++++++++++++++------- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/kub-deploy.yml b/.gitea/workflows/kub-deploy.yml index 674453a..bf9a863 100644 --- a/.gitea/workflows/kub-deploy.yml +++ b/.gitea/workflows/kub-deploy.yml @@ -8,10 +8,63 @@ on: env: REGISTRY: gitea-svc:3000 IMAGE_NAME: admin/frontoffice-bff + NEXUS_URL: http://194.5.195.53:32081/repository/foursat-nuget-hosted/index.json + NEXUS_USER: admin + NEXUS_PASS: 87zH26nbqT jobs: + # Job 1: Pack and Push Protobuf packages + publish-packages: + runs-on: ubuntu-latest + container: + image: 194.5.195.53:32082/dotnet/sdk:9.0 + steps: + - name: Checkout code + run: | + apt-get update -qq && apt-get install -y git -qq + git clone --depth 1 --branch kub-stage http://gitea-svc:3000/admin/FrontOffice.BFF.git . + git log -1 --format="%H %s" + + - name: Pack and Push Protobuf packages + run: | + echo "📦 Looking for Protobuf projects..." + + PROTO_PROJECTS=$(find . -name "*Protobuf*.csproj" -type f) + + if [ -z "$PROTO_PROJECTS" ]; then + echo "⚠️ No Protobuf projects found" + exit 0 + fi + + echo "Found $(echo "$PROTO_PROJECTS" | wc -l) Protobuf projects" + echo "" + + for proj in $PROTO_PROJECTS; do + proj_name=$(basename "$proj" .csproj) + echo "📦 $proj_name" + + proj_dir=$(dirname "$proj") + + dotnet restore "$proj" -v q + dotnet build "$proj" -c Release --no-restore -v q + dotnet pack "$proj" -c Release --no-build -o "$proj_dir/nupkg" -v q + + for nupkg in $proj_dir/nupkg/*.nupkg; do + if [ -f "$nupkg" ]; then + dotnet nuget push "$nupkg" \ + --source "${{ env.NEXUS_URL }}" \ + --api-key "${{ env.NEXUS_USER }}:${{ env.NEXUS_PASS }}" \ + --skip-duplicate 2>/dev/null && echo " ✅ Pushed" || echo " ⏭️ Skipped" + fi + done + done + + echo "✅ All Protobuf packages processed!" + + # Job 2: Build and Deploy Docker image build: runs-on: ubuntu-latest + needs: publish-packages container: image: docker:latest options: --privileged @@ -21,21 +74,9 @@ jobs: mkdir -p /etc/docker cat > /etc/docker/daemon.json << 'DAEMON' { - "insecure-registries": ["194.5.195.53:30080", "194.5.195.53:32500", "194.5.195.53:32082", "gitea-svc:3000"], + "insecure-registries": ["194.5.195.53:30080", "194.5.195.53:32500", "194.5.195.53:32082", "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