All checks were successful
InnoHub Processor/tatort/pipeline/head This commit looks good
139 lines
4.7 KiB
Groovy
139 lines
4.7 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 {
|
|
withCredentials([usernamePassword(credentialsId: 'JenkinsGitea', usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PAT')]) {
|
|
script {
|
|
def newTag = "0.${env.BUILD_ID}"
|
|
def chartRepo = "https://${GIT_USER}:${GIT_PAT}@gitea.innovation-hub-niedersachsen.de/innohub/charts.git"
|
|
def chartPath = "tatort-dev/tatort"
|
|
|
|
sh """
|
|
# Clean clone
|
|
rm -rf charts-tmp
|
|
git clone ${chartRepo} charts-tmp
|
|
cd charts-tmp/${chartPath}
|
|
|
|
# Update values.yaml image tag
|
|
sed -i 's/^ tag: .*/ tag: ${newTag}/' values.yaml
|
|
|
|
# Optional: bump chart version and appVersion
|
|
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'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|