# Peikarband Platform - Woodpecker CI/CD Pipeline
# Harbor Registry: hub.peikarband.ir
# Best Practices Applied

steps:
  build-and-push:
    image: woodpeckerci/plugin-docker-buildx
    settings:
      registry: hub.peikarband.ir
      repo: hub.peikarband.ir/peikarband/landing
      username:
        from_secret: harbor_username
      password:
        from_secret: harbor_password
      tags:
        - latest
        - ${CI_COMMIT_SHA:0:8}
      dockerfile: Dockerfile
      context: .
      platforms: linux/amd64
      # Build arguments for Dockerfile
      build_args:
        - VERSION=${CI_COMMIT_SHA:0:8}
        - BUILD_DATE=${CI_PIPELINE_CREATED}
        - PYTHON_VERSION=3.11
        - NODE_VERSION=20
      # OCI labels for better metadata
      labels:
        - org.opencontainers.image.created=${CI_PIPELINE_CREATED}
        - org.opencontainers.image.source=${CI_REPO_LINK}
        - org.opencontainers.image.url=${CI_REPO_LINK}
        - org.opencontainers.image.revision=${CI_COMMIT_SHA}
        - org.opencontainers.image.version=${CI_COMMIT_SHA:0:8}
        - org.opencontainers.image.title=Peikarband Landing
        - org.opencontainers.image.description=Peikarband hosting platform landing page
      # Cache optimization
      cache: true
      cache_from: hub.peikarband.ir/peikarband/landing:latest
      # Security & provenance
      provenance: true
      insecure: false
    when:
      event: [push, tag, manual]
