diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000000000000000000000000000000000000..3d5cf6745f14eb9216d3fc5aeb0e80d8d7daefe0 --- /dev/null +++ b/Jenkinsfile @@ -0,0 +1,72 @@ +pipeline { + agent any + + + + + + environment { + PROJECT_ID = "tech-rnd-project" + CLUSTER_NAME = "cluster" + LOCATION = "us-central1-a" + CREDENTIALS_ID = "kubernetes" + MASTER_SERVICE_ACCOUNT_EMAIL = "example@tech-rnd-project.iam.gserviceaccount.com" + + } + + stages { + stage('Scm Checkout') { + steps { + checkout scm + } + } + + + stage('Build Docker Image') { + steps { + sh 'whoami' + sh 'sudo chmod 777 /var/run/docker.sock' + sh 'sudo apt update' + sh 'sudo apt install software-properties-common' + sh 'sudo add-apt-repository ppa:cncf-buildpacks/pack-cli' + sh 'sudo apt-get update' + sh 'sudo apt-get install pack-cli' + sh 'pack build java-postgress --builder gcr.io/buildpacks/google-22/builder@sha256:ffa092c09ffb147b2ce9658eb6590aa9af2caffb2d513ab8546bb510b74e0225' + } + } + + + stage('Push Docker Image') { + steps { + script { + echo 'Push Docker Image' + sh 'gcloud config set auth/impersonate_service_account ${MASTER_SERVICE_ACCOUNT_EMAIL}' + sh 'docker tag java-postgress us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs' + sh 'gcloud auth configure-docker us-central1-docker.pkg.dev' + sh 'docker push us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs' + } + } + } + + + stage('Deploy to K8') { + steps { + script { + sh "gcloud config set project tech-rnd-project" + sh "gcloud container clusters get-credentials cluster --zone us-central1-a" + sh 'kubectl apply -f k8/deployment.yaml' + sh 'kubectl apply -f k8/service.yaml' + } + } + } + + } + post { + always { + emailext to: 'email_id', + subject: "jenkins build:${currentBuild.currentResult}: ${env.JOB_NAME}", + body: "${currentBuild.currentResult}: Job ${env.JOB_NAME}\nMore Info can be found in the attached log", + attachLog: true + } + } +} diff --git a/k8/deployment.yaml b/k8/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..aaf972073abe648bc70b640ffbec28611e5c084c --- /dev/null +++ b/k8/deployment.yaml @@ -0,0 +1,19 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: test +spec: + replicas: 1 + selector: + matchLabels: + app: test + template: + metadata: + labels: + app: test + spec: + containers: + - name: test + image: us-central1-docker.pkg.dev/tech-rnd-project/container-node/nodejs + ports: + - containerPort: 8080 diff --git a/k8/service.yaml b/k8/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1f5460d432f221fb8ad98bb9d6522e908069c302 --- /dev/null +++ b/k8/service.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: test +spec: + ports: + - port: 8080 + targetPort: 8080 + type: LoadBalancer + selector: + app: test