Skip to main content

Jenkins Pipeline - Running inside Docker Image

 pipeline{

agent { label 'aws' }


        parameters{

            choice(

                description:'Choose ACCOUNT_ID',

                name:'ACCOUNT_ID',

                choices: ['122']

            )


            choice(

                description:'Choose EKS_CLUSTER',

                name:'EKS_CLUSTER',

                choices: [

                    'nonprod-ap-east-1'

                ]

            )


            choice(

                description:'Choose Helm Chart',

                name:'HELM',

                choices: [

                    'spark-pi-ns-rbac'

                ]

            )


            choice(

                description:'Choose Action',

                name:'ACTION',

                choices: [

                    'deploy',

                    'delete'

                ]

            )


            choice(

                description:'Choose Namespace',

                name:'NAME_SPACE',

                choices: [

                    'ns4',

                    'ns5',

                    'ns6'

                ]

            )


            choice(

                description:'Choose envName',

                name:'ENV_NAME',

                choices: [

                    'dev',

                    'stg',

                    'prod'

                ]

            )


            string(description: 'Eg: zone1\\39, id with Admin access to EKS cluster OR devns4 for testing', name: 'ADUSER')


            password(description: 'Enter password', name: 'hidden')


            choice(

                description: 'Choose Admin role to deploy change. For testing use eks-ap-east-1-dp-ns-4',

                name: 'ROLE',

                choices: [

                    'Admin',

                    'Deploy',

                    'eks-ap-east-1-dp-ns-4'

                ]

            )

        }


stages{

stage('Dry Run'){

steps{

script{

dockerImg = 'artifactory/helmbuild:latest'

docker.withRegistry('https://artifactory.com/', 'jenkins_deployer') {

        sh "echo 'Building with ${dockerImg}...'"

        dimg = docker.image(dockerImg)

        dimg.pull()

        dimg.inside('-u root') {

            stage('Pull Sourcecode') {

                checkout scm

            }

            stage('Dry Run') {

                withEnv([

                    "HELM=${params.HELM}",

                    "NAME_SPACE=${params.NAME_SPACE}",

                    "ENV_NAME=${params.ENV_NAME}",

                    "EKS_CLUSTER=${params.EKS_CLUSTER}",

                    'http_proxy=1.1.1.1:8080',

                    'https_proxy=1.1.1.1:8080',

                    'no_proxy=1.1.1.1,localhost,127.0.0.1',

                    "ROLE=${params.ROLE}",

                    "ACCOUNT_ID=${params.ACCOUNT_ID}",

                    "ADUSER=${params.ADUSER}",

                    "SSO_PASSWORD=${params.hidden}"

                ]) {

                    sh'''

                        helm version

                        aws --version

                        aws-sts login --skip-prompt --hostname sts01.internal.google.com -u $ADUSER -a $ACCOUNT_ID --role $ROLE

                        aws eks update-kubeconfig --name $EKS_CLUSTER --region ap-east-1

                        kubectl config set-context \$(kubectl config current-context) --namespace=$NAME_SPACE

                        helm upgrade --install --dry-run \$HELM \$HELM -f \$HELM/env/$ENV_NAME-values.yaml -n $NAME_SPACE

                        helm list

                    '''

                }

            }

                if (env.branchName == 'master') {

                stage('Deploy') {

                    /*if(params.ACTION == 'delete') {

                        timeout(time: 15, unit: 'MINUTES') {

                            input message: 'Are you sure you want to delete release?', ok: 'Yes'

                        }

                    }*/

                    def deployValidation = input(

                        id: 'Deploy',

                        message: 'Have you checked the plan for destroys? If you have and you want to proceed, let\'s continue the apply',

                        type: 'boolean'

                    )

                    withEnv([

                        "HELM=${params.HELM}",

                        "NAME_SPACE=${params.NAME_SPACE}",

                        "ENV_NAME=${params.ENV_NAME}",

                        'http_proxy=1.1.1.1:8080',

                        'https_proxy=1.1.1.0:8080',

                        'no_proxy=1.1.1.1, localhost,127.0.0.1',

                        "ACTION=${params.ACTION}"

                    ]) {

                        sh '''

                            ls -lart

                            if [[ \$ACTION == 'deploy' ]]; then

                               helm upgrade --install \$HELM \$HELM -f \$HELM/env/$ENV_NAME-values.yaml -n $NAME_SPACE

                               echo hi

                            elif [[ \$ACTION == 'delete' ]]; then

                               helm delete \$HELM

                               echo hi

                            fi

                            helm list -n $NAME_SPACE

                        '''

                    }

                }

            }

        }

    }

}

}

}

}

}


Comments

Popular posts from this blog

Starting Gemfire in SAS

Gemfire is available in both Compute and Mid. The default port is 41415. If you have many gemfire, you may have port numbers incremented by 1, for example: 41416. Gemfire is located under Web. <SASCONFIG>/Web/gemfire. To Start: <SASCONFIG>/Web/gemfire/instances/ins_41415/gemfire-locator.sh start To check Status: <SASCONFIG>/Web/gemfire/instances/ins_41415/gemfire-locator.sh status To stop: <SASCONFIG>/Web/gemfire/instances/ins_41415/gemfire-locator.sh stop If it doesn;t start check port number is occupied by any other process. lsof -i tcp:41415 If you only have one instance then 41415 will be default. If you have Lev2 then it will be 41416

SAS 9.4 server startup order

In Linux / Unix OS we normally use sas.servers to start the services. The script in the background follows an order to start the services. It is important to follow the order to run the services correctly. In this post we can see what is the order to start / stop and to generate the sas.servers script. It is not really required to memorize the order because SAS provide an utility to create the sas.servers script automatically which will start / stop the service in order. Starting order SAS Metadata server Olap server SAS object spawner SAS / SHARE server SAS / connect spawner SAP table server SAP remote services SAS deployment tester server Stopping will be the same in reverse. How to create sas.server script? We can create sas.server script by using generate_boot_script.sh. if you have made any changes to your environment like adding a new server or spawner we can use the script to generate new sas.server. You can use the script even if you have removed the spanner o...

Insufficient authorization to access PIPE error in SAS EG

Issue: When I tried to run SAS code in SAS Enterprise Guide it throws following errors: ERROR: Insufficient authorization to access PIPE. ERROR: Error in the FILENAME statement. Screenshot of error: Solution: This error occurs when you try to run OS commands in SAS code. To run the OS commands in SAS code you need to enable XCMD option. You check it in SAS Management Console by following below steps.   Open SMC -> Expand Servers -> Expand   In SASApp , expand Logical Workspace Server -> right click on Workspace Server. Click properties -> option tab -> advanced options -> launch properties. Check whether Allow XCMD is checked. The issue arises if the Allow XCMD is not checked. In above image, Allow XCMD option is not checked. It should be checked to run OS commands from SAS code. In Unix /Linux machines, this XCMD option can be enabled by using system option XCMD in sasv9 config file or workspaceserver.sh script f...