Files
Seasoned/Jenkinsfile
2026-03-20 19:38:23 +00:00

90 lines
3.2 KiB
Groovy

pipeline {
agent any
environment {
// Configure these in Jenkins or as pipeline parameters
DOCKER_REGISTRY = 'git.wrigglyt.xyz'
DOCKER_IMAGE = 'chloe/seasoned' // e.g., username/repo for Docker Hub
DEPLOY_HOST = '10.0.11.3'
DEPLOY_USER = 'chloe'
DEPLOY_PATH = '/opt/seasoned'
GIT_REPO_URL = 'https://git.wrigglyt.xyz/chloe/Seasoned.git'
}
options {
buildDiscarder(logRotator(numToKeepStr: '10'))
timeout(time: 30, unit: 'MINUTES')
}
stages {
stage('Build Docker Image') {
steps {
script {
env.IMAGE_TAG = env.BRANCH_NAME == 'main' ? 'latest' : "${env.BUILD_NUMBER}-${env.GIT_COMMIT.take(7)}"
env.FULL_IMAGE = "${env.DOCKER_REGISTRY}/${env.DOCKER_IMAGE}:${env.IMAGE_TAG}"
}
echo "Building image: ${env.FULL_IMAGE}"
sh """
docker build -t ${env.FULL_IMAGE} .
docker tag ${env.FULL_IMAGE} ${env.DOCKER_REGISTRY}/${env.DOCKER_IMAGE}:latest
"""
}
}
stage('Push to Registry') {
steps {
withCredentials([usernamePassword(
credentialsId: 'c-gitea',
usernameVariable: 'DOCKER_USER',
passwordVariable: 'DOCKER_PASS'
)]) {
sh """
echo \$DOCKER_PASS | docker login -u \$DOCKER_USER --password-stdin ${env.DOCKER_REGISTRY}
docker push ${env.FULL_IMAGE}
docker push ${env.DOCKER_REGISTRY}/${env.DOCKER_IMAGE}:latest
"""
}
}
}
stage('Deploy via SSH') {
steps {
script {
env.DEPLOY_BRANCH = env.BRANCH_NAME ?: 'main'
}
sshagent(credentials: ['mini2']) {
sh """
ssh -o StrictHostKeyChecking=no ${env.DEPLOY_USER}@${env.DEPLOY_HOST} << 'DEPLOY_EOF'
set -e
cd ${env.DEPLOY_PATH} || mkdir -p ${env.DEPLOY_PATH} && cd ${env.DEPLOY_PATH}
if [ -f .env ]; then cp .env /tmp/.seasoned_env_bak; fi
git fetch origin
git reset --hard origin/${env.DEPLOY_BRANCH}
if [ -f /tmp/.seasoned_env_bak ]; then mv /tmp/.seasoned_env_bak .env; fi
export IMAGE_TAG=${env.IMAGE_TAG}
export DOCKER_REGISTRY=${env.DOCKER_REGISTRY}
export DOCKER_IMAGE=${env.DOCKER_IMAGE}
docker compose --env-file .env pull
docker compose --env-file .env up -d --force-recreate
DEPLOY_EOF
"""
}
}
}
}
post {
success {
echo "Deployment successful! Image: ${env.FULL_IMAGE}"
}
failure {
echo "Deployment failed!"
}
}
}