|
@@ -0,0 +1,245 @@
|
|
|
+def CLUSTER = [ gost: 'iru-swarm1.infoclinica.lan', open: 'iru-swarm1-open.infoclinica.ru' ]
|
|
|
+def FTP = [
|
|
|
+ helix: 'ftp://ex2.helix.ru/Dictionaries/*',
|
|
|
+ cmd: 'ftp://cmd.infoclinica.lan/nsi/*',
|
|
|
+ gemotest: 'ftp://ftp.gemotest.ru/services/*'
|
|
|
+ ]
|
|
|
+def HELIXNAMES = [
|
|
|
+ labMSK: [ id: '990010000000017', dir: 'HelixMSK/Files/Dictionaries', user: 'TestDictMsk', pass: 'kO3R20eK' ],
|
|
|
+ labSPB: [ id: '990010000000013', dir: 'HelixSPB/Files/Dictionaries', user: 'TestDictSpb', pass: '8686Giq0' ],
|
|
|
+ labNSB: [ id: '990010000000020', dir: 'HelixNSB/Files/Dictionaries', user: 'TestDictNvsb', pass: '511bLPm3' ],
|
|
|
+ labPNZ: [ id: '990010000000021', dir: 'HelixPNZ/Files/Dictionaries', user: 'TestDictPnz', pass: 'IgK~66Ff' ],
|
|
|
+ labEKB: [ id: '990010000000019', dir: 'HelixEKB/Files/Dictionaries', user: 'TestDictEkb', pass: 'Fp5LMnKW' ],
|
|
|
+ labNSK: [ id: '990010000000022', dir: 'HelixNSK/Files/Dictionaries', user: 'TestDictNor', pass: 'jq9xd6sY' ],
|
|
|
+ labHBR: [ id: '990010000000018', dir: 'HelixHBR/Files/Dictionaries', user: 'TestDictHab', pass: 'idTf4WkE' ],
|
|
|
+ clinicRAN: [ id: '990010000001898', dir: 'HelixSPB/Files/Dictionaries/RAN', user: 'ran', pass: '7vFal2JBsC' ],
|
|
|
+ clinicONA: [ id: '990010000004936', dir: 'HelixSPB/Files/Dictionaries/ONA', user: 'ona', pass: 'svn2CD3KkL' ],
|
|
|
+ clinicBaltMed: [ id: '990010000002030', dir: 'HelixSPB/Files/Dictionaries/BaltMed', user: 'SpbMServ', pass: '1tMi8jRz' ],
|
|
|
+// clinicSPom: [ id: '990010000013379', dir: 'HelixSPB/Files/Dictionaries/SkorayaPom', user: 'SpbSkorayaPom', pass: '8$c%%Vo46' ],
|
|
|
+ clinicMedlux: [ id: '990010000013413', dir: 'HelixMSK/Files/Dictionaries/Medlux_mostfarm', user: 'MskMedlux', pass: 'Zn8hede7' ],
|
|
|
+ clinicAskona: [ id: '990010000004940', dir: 'HelixMSK/Files/Dictionaries/Askona', user: 'MskPMK', pass: 'QdFQIF68' ],
|
|
|
+ clinicDR: [ id: '990010000002008', dir: 'HelixMSK/Files/Dictionaries/DR', user: 'MskDoctorRyadom', pass: 'iqBn0gIa' ],
|
|
|
+ clinicBZ: [ id: '990010000001881', dir: 'HelixMSK/Files/Dictionaries/BZ', user: 'MskClinicLMS', pass: '1npZfzex' ],
|
|
|
+// clinicTemp: [ id: '990010000013661', dir: 'HelixMSK/Files/Dictionaries/Temp', user: 'MskTemp', pass: 'Hoch9is%%' ],
|
|
|
+// clinicBZ_EKB: [ id: '990010000013445', dir: 'HelixEKB/Files/Dictionaries/BZ_Ekb', user: 'EkbBudZdorov', pass: '0Qk^&8Ko%%' ],
|
|
|
+ clinicSova: [ id: '990010000004941', dir: 'HelixMSK/Files/Dictionaries/Sova', user: 'MskSova', pass: 'ehCPz9mx' ],
|
|
|
+ clinicProfMed: [ id: '990010000004939', dir: 'HelixNSB/Files/Dictionaries/ProfMed', user: 'SpbProfMedUfa', pass: 'djZ6rA1T' ],
|
|
|
+ clinicMedisPlus: [ id: '990010000013458', dir: 'HelixNSB/Files/Dictionaries/MedisPlusKlinika', user: 'SpbKlinikaPskov', pass: '@3Sj*7St' ],
|
|
|
+ clinicMotherhood: [ id: '990010000013673', dir: 'HelixPNZ/Files/Dictionaries/Materinstvoidetstvo', user: 'MskMaterinstvoIDetst', pass: 'ZCPuzbw8' ]
|
|
|
+/* clinicMskDomNaTverskoy: [ id: '990010000013837', dir: 'HelixMSK/Files/Dictionaries/DomNaTverskoy', user: 'MskDomNaTverskoy', pass: '83gQlPPL' ],
|
|
|
+ clinicMskProfMedLab: [ id: '990010000013850', dir: 'HelixMSK/Files/Dictionaries/profmedlab', user: 'MskProfMedLab', pass: 'The)ais3' ],
|
|
|
+ clinicRGSU: [ id: '990010000013852', dir: 'HelixMSK/Files/Dictionaries/RGSU', user: 'MskRGSU', pass: 'TPnYb3OT' ],
|
|
|
+ clinicISH: [ id: '990010000013838', dir: 'HelixMSK/Files/Dictionaries/ISH', user: 'MskInvMedHol', pass: '1Uw76Ef#' ],
|
|
|
+ clinicKomsomolsky: [ id: '990010000013842', dir: 'HelixMSK/Files/Dictionaries/komsomolsky', user: 'MskAlfa', pass: 'iQjw0OWh' ],
|
|
|
+ clinicMedekspert: [ id: '990010000013840', dir: 'HelixMSK/Files/Dictionaries/medekspert', user: 'MskMedexpertP', pass: 'wA3My!0J' ],
|
|
|
+ clinicMedscan: [ id: '990010000013843', dir: 'HelixMSK/Files/Dictionaries/Medscan', user: 'MskMedscan', pass: 'd#8Ug@7E' ],
|
|
|
+ clinicStatusGracy: [ id: '990010000013855', dir: 'HelixSPB/Files/Dictionaries/StatusGracy', user: 'SpbStatGracP', pass: 'Qb#4Ir*1' ],
|
|
|
+ clinicDavinchigrup: [ id: '990010000013845', dir: 'HelixPNZ/Files/Dictionaries/Davinchigrup', user: 'MskDaVinchi', pass: 'uGh9re)u' ],
|
|
|
+ clinicSadko: [ id: '990010000013846', dir: 'HelixPNZ/Files/Dictionaries/Sadko', user: 'MskSadko', pass: 'VOTdPC3A' ]
|
|
|
+*/]
|
|
|
+def INVITRONAMES = [
|
|
|
+ labMSK: [ id: '990010000000002', dir: 'InvitroMSK/Files/Dictionaries' ],
|
|
|
+ labCHLB: [ id: '990010000000032', dir: 'InvitroCHLB/Files/Dictionaries' ],
|
|
|
+ labSMR: [ id: '990010000000031', dir: 'InvitroSMR/Files/Dictionaries' ],
|
|
|
+ labSPB: [ id: '990010000000030', dir: 'InvitroSPB/Files/Dictionaries' ],
|
|
|
+ labNSB: [ id: '990010000000033', dir: 'InvitroNSB/Files/Dictionaries' ]
|
|
|
+]
|
|
|
+def ALFANAMES = [
|
|
|
+/* DNKOM: [ id: '990010000000041' ],
|
|
|
+ Dialab: [ id: '990010000000024' ],
|
|
|
+ LabQuest: [ id: '990010000000034'],
|
|
|
+*/ Arhimed: [ id: '990010000000041', dir: 'Arhimed/Files/Dictionaries' ]
|
|
|
+]
|
|
|
+def GEMOTEST = [ id: '990010000000014', dir: 'GemoTest/Files/Dictionaries', user: 'a_info', pass: 'Ainfo150916' ]
|
|
|
+/* def LITEH = [ id: '990010000000026' ]
|
|
|
+def NAKFF = [ id: '990010000000004' ]
|
|
|
+def CMD = [ id: '990010000000003', dir: 'CMD/Files/Dictionaries', user: 'SDSIntegration', pass: 'RK5CLTr77' ]
|
|
|
+def KDL = [ id: '990010000000001' ]
|
|
|
+*/
|
|
|
+pipeline {
|
|
|
+ agent {
|
|
|
+ label "swarm"
|
|
|
+ }
|
|
|
+ environment {
|
|
|
+ JENKINS_MAIL='jenkins.dev@sdsys.ru'
|
|
|
+ SMTP_SERVER='mail.sdsys.ru'
|
|
|
+ DOCKER_CERT_PATH='/run/secrets/swarm'
|
|
|
+ OPEN_CLUSTER='iru-swarm1-open.infoclinica.ru'
|
|
|
+ PROD_CLUSTER='iru-swarm1.infoclinica.lan'
|
|
|
+ WGET_IMAGE='inutano/wget'
|
|
|
+ SYNC_IMAGE='registry.infoclinica.ru:5000/syncmanager:i686.f30-0.1'
|
|
|
+ ANALIS_IMAGE='registry.infoclinica.ru:5000/lab/analis-wineservice:stable'
|
|
|
+ mailto='admin@sdsys.ru'
|
|
|
+ }
|
|
|
+ stages {
|
|
|
+ stage ("HELIX dictionaries") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ HELIXNAMES.each { key, value ->
|
|
|
+ echo "Get dictionaries for $key"
|
|
|
+ def log_dir = value.dir.replace("Files", "LOGS")
|
|
|
+ log_dir = log_dir.replace("/", "\\")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.open:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker run --rm -i -v analis-wineservice_analis_Files_netapp:/services/ ${WGET_IMAGE} \
|
|
|
+ /bin/ash -c ' \
|
|
|
+ rm -fv /services/$value.dir/*.xml; \
|
|
|
+ wget -P /services/$value.dir --user="$value.user" --password="$value.pass" $FTP.helix'
|
|
|
+ """
|
|
|
+ echo "Syncing dictionaries for $key"
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.open:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -name sync -i --rm \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/wine32/drive_c/services/analis \
|
|
|
+ --network=labnetwork ${SYNC_IMAGE} -a prod_lab -e "$value.id" \
|
|
|
+ -logfile "C:\Services\Analis\$log_dir\syncmanager_#.log"
|
|
|
+ docker cp infodent.ini sync:/opt/syncmanager/infodent.ini
|
|
|
+ docker start sync
|
|
|
+ """
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stage ("INVITRO dictionaries") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ INVITRONAMES.each { key, value ->
|
|
|
+ echo "CleanUP files for $key"
|
|
|
+ sh """export DOCKER_HOST=tcp://${PROD_CLUSTER}:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker run --rm -i -v analis-wineservice_analis_Files_netapp:/services/ ${WGET_IMAGE} \
|
|
|
+ /bin/ash -c ' \
|
|
|
+ rm -fv /services/$value.dir/*.xml'
|
|
|
+ """
|
|
|
+ echo "Get dictionaries for $key"
|
|
|
+ def log_dir = value.dir.replace("Files", "LOGS")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name get \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/.wine/dosdevices/unc/samba.infoclinica.lan/smartdelta01 \
|
|
|
+ --network=labnetwork -e DEBUG=false -e LOGPATH=/root/.wine/dosdevices/unc/samba.infoclinica.lan/smartdelta01/$value.dir \
|
|
|
+ ${ANALISE_IMAGE} -SyncRefInterval=1 LabSystems=$value.id /nocycle
|
|
|
+ docker cp infodent.ini get:/opt/analis/infodent.ini
|
|
|
+ docker start get
|
|
|
+ """
|
|
|
+ echo "Syncing $key"
|
|
|
+ log_dir = log_dir.replace("/", "\\")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name sync \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/wine32/drive_c/services/analis \
|
|
|
+ --network=labnetwork --entrypoint='' ${SYNC_IMAGE} \
|
|
|
+ -c 'cd /root/wine32/drive_c/services/analis/$value.dir; \
|
|
|
+ cat $(ls -1t InvitroGetExtendedProduct_*.xml | head -n1) > InvitroGetExtendedProduct.xml; \
|
|
|
+ cat $(ls -1t InvitroGetInfo_*.xml | head -n1) > InvitroGetInfo.xml; \
|
|
|
+ /usr/bin/xvfb-run -a wine /opt/syncmanager/SyncManager.exe -a prod_lab -e "$value.id" \
|
|
|
+ -logfile "C:\Services\Analis\$log_dir\syncmanager_#.log" '
|
|
|
+ docker cp infodent.ini sync:/opt/syncmanager/infodent.ini
|
|
|
+ docker cp analis-dictionaries.conf get:/opt/analis/analis.conf
|
|
|
+ docker start sync
|
|
|
+ """
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stage ("ALFA dictionaries") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ ALFANAMES.each { key, value ->
|
|
|
+ echo "CleanUP files for $key"
|
|
|
+ sh """export DOCKER_HOST=tcp://${PROD_CLUSTER}:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker run --rm -i -v analis-wineservice_analis_Files_netapp:/services/ ${WGET_IMAGE} \
|
|
|
+ /bin/ash -c ' \
|
|
|
+ rm -fv /services/$value.dir/*.xml'
|
|
|
+ """
|
|
|
+ echo "Get dictionaries for $key"
|
|
|
+ def log_dir = value.dir.replace("Files", "LOGS")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name get \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/.wine/dosdevices/unc/samba.infoclinica.lan/smartdelta01 \
|
|
|
+ --network=labnetwork -e DEBUG=false -e LOGPATH=/root/.wine/dosdevices/unc/samba.infoclinica.lan/smartdelta01/$value.dir \
|
|
|
+ ${ANALISE_IMAGE} -SyncRefInterval=1 LabSystems=$value.id /nocycle
|
|
|
+ docker cp infodent.ini get:/opt/analis/infodent.ini
|
|
|
+ docker cp analis-dictionaries.conf get:/opt/analis/analis.conf
|
|
|
+ docker start get
|
|
|
+ """
|
|
|
+ echo "Syncing $key"
|
|
|
+ log_dir = log_dir.replace("/", "\\")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name sync \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/wine32/drive_c/services/analis \
|
|
|
+ --network=labnetwork --entrypoint='' ${SYNC_IMAGE} \
|
|
|
+ -c 'cd /root/wine32/drive_c/services/analis/$value.dir; \
|
|
|
+ cat $(ls -1t AlfaLabDict_*.xml | head -n1) > AlfaLabDict.xml; \
|
|
|
+ /usr/bin/xvfb-run -a wine /opt/syncmanager/SyncManager.exe -a prod_lab -e "$value.id" \
|
|
|
+ -logfile "C:\Services\Analis\$log_dir\syncmanager_#.log" '
|
|
|
+ docker cp infodent.ini sync:/opt/syncmanager/infodent.ini
|
|
|
+ docker start sync
|
|
|
+ """
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stage ("Gemotest dictionaries") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ echo "Get dictionaries for Gemotest"
|
|
|
+ def log_dir = GEMOTEST.dir.replace("Files", "LOGS")
|
|
|
+ log_dir = log_dir.replace("/", "\\")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.open:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker run --rm -i -v analis-wineservice_analis_Files_netapp:/services/ ${WGET_IMAGE} \
|
|
|
+ /bin/ash -c ' \
|
|
|
+ rm -fv /services/$GEMOTEST.dir/*.xml; \
|
|
|
+ wget -P /services/$GEMOTEST.dir --user="$GEMOTEST.user" --password="$GEMOTEST.pass" $FTP.gemotest'
|
|
|
+ """
|
|
|
+ echo "Syncing dictionaries for Gemotest"
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.open:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name sync \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/wine32/drive_c/services/analis \
|
|
|
+ --network=labnetwork ${SYNC_IMAGE} -a prod_lab -e "$GEMOTEST.id" \
|
|
|
+ -logfile "C:\Services\Analis\$log_dir\syncmanager_#.log"
|
|
|
+ docker cp infodent.ini sync:/opt/syncmanager/infodent.ini
|
|
|
+ docker start sync
|
|
|
+ """
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ stage ("CMD dictionaries") {
|
|
|
+ steps {
|
|
|
+ script {
|
|
|
+ echo "Get dictionaries for CMD"
|
|
|
+ def log_dir = CMD.dir.replace("Files", "LOGS")
|
|
|
+ log_dir = log_dir.replace("/", "\\")
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker run --rm -i -v analis-wineservice_analis_Files_netapp:/services/ ${WGET_IMAGE} \
|
|
|
+ /bin/ash -c ' \
|
|
|
+ rm -fv /services/$CMD.dir/*.xml; \
|
|
|
+ wget -P /services/$CMD.dir --user=$CMD.user --password=$CMD.pass $FTP.cmd'
|
|
|
+ """
|
|
|
+ echo "Syncing dictionaries for CMD"
|
|
|
+ sh """export DOCKER_HOST=tcp://$CLUSTER.gost:2376 DOCKER_TLS_VERIFY=1
|
|
|
+ docker create -i --rm --name sync \
|
|
|
+ -v analis-wineservice_analis_Files_netapp:/root/wine32/drive_c/services/analis \
|
|
|
+ --network=labnetwork ${SYNC_IMAGE} -a prod_lab -e "$CMD.id" \
|
|
|
+ -logfile "C:\Services\Analis\$log_dir\syncmanager_#.log"
|
|
|
+ docker cp infodent.ini sync:/opt/syncmanager/infodent.ini
|
|
|
+ docker start sync
|
|
|
+ """
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+/* post {
|
|
|
+ failure {
|
|
|
+ mail charset: 'UTF-8',
|
|
|
+ subject: "Jenkins Dictionaries sync ERROR",
|
|
|
+ mimeType: 'text/html',
|
|
|
+ to: "${mailto}",
|
|
|
+ body: "<b>ATTENTION!!!</b> <b><br> Jenkins job failed.\n\n <b><br>Project Name:</b> ${env.JOB_NAME} <b><br>\nBuild Number:</b> ${env.BUILD_NUMBER} <b><br>\nURL Build:</b> ${RUN_DISPLAY_URL}"
|
|
|
+ }
|
|
|
+ success {
|
|
|
+ mail charset: 'UTF-8',
|
|
|
+ subject: "Jenkins Dictionaries sync SUCCESS",
|
|
|
+ mimeType: 'text/html',
|
|
|
+ to: "${mailto}",
|
|
|
+ body: "<b>Congradulations!!!</b> <b><br> Jenkins job succefully finished.\n\n <b><br>Project Name:</b> ${env.JOB_NAME} <b><br>\nBuild Number:</b> ${env.BUILD_NUMBER} <b><br>\nURL Build:</b> ${RUN_DISPLAY_URL}"
|
|
|
+ }
|
|
|
+ }
|
|
|
+*/}
|