format_version: 10
pipelines:
build_3d_models_service:
group: 'defaultGroup'
label_template: '${Appname}-${ENV}-${GO_PIPELINE_COUNTER}'
parameters:
Appname: '3d-models-service'
Branch: 'master-java-21' # Default branch for the servercp repository
JavaVersion: '21'
ENV: 'staging-mumbai' # Deployment environment
environment_variables:
JAVA_HOME_21: '/usr/lib/jvm/java-21-openjdk'
MAVEN_HOME: '/usr/share/java/maven'
# AWS credentials should be set securely via GoCD environment variables or 
secrets
materials:
dockerfiles:
git:
url: 'g...@github.com:metiseduventures/adda-store-k8s.git'
branch: 'dockerfile-adda-devo-21'
destination: dockerfiles
servercp:
git:
url: 'g...@github.com:metiseduventures/servercp.git'
branch: '${Branch}'
destination: servercp
deployment_repo:
git:
url: 'g...@github.com:metiseduventures/adda-store-k8s.git'
branch: '${ENV}'
destination: deployment_repo
stages:
- name: BuildAndDeploy
jobs:
- name: BuildAndPush
tasks:
- script:
shell: bash
command: |
#!/bin/bash
set -e # Exit immediately if a command exits with a non-zero status

# **Set up environment variables**
echo "Setting up environment variables..."
if [ "${ENV}" == "production" ]; then
accountid="490891715875"
else
accountid="436568657448"
fi
DOCKERHUB_USERNAME="${accountid}.dkr.ecr.ap-south-1.amazonaws.com"
APP_NAME="${Appname}"
BUILD_TIME=$(date +"%d-%h_%H:%M:%S")
IMAGE_TAG="${GO_PIPELINE_COUNTER}-${Branch}-${ENV}-${BUILD_TIME}"
IMAGE_NAME="${DOCKERHUB_USERNAME}/${APP_NAME}"

# Set JAVA_HOME based on JavaVersion
if [ "${JavaVersion}" == "21" ]; then
export JAVA_HOME="${JAVA_HOME_21}"
fi

export PATH=$JAVA_HOME/bin:${MAVEN_HOME}/bin:$PATH

echo "JAVA_HOME is set to ${JAVA_HOME}"
echo "Maven home is set to ${MAVEN_HOME}"

# **Ensure GOCD_WORKING_DIR is set**
if [ -z "${GOCD_WORKING_DIR}" ]; then
export GOCD_WORKING_DIR=$(pwd)
fi

# **Build Dependencies**

echo "Building dependencies..."

# Build common-search-dto
cd "${GOCD_WORKING_DIR}/servercp/common-search-dto"
mvn clean install

# Build commons-parent
cd "${GOCD_WORKING_DIR}/servercp/commons-parent"
git checkout 'ha-release-skills-21'
git pull origin 'ha-release-skills-21'
mvn clean install

# Return to working directory
cd "${GOCD_WORKING_DIR}"

# **Build Main Application**

echo "Building main application ${APP_NAME}..."

cd "${GOCD_WORKING_DIR}/servercp/models/${APP_NAME}"
mvn clean install -Dmaven.test.skip=true

# **Build and Push Docker Image**

echo "Building and pushing Docker image..."
cd "${GOCD_WORKING_DIR}/servercp/models/${APP_NAME}/target"
cp "${GOCD_WORKING_DIR}/dockerfiles/Dockerfile.${APP_NAME}" .
cp "${GOCD_WORKING_DIR}/dockerfiles/.dockerignore" .

# AWS ECR login
aws ecr get-login-password --region ap-south-1 | docker login --username 
AWS --password-stdin "${DOCKERHUB_USERNAME}"

# Build and push Docker image using Buildx
docker buildx build --platform linux/amd64,linux/arm64 \
-t "${IMAGE_NAME}:${IMAGE_TAG}" \
-f "Dockerfile.${APP_NAME}" . --push

# Export variables for next tasks
echo "IMAGE_NAME=${IMAGE_NAME}" >> "$GOCD_ENV_FILE"
echo "IMAGE_TAG=${IMAGE_TAG}" >> "$GOCD_ENV_FILE"

- script:
shell: bash
command: |
#!/bin/bash
set -e # Exit immediately if a command exits with a non-zero status

# **Update Deployment Files in GitHub**

echo "Updating deployment files in GitHub..."

# Ensure GOCD_WORKING_DIR is set
if [ -z "${GOCD_WORKING_DIR}" ]; then
export GOCD_WORKING_DIR=$(pwd)
fi

# Set variables
DEPLOY_REPO_DIR='deployment_repo'
BRANCH_NAME="${ENV}"
DEPLOYMENT_FILE="3d-models-servicestaging-mumbai.yml"

# Navigate to the deployment repository
cd "${GOCD_WORKING_DIR}/${DEPLOY_REPO_DIR}"

# Ensure we're on the correct branch
git checkout "${BRANCH_NAME}"
git pull origin "${BRANCH_NAME}"

# Update deployment file
# Replace the image tag in the deployment file
sed -i "s|^\(\s*image:\s*\).*|\1${IMAGE_NAME}:${IMAGE_TAG}|" 
"${DEPLOYMENT_FILE}"

# Commit and push changes
git config user.email "email"
git config user.name "name"
git add "${DEPLOYMENT_FILE}"
git commit -m "Update ${Appname} image to ${IMAGE_TAG}"
git push origin "${BRANCH_NAME}"

echo "Deployment files updated successfully."

# Optional: Send notification after updating deployment files
- script:
shell: bash
command: |
#!/bin/bash
# **Send Slack Notification**
echo "Sending Slack notification..."
curl --location --request POST 
'https://chat.googleapis.com/v1/spaces/AAAAteeAa0k/messages?key=your-key&token=your-token'
 
\
--header 'Content-Type: application/json' \
--data-raw '{"text":"Deployment of '${Appname}' with Tag '${IMAGE_TAG}' in 
'${ENV}' Environment started. Deployment files updated."}'
using this getting this error - 

   - pipeline.gocd.yaml; 1. Failed to parse pipeline 
   build_3d_models_service; class java.util.LinkedHashMap cannot be cast to 
   class java.lang.String (java.util.LinkedHashMap and java.lang.String are in 
   module java.base of loader 'bootstrap') ----- How to fix this error? and 
   what is the error?


-- 
You received this message because you are subscribed to the Google Groups 
"go-cd" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to go-cd+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/go-cd/6f5d1a8c-df8e-48a4-8109-9423d2c503efn%40googlegroups.com.

Reply via email to