diff --git a/.woodpecker.yml b/.woodpecker.yml index 457f110e..27805ff9 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -3,7 +3,7 @@ steps: # PR VALIDATION: Parallel type checks (PRs only) # =========================================== typecheck-backend: - image: code.cannabrands.app/creationshop/node:20 + image: git.spdy.io/creationshop/node:20 commands: - cd backend - npm ci --prefer-offline @@ -13,7 +13,7 @@ steps: event: pull_request typecheck-cannaiq: - image: code.cannabrands.app/creationshop/node:20 + image: git.spdy.io/creationshop/node:20 commands: - cd cannaiq - npm ci --prefer-offline @@ -23,7 +23,7 @@ steps: event: pull_request typecheck-findadispo: - image: code.cannabrands.app/creationshop/node:20 + image: git.spdy.io/creationshop/node:20 commands: - cd findadispo/frontend - npm ci --prefer-offline @@ -33,7 +33,7 @@ steps: event: pull_request typecheck-findagram: - image: code.cannabrands.app/creationshop/node:20 + image: git.spdy.io/creationshop/node:20 commands: - cd findagram/frontend - npm ci --prefer-offline @@ -58,7 +58,7 @@ steps: -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d '{"Do":"merge"}' \ - "https://code.cannabrands.app/api/v1/repos/Creationshop/dispensary-scraper/pulls/${CI_COMMIT_PULL_REQUEST}/merge" + "https://git.spdy.io/api/v1/repos/Creationshop/cannaiq/pulls/${CI_COMMIT_PULL_REQUEST}/merge" depends_on: - typecheck-backend - typecheck-cannaiq @@ -74,8 +74,8 @@ steps: docker-backend: image: plugins/docker settings: - registry: code.cannabrands.app - repo: code.cannabrands.app/creationshop/dispensary-scraper + registry: git.spdy.io + repo: git.spdy.io/creationshop/cannaiq tags: - latest - sha-${CI_COMMIT_SHA:0:8} @@ -98,8 +98,8 @@ steps: docker-cannaiq: image: plugins/docker settings: - registry: code.cannabrands.app - repo: code.cannabrands.app/creationshop/cannaiq-frontend + registry: git.spdy.io + repo: git.spdy.io/creationshop/cannaiq-frontend tags: - latest - sha-${CI_COMMIT_SHA:0:8} @@ -117,8 +117,8 @@ steps: docker-findadispo: image: plugins/docker settings: - registry: code.cannabrands.app - repo: code.cannabrands.app/creationshop/findadispo-frontend + registry: git.spdy.io + repo: git.spdy.io/creationshop/findadispo-frontend tags: - latest - sha-${CI_COMMIT_SHA:0:8} @@ -136,8 +136,8 @@ steps: docker-findagram: image: plugins/docker settings: - registry: code.cannabrands.app - repo: code.cannabrands.app/creationshop/findagram-frontend + registry: git.spdy.io + repo: git.spdy.io/creationshop/findagram-frontend tags: - latest - sha-${CI_COMMIT_SHA:0:8} @@ -165,17 +165,17 @@ steps: - echo "$KUBECONFIG_CONTENT" | tr -d '[:space:]' | base64 -d > ~/.kube/config - chmod 600 ~/.kube/config # Deploy backend first - - kubectl set image deployment/scraper scraper=code.cannabrands.app/creationshop/dispensary-scraper:sha-${CI_COMMIT_SHA:0:8} -n dispensary-scraper - - kubectl rollout status deployment/scraper -n dispensary-scraper --timeout=300s + - kubectl set image deployment/scraper scraper=git.spdy.io/creationshop/cannaiq:sha-${CI_COMMIT_SHA:0:8} -n cannaiq + - kubectl rollout status deployment/scraper -n cannaiq --timeout=300s # Note: Migrations run automatically at startup via auto-migrate # Deploy remaining services # Resilience: ensure workers are scaled up if at 0 - - REPLICAS=$(kubectl get deployment scraper-worker -n dispensary-scraper -o jsonpath='{.spec.replicas}'); if [ "$REPLICAS" = "0" ]; then echo "Scaling workers from 0 to 5"; kubectl scale deployment/scraper-worker --replicas=5 -n dispensary-scraper; fi - - kubectl set image deployment/scraper-worker worker=code.cannabrands.app/creationshop/dispensary-scraper:sha-${CI_COMMIT_SHA:0:8} -n dispensary-scraper - - kubectl set image deployment/cannaiq-frontend cannaiq-frontend=code.cannabrands.app/creationshop/cannaiq-frontend:sha-${CI_COMMIT_SHA:0:8} -n dispensary-scraper - - kubectl set image deployment/findadispo-frontend findadispo-frontend=code.cannabrands.app/creationshop/findadispo-frontend:sha-${CI_COMMIT_SHA:0:8} -n dispensary-scraper - - kubectl set image deployment/findagram-frontend findagram-frontend=code.cannabrands.app/creationshop/findagram-frontend:sha-${CI_COMMIT_SHA:0:8} -n dispensary-scraper - - kubectl rollout status deployment/cannaiq-frontend -n dispensary-scraper --timeout=120s + - REPLICAS=$(kubectl get deployment scraper-worker -n cannaiq -o jsonpath='{.spec.replicas}'); if [ "$REPLICAS" = "0" ]; then echo "Scaling workers from 0 to 5"; kubectl scale deployment/scraper-worker --replicas=5 -n cannaiq; fi + - kubectl set image deployment/scraper-worker worker=git.spdy.io/creationshop/cannaiq:sha-${CI_COMMIT_SHA:0:8} -n cannaiq + - kubectl set image deployment/cannaiq-frontend cannaiq-frontend=git.spdy.io/creationshop/cannaiq-frontend:sha-${CI_COMMIT_SHA:0:8} -n cannaiq + - kubectl set image deployment/findadispo-frontend findadispo-frontend=git.spdy.io/creationshop/findadispo-frontend:sha-${CI_COMMIT_SHA:0:8} -n cannaiq + - kubectl set image deployment/findagram-frontend findagram-frontend=git.spdy.io/creationshop/findagram-frontend:sha-${CI_COMMIT_SHA:0:8} -n cannaiq + - kubectl rollout status deployment/cannaiq-frontend -n cannaiq --timeout=120s depends_on: - docker-backend - docker-cannaiq diff --git a/k8s/cannaiq-frontend.yaml b/k8s/cannaiq-frontend.yaml index 3422d737..00b1222d 100644 --- a/k8s/cannaiq-frontend.yaml +++ b/k8s/cannaiq-frontend.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: cannaiq-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -17,7 +17,7 @@ spec: - name: regcred containers: - name: cannaiq-frontend - image: code.cannabrands.app/creationshop/cannaiq-frontend:latest + image: git.spdy.io/creationshop/cannaiq-frontend:latest ports: - containerPort: 80 resources: @@ -32,7 +32,7 @@ apiVersion: v1 kind: Service metadata: name: cannaiq-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: cannaiq-frontend diff --git a/k8s/configmap.yaml b/k8s/configmap.yaml index 4a881a39..680d8a25 100644 --- a/k8s/configmap.yaml +++ b/k8s/configmap.yaml @@ -2,10 +2,15 @@ apiVersion: v1 kind: ConfigMap metadata: name: scraper-config - namespace: dispensary-scraper + namespace: cannaiq data: NODE_ENV: "production" PORT: "3010" LOG_LEVEL: "info" REDIS_HOST: "redis" REDIS_PORT: "6379" + MINIO_ENDPOINT: "10.100.9.80" + MINIO_PORT: "9000" + MINIO_BUCKET: "cannaiq" + MINIO_USE_SSL: "false" + MINIO_PUBLIC_ENDPOINT: "https://cdn.spdy.io" diff --git a/k8s/findadispo-frontend.yaml b/k8s/findadispo-frontend.yaml index d24f16e0..e243f49e 100644 --- a/k8s/findadispo-frontend.yaml +++ b/k8s/findadispo-frontend.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: findadispo-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -17,7 +17,7 @@ spec: - name: regcred containers: - name: findadispo-frontend - image: code.cannabrands.app/creationshop/findadispo-frontend:v1.0.0 + image: git.spdy.io/creationshop/findadispo-frontend:v1.0.0 ports: - containerPort: 80 resources: @@ -32,7 +32,7 @@ apiVersion: v1 kind: Service metadata: name: findadispo-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: findadispo-frontend diff --git a/k8s/findagram-frontend.yaml b/k8s/findagram-frontend.yaml index 4b60e109..323d30db 100644 --- a/k8s/findagram-frontend.yaml +++ b/k8s/findagram-frontend.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: findagram-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -17,7 +17,7 @@ spec: - name: regcred containers: - name: findagram-frontend - image: code.cannabrands.app/creationshop/findagram-frontend:v1.0.0 + image: git.spdy.io/creationshop/findagram-frontend:v1.0.0 ports: - containerPort: 80 resources: @@ -32,7 +32,7 @@ apiVersion: v1 kind: Service metadata: name: findagram-frontend - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: findagram-frontend diff --git a/k8s/ingress.yaml b/k8s/ingress.yaml index 7ed8d28c..2003e0b9 100644 --- a/k8s/ingress.yaml +++ b/k8s/ingress.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: scraper-ingress - namespace: dispensary-scraper + namespace: cannaiq annotations: kubernetes.io/ingress.class: nginx cert-manager.io/cluster-issuer: letsencrypt-prod diff --git a/k8s/namespace.yaml b/k8s/namespace.yaml index 839311d3..89d49df1 100644 --- a/k8s/namespace.yaml +++ b/k8s/namespace.yaml @@ -1,6 +1,6 @@ apiVersion: v1 kind: Namespace metadata: - name: dispensary-scraper + name: cannaiq labels: - app: dispensary-scraper + app: cannaiq diff --git a/k8s/postgres.yaml b/k8s/postgres.yaml index 86a7e3ae..33c8c137 100644 --- a/k8s/postgres.yaml +++ b/k8s/postgres.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: postgres-pvc - namespace: dispensary-scraper + namespace: cannaiq spec: accessModes: - ReadWriteOnce @@ -14,7 +14,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: postgres - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -67,7 +67,7 @@ apiVersion: v1 kind: Service metadata: name: postgres - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: postgres diff --git a/k8s/redis.yaml b/k8s/redis.yaml index baf7d25e..14856bd2 100644 --- a/k8s/redis.yaml +++ b/k8s/redis.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: redis-data - namespace: dispensary-scraper + namespace: cannaiq spec: accessModes: - ReadWriteOnce @@ -14,7 +14,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: redis - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -57,7 +57,7 @@ apiVersion: v1 kind: Service metadata: name: redis - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: redis diff --git a/k8s/scraper-rbac.yaml b/k8s/scraper-rbac.yaml index 1b86d4fc..1353bbbf 100644 --- a/k8s/scraper-rbac.yaml +++ b/k8s/scraper-rbac.yaml @@ -4,13 +4,13 @@ apiVersion: v1 kind: ServiceAccount metadata: name: scraper-sa - namespace: dispensary-scraper + namespace: cannaiq --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: worker-scaler - namespace: dispensary-scraper + namespace: cannaiq rules: # Allow reading deployment and statefulset status - apiGroups: ["apps"] @@ -25,11 +25,11 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: scraper-worker-scaler - namespace: dispensary-scraper + namespace: cannaiq subjects: - kind: ServiceAccount name: scraper-sa - namespace: dispensary-scraper + namespace: cannaiq roleRef: kind: Role name: worker-scaler diff --git a/k8s/scraper-worker.yaml b/k8s/scraper-worker.yaml index df262438..b0762b9a 100644 --- a/k8s/scraper-worker.yaml +++ b/k8s/scraper-worker.yaml @@ -10,7 +10,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: scraper-worker - namespace: dispensary-scraper + namespace: cannaiq spec: # MAX 8 PODS - See CLAUDE.md rule #6 # Each pod runs up to MAX_CONCURRENT_TASKS browsers (~400MB each) @@ -28,7 +28,7 @@ spec: - name: regcred containers: - name: worker - image: code.cannabrands.app/creationshop/dispensary-scraper:latest + image: git.spdy.io/creationshop/cannaiq:latest command: ["node"] args: ["dist/tasks/task-worker.js"] envFrom: diff --git a/k8s/scraper.yaml b/k8s/scraper.yaml index 3cad6e82..156d6db0 100644 --- a/k8s/scraper.yaml +++ b/k8s/scraper.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: PersistentVolumeClaim metadata: name: scraper-images-pvc - namespace: dispensary-scraper + namespace: cannaiq spec: accessModes: - ReadWriteOnce @@ -14,7 +14,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: scraper - namespace: dispensary-scraper + namespace: cannaiq spec: replicas: 1 selector: @@ -30,7 +30,7 @@ spec: - name: regcred containers: - name: scraper - image: code.cannabrands.app/creationshop/dispensary-scraper:latest + image: git.spdy.io/creationshop/cannaiq:latest ports: - containerPort: 3010 envFrom: diff --git a/k8s/secrets.yaml b/k8s/secrets.yaml index cb6987e5..e19a528a 100644 --- a/k8s/secrets.yaml +++ b/k8s/secrets.yaml @@ -2,11 +2,15 @@ apiVersion: v1 kind: Secret metadata: name: scraper-secrets - namespace: dispensary-scraper + namespace: cannaiq type: Opaque stringData: - POSTGRES_USER: "scraper" - POSTGRES_PASSWORD: "Kx9$mVnQ2wLpZ4fT8jRbY7cH" - POSTGRES_DB: "dispensary_scraper" - DATABASE_URL: "postgresql://scraper:Kx9$mVnQ2wLpZ4fT8jRbY7cH@postgres:5432/dispensary_scraper" + POSTGRES_USER: "cannaiq" + POSTGRES_PASSWORD: "SpDyCannaIQ2024" + POSTGRES_DB: "cannaiq" + DATABASE_URL: "postgresql://cannaiq:SpDyCannaIQ2024@10.100.6.50:5432/cannaiq" JWT_SECRET: "aW7vN3xKpM9qLsT2fB5jDc8hR4wY6zXe" + MINIO_ACCESS_KEY: "cannaiq-app" + MINIO_SECRET_KEY: "62a37268f2fe4163ef46fe1c29ad93f817b415fc" + EVOMI_USER: "kl8" + EVOMI_PASS: "ogh9U1Xe7Gzxzozo4rmP" diff --git a/k8s/service.yaml b/k8s/service.yaml index 264f8a9e..30392344 100644 --- a/k8s/service.yaml +++ b/k8s/service.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: scraper - namespace: dispensary-scraper + namespace: cannaiq spec: selector: app: scraper