I am not sure I understand what you mean, but if you are talking about
whether the content of the "script:" block is better to be in a file, then
in my opinion, yes it is better practice to source control such scripts in
the material alongside the thing being built and deployed - rather than
inside pipeline yaml.

This way it is easier to independently test the build/deploy steps, and
when making changes you are guaranteed that the code and the deploy script
are updated/version controlled together. Also makes it a lot easier to read
the pipeline YAML.

On Mon, Nov 4, 2024 at 7:58 PM Tanmoy santra <[email protected]>
wrote:

> Should we add scripts to a shell script file?
>
> On Monday, November 4, 2024 at 4:18:04 PM UTC+5:30 Chad Wilson wrote:
>
>> You might want to look at
>> https://github.com/tomzo/gocd-yaml-config-plugin?tab=readme-ov-file#Validation
>>
>> The problem you have there is probably the `script:` task. Doesn't
>> confirm to documented syntax:
>> https://github.com/tomzo/gocd-yaml-config-plugin?tab=readme-ov-file#script
>>
>> Looks like you generated some nonsense with ChatGPT? :-)
>>
>> On Mon, Nov 4, 2024 at 6:35 PM Tanmoy santra <[email protected]>
>> wrote:
>>
>>> 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: '[email protected]:metiseduventures/adda-store-k8s.git'
>>> branch: 'dockerfile-adda-devo-21'
>>> destination: dockerfiles
>>> servercp:
>>> git:
>>> url: '[email protected]:metiseduventures/servercp.git'
>>> branch: '${Branch}'
>>> destination: servercp
>>> deployment_repo:
>>> git:
>>> url: '[email protected]: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 [email protected].
>>> To view this discussion visit
>>> https://groups.google.com/d/msgid/go-cd/6f5d1a8c-df8e-48a4-8109-9423d2c503efn%40googlegroups.com
>>> <https://groups.google.com/d/msgid/go-cd/6f5d1a8c-df8e-48a4-8109-9423d2c503efn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> 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 [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/go-cd/1a20f86e-6434-4894-93bf-25f9bb28d3e9n%40googlegroups.com
> <https://groups.google.com/d/msgid/go-cd/1a20f86e-6434-4894-93bf-25f9bb28d3e9n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/go-cd/CAA1RwH8VLxdF2nagbW_LcqpWkENNr-j%3DkGc6v62aM3CH2KKT3w%40mail.gmail.com.

Reply via email to