-
-
Save ratulbasak/04c123ee4dff6bd0d21ad3b8860d364a to your computer and use it in GitHub Desktop.
Jenkins Files
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
JENKINS_URL="http://jenkins" | |
JENKINS_USER="username" | |
JENKINS_TOKEN="username_generate_token" | |
JOB_NAME="job/birolTestJob" | |
JENKINS_AUTH="$JENKINS_USER:$JENKINS_TOKEN" | |
CRUMB=$(curl --user "$JENKINS_AUTH" "$JENKINS"'/crumbIsuser/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') | |
RESPONSE_ERROR=$(echo "$CRUMB" | grep "<html>" || true ) | |
if [ -n "$RESPONSE_ERROR" ] | |
then | |
echo "CRUMB ERROR" | |
exit 1 | |
else | |
curl --user "$JENKINS_AUTH" -H "$CRUMB" -X POST "$JENKINS/$JOB/"buildWithParameters? -F variable1="variable1" -F variable2="variable2" | |
fi | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pipeline { | |
agent { | |
kubernetes { | |
defaultContainer 'jnlp' | |
yaml """ | |
apiVersion: v1 | |
kind: Pod | |
metadata: | |
labels: | |
run: jnlp | |
spec: | |
containers: | |
- name: git | |
image: gcr.io/cloud-builders/git | |
command: | |
- cat | |
tty: true | |
- name: python-382 | |
image: registry.hub.docker.com/library/python:3.8.2 | |
command: | |
- cat | |
tty: true | |
- name: busybox | |
image: busybox | |
command: | |
- cat | |
tty: true | |
- name: gcloud | |
image: google/cloud-sdk:latest | |
command: | |
- cat | |
tty: true | |
volumeMounts: | |
- name: kaniko-secret | |
mountPath: /secret | |
env: | |
- name: GOOGLE_APPLICATION_CREDENTIALS | |
value: /secret/kaniko-secret.json | |
- name: kaniko | |
image: gcr.io/kaniko-project/executor:debug | |
command: | |
- /busybox/cat | |
tty: true | |
volumeMounts: | |
- name: kaniko-secret | |
mountPath: /secret | |
env: | |
- name: GOOGLE_APPLICATION_CREDENTIALS | |
value: /secret/kaniko-secret.json | |
volumes: | |
- name: kaniko-secret | |
secret: | |
secretName: kaniko-secret | |
imagePullSecrets: | |
- name: jenkins-image-pull-secret | |
""" | |
} | |
} | |
environment { | |
JenkinsDockerGCRSecret = credentials('jenkins-docker-gcr-secret') | |
} | |
stages { | |
stage ('Pre Actions-Build Started') { | |
steps { | |
slackSend ( | |
color: '#F7A200' , | |
message: "Hey, your CI/CD trigger has *Started* \n*Trigger: * `${env.JOB_NAME}` #${env.BUILD_NUMBER}\n<${env.BUILD_URL}|OPEN JENKINS BUILD>\n*GitHub: * ${GIT_BRANCH} >> <${GIT_URL}|Open Github>" | |
) | |
} | |
} | |
stage ('git clone - master') { | |
when { | |
branch 'master' | |
} | |
steps{ | |
container('git'){ | |
git branch: 'master', | |
credentialsId: 'Rohan-Github-Account-Credentials', | |
url: 'https://github.com/r4rohan/CI-CD-on-Kubernetes.git' | |
} | |
} | |
} | |
stage ('git clone - uat') { | |
when { | |
branch 'uat' | |
} | |
steps{ | |
container('git'){ | |
git branch: 'uat', | |
credentialsId: 'Rohan-Github-Account-Credentials', | |
url: 'https://github.com/r4rohan/CI-CD-on-Kubernetes.git' | |
} | |
} | |
} | |
stage ('git clone - prod') { | |
when { | |
branch 'prod' | |
} | |
steps{ | |
container('git'){ | |
git branch: 'prod', | |
credentialsId: 'Rohan-Github-Account-Credentials', | |
url: 'https://github.com/r4rohan/CI-CD-on-Kubernetes.git' | |
} | |
} | |
} | |
stage('Feature Branch Build') { | |
when { | |
expression { BRANCH_NAME != 'master' && BRANCH_NAME != 'uat' && BRANCH_NAME != 'prod'} | |
} | |
steps{ | |
container('git'){ | |
git branch: '${BRANCH_NAME}', | |
credentialsId: 'Rohan-Github-Account-Credentials', | |
url: 'https://github.com/r4rohan/CI-CD-on-Kubernetes.git' | |
} | |
dir ('jenkins-app') { | |
container('python-382'){ | |
sh 'python -v' | |
sh 'python app.py' | |
} | |
} | |
} | |
} | |
stage ('building docker image - master') { | |
when { | |
branch 'master' | |
} | |
steps { | |
dir ('jenkins-app') { | |
container('python-382'){ | |
sh 'python --version' | |
} | |
container(name: 'kaniko', shell: '/busybox/sh') { | |
sh 'pwd' | |
sh """ | |
#!/busybox/sh | |
/kaniko/executor --dockerfile Dockerfile --context `pwd`/ --verbosity debug --insecure --skip-tls-verify --destination gcr.io/cloudorbit/app/dev/jenkinsapp:$BUILD_NUMBER --destination gcr.io/cloudorbit/app/dev/jenkinsapp:latest | |
""" | |
} | |
} | |
} | |
} | |
stage ('building docker image - uat') { | |
when { | |
branch 'uat' | |
} | |
steps { | |
dir ('jenkins-app') { | |
container('python-382'){ | |
sh 'python --version' | |
} | |
container(name: 'kaniko', shell: '/busybox/sh') { | |
sh 'pwd' | |
sh """ | |
#!/busybox/sh | |
/kaniko/executor --dockerfile Dockerfile --context `pwd`/ --verbosity debug --insecure --skip-tls-verify --destination gcr.io/cloudorbit/app/uat/jenkinsapp:$BUILD_NUMBER --destination gcr.io/cloudorbit/app/uat/jenkinsapp:latest | |
""" | |
} | |
} | |
} | |
} | |
stage ('building docker image - prod') { | |
when { | |
branch 'uat' | |
} | |
steps { | |
dir ('jenkins-app') { | |
container('python-382'){ | |
sh 'python --version' | |
} | |
container(name: 'kaniko', shell: '/busybox/sh') { | |
sh 'pwd' | |
sh """ | |
#!/busybox/sh | |
/kaniko/executor --dockerfile Dockerfile --context `pwd`/ --verbosity debug --insecure --skip-tls-verify --destination gcr.io/cloudorbit/app/prod/jenkinsapp:$BUILD_NUMBER --destination gcr.io/cloudorbit/app/prod/jenkinsapp:latest | |
""" | |
} | |
} | |
} | |
} | |
stage ('deploy to k8s - master') { | |
when { | |
branch 'master' | |
} | |
steps { | |
container('gcloud'){ | |
sh 'kubectl version' | |
sh 'gcloud auth activate-service-account --key-file=/secret/kaniko-secret.json' | |
sh "gcloud container clusters get-credentials cloudorbit --zone us-central1-c --project cloudorbit" | |
sh 'kubectl --namespace dev get pods' | |
sh "kubectl --namespace dev --cluster gke_cloudorbit_us-central1-c_cloudorbit set image deployment dev-app dev-app=gcr.io/cloudorbit/app/dev/jenkinsapp:$BUILD_NUMBER" | |
} | |
} | |
} | |
stage ('deploy to k8s - uat') { | |
when { | |
branch 'uat' | |
} | |
steps { | |
container('gcloud'){ | |
sh 'kubectl version' | |
sh 'gcloud auth activate-service-account --key-file=/secret/kaniko-secret.json' | |
sh "gcloud container clusters get-credentials cloudorbit --zone us-central1-c --project cloudorbit" | |
sh 'kubectl --namespace uat get pods' | |
sh "kubectl --namespace uat --cluster gke_cloudorbit_us-central1-c_cloudorbit set image deployment uat-app uat-app=gcr.io/cloudorbit/app/uat/jenkinsapp:$BUILD_NUMBER" | |
} | |
} | |
} | |
stage ('deploy to k8s - prod') { | |
when { | |
branch 'prod' | |
} | |
steps { | |
container('gcloud'){ | |
sh 'kubectl version' | |
sh 'gcloud auth activate-service-account --key-file=/secret/kaniko-secret.json' | |
sh "gcloud container clusters get-credentials cloudorbit --zone us-central1-c --project cloudorbit" | |
sh 'kubectl --namespace prod get pods' | |
sh "kubectl --namespace prod --cluster gke_cloudorbit_us-central1-c_cloudorbit set image deployment prod-app prod-app=gcr.io/cloudorbit/app/prod/jenkinsapp:$BUILD_NUMBER" | |
} | |
} | |
} | |
} | |
post { | |
success { | |
slackSend ( | |
color: '#00FF00', | |
message: "Hurray! CI/CD is *Success* \n*Trigger: * `${env.JOB_NAME}` #${env.BUILD_NUMBER}\n<${env.BUILD_URL}|OPEN JENKINS BUILD>\n*GitHub: * ${GIT_BRANCH} >> <${GIT_URL}|Open Github>" | |
) | |
} | |
failure { | |
slackSend ( | |
color: '#FF0000', | |
message: "Oops, something's wrong; CI/CD *Failed* \n*Trigger: * `${env.JOB_NAME}` #${env.BUILD_NUMBER}\n<${env.BUILD_URL}|OPEN JENKINS BUILD>\n*GitHub: * ${GIT_BRANCH} >> <${GIT_URL}|Open Github>" | |
) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment