From 430193e03f5fdd4b752a31127840813e78e2ee5f Mon Sep 17 00:00:00 2001 From: sonvikhar Date: Sun, 7 Sep 2025 21:46:34 -0400 Subject: [PATCH] Add files via upload --- Pipeline Setup.docx | Bin 0 -> 25111 bytes cloudbuildgcp.yaml | 55 +++++++++++++++++++++++++++++++++++++++++++ deploy.sh | 55 +++++++++++++++++++++++++++++++++++++++++++ deployment.yaml | 31 ++++++++++++++++++++++++ pom.xml | 56 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 197 insertions(+) create mode 100644 Pipeline Setup.docx create mode 100644 cloudbuildgcp.yaml create mode 100644 deploy.sh create mode 100644 deployment.yaml create mode 100644 pom.xml diff --git a/Pipeline Setup.docx b/Pipeline Setup.docx new file mode 100644 index 0000000000000000000000000000000000000000..cc31933bbf4cf1f7cbdfdf61ef6f171b468ded67 GIT binary patch literal 25111 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 deployment.yaml script +steps: + # Set up variables + - name: 'gcr.io/cloud-builders/git' + id: 'Get Commit SHA' + entrypoint: 'bash' + args: + - '-c' + - | + echo "COMMIT_SHA=$(git rev-parse --short HEAD)" >> $BUILD_ENV + env: + - 'BUILD_ENV=/workspace/build.env' + + # Build and push Docker image + - name: 'maven:3.8.7-openjdk-17' + id: 'Build and Push Image' + entrypoint: 'bash' + args: + - '-c' + - | + source /workspace/build.env + IMAGE_TAG=${_REGION}-docker.pkg.dev/${_PROJECT_ID}/${_REPO}/${_IMAGE}:$COMMIT_SHA + mvn compile jib:build -Dimage=$IMAGE_TAG + echo "IMAGE_TAG=$IMAGE_TAG" >> /workspace/build.env + env: + - 'BUILD_ENV=/workspace/build.env' + + # Substitute image tag in deployment.yaml + - name: 'gcr.io/cloud-builders/gcloud' + id: 'Substitute Image Tag' + entrypoint: 'bash' + args: + - '-c' + - | + source /workspace/build.env + sed "s|IMAGE_PLACEHOLDER|$IMAGE_TAG|g" k8s/deployment.yaml > k8s/deployment-sub.yaml + + # Authenticate kubectl and deploy to GKE + - name: 'gcr.io/cloud-builders/gcloud' + id: 'Deploy to GKE' + entrypoint: 'bash' + args: + - '-c' + - | + gcloud container clusters get-credentials ${_CLUSTER_NAME} --region ${_REGION} --project ${_PROJECT_ID} + kubectl apply -f k8s/deployment-sub.yaml + +substitutions: + _PROJECT_ID: 'DFS project ID' + _REGION: 'us-east' + _REPO: 'git-repo' + _IMAGE: 'docker-image-name' + _CLUSTER_NAME: 'gke-cluster' + +timeout: '3600s' diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..d8698b9 --- /dev/null +++ b/deploy.sh @@ -0,0 +1,55 @@ +#!/bin/bash +set -e + +# --- CONFIGURATION --- +PROJECT_ID="your-gcp-project-id" +REGION="your-region" # e.g., us-central1 +REPO="your-artifact-registry-repo" +IMAGE="your-image-name" +CLUSTER_NAME="your-gke-cluster" +K8S_MANIFEST="k8s/deployment.yaml" +SERVICE_ACCOUNT_KEY_PATH="path/to/your-service-account-key.json" # Path to your service account JSON key + +# --- STEP 0: Check Required Tools --- +for cmd in gcloud kubectl mvn git; do + if ! command -v $cmd &> /dev/null; then + echo "Error: $cmd is not installed or not in PATH." + exit 1 + fi +done + +# --- STEP 1: Authenticate gcloud with Service Account --- +gcloud auth activate-service-account --key-file="$SERVICE_ACCOUNT_KEY_PATH" +gcloud config set project "$PROJECT_ID" + +# --- STEP 2: Authenticate Docker --- +gcloud auth configure-docker "${REGION}-docker.pkg.dev" --quiet + +# --- STEP 3: Authenticate kubectl with GKE --- +gcloud container clusters get-credentials "$CLUSTER_NAME" --region "$REGION" --project "$PROJECT_ID" + +# --- STEP 4: Authenticate git --- +if ! git ls-remote &> /dev/null; then + echo "Error: git authentication failed. Ensure credentials are available in CI/CD environment." + exit 1 +fi + +# --- STEP 5: Get current commit SHA --- +COMMIT_SHA=$(git rev-parse --short HEAD) +IMAGE_TAG="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO}/${IMAGE}:${COMMIT_SHA}" + + +# --- STEP 6: Build and push Docker image with Maven Jib --- +mvn compile jib:build -Dimage="$IMAGE_TAG" + +# --- STEP 7: Update Kubernetes manifest with new image tag --- +cp "$K8S_MANIFEST" "${K8S_MANIFEST}.bak" +sed -i "s|IMAGE_PLACEHOLDER|$IMAGE_TAG|g" "$K8S_MANIFEST" + +# --- STEP 8: Deploy to GKE --- +kubectl apply -f "$K8S_MANIFEST" + +# --- STEP 9: Clean up (restore manifest) --- +mv "${K8S_MANIFEST}.bak" "$K8S_MANIFEST" + +echo "Pipeline finished." diff --git a/deployment.yaml b/deployment.yaml new file mode 100644 index 0000000..eea7bae --- /dev/null +++ b/deployment.yaml @@ -0,0 +1,31 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: DFS + labels: + app: DFS +spec: + replicas: 2 + selector: + matchLabels: + app: DFS + template: + metadata: + labels: + app: DFS + spec: + containers: + - name: DFS + image: IMAGE_PLACEHOLDER # replace with all code in pipeline + ports: + - containerPort: 8080 + resources: + requests: + cpu: "250m" + memory: "512Mi" + limits: + cpu: "500m" + memory: "1Gi" + env: + - name: ENVIRONMENT + value: "production" diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..50c1a07 --- /dev/null +++ b/pom.xml @@ -0,0 +1,56 @@ + + 4.0.0 + + com.example + my-app + 1.0.0 + jar + + DFS IAM + + + 17 + 3.2.5 + 3.4.1 + + + + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + + + + + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + com.google.cloud.tools + jib-maven-plugin + ${jib-maven-plugin.version} + + + eclipse-temurin:17-jre + + + + 8080 + + + production + + + + + + +