Использование Gitlab API
В продолжение прошлой заметки. Сохранение отчётов в пейджес и использование темплейта для
Таким образом, финальный пайплайн, который теперь будет запускаться на создание
Демонстрирую финальный стэйдж:
pages: stage: pages script: - mkdir public - REPORTS="[Snyk](${CI_PAGES_URL}/snyk_${CI_COMMIT_REF_NAME}.html)<br>[CVE](${CVE_URI})" - cp artifacts/snyk.html public/snyk_${CI_COMMIT_REF_NAME}.html - curl -X PUT "$MERGE_URI" -H "$GITOKEN" -H "$JSON_CONTENT" --data '{"description":"'$REPORTS'"}' tags: - harbor artifacts: paths: - public only: - merge_requests
вот обращение к API для редактирования поля
curl -X PUT "$MERGE_URI" -H "$GITOKEN" -H "$JSON_CONTENT" --data '{"description":"'$REPORTS'"}'
Поясняю, что в переменных:
JSON_CONTENT: 'Content-Type: application/json' GITOKEN: "PRIVATE-TOKEN:${gitlab_token}" MERGE_URI: "https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/merge_requests/${CI_MERGE_REQUEST_IID}"
встроенные переменные: - CI_SERVER_HOST - хост вашего гитлаба - CI_PROJECT_ID - ид вашего проекта - CI_MERGE_REQUEST_IID - ид вашего мерж реквеста
переменные в секции
Отдельная боль и печаль — передача JSON в курле:
- REPORTS="[Snyk](${CI_PAGES_URL}/snyk_${CI_COMMIT_REF_NAME}.html)<br>[CVE](${CVE_URI})" - curl -X PUT "$MERGE_URI" -H "$GITOKEN" -H "$JSON_CONTENT" --data '{"description":"'$REPORTS'"}'
Обратите внимание на кавычки для интеграции переменной
Итог
- разработчик отправляет
merge request pipeline запускает проверки кода и образа на уязвимости- отчёты по проверкам прописываются ссылками в описании мерж реквеста
- ревьювер одной кнопкой может их легко открыть и посмотреть содержимое