diff --git a/.woodpecker.yml b/.woodpecker.yml index f12b528..513c8e1 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,121 +1,113 @@ -# # Peikarband Platform - Woodpecker CI/CD Pipeline -# # Complete production-ready pipeline +# Peikarband Platform - Woodpecker CI/CD Pipeline +# Complete production-ready pipeline -# variables: -# - &harbor_registry 'harbor.peikarband.ir' -# - &image_name 'peikarband/landing' -# - &python_version '3.11' +variables: + - &harbor_registry 'harbor.peikarband.ir' + - &image_name 'peikarband/landing' + - &python_version '3.11' -# # Global configuration -# when: -# - evaluate: 'CI_PIPELINE_EVENT != "cron"' +# 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 - -# فایل تست بسیار ساده - تمام بخش‌های قبلی را پاک کن و فقط این را بگذار steps: - test-build: - image: alpine - commands: - - echo "Testing Woodpecker Connection..." - - date \ No newline at end of file +# ============================================ +# 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