120 lines
5.3 KiB
Groovy
120 lines
5.3 KiB
Groovy
pipeline {
|
|
environment {
|
|
registry = "trance0/notenextra"
|
|
version = "1.2"
|
|
NODE_OPTIONS = "--max-old-space-size=8192"
|
|
// NEXT_SEARCH_ALGOLIA_APP_ID = "${NEXT_SEARCH_ALGOLIA_APP_ID}"
|
|
// NEXT_SEARCH_ALGOLIA_API_KEY = "${NEXT_SEARCH_ALGOLIA_API_KEY}"
|
|
// NEXT_SEARCH_ALGOLIA_INDEX_NAME = "${NEXT_SEARCH_ALGOLIA_INDEX_NAME}"
|
|
}
|
|
|
|
agent any
|
|
|
|
stages {
|
|
stage("Cleanup Workspace") {
|
|
steps {
|
|
// Using Workspace Cleanup Plugin (if installed and configured)
|
|
cleanWs()
|
|
}
|
|
}
|
|
stage("Checkout") {
|
|
steps {
|
|
checkout([
|
|
$class: "GitSCM",
|
|
branches: [[ name: "*/main" ]],
|
|
userRemoteConfigs: [[
|
|
url: "https://github.com/Trance-0/NoteNextra",
|
|
]]
|
|
])
|
|
}
|
|
}
|
|
stage('Pre-build script') {
|
|
steps{
|
|
script {
|
|
echo "Running pre-build script"
|
|
sh "./docker/prebuild.sh"
|
|
}
|
|
}
|
|
}
|
|
stage("Build and test"){
|
|
parallel {
|
|
stage("Build Math") {
|
|
steps {
|
|
script {
|
|
echo "Building docker image ${registry}-math:${version}.${env.BUILD_ID}"
|
|
def customImage = docker.build("${registry}-math:v${version}.${env.BUILD_ID}","-f ./docker/math/Dockerfile --no-cache --progress=plain .")
|
|
echo "Logging in to docker hub"
|
|
// docker.withRegistry("https://registry.hub.docker.com", "docker-hub-creds") {
|
|
// echo "Pushing docker image ${registry}:v${version}.${env.BUILD_ID}"
|
|
// customImage.push()
|
|
// }
|
|
echo "skipping push due to conflicted servers"
|
|
}
|
|
}
|
|
}
|
|
stage("Build CSE") {
|
|
steps {
|
|
script {
|
|
echo "Building docker image ${registry}-cse:${version}.${env.BUILD_ID}"
|
|
def customImage = docker.build("${registry}-cse:v${version}.${env.BUILD_ID}","-f ./docker/cse/Dockerfile --no-cache --progress=plain .")
|
|
echo "Logging in to docker hub"
|
|
// docker.withRegistry("https://registry.hub.docker.com", "docker-hub-creds") {
|
|
// echo "Pushing docker image ${registry}:v${version}.${env.BUILD_ID}"
|
|
// customImage.push()
|
|
// }
|
|
echo "skipping push due to conflicted servers"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage("Cleanup Docker tags") {
|
|
steps {
|
|
script {
|
|
echo "1. Stopping existing container"
|
|
sh "docker compose -f ./docker/docker-compose.yaml down"
|
|
// Using Workspace Cleanup Plugin (if installed and configured)
|
|
echo "2. Removing existing images"
|
|
def imageNameMath = "${registry}-math:latest"
|
|
def imageNameCSE = "${registry}-cse:latest"
|
|
def oldImageIDMath = sh(
|
|
script: "docker images -qf reference=\${imageNameMath}",
|
|
returnStdout: true
|
|
)
|
|
def oldImageIDCSE = sh(
|
|
script: "docker images -qf reference=\${imageNameCSE}",
|
|
returnStdout: true
|
|
)
|
|
if ( "${oldImageIDMath}" != "" ) {
|
|
echo "Removing old image ${oldImageIDMath}"
|
|
echo "Image Name: " + "${imageNameMath}"
|
|
echo "Old Image: ${oldImageIDMath}"
|
|
sh "docker rmi ${oldImageIDMath}"
|
|
}else{
|
|
echo "Warning: ${imageNameMath} does not exist"
|
|
}
|
|
if ( "${oldImageIDCSE}" != "" ) {
|
|
echo "Removing old image ${oldImageIDCSE}"
|
|
echo "Image Name: " + "${imageNameCSE}"
|
|
echo "Old Image: ${oldImageIDCSE}"
|
|
sh "docker rmi ${oldImageIDCSE}"
|
|
}else{
|
|
echo "Warning: ${imageNameCSE} does not exist"
|
|
}
|
|
echo "3. Assigned new tags to the images"
|
|
sh "docker tag ${registry}-math:v${version}.${env.BUILD_ID} ${registry}-math:latest"
|
|
sh "docker tag ${registry}-cse:v${version}.${env.BUILD_ID} ${registry}-cse:latest"
|
|
}
|
|
}
|
|
}
|
|
stage("Deploy") {
|
|
steps {
|
|
script {
|
|
echo "Deploying docker image ${registry}-math:${version}.${env.BUILD_ID} and ${registry}-cse:${version}.${env.BUILD_ID} with docker compose"
|
|
sh "docker compose -f ./docker/docker-compose.yaml up -d"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|