pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '5'))
}
environment {
DOCKERHUB_CREDENTIALS = credentials('dockerhub-creds')
APP_NAME = "react-multi-stage-build-app"
IMAGE_TAG = "${env.BUILD_ID}-${env.GIT_COMMIT}"
}
stages {
stage('Build image') {
steps {
echo 'Building...'
dir('react-multi-build-app') {
sh "docker build -t ${DOCKERHUB_CREDENTIALS_USR}/${APP_NAME}:${IMAGE_TAG} ."
}
}
}
stage('Login') {
steps {
echo 'Login in ...'
sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin'
}
}
stage('Push image') {
steps {
echo 'Pushing ...'
sh "docker push ${DOCKERHUB_CREDENTIALS_USR}/${APP_NAME}:${IMAGE_TAG}"
}
}
stage('Pull image') {
steps {
echo 'Pulling image'
sh "docker pull ${DOCKERHUB_CREDENTIALS_USR}/${APP_NAME}:${IMAGE_TAG}"
}
}
stage('Deploy Image') {
steps {
script {
echo 'Deploying ...'
//def installCmd = "sudo apt install docker.io"
//def addDockerUserCmd = "sudo usermod -aG docker ubuntu && newgrp docker"
def dockerCmd = "docker run -p 80:80 -d ${DOCKERHUB_CREDENTIALS_USR}/${APP_NAME}:${IMAGE_TAG}"
def ec2Instance = "ubuntu@3.235.164.163"
sshagent(['server-key']) {
//sh "ssh -o StrictHostKeyChecking=no ${ec2Instance} ${installCmd}"
//sh "ssh -o StrictHostKeyChecking=no ${ec2Instance} ${addDockerUserCmd}"
sh "ssh -o StrictHostKeyChecking=no ${ec2Instance} ${dockerCmd}"
}
}
}
}
}
}