Skip to content

Commit

Permalink
midpoint pipelines: added try/catch/finally with mailing where missing
Browse files Browse the repository at this point in the history
  • Loading branch information
virgo47 committed Jun 24, 2022
1 parent 636210f commit 942beee
Show file tree
Hide file tree
Showing 3 changed files with 253 additions and 165 deletions.
151 changes: 90 additions & 61 deletions tools/jenkins/midpoint-main-generic-pg-pipeline
Original file line number Diff line number Diff line change
Expand Up @@ -47,78 +47,107 @@ podTemplate(
]
) {
node(POD_LABEL) {
stage("checkout") {
git branch: params.BRANCH ?: 'master',
url: 'https://github.com/Evolveum/midpoint.git'
}
stage("db-init") {
container('postgres') {
sh """#!/bin/bash -ex
set -x
psql --version
psql -v ON_ERROR_STOP=1 -q -U midtest -f config/sql/generic-old/postgresql-4.5-all.sql \
-f repo/repo-sql-impl-test/sql-procedures/postgresql.sql
#psql -U midtest -c "\\dt" # uncomment to list the tables
"""
try {
stage("checkout") {
git branch: params.BRANCH ?: 'master',
url: 'https://github.com/Evolveum/midpoint.git'
}
}
stage("build-with-tests") {
container('maven') {
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
env | sort
mvn --version
df -h
fi
stage("db-init") {
container('postgres') {
sh """#!/bin/bash -ex
set -x
psql --version
psql -v ON_ERROR_STOP=1 -q -U midtest -f config/sql/generic-old/postgresql-4.5-all.sql \
-f repo/repo-sql-impl-test/sql-procedures/postgresql.sql
#psql -U midtest -c "\\dt" # uncomment to list the tables
"""
}
}
stage("build-with-tests") {
container('maven') {
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
env | sort
mvn --version
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P dbtest,-dist clean install \
-Dmidpoint.repository.jdbcUrl=jdbc:postgresql://localhost:5432/midtest \
-Dmidpoint.repository.jdbcPassword=password \
-Dmidpoint.repository.jdbcUsername=midtest \
-Dmidpoint.repository.driverClassName=org.postgresql.Driver \
-Dmidpoint.repository.hibernateHbm2ddl=validate \
-Dmidpoint.repository.hibernateDialect=com.evolveum.midpoint.repo.sql.util.MidPointPostgreSQLDialect
mvn -B -ntp -Dmaven.test.failure.ignore -P dbtest,-dist clean install \
-Dmidpoint.repository.jdbcUrl=jdbc:postgresql://localhost:5432/midtest \
-Dmidpoint.repository.jdbcPassword=password \
-Dmidpoint.repository.jdbcUsername=midtest \
-Dmidpoint.repository.driverClassName=org.postgresql.Driver \
-Dmidpoint.repository.hibernateHbm2ddl=validate \
-Dmidpoint.repository.hibernateDialect=com.evolveum.midpoint.repo.sql.util.MidPointPostgreSQLDialect

if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("tests-extra") {
container('maven') {
// -Xmx6g should fit into 8GB of RAM, 4g is on the edge for some tests
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P extratest,dbtest,-dist verify -rf testing \
-Dmidpoint.repository.jdbcUrl=jdbc:postgresql://localhost:5432/midtest \
-Dmidpoint.repository.jdbcPassword=password \
-Dmidpoint.repository.jdbcUsername=midtest \
-Dmidpoint.repository.driverClassName=org.postgresql.Driver \
-Dmidpoint.repository.hibernateHbm2ddl=validate \
-Dmidpoint.repository.hibernateDialect=com.evolveum.midpoint.repo.sql.util.MidPointPostgreSQLDialect \
-Dfailsafe.args="-Xms2g -Xmx6g -Duser.language=en --add-exports java.management/sun.management=ALL-UNNAMED"

if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("collect-test-results") {
container('maven') {
// If we get here it's success, test results can change it to UNSTABLE.
currentBuild.result = 'SUCCESS'

step([
$class: 'Publisher',
reportFilenamePattern: '**/testng-results.xml'
])
}
}
} catch (Exception e) {
currentBuild.result = 'FAILURE' // error below will not set result for mailer!
error "Marking build as FAILURE because of: ${e}"
} finally {
if (verbose > '0') {
echo "Build: ${currentBuild}"
echo "Result: ${currentBuild.currentResult}"
}
}
stage("tests-extra") {
container('maven') {
// -Xmx6g should fit into 8GB of RAM, 4g is on the edge for some tests
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P extratest,dbtest,-dist verify -rf testing \
-Dmidpoint.repository.jdbcUrl=jdbc:postgresql://localhost:5432/midtest \
-Dmidpoint.repository.jdbcPassword=password \
-Dmidpoint.repository.jdbcUsername=midtest \
-Dmidpoint.repository.driverClassName=org.postgresql.Driver \
-Dmidpoint.repository.hibernateHbm2ddl=validate \
-Dmidpoint.repository.hibernateDialect=com.evolveum.midpoint.repo.sql.util.MidPointPostgreSQLDialect \
-Dfailsafe.args="-Xms2g -Xmx6g -Duser.language=en --add-exports java.management/sun.management=ALL-UNNAMED"
try {
// Very basic mails, later we can use https://plugins.jenkins.io/email-ext/
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: env.DEFAULT_MAIL_RECIPIENT,
sendToIndividuals: false])

sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("collect-test-results") {
container('maven') {
step([
$class: 'Publisher',
// $class: 'LabeledTestResultGroupPublisher',
reportFilenamePattern: '**/testng-results.xml'
])
} catch (Exception e) {
println 'Could not send email: ' + e
}
}
}
Expand Down
134 changes: 82 additions & 52 deletions tools/jenkins/midpoint-main-generic-sql-server-pipeline
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,16 @@ podTemplate(
]
) {
node(POD_LABEL) {
stage("checkout") {
git branch: params.BRANCH ?: 'master',
url: 'https://github.com/Evolveum/midpoint.git'
}
stage("db-init") {
container('db') {
// TODO: update https://docs.evolveum.com/midpoint/reference/repository/generic/ms-sql/ with this script,
// mention sqlcmd and few tips from below, like -b and -I flags.
sh """#!/bin/bash -ex
try {
stage("checkout") {
git branch: params.BRANCH ?: 'master',
url: 'https://github.com/Evolveum/midpoint.git'
}
stage("db-init") {
container('db') {
// TODO: update https://docs.evolveum.com/midpoint/reference/repository/generic/ms-sql/ with this script,
// mention sqlcmd and few tips from below, like -b and -I flags.
sh """#!/bin/bash -ex
cat > create-db.sql << EOF
CREATE DATABASE midtest
COLLATE SQL_Latin1_General_CP1_CS_AS;
Expand All @@ -85,61 +86,90 @@ ALTER ROLE [db_owner] ADD MEMBER [midtest];
GO
EOF

#sleep 30 - sometimes suggested, but it seems to work without it just fine
# -b for sqlcmd is "fail on error"
/opt/mssql-tools/bin/sqlcmd -b -S localhost -U sa -P 'Pa55word!' -d master -i create-db.sql
#sleep 30 - sometimes suggested, but it seems to work without it just fine
# -b for sqlcmd is "fail on error"
/opt/mssql-tools/bin/sqlcmd -b -S localhost -U sa -P 'Pa55word!' -d master -i create-db.sql

# -I enables QUOTED_IDENTIFIER, see https://stackoverflow.com/a/51201270/658826
# Without it the script fails on CREATE INDEX (probably iPrimaryIdentifierValueWithOC, if the line is right).
/opt/mssql-tools/bin/sqlcmd -b -I -S localhost -U midtest -P password -d midtest \
-i config/sql/generic-old/sqlserver-4.5-all.sql -i repo/repo-sql-impl-test/sql-procedures/sqlserver.sql
"""
# -I enables QUOTED_IDENTIFIER, see https://stackoverflow.com/a/51201270/658826
# Without it the script fails on CREATE INDEX (probably iPrimaryIdentifierValueWithOC, if the line is right).
/opt/mssql-tools/bin/sqlcmd -b -I -S localhost -U midtest -P password -d midtest \
-i config/sql/generic-old/sqlserver-4.5-all.sql -i repo/repo-sql-impl-test/sql-procedures/sqlserver.sql
"""
}
}
}
stage("build-with-tests") {
container('maven') {
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
env | sort
mvn --version
df -h
fi
stage("build-with-tests") {
container('maven') {
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
env | sort
mvn --version
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P dbtest,-dist clean install ${dbprops}
mvn -B -ntp -Dmaven.test.failure.ignore -P dbtest,-dist clean install ${dbprops}

if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("tests-extra") {
container('maven') {
// -Xmx6g should fit into 8GB of RAM, 4g is on the edge for some tests
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P extratest,dbtest,-dist verify -rf testing ${dbprops} \
-Dfailsafe.args="-Xms2g -Xmx6g -Duser.language=en --add-exports java.management/sun.management=ALL-UNNAMED"

if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("collect-test-results") {
container('maven') {
// If we get here it's success, test results can change it to UNSTABLE.
currentBuild.result = 'SUCCESS'

step([
$class: 'Publisher',
reportFilenamePattern: '**/testng-results.xml'
])
}
}
} catch (Exception e) {
currentBuild.result = 'FAILURE' // error below will not set result for mailer!
error "Marking build as FAILURE because of: ${e}"
} finally {
if (verbose > '0') {
echo "Build: ${currentBuild}"
echo "Result: ${currentBuild.currentResult}"
}
}
stage("tests-extra") {
container('maven') {
// -Xmx6g should fit into 8GB of RAM, 4g is on the edge for some tests
sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi

mvn -B -ntp -Dmaven.test.failure.ignore -P extratest,dbtest,-dist verify -rf testing ${dbprops} \
-Dfailsafe.args="-Xms2g -Xmx6g -Duser.language=en --add-exports java.management/sun.management=ALL-UNNAMED"
try {
// Very basic mails, later we can use https://plugins.jenkins.io/email-ext/
step([$class: 'Mailer',
notifyEveryUnstableBuild: true,
recipients: env.DEFAULT_MAIL_RECIPIENT,
sendToIndividuals: false])

sh """#!/bin/bash -ex
if [ "${verbose}" -ge 1 ]
then
df -h
fi
"""
}
}
stage("collect-test-results") {
container('maven') {
step([
$class: 'Publisher',
reportFilenamePattern: '**/testng-results.xml'
])
} catch (Exception e) {
println 'Could not send email: ' + e
}
}
}
Expand Down

0 comments on commit 942beee

Please sign in to comment.