name: cd on: push: branches: [main] workflow_dispatch: env: REGISTRY: registry.juwan.xhttp.zip REPO: juwan jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Buildx uses: docker/setup-buildx-action@v3 - name: Login registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and push all shell: bash env: REGISTRY: ${{ env.REGISTRY }} REPO: ${{ env.REPO }} run: | set -euo pipefail SHA_TAG="${GITHUB_SHA::7}" python3 - >/tmp/targets <<'PY' import os NAME_OVERRIDE = { "users": ("users", "user"), "user_verifications": ("user_verifications", "user-verifications"), } STATEFULSETS = {"snowflake-rpc": "snowflake"} for svc in sorted(os.listdir("app")): svc_dir = f"app/{svc}" if not os.path.isdir(svc_dir): continue for sub in sorted(os.listdir(svc_dir)): d = f"{svc_dir}/{sub}" if not os.path.isdir(d) or sub not in ("api","rpc","mq","adapter"): continue img_pre, wl_pre = NAME_OVERRIDE.get(svc, (svc, svc)) image = f"{img_pre}-{sub}" workload = STATEFULSETS.get(image, f"{wl_pre}-{sub}") print(f"{image}|{d}|{workload}") PY while IFS='|' read -r image dir _workload; do echo "::group::Build $image" entry=$(grep -l "package main" "$dir"/*.go | head -n1) cfg=$(basename "$(find "$dir/etc" -maxdepth 1 -name '*.yaml' | head -n1)" 2>/dev/null || echo config.yaml) cat > Dockerfile.build < ~/.kube/config chmod 600 ~/.kube/config SHA_TAG="${GITHUB_SHA::7}" python3 - <