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.