AI-Voice-Agent/Jenkinsfile
2024-11-28 18:39:11 +05:30

113 lines
4.0 KiB
Groovy

pipeline {
agent any
environment {
DOCKER_IMAGE = 'jassimsm/tech4biz-reactjs'
DOCKER_TAG = 'latest'
DOCKER_USERNAME = "jassimsm"
DOCKER_PASSWORD = "dckr_pat_c9HutePXaqreGfKi48H0WPWWfBs"
SSH_CREDENTIALS = 'tech4biz-demo'
REMOTE_SERVER = 'ubuntu@160.187.167.157'
REMOTE_WORKSPACE = '/home/ubuntu'
GIT_CREDENTIALS = 'git-cred'
}
stages {
stage('Add Host Key') {
steps {
script {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
mkdir -p ~/.ssh
ssh-keyscan -H 160.187.167.157 >> ~/.ssh/known_hosts
'''
}
}
}
}
stage('Checkout and Install Dependencies on Remote Server') {
steps {
script {
withCredentials([usernamePassword(credentialsId: GIT_CREDENTIALS, usernameVariable: 'GIT_USERNAME', passwordVariable: 'GIT_PASSWORD')]) {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
ssh ${REMOTE_SERVER} "mkdir -p ${REMOTE_WORKSPACE} && cd ${REMOTE_WORKSPACE} && rm -rf Tech4Biz-Website && \
git clone https://${GIT_USERNAME}:${GIT_PASSWORD}@git.tech4biz.wiki/Tech4Biz-Services/Tech4Biz-Website.git && \
cd Tech4Biz-Website && git checkout main"
'''
}
}
}
}
}
stage('Build Docker Image on Remote Server') {
steps {
script {
try {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
ssh ${REMOTE_SERVER} "cd ${REMOTE_WORKSPACE}/Tech4Biz-Website && docker build -t ${DOCKER_IMAGE}:${DOCKER_TAG} ."
'''
}
} catch (Exception e) {
error "Failed to build Docker image on remote server: ${e.message}"
}
}
}
}
stage('Push Docker Image from Remote Server') {
steps {
script {
try {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
ssh ${REMOTE_SERVER} "echo ${DOCKER_PASSWORD} | docker login -u ${DOCKER_USERNAME} --password-stdin && docker push ${DOCKER_IMAGE}:${DOCKER_TAG}"
'''
}
} catch (Exception e) {
error "Failed to push Docker image from remote server: ${e.message}"
}
}
}
}
stage('Deploy') {
steps {
script {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
ssh ${REMOTE_SERVER} "cd ${REMOTE_WORKSPACE}/Tech4Biz-Website && \
docker pull ${DOCKER_IMAGE}:${DOCKER_TAG} && \
docker stop tech4biz-container || true && \
docker rm tech4biz-container || true && \
docker run -d -p 5173:5173 --name tech4biz-container ${DOCKER_IMAGE}:${DOCKER_TAG}"
'''
}
}
}
}
stage('Update Nginx Configuration') {
steps {
script {
sshagent(credentials: [SSH_CREDENTIALS]) {
sh '''
ssh ${REMOTE_SERVER} "sudo nginx -t && sudo systemctl reload nginx"
'''
}
}
}
}
}
post {
always {
cleanWs()
}
}
}