71 lines
1.8 KiB
Groovy
71 lines
1.8 KiB
Groovy
pipeline {
|
|
agent any
|
|
|
|
environment {
|
|
NODE_VERSION = '20.17.0'
|
|
PR_NUMBER = "${env.CHANGE_ID}" // PR number comes from webhook payload
|
|
IMAGE_TAG="ghcr.io/gitroomhq/postiz-app-pr:${env.CHANGE_ID}"
|
|
}
|
|
|
|
stages {
|
|
stage('Checkout Repository') {
|
|
steps {
|
|
checkout scm
|
|
}
|
|
}
|
|
|
|
stage('Check Node.js and npm') {
|
|
steps {
|
|
script {
|
|
sh "node -v"
|
|
sh "npm -v"
|
|
}
|
|
}
|
|
}
|
|
|
|
stage('Install Dependencies') {
|
|
steps {
|
|
sh 'npm ci'
|
|
}
|
|
}
|
|
|
|
stage('Build Project') {
|
|
steps {
|
|
sh 'npm run build'
|
|
}
|
|
}
|
|
|
|
stage('Build and Push Docker Image') {
|
|
when {
|
|
expression { return env.CHANGE_ID != null } // Only run if it's a PR
|
|
}
|
|
steps {
|
|
withCredentials([string(credentialsId: 'gh-pat', variable: 'GITHUB_PASS')]) {
|
|
// Docker login step
|
|
sh '''
|
|
echo "$GITHUB_PASS" | docker login ghcr.io -u "egelhaus" --password-stdin
|
|
'''
|
|
// Build Docker image
|
|
sh '''
|
|
docker build -f Dockerfile.dev -t $IMAGE_TAG .
|
|
'''
|
|
// Push Docker image to GitHub Container Registry
|
|
sh '''
|
|
docker push $IMAGE_TAG
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
success {
|
|
echo 'Build completed successfully!'
|
|
|
|
}
|
|
failure {
|
|
echo 'Build failed!'
|
|
|
|
}
|
|
}
|
|
}
|