# Peikarband Platform - Woodpecker CI/CD Pipeline # Complete production-ready pipeline variables: - &harbor_registry 'harbor.peikarband.ir' - &image_name 'peikarband/landing' - &python_version '3.11' # Global configuration when: - evaluate: 'CI_PIPELINE_EVENT != "cron"' steps: # ============================================ # STAGE 1: Code Quality & Linting (DISABLED) # ============================================ # lint-python: # image: python:${python_version}-slim # environment: # - PYTHONPATH=/woodpecker/src/workspace # commands: # - pip install --no-cache-dir flake8 black isort mypy # - flake8 src/ --max-line-length=120 --exclude=__pycache__,migrations --statistics # - black --check src/ --line-length=120 # - isort --check-only src/ # when: # branch: [main, develop, staging, feature/*, hotfix/*] # lint-yaml: # image: cytopia/yamllint:latest # commands: # - yamllint -c .yamllint.yml helm/ || true # - yamllint woodpecker.yml # when: # branch: [main, develop, staging] # ============================================ # STAGE 2 & 3: Tests & Security (DISABLED) # ============================================ # test-unit: # image: python:${python_version}-slim # commands: # - pip install --no-cache-dir -r requirements.txt # - pytest tests/unit/ # when: # branch: [main, develop] # ============================================ # STAGE 4: Docker Build & Push (ACTIVE) # ============================================ docker-build: image: plugins/docker settings: registry: *harbor_registry repo: ${harbor_registry}/${image_name} tags: - ${CI_COMMIT_SHA:0:8} - ${CI_COMMIT_BRANCH} - latest username: from_secret: harbor_username password: from_secret: harbor_password build_args: - ENVIRONMENT=production - VERSION=${CI_COMMIT_SHA:0:8} cache_from: - ${harbor_registry}/${image_name}:latest dockerfile: Dockerfile dry_run: false when: event: [push, tag, manual] # ============================================ # STAGE 5 - 11: Deployment & Notifications (DISABLED) # ============================================ # deploy-staging: # image: argoproj/argocd:latest # environment: # ARGOCD_SERVER: { from_secret: argocd_server } # ARGOCD_AUTH_TOKEN: { from_secret: argocd_token } # commands: # - argocd app set peikarband-staging --helm-set image.tag=${CI_COMMIT_SHA:0:8} # - argocd app sync peikarband-staging # when: # branch: [develop, staging] # notify-telegram: # image: appleboy/drone-telegram:latest # settings: # token: { from_secret: telegram_bot_token } # to: { from_secret: telegram_chat_id } # when: # status: [success, failure] # ============================================ # Services & Workspace Configuration # ============================================ # (سرویس‌ها فعلاً کامنت شدند چون تستی اجرا نمی‌شود) # services: # postgres: # image: postgres:14-alpine workspace: base: /woodpecker/src path: workspace clone: git: image: woodpeckerci/plugin-git:latest settings: depth: 50 tags: true