Files
tatort/Jenkinsfile
Daniel Mann 51af112610
Some checks failed
InnoHub Processor/tatort/pipeline/head There was a failure building this commit
Update Jenkinsfile
2025-07-15 10:24:50 +02:00

136 lines
4.4 KiB
Groovy

/* groovylint-disable-next-line UnusedVariable */
@Library('InnoHub-Library') _
Boolean didRun = false
pipeline {
agent any
tools {
nodejs 'NodeJS-24.2.0'
}
environment {
REGISTRY = 'https://gitea.innovation-hub-niedersachsen.de/'
USER = 'jenkins'
TOKEN = credentials('JenkinsGitea')
}
parameters {
string(name: 'REPO_NAME', defaultValue: '', description: 'Repo Name')
string(name: 'GIT_REF', defaultValue: '', description: 'Git Ref')
}
options {
buildDiscarder(
BuildHistoryManager([
[ continueAfterMatch: false, matchAtMost: 5 ],
[ actions: [ DeleteBuild() ] ]
])
)
}
stages {
stage('Validate Repository') {
steps {
script {
checkRepoName(params.REPO_NAME, true)
}
}
}
stage('Install Dependencies') {
steps {
script {
didRun = true
}
sh 'npm ci'
}
}
stage('Test & Security Audit') {
steps {
script {
didRun = true
}
echo 'Start checking security vulnerabilities in npm packages'
sh 'npm audit --audit-level=moderate'
}
}
stage('SonarQube Analysis') {
steps {
withSonarQubeEnv('sonarqube') {
sh 'sonar-scanner -Dsonar.projectKey=tatort -Dsonar.sources=src'
}
}
}
stage('Push image to gitea registry') {
when {
branch 'development'
}
steps {
script {
didRun = true
def tag = "innohub/tatort-dev:0.${env.BUILD_ID}"
docker.withRegistry('https://gitea.innovation-hub-niedersachsen.de', 'JenkinsGitea') {
docker.build(tag, '-f Dockerfile.dev .').push('latest')
}
}
}
}
stage('Update helm chart repository') {
when {
branch 'development'
}
steps {
script {
def newTag = "0.${env.BUILD_ID}"
def chartRepo = "https://jenkins:${env.TOKEN}@gitea.innovation-hub-niedersachsen.de/innohub/charts.git"
def chartPath = "tatort-dev/tatort"
sh """
rm -rf charts-tmp
git clone ${chartRepo} charts-tmp
cd charts-tmp/${chartPath}
# update image tag in values.yaml
sed -i 's/^ tag: .*/ tag: ${newTag}/' values.yaml
# optional: bump version in Chart.yaml
sed -i 's/^version: .*/version: ${newTag}/' Chart.yaml
sed -i 's/^appVersion: .*/appVersion: ${newTag}/' Chart.yaml
git config user.name 'Jenkins'
git config user.email 'jenkins@innohub.local'
git add values.yaml Chart.yaml
git commit -m 'ci: update tatort-dev chart with image tag ${newTag}'
git push origin main
"""
}
}
}
}
post {
success {
script {
if (didRun) {
echo 'Pipeline erfolgreich!'
discordSend description: "Running ${env.BUILD_ID} on ${env.JENKINS_URL}, ${params.GIT_REF}", footer: 'Pipeline succeeded', link: env.BUILD_URL, result: currentBuild.currentResult, title: env.JOB_NAME, webhookURL: 'https://discordapp.com/api/webhooks/1389470542691831819/NdMO17sLBG2dplp_-oh6Ff0cbPOoADl0QwXKM9UzduxU44av_ZQkQjKTmpdK7YuwcZDc'
}
}
}
failure {
script {
if (didRun) {
echo 'Pipeline fehlgeschlagen!'
discordSend description: "Running ${env.BUILD_ID} on ${env.JENKINS_URL}, ${params.GIT_REF}", footer: 'Pipeline failed', link: env.BUILD_URL, result: currentBuild.currentResult, title: env.JOB_NAME, webhookURL: 'https://discordapp.com/api/webhooks/1389470542691831819/NdMO17sLBG2dplp_-oh6Ff0cbPOoADl0QwXKM9UzduxU44av_ZQkQjKTmpdK7YuwcZDc'
}
}
}
}
}