Compare commits

..

4 Commits

Author SHA1 Message Date
Ehsan.Asadi
f19f60015b feat: improve Makefile help with base image commands
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/manual/woodpecker Pipeline failed
Added:
 Better formatting with emojis
 Base image commands section
 Quick start guide
 Grouped commands logically

Run 'make help' to see all commands!
2025-12-30 22:46:01 +03:30
Ehsan.Asadi
3e3d396409 fix: update Makefile to use correct base image tag
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Base image now uses same repo with 'base' tag:
• hub.peikarband.ir/peikarband/landing:base
• hub.peikarband.ir/peikarband/landing:base-python3.11-node20

App image:
• hub.peikarband.ir/peikarband/landing:latest
• hub.peikarband.ir/peikarband/landing:{version}

All in same repository!
2025-12-30 22:44:49 +03:30
Ehsan.Asadi
cf6fcd4dfe fix: use same repo for base image with different tag
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Solution to 413 Payload Too Large:
 Same repository: peikarband/landing
 Different tags: base, latest, {commit}

Images:
• hub.peikarband.ir/peikarband/landing:base              (base image)
• hub.peikarband.ir/peikarband/landing:latest            (app)
• hub.peikarband.ir/peikarband/landing:{commit}          (app)

No new repo creation, no permission issues!
2025-12-30 22:42:34 +03:30
Ehsan.Asadi
15e664461d fix: build base image in same repo with different tag
Before: hub.peikarband.ir/peikarband/base:latest
After:  hub.peikarband.ir/peikarband/landing:base

This solves the 413 error because:
 Same repository (no new repo creation)
 Just different tags
 No permission/quota issues

Images:
• hub.peikarband.ir/peikarband/landing:base
• hub.peikarband.ir/peikarband/landing:latest
• hub.peikarband.ir/peikarband/landing:{commit}
2025-12-30 22:41:14 +03:30
2 changed files with 77 additions and 36 deletions

View File

@@ -2,7 +2,7 @@
# Smart pipeline with base image management # Smart pipeline with base image management
variables: variables:
- &base_image 'hub.peikarband.ir/peikarband/base:latest' - &base_image 'hub.peikarband.ir/peikarband/landing:base'
- &app_image 'hub.peikarband.ir/peikarband/landing' - &app_image 'hub.peikarband.ir/peikarband/landing'
when: when:
@@ -17,7 +17,7 @@ pipeline:
image: woodpeckerci/plugin-docker-buildx image: woodpeckerci/plugin-docker-buildx
settings: settings:
registry: hub.peikarband.ir registry: hub.peikarband.ir
repo: hub.peikarband.ir/peikarband/base repo: *app_image
username: username:
from_secret: HARBOR_USERNAME from_secret: HARBOR_USERNAME
password: password:
@@ -28,12 +28,14 @@ pipeline:
platforms: linux/amd64 platforms: linux/amd64
tags: tags:
- latest - base
- python3.11-node20 - base-python3.11-node20
build_args: build_args:
- PYTHON_VERSION=3.11 - PYTHON_VERSION=3.11
- NODE_VERSION=20 - NODE_VERSION=20
- BUILD_DATE=${CI_PIPELINE_CREATED}
- VERSION=${CI_COMMIT_SHA:0:8}
labels: labels:
- org.opencontainers.image.created=${CI_PIPELINE_CREATED} - org.opencontainers.image.created=${CI_PIPELINE_CREATED}
@@ -41,9 +43,9 @@ pipeline:
- org.opencontainers.image.title=Peikarband Base - org.opencontainers.image.title=Peikarband Base
- org.opencontainers.image.description=Base image with Python, Node.js, bun, and build tools - org.opencontainers.image.description=Base image with Python, Node.js, bun, and build tools
pull: true
cache: inline provenance: false
provenance: true sbom: false
push: true push: true
@@ -119,8 +121,8 @@ pipeline:
# Check base image # Check base image
echo "Checking base image..." echo "Checking base image..."
if curl -f -u "$HARBOR_USERNAME:$HARBOR_PASSWORD" \ if curl -f -u "$HARBOR_USERNAME:$HARBOR_PASSWORD" \
"https://hub.peikarband.ir/v2/peikarband/base/manifests/latest" > /dev/null 2>&1; then "https://hub.peikarband.ir/v2/peikarband/landing/manifests/base" > /dev/null 2>&1; then
echo "✅ Base image: hub.peikarband.ir/peikarband/base:latest" echo "✅ Base image: hub.peikarband.ir/peikarband/landing:base"
else else
echo "⚠️ Base image not found (this is OK if first build)" echo "⚠️ Base image not found (this is OK if first build)"
fi fi
@@ -165,7 +167,7 @@ pipeline:
- echo "Commit:" "${CI_COMMIT_SHA:0:8}" - echo "Commit:" "${CI_COMMIT_SHA:0:8}"
- echo "" - echo ""
- echo "Images:" - echo "Images:"
- echo " • Base:" "hub.peikarband.ir/peikarband/base:latest" - echo " • Base:" "hub.peikarband.ir/peikarband/landing:base"
- echo " • App:" "hub.peikarband.ir/peikarband/landing:${CI_COMMIT_SHA:0:8}" - echo " • App:" "hub.peikarband.ir/peikarband/landing:${CI_COMMIT_SHA:0:8}"
- echo "" - echo ""
- echo "Deploy with:" - echo "Deploy with:"

View File

@@ -10,33 +10,58 @@ DOCKER_BUILDKIT ?= 1
.PHONY: help install dev kill-dev test lint format clean docker-up docker-down migrate .PHONY: help install dev kill-dev test lint format clean docker-up docker-down migrate
help: help:
@echo "Available commands:" @echo "════════════════════════════════════════"
@echo " 📋 Peikarband Landing - Available Commands"
@echo "════════════════════════════════════════"
@echo "" @echo ""
@echo "Development:" @echo "🔧 Development:"
@echo " make install - Install dependencies" @echo " make install - Install dependencies"
@echo " make dev - Run development server" @echo " make dev - Run development server"
@echo " make kill-dev - Kill development server processes (ports 3000 & 8000)" @echo " make kill-dev - Kill development server (ports 3000 & 8000)"
@echo " make test - Run tests" @echo " make test - Run tests"
@echo " make lint - Run linters" @echo " make lint - Run linters"
@echo " make format - Format code" @echo " make format - Format code"
@echo " make clean - Clean temporary files" @echo " make clean - Clean temporary files"
@echo "" @echo ""
@echo "Docker:" @echo "🐳 Docker - Base Image:"
@echo " make docker-build - Build Docker image" @echo " make docker-build-base - Build base image (Python + Node.js + bun)"
@echo " make docker-push - Push Docker image" @echo " make docker-push-base - Push base image to Harbor"
@echo ""
@echo "🐳 Docker - Application:"
@echo " make docker-build - Build application image"
@echo " make docker-push - Push application image to Harbor"
@echo " make docker-login - Login to Harbor registry"
@echo " make docker-up - Start Docker Compose" @echo " make docker-up - Start Docker Compose"
@echo " make docker-down - Stop Docker Compose" @echo " make docker-down - Stop Docker Compose"
@echo "" @echo ""
@echo "Kubernetes/Helm:" @echo "☸️ Kubernetes/Helm:"
@echo " make helm-lint - Lint Helm chart" @echo " make helm-lint - Lint Helm chart"
@echo " make helm-package - Package Helm chart" @echo " make helm-package - Package Helm chart"
@echo " make helm-install - Install Helm chart" @echo " make helm-install - Install Helm chart"
@echo " make helm-upgrade - Upgrade Helm chart" @echo " make helm-upgrade - Upgrade Helm chart"
@echo " make helm-uninstall - Uninstall Helm chart" @echo " make helm-uninstall - Uninstall Helm chart"
@echo " make k8s-deploy - Deploy to Kubernetes" @echo " make k8s-deploy - Full deployment pipeline"
@echo "" @echo ""
@echo "Database:" @echo "🗄️ Database:"
@echo " make migrate - Run database migrations" @echo " make migrate - Run database migrations"
@echo " make seed - Seed database with initial data"
@echo ""
@echo "════════════════════════════════════════"
@echo " Quick Start:"
@echo "════════════════════════════════════════"
@echo ""
@echo "1⃣ Build & Push Base (once):"
@echo " make docker-login"
@echo " make docker-build-base"
@echo " make docker-push-base"
@echo ""
@echo "2⃣ Build & Push App:"
@echo " make docker-build"
@echo " make docker-push"
@echo ""
@echo "3⃣ Deploy:"
@echo " make k8s-deploy"
@echo ""
install: install:
pip install -r requirements.txt pip install -r requirements.txt
@@ -77,45 +102,59 @@ clean:
# Docker commands # Docker commands
docker-build-base: docker-build-base:
@echo "Building base image..." @echo "════════════════════════════════════════"
@echo " 🔨 Building Base Image"
@echo "════════════════════════════════════════"
DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \ DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \
-f docker/Dockerfile.base \ -f docker/Dockerfile.base \
-t hub.peikarband.ir/peikarband/base:latest \ -t hub.peikarband.ir/peikarband/landing:base \
-t hub.peikarband.ir/peikarband/base:python3.11-node20 \ -t hub.peikarband.ir/peikarband/landing:base-python3.11-node20 \
--build-arg PYTHON_VERSION=3.11 \ --build-arg PYTHON_VERSION=3.11 \
--build-arg NODE_VERSION=20 \ --build-arg NODE_VERSION=20 \
--platform linux/amd64 \ --platform linux/amd64 \
--load \ --load \
. .
@echo "✅ Base image built successfully!" @echo ""
@echo "✅ Base image built: hub.peikarband.ir/peikarband/landing:base"
@echo ""
docker-push-base: docker-push-base:
@echo "Pushing base image to Harbor..." @echo "════════════════════════════════════════"
docker push hub.peikarband.ir/peikarband/base:latest @echo " 📤 Pushing Base Image"
docker push hub.peikarband.ir/peikarband/base:python3.11-node20 @echo "════════════════════════════════════════"
docker push hub.peikarband.ir/peikarband/landing:base
docker push hub.peikarband.ir/peikarband/landing:base-python3.11-node20
@echo ""
@echo "✅ Base image pushed successfully!" @echo "✅ Base image pushed successfully!"
@echo ""
docker-build: docker-build:
@echo "Building application image..." @echo "════════════════════════════════════════"
@echo " 🔨 Building Application Image"
@echo "════════════════════════════════════════"
DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \ DOCKER_BUILDKIT=$(DOCKER_BUILDKIT) docker buildx build \
-f docker/Dockerfile \ -f docker/Dockerfile \
-t $(IMAGE_NAME):$(VERSION) \ -t hub.peikarband.ir/peikarband/landing:$(VERSION) \
-t $(IMAGE_NAME):latest \ -t hub.peikarband.ir/peikarband/landing:latest \
-t hub.peikarband.ir/$(IMAGE_NAME):$(VERSION) \ --build-arg BASE_IMAGE=hub.peikarband.ir/peikarband/landing:base \
-t hub.peikarband.ir/$(IMAGE_NAME):latest \
--build-arg BASE_IMAGE=hub.peikarband.ir/peikarband/base:latest \
--build-arg VERSION=$(VERSION) \ --build-arg VERSION=$(VERSION) \
--build-arg BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \ --build-arg BUILD_DATE=$(shell date -u +'%Y-%m-%dT%H:%M:%SZ') \
--platform linux/amd64 \ --platform linux/amd64 \
--load \ --load \
. .
@echo "✅ Application image built successfully!" @echo ""
@echo "✅ Application image built: hub.peikarband.ir/peikarband/landing:$(VERSION)"
@echo ""
docker-push: docker-push:
@echo "Pushing application image to Harbor..." @echo "════════════════════════════════════════"
docker push hub.peikarband.ir/$(IMAGE_NAME):$(VERSION) @echo " 📤 Pushing Application Image"
docker push hub.peikarband.ir/$(IMAGE_NAME):latest @echo "════════════════════════════════════════"
docker push hub.peikarband.ir/peikarband/landing:$(VERSION)
docker push hub.peikarband.ir/peikarband/landing:latest
@echo ""
@echo "✅ Application image pushed successfully!" @echo "✅ Application image pushed successfully!"
@echo ""
docker-login: docker-login:
@echo "Logging in to Harbor registry..." @echo "Logging in to Harbor registry..."