- Add Dockerfile for building Next.js images - Replace init-container deployment with standard deployment - Add kustomization with image tag tracking - Add deploy.sh script for CI/CD pipeline This enables proper GitOps auto-deployment: 1. Build image with commit hash tag 2. Push to GHCR 3. Update kustomization.yaml image tag 4. Flux detects change and restarts pods
40 lines
1.0 KiB
Bash
Executable File
40 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# CI/CD Deploy Script
|
|
# Usage: ./scripts/deploy.sh
|
|
|
|
COMMIT_SHA=$(git rev-parse --short HEAD)
|
|
IMAGE_NAME="ghcr.io/unchainedio/manoon-headless"
|
|
IMAGE_TAG="$COMMIT_SHA"
|
|
|
|
echo "=== Building Docker image ==="
|
|
echo "Commit: $COMMIT_SHA"
|
|
echo "Image: $IMAGE_NAME:$IMAGE_TAG"
|
|
|
|
# Build Docker image
|
|
docker build -t "$IMAGE_NAME:$IMAGE_TAG" -t "$IMAGE_NAME:latest" .
|
|
|
|
# Push to registry (requires GHCR auth)
|
|
echo ""
|
|
echo "=== Pushing to GHCR ==="
|
|
docker push "$IMAGE_NAME:$IMAGE_TAG"
|
|
docker push "$IMAGE_NAME:latest"
|
|
|
|
# Update kustomization with new tag
|
|
echo ""
|
|
echo "=== Updating kustomization.yaml ==="
|
|
sed -i "s/newTag: .*/newTag: $COMMIT_SHA # Updated by CI\/CD/" k8s/kustomization.yaml
|
|
|
|
# Commit and push the change (this triggers Flux deployment)
|
|
echo ""
|
|
echo "=== Committing and pushing ==="
|
|
git add k8s/kustomization.yaml
|
|
git commit -m "deploy: update image to $COMMIT_SHA [ci skip]"
|
|
git push origin master
|
|
|
|
echo ""
|
|
echo "=== Deploy complete! ==="
|
|
echo "Image: $IMAGE_NAME:$IMAGE_TAG"
|
|
echo "Flux will auto-deploy within 30 seconds"
|