Skip to content
Snippets Groups Projects
Commit 2dc2dbaf authored by Bastian's avatar Bastian
Browse files

OZG-7324 adjust jenkinsfile

parent 84562cfd
No related branches found
No related tags found
1 merge request!12Ozg 7324 change master to main branch
...@@ -38,7 +38,7 @@ pipeline { ...@@ -38,7 +38,7 @@ pipeline {
} }
environment { environment {
BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/E2E%20Tests/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" JENKINS_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_E2E/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
BUNDESLAND = "by" BUNDESLAND = "by"
SSO_URL = "sso.dev.by.ozg-cloud.de" SSO_URL = "sso.dev.by.ozg-cloud.de"
CLUSTER_BASE_URL = "dev.by.ozg-cloud.de" CLUSTER_BASE_URL = "dev.by.ozg-cloud.de"
...@@ -817,9 +817,9 @@ Map getUserManagerDatabaseSecret(String namespace) { ...@@ -817,9 +817,9 @@ Map getUserManagerDatabaseSecret(String namespace) {
Void sendFailureMessage() { Void sendFailureMessage() {
def data = [ def data = [
"msgtype": "m.text", "msgtype": "m.text",
"body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}" as String, "body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}" as String,
"format": "org.matrix.custom.html", "format": "org.matrix.custom.html",
"formatted_body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>" as String "formatted_body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>" as String
] ]
sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${JsonOutput.toJson(data)}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/${getElementRoomId()}/send/m.room.message" sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${JsonOutput.toJson(data)}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/${getElementRoomId()}/send/m.room.message"
......
/*
* Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
import groovy.json.JsonOutput
def SKIP_RUN = false;
def UPDATE_NAMESPACE = false;
def EXECUTE_EA = false;
def EXECUTE_MAIN = false;
pipeline {
agent {
node {
label 'ozgcloud-jenkins-build-agent'
}
}
environment {
BLUE_OCEAN_URL = "https://jenkins.ozg-sh.de/job/E2E%20Tests/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
BUNDESLAND = 'by'
ENVIRONMENT = 'dev'
SSO_URL = 'sso.dev.by.ozg-cloud.de'
CLUSTER_BASE_URL = 'dev.by.ozg-cloud.de'
FAILED_STAGE = ''
FAILED_PARALLEL_STAGE = ' '
EA_BEZEICHNER = 'e2e-ea'
MAIN_BEZEICHNER = 'e2e-main'
SH_SUCCESS_STATUS_CODE = 0
FORCE_COLOR = 0
NO_COLOR = 1
NX_DISABLE_DB = true
}
options {
timeout(time: 2, unit: 'HOURS')
disableConcurrentBuilds()
buildDiscarder(logRotator(numToKeepStr: '15'))
skipDefaultCheckout(true)
}
stages {
stage('Checkout build trigger') {
when {
not {
anyOf {
triggeredBy cause: 'UserIdCause'
}
}
}
steps {
script {
SKIP_RUN = true
currentBuild.result= "UNSTABLE"
}
}
}
stage('Checkout SCM') {
when {
expression { !SKIP_RUN }
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
checkout scm
}
}
}
stage('Clone Gitops Repo') {
when {
expression { !SKIP_RUN }
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
cloneGitopsRepo()
}
}
}
stage('Update Alfa?') {
when {
expression { !SKIP_RUN }
beforeInput true
triggeredBy cause: "UserIdCause"
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
catchError {
timeout(time: 5, unit: 'MINUTES') {
userInput = input message: 'Update Namespace?', parameters: [
booleanParam(name: 'UpdateNamespaceToCurrentMaster', defaultValue: false)
]
UPDATE_NAMESPACE = userInput;
echo 'Update Namespace:' + UPDATE_NAMESPACE;
}
}
}
}
}
stage('Do Update Namespaces(Alfa)') {
when {
expression { !SKIP_RUN && UPDATE_NAMESPACE }
beforeInput true
triggeredBy cause: "UserIdCause"
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
updateAlfaToCurrentMaster();
pushGitopsRepo();
}
}
}
stage('Test Execution') {
when {
expression { !SKIP_RUN && !UPDATE_NAMESPACE }
beforeInput true
triggeredBy cause: "UserIdCause"
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
catchError {
timeout(time: 5, unit: 'MINUTES') {
userInput = input message: "Execute...",
parameters: [
booleanParam(name: 'ExecuteEa', defaultValue: false, description: 'EA'),
booleanParam(name: 'ExecuteMain', defaultValue: false, description: 'MAIN')
]
EXECUTE_EA = userInput.ExecuteEa;
EXECUTE_MAIN = userInput.ExecuteMain;
echo 'execute ea:' + EXECUTE_EA;
echo 'execute main:' + EXECUTE_MAIN
}
}
}
}
}
stage('Install Cypress') {
when {
expression { !SKIP_RUN && !UPDATE_NAMESPACE && (EXECUTE_EA || EXECUTE_MAIN) }
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
withNPM(npmrcConfig: 'npm-nexus-auth') {
sh 'pnpm --version'
dir('alfa-client') {
sh 'pnpm install --frozen-lockfile --network-concurrency=8'
sh "pnpm run cypress:install"
}
}
}
}
}
stage('Init k8s') {
when {
expression { !SKIP_RUN && !UPDATE_NAMESPACE }
}
steps {
script {
FAILED_STAGE = env.STAGE_NAME
configFileProvider([configFile(fileId: 'kubeconfig-dev-okd-cluster', variable: 'KUBE_CONFIG')]) {
sh 'mkdir ~/.kube'
sh 'cp ${KUBE_CONFIG} ~/.kube/config'
}
sh 'helm version'
}
}
}
stage('E2E-EA') {
when {
expression { EXECUTE_EA && (!SKIP_RUN && !UPDATE_NAMESPACE) }
}
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
script {
def bezeichner = env.EA_BEZEICHNER
def dbPort = 27018
forwardServices(generateNamespace(bezeichner), dbPort)
runTests(bezeichner, 'einheitlicher-ansprechpartner', 'user-ea', dbPort, env.STAGE_NAME)
}
}
}
post {
failure {
script {
FAILED_PARALLEL_STAGE += "${env.STAGE_NAME} "
}
}
always {
script {
publishE2ETestResult("einheitlicher-ansprechpartner", "Alfa EA E2E-Tests")
}
}
}
}
stage('E2E-Main') {
when {
expression { EXECUTE_MAIN && (!SKIP_RUN && !UPDATE_NAMESPACE) }
}
steps {
catchError(buildResult: 'FAILURE', stageResult: 'FAILURE') {
script {
def bezeichner = env.MAIN_BEZEICHNER
def dbPort = 27019
forwardServices(generateNamespace(bezeichner), dbPort)
runTests(bezeichner, 'main-tests', 'user-main', dbPort, env.STAGE_NAME)
}
}
}
post {
failure {
script {
FAILED_PARALLEL_STAGE += "${env.STAGE_NAME} "
}
}
always {
script {
publishE2ETestResult("main-tests", "Alfa Main E2E-Tests")
}
}
}
}
}
}
def cloneGitopsRepo() {
final email = "jenkins@ozg-sh.de"
final name = "jenkins"
withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git'
dir("gitops") {
sh "git config user.email '${email}'"
sh "git config user.name '${name}'"
}
}
}
Void updateAlfaToCurrentMaster() {
def values = getApplicationValues('alfa');
def imageTag = getImageTag(values);
def helmVersion = getHelmVersion(values);
def eaNamespace = generateNamespace(EA_BEZEICHNER);
updateNamespaceYaml(eaNamespace, imageTag, helmVersion);
def mainNamespace = generateNamespace(MAIN_BEZEICHNER);
updateNamespaceYaml(mainNamespace, imageTag, helmVersion);
dir("gitops") {
sh "git add dev/namespace/namespaces/${eaNamespace}.yaml";
sh "git add dev/namespace/namespaces/${mainNamespace}.yaml";
sh "git commit -m 'update static e2e namespaces(alfa to master version)'";
}
}
Map getApplicationValues(String application) {
def applicationValues = readYaml file: "gitops/${env.ENVIRONMENT}/application/values/${application}-values.yaml"
return applicationValues.get(application.replaceAll("-", "_"))
}
String getImageTag(Map applicationValues) {
return applicationValues.image.tag
}
String getHelmVersion(Map applicationValues) {
return applicationValues.helm.version
}
Void updateNamespaceYaml(String namespace, imageTag, helmVersion){
def namespaceYaml = readYaml file: "gitops/dev/namespace/namespaces/${namespace}.yaml";
namespaceYaml.alfa.image.put('tag', imageTag);
namespaceYaml.alfa.helm.put('version', helmVersion);
writeYaml file: "gitops/dev/namespace/namespaces/${namespace}.yaml", data: namespaceYaml, overwrite: true
sh "cat gitops/dev/namespace/namespaces/${namespace}.yaml"
}
Void pushGitopsRepo() {
withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
dir("gitops") {
if (hasUnpushedCommits()) {
sh 'git pull'
sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/ozgcloud-devops/gitops.git'
}
}
}
}
Boolean hasUnpushedCommits() {
return sh (script: "git cherry -v | grep .", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer;
}
Void publishE2ETestResult(String reportFolder, String reportName) {
publishHTML (
target: [
allowMissing: false,
alwaysLinkToLastBuild: false,
keepAll: true,
reportDir: "alfa-client/apps/alfa-e2e/reports/${reportFolder}",
reportFiles: 'report.html',
reportName: reportName
]
)
}
String runTests(String bezeichner, String reportFolder, String userFolder, Integer dbPort, String stageName) {
def config = generateCypressConfig(bezeichner, reportFolder, userFolder, dbPort)
try {
dir("alfa-client") {
sh "pnpm run cypress:version"
sh "apps/alfa-e2e/run-tests.sh ${reportFolder} ${config}"
}
} catch (Exception e) {
printNpmDebugLog()
error("Fehler in Stage ${stageName}, Exception: ${e}")
}
}
Void printNpmDebugLog() {
if (hasNpmDebugLog()) {
sh "cat pnpm-debug.log"
}
else {
echo 'pnpm debug log not found'
}
}
String makeUrlConform(String input) {
return input.replaceAll(/[^a-zA-Z0-9]+/, "").toLowerCase()
}
String generateBezeichner(String stage) {
def branchName = makeUrlConform(env.BRANCH_NAME)
def stageName = makeUrlConform(stage)
return "${cutBranchNameForKeycloakRealm(branchName, stageName)}-${stageName}"
}
String cutBranchNameForKeycloakRealm(String branchName, String stageName) {
final maxKeycloakRealmLength = 30
def cutBranchNamePosition = maxKeycloakRealmLength - (stageName.length() + "${env.BUNDESLAND}---dev".length())
return branchName.take(cutBranchNamePosition)
}
String generateCypressConfig(String bezeichner, String testFolder, String userFolder, Integer dbPort) {
def namespace = generateNamespace(bezeichner)
def configName = "cypress-ci-" + testFolder + ".json"
dir('alfa-client/apps/alfa-e2e/') {
def config = readJSON file: 'cypress-ci.json'
def vorgangManagerDatabaseSecret = getVorgangManagerDatabaseSecret(namespace);
def decodedPassword = decodeString(vorgangManagerDatabaseSecret.password);
def parsablePassword = makePasswordUrlConform(decodedPassword);
config.baseUrl = "https://${bezeichner}.${env.CLUSTER_BASE_URL}" as String
config.env.dbUrl = "mongodb://${decodeString(vorgangManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String
config.env.keycloakUrl = "https://${env.SSO_URL}/" as String
config.env.keycloakRealm = namespace as String
config.env += createUserIdsEnv(userFolder, namespace)
config.videosFolder = "./reports/${testFolder}/videos" as String
config.screenshotsFolder = "./reports/${testFolder}/screenshots" as String
config.reporterOptions.reportDir = "./reports/${testFolder}/mochawesome-report" as String
config.specPattern = "src/e2e/${testFolder}/**/*.cy.{js,jsx,ts,tsx}" as String
config.env.put("search", getElasticsearchEnv(namespace))
config.env.put("userManager", getUserManagerEnv(namespace, dbPort))
writeJSON file: configName, json: config
sh "cat ${configName}"
}
return "cypress-ci-" + testFolder + ".config.ts"
}
Map getVorgangManagerDatabaseSecret(String namespace) {
return readJSON(text: sh(script: "kubectl get secret ozg-mongodb-admin-vorgang-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true))
}
Map getUserManagerEnv(String namespace, dbPort){
def userManagerDatabaseSecret = getUserManagerDatabaseSecret(namespace);
def decodedPassword = decodeString(userManagerDatabaseSecret.password);
def parsablePassword = makePasswordUrlConform(decodedPassword);
return [
"dbUrl": "mongodb://${decodeString(userManagerDatabaseSecret.username)}:${parsablePassword}@localhost:${dbPort}/admin?ssl=false&directConnection=true" as String,
"database": "user-manager-database"
]
}
Map getUserManagerDatabaseSecret(String namespace) {
return readJSON(text: sh(script: "kubectl get secret ozg-mongodb-admin-user-manager-user -n ${namespace} -o jsonpath={.data}", returnStdout: true))
}
String makePasswordUrlConform(String password) {
return sh(script: "printf %s ${password} | jq -sRr @uri", returnStdout: true);
}
Map createUserIdsEnv(String userFolder, realm) {
def keycloakUsers = getKeycloakUsers(realm)
def usersFixtures = readUsersFixtures(userFolder)
return usersFixtures.collectEntries { username, user ->
[(username + "Uuid") : keycloakUsers[username].id,
(username + "InternalId"): keycloakUsers[username].attributes.ozgCloudUserId[0]]
}
}
Map getKeycloakUsers(realm) {
def shScript = """curl -H 'Content-Type: application/json' \
-H 'Authorization: bearer ${getKeycloakAccessToken(realm)}' \
'https://${env.SSO_URL}/admin/realms/${realm}/users'
"""
def keycloakUsers = readJSON text: sh(script: shScript, returnStdout: true)
echo "keycloak users: ${keycloakUsers}"
return keycloakUsers.collectEntries { [it.username, it] }
}
Map readUsersFixtures(String userFolder) {
def userFolderPath = "src/fixtures/${userFolder}"
def usersFixturesFiles = sh(script: "ls ${userFolderPath}", returnStdout: true);
return usersFixturesFiles.split("\\n")
.collect { userFixtureFile ->
def userFixture = readJSON file: "${userFolderPath}/${userFixtureFile}"
return createUserFromFixture(userFixture)
}.collectEntries { [it.name, it] }
}
Map createUserFromFixture(Map userFixture) {
return ["name" : userFixture.name,
"password" : userFixture.password,
"first_name": userFixture.get("firstName", ""),
"last_name" : userFixture.get("lastName", ""),
"email" : userFixture.get("email", "")]
}
String getKeycloakAccessToken(String realm) {
def userManagerApiUserCredentials = getUserManagerApiUserCredentials(realm)
def token = readJSON text: sh(script: "set +x && curl -d \"client_id=admin-cli\" -d \"username=${userManagerApiUserCredentials.user}\" -d \"password=${userManagerApiUserCredentials.password}\" -d \"grant_type=password\" https://$SSO_URL/realms/$realm/protocol/openid-connect/token", returnStdout: true)
return token.access_token
}
Map getUserManagerApiUserCredentials(String namespace) {
def userManagerApiUserCredentials = readJSON(text: sh(script: "kubectl get secret usermanagerapiuser-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true))
return ["user" : decodeString(userManagerApiUserCredentials.name),
"password": decodeString(userManagerApiUserCredentials.password)]
}
Void sendFailureMessage() {
def data = ["msgtype" : "m.text",
"body" : "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}" as String,
"format" : "org.matrix.custom.html",
"formatted_body": "E2E-Tests: Failed stage: ${getFailedStage()} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>" as String]
sh "curl -XPOST -H 'authorization: Bearer ${getElementAccessToken()}' -d '${JsonOutput.toJson(data)}' https://matrix.ozg-sh.de/_matrix/client/v3/rooms/${getElementRoomId()}/send/m.room.message"
}
String getFailedStage() {
if (FAILED_PARALLEL_STAGE.trim()) {
return FAILED_PARALLEL_STAGE.trim()
}
return FAILED_STAGE
}
String getElementRoomId() {
final releaseRoomId = "!oWZpUGTFsxkJIYNfYg:matrix.ozg-sh.de"
final masterRoomId = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
if (isReleaseBranch()) {
return releaseRoomId
}
return masterRoomId
}
String getElementAccessToken() {
withCredentials([string(credentialsId: 'element-login-json', variable: 'LOGIN_JSON')]) {
return readJSON(text: sh(script: '''curl -XPOST -d \"$LOGIN_JSON\" https://matrix.ozg-sh.de/_matrix/client/v3/login''', returnStdout: true)).access_token
}
}
Map getElasticsearchEnv(String namespace) {
def elasticsearchSecret = getElasticsearchSecret(namespace)
return ["user" : decodeString(elasticsearchSecret.username),
"password": decodeString(elasticsearchSecret.password),
"index" : decodeString(elasticsearchSecret.index),
"url" : "https://localhost:9200"]
}
Void forwardServices(String namespace, Integer dbPort) {
try {
forwardDatenbank(namespace, dbPort)
forwardElasticSearch()
} catch (Exception e) {
echo "forwardServices Exception: ${e}"
error("Error forwarding service")
}
}
Void forwardElasticSearch() {
if(!isElasticSearchForwarded()) {
sh "kubectl port-forward ozg-search-cluster-es-ozg-search-0 9200:9200 -n elastic-system &"
}
}
Boolean isElasticSearchForwarded() {
return sh(script: "lsof -i -P -n | grep LISTEN | grep :9200", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer
}
Void forwardDatenbank(String namespace, port) {
sh "kubectl port-forward ozg-mongodb-0 ${port}:27017 -n ${namespace} &"
}
String generateNamespace(String bezeichner) {
return "${env.BUNDESLAND}-${bezeichner}-static"
}
String decodeString(String encoded) {
return sh(script: "echo -n ${encoded} | base64 --decode", returnStdout: true)
}
Map getElasticsearchSecret(String namespace) {
return readJSON(text: sh(script: "kubectl get secret elasticsearch-credentials -n ${namespace} -o jsonpath={.data}", returnStdout: true))
}
Boolean hasNpmDebugLog() {
return sh(script: "ls -l pnpm-debug.log", returnStatus: true) == env.SH_SUCCESS_STATUS_CODE as Integer
}
\ No newline at end of file
...@@ -29,7 +29,7 @@ pipeline { ...@@ -29,7 +29,7 @@ pipeline {
} }
environment { environment {
BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/storybook/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" JENKINS_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_storybook/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
RELEASE_REGEX = /\d+.\d+.\d+/ RELEASE_REGEX = /\d+.\d+.\d+/
SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
FAILED_STAGE = "" FAILED_STAGE = ""
...@@ -247,9 +247,9 @@ Boolean isMainBranch() { ...@@ -247,9 +247,9 @@ Boolean isMainBranch() {
Void sendFailureMessage() { Void sendFailureMessage() {
def room = '' def room = ''
def data = """{"msgtype":"m.text", \ def data = """{"msgtype":"m.text", \
"body":"storybook: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \ "body":"storybook: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}", \
"format": "org.matrix.custom.html", \ "format": "org.matrix.custom.html", \
"formatted_body":"storybook: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" "formatted_body":"storybook: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>"}"""
if (isMainBranch()) { if (isMainBranch()) {
room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de" room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
......
...@@ -29,7 +29,7 @@ pipeline { ...@@ -29,7 +29,7 @@ pipeline {
} }
environment { environment {
BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/admin-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" JENKINS_URL = "https://jenkins.infra.ozg-cloud.systems/job/administration-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
RELEASE_REGEX = /\d+.\d+.\d+/ RELEASE_REGEX = /\d+.\d+.\d+/
SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
FAILED_STAGE = "" FAILED_STAGE = ""
...@@ -296,9 +296,9 @@ Boolean isMainBranch() { ...@@ -296,9 +296,9 @@ Boolean isMainBranch() {
Void sendFailureMessage() { Void sendFailureMessage() {
def room = '' def room = ''
def data = """{"msgtype":"m.text", \ def data = """{"msgtype":"m.text", \
"body":"Admin-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \ "body":"Admin-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}", \
"format": "org.matrix.custom.html", \ "format": "org.matrix.custom.html", \
"formatted_body":"Admin-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" "formatted_body":"Admin-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>"}"""
if (isMainBranch()) { if (isMainBranch()) {
room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de" room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
......
...@@ -29,7 +29,7 @@ pipeline { ...@@ -29,7 +29,7 @@ pipeline {
} }
environment { environment {
BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_alfa-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" JENKINS_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_alfa-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
RELEASE_REGEX = /\d+.\d+.\d+/ RELEASE_REGEX = /\d+.\d+.\d+/
SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
FAILED_STAGE = "" FAILED_STAGE = ""
...@@ -307,9 +307,9 @@ Void configureGit() { ...@@ -307,9 +307,9 @@ Void configureGit() {
Void sendFailureMessage() { Void sendFailureMessage() {
def room = '' def room = ''
def data = """{"msgtype":"m.text", \ def data = """{"msgtype":"m.text", \
"body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \ "body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}", \
"format": "org.matrix.custom.html", \ "format": "org.matrix.custom.html", \
"formatted_body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" "formatted_body":"Alfa-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>"}"""
if (isMainBranch()) { if (isMainBranch()) {
room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de" room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
......
...@@ -5,7 +5,7 @@ pipeline { ...@@ -5,7 +5,7 @@ pipeline {
} }
} }
environment { environment {
BLUE_OCEAN_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_info-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/" JENKINS_URL = "https://jenkins.infra.ozg-cloud.systems/job/codeSH_info-client/job/${env.BRANCH_NAME}/${env.BUILD_NUMBER}/"
RELEASE_REGEX = /\d+.\d+.\d+/ RELEASE_REGEX = /\d+.\d+.\d+/
SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/ SNAPSHOT_REGEX = /\d+.\d+.\d+-SNAPSHOT/
FAILED_STAGE = "" FAILED_STAGE = ""
...@@ -285,9 +285,9 @@ Boolean isMainBranch() { ...@@ -285,9 +285,9 @@ Boolean isMainBranch() {
Void sendFailureMessage() { Void sendFailureMessage() {
def room = '' def room = ''
def data = """{"msgtype":"m.text", \ def data = """{"msgtype":"m.text", \
"body":"Info-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${BLUE_OCEAN_URL}", \ "body":"Info-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: ${env.BUILD_NUMBER} Link: ${JENKINS_URL}", \
"format": "org.matrix.custom.html", \ "format": "org.matrix.custom.html", \
"formatted_body":"Info-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${BLUE_OCEAN_URL}'>${env.BUILD_NUMBER}</a>"}""" "formatted_body":"Info-Client: Build Failed. Stage: ${FAILED_STAGE} Build-ID: <a href='${JENKINS_URL}'>${env.BUILD_NUMBER}</a>"}"""
if (isMainBranch()) { if (isMainBranch()) {
room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de" room = "!iQPAvQIiRwRpNOszjw:matrix.ozg-sh.de"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment