Add Jenkinsfile
All checks were successful
Updates/glados-voice/pipeline/head This commit looks good
All checks were successful
Updates/glados-voice/pipeline/head This commit looks good
This commit is contained in:
77
Jenkinsfile
vendored
Normal file
77
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
pipeline {
|
||||
agent {
|
||||
label 'shark-wrangler'
|
||||
}
|
||||
|
||||
environment {
|
||||
REPO_URL = 'https://github.com/dnhkng/GlaDOS.git'
|
||||
IMAGE_NAME = 'glados-app' // You can customize this if needed
|
||||
CONTAINER_NAME = 'glados-voice'
|
||||
HOST_PORT = 7089
|
||||
CONTAINER_PORT = 5050 // This is the port exposed by the Dockerfile and used in docker-compose
|
||||
}
|
||||
|
||||
stages {
|
||||
stage('Checkout') {
|
||||
steps {
|
||||
script {
|
||||
echo "Cloning repository: ${env.REPO_URL}"
|
||||
git url: env.REPO_URL, branch: 'main' // Assuming main branch, adjust if needed
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Build Docker Image') {
|
||||
steps {
|
||||
script {
|
||||
echo "Building Docker image: ${env.IMAGE_NAME}"
|
||||
// Using the Dockerfile from the cloned repo
|
||||
docker.build(env.IMAGE_NAME, '.')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Stop and Remove Previous Container (if exists)') {
|
||||
steps {
|
||||
script {
|
||||
echo "Checking for existing container: ${env.CONTAINER_NAME}"
|
||||
// Use '|| true' to prevent failure if container doesn't exist
|
||||
sh "docker ps -a --filter name=${env.CONTAINER_NAME} -q | xargs -r docker stop || true"
|
||||
sh "docker ps -a --filter name=${env.CONTAINER_NAME} -q | xargs -r docker rm || true"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('Run Docker Container') {
|
||||
steps {
|
||||
script {
|
||||
echo "Running Docker container: ${env.CONTAINER_NAME}"
|
||||
echo "Mapping host port ${env.HOST_PORT} to container port ${env.CONTAINER_PORT}"
|
||||
// Run in detached mode (-d)
|
||||
// Use the image built in the previous stage
|
||||
// Set the container name
|
||||
// Map the ports
|
||||
sh "docker run -d --name ${env.CONTAINER_NAME} -p ${env.HOST_PORT}:${env.CONTAINER_PORT} ${env.IMAGE_NAME}"
|
||||
|
||||
echo "Container ${env.CONTAINER_NAME} should be running."
|
||||
echo "You can check its status with: docker ps -f name=${env.CONTAINER_NAME}"
|
||||
echo "Access the application (if it's a web service) at http://<your-jenkins-agent-ip>:${env.HOST_PORT}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
post {
|
||||
always {
|
||||
echo 'Pipeline finished.'
|
||||
// Optional: Clean up workspace
|
||||
// cleanWs()
|
||||
}
|
||||
success {
|
||||
echo "Pipeline executed successfully!"
|
||||
}
|
||||
failure {
|
||||
echo "Pipeline failed!"
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user