Compare commits
4 Commits
8253fa73de
...
feature/re
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f19f60015b | ||
|
|
3e3d396409 | ||
|
|
cf6fcd4dfe | ||
|
|
15e664461d |
@@ -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:"
|
||||||
|
|||||||
91
Makefile
91
Makefile
@@ -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..."
|
||||||
|
|||||||
Reference in New Issue
Block a user