blob: eb53bfded5760370c211c945de2ae21b3501174e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
/* This is intended to test the dev & master branches of the gr-api project,
where the tests are entirely self contained
*/
pipeline {
agent any
triggers {
cron('H */6 * * *')
pollSCM('H */3 * * *')
}
environment {
DATA_SRC = "${env.WORKSPACE}/mnt/"
AMT_JB_CARER_VENV = "${env.WORKSPACE}/amt-jb-carer-venv"
AMT_JB_VENV = "${env.WORKSPACE}/amt-jb-venv"
}
stages {
stage('Setup DB') {
steps {
script {
env.DB_NAME = 'unittest-amt-jb-' + UUID.randomUUID().toString().replace('-', '').take(12)
env.AMT_JB_DB = "postgres://${env.DB_USER}:${env.DB_PASSWORD}@${env.DB_POSTGRESQL_HOST}/${env.DB_NAME}"
echo "Using database: ${env.DB_NAME}"
}
sh """
PGPASSWORD=${env.DB_PASSWORD} psql -h ${env.DB_POSTGRESQL_HOST} -U ${env.DB_USER} -d postgres <<EOF
CREATE DATABASE "${env.DB_NAME}" WITH TEMPLATE = template0 ENCODING = 'UTF8';
EOF
"""
}
}
stage('env') {
steps {
withCredentials([file(
credentialsId: 'amt-jb-app-env',
variable: 'ENV_FILE_PATH')]) {
sh "cp \$ENV_FILE_PATH ${WORKSPACE}/.env.test"
}
}
}
stage('setup:amt-jb-carer') {
steps {
checkout scmGit(
branches: [[name: 'master']],
extensions: [ cloneOption(shallow: true) ],
userRemoteConfigs: [
[credentialsId: 'abdeb570-b708-44f3-b857-8a6b06ed9822',
url: 'ssh://code.g-r-l.com:6611/panels/amt-jb']
],
)
dir('carer/') {
sh 'python3.13 -m venv $AMT_JB_CARER_VENV'
sh '$AMT_JB_CARER_VENV/bin/pip install -U setuptools wheel pip'
sh '$AMT_JB_CARER_VENV/bin/pip install -r requirements.txt'
sh '$AMT_JB_CARER_VENV/bin/python3.13 manage.py migrate --settings=carer.settings.unittest'
}
}
}
/* Okay, finally we can setup the virtual environment for the actual
project itself. gr-api FastAPI doesn't manage any of it's own
database so it doesn't need to do any migrations or anything.
*/
stage('setup:amt-jb') {
steps {
sh 'python3.13 -m venv $AMT_JB_VENV'
sh '$AMT_JB_VENV/bin/pip install -U setuptools wheel pip'
withCredentials([sshUserPrivateKey(
credentialsId: 'abdeb570-b708-44f3-b857-8a6b06ed9822',
keyFileVariable: 'SSH_PRIVATE_KEY')]) {
sh """
eval \$(ssh-agent) && ssh-add ${SSH_PRIVATE_KEY} && \
${AMT_JB_VENV}/bin/pip install -r requirements.txt
"""
}
}
}
stage('tests') {
steps {
sh '$AMT_JB_VENV/bin/pytest -v tests'
}
}
}
post {
always {
echo 'One way or another, I have finished'
deleteDir() /* clean up our workspace */
sh """
PGPASSWORD=${env.DB_PASSWORD} psql -h ${env.DB_POSTGRESQL_HOST} -U ${env.DB_USER} -d postgres <<EOF
DROP DATABASE "${env.DB_NAME}";
EOF
"""
}
}
}
|