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
Post a Comment