commit aab8b9b1ee84030a4c9d39dc07b3fe9e7a15d55e Author: Adam Outler Date: Sat May 10 04:28:00 2025 +0000 Add Jenkinsfile diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..f9936ff --- /dev/null +++ b/Jenkinsfile @@ -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://:${env.HOST_PORT}" + } + } + } + } + + post { + always { + echo 'Pipeline finished.' + // Optional: Clean up workspace + // cleanWs() + } + success { + echo "Pipeline executed successfully!" + } + failure { + echo "Pipeline failed!" + } + } +} \ No newline at end of file