как разобрать Http json ответ и не выполнить или сдать задание на основании этого? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть файл gitlab ci yaml. и 2 рабочих места. Мой файл .gitlab-ci.yaml:

variables:
  MSBUILD_PATH: 'C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe'
  SOLUTION_PATH: 'Source/NewProject.sln'

stages:
  - build
  - trigger_IT_service

build_job:
  stage: build
  script:
    - '& "$env:MSBUILD_PATH" "$env:SOLUTION_PATH" /nologo /t:Rebuild /p:Configuration=Debug'

trigger_IT_service_job:
  stage: trigger_IT_service
  script:
    - 'curl http://webapps.xxx.com.tr/dataBus/runTransfer/ctDigiTransfer'

И это мой отчет о работе trigger_IT_service:

Running on DIGITALIZATION...
00:00
Fetching changes with git depth set to 50...
00:05
 Reinitialized existing Git repository in D:/GitLab-Runner/builds/c11pExsu/0/personalname/newproject/.git/
 Checking out 24be087a as master...
 Removing Output/
 git-lfs/2.5.2 (GitHub; windows amd64; go 1.10.3; git 8e3c5c93)
 Skipping Git submodules setup
$ curl http://webapps.xxx.com.tr/dataBus/runTransfer/ctDigiTransfer
00:02
 StatusCode        : 200
 StatusDescription : 200
 Content           : {"status":200,"message":"SAP transfer started. Please 
                     check in db","errorCode":0,"timestamp":"2020-03-25T13:53:05
                     .722+0300","responseObject":null}
 RawContent        : HTTP/1.1 200 200
                     Keep-Alive: timeout=10
                     Connection: Keep-Alive
                     Transfer-Encoding: chunked
                     Content-Type: application/json;charset=UTF-8
                     Date: Wed, 25 Mar 2020 10:53:05 GMT
                     Server: Apache

Я должен контролировать часть этого содержимого "Содержимое" в gitlab ci yaml Если «message» - «Передача SAP начата. Пожалуйста, отметьте в db», конвейер должен пройти, иначе должен произойти сбой На самом деле мой вопрос: как разобрать Http json ответ и потерпеть неудачу или сдать работу на основе этого Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 25 марта 2020

Лучшим способом было бы установить какой-нибудь инструмент для разбора json и использовать его, различные примеры здесь

Приведенный json пример из комментария:

{
  "status": 200,
  "message": "SAP transfer started. Please check in db",
  "errorCode": 0,
  "timestamp": "2020-03-25T17:06:43.430+0300",
  "responseObject": null
}

Если вы можете установить python3 на своего бегуна, вы можете достичь всего этого с помощью скрипта:

import requests; # note this might require additional install with pip install requests

message = requests.get('http://webapps.xxx.com.tr/dataBus/runTransfer/ctDigiTransfer').json()['message']
if message != 'SAP transfer started. Please check in db':
    print('Invalid message: ' + message)
    exit(1)
else:
    print('Message ok')

Так что trigger_IT_service этап в вашем yaml будет:

trigger_IT_service_job:
  stage: trigger_IT_service
  script: >
    python -c "import requests; message = requests.get('http://webapps.xxx.com.tr/dataBus/runTransfer/ctDigiTransfer').json()['message']; (print('Invalid message: ' + message), exit(1)) if message != 'SAP transfer started. Please check in db' else (print('Message ok'), exit(0))"
...