# #gitlab #gitlab-ci #gitlab-api
Вопрос:
Вопрос
Я пытаюсь использовать инструмент компоновки API yaml Gitlab на корпоративном экземпляре Gitlab. Однако я получаю пустой ответ (не просто пустой объект json, например, абсолютно нулевой вывод).
Шаги для дублирования
Я использую урезанную версию файла образца .yaml
, показанного на странице учебника gitlab CI/CD. Файл показан здесь:
build-job:
stage: build
script:
- echo "Hello, $GITLAB_USER_LOGIN!"
deploy-prod:
stage: deploy
script:
- echo "This job deploys something from the $CI_COMMIT_BRANCH branch."
Я использую команду 1 строка curl, как показано на странице API CI Linting.
Если я использую команду, как указано (заменяя только имя файла), я получаю
$ jq --null-input --arg yaml "$(<.gitlab-ci.yml)" '.content=$yaml'
| curl "https://gitlab.mycompany.com/api/v4/ci/lint?include_merged_yaml=true"
--header 'Content-Type: application/json'
--data @-
Я получаю результат {"message":"401 Unauthorized"}
, которого и следовало ожидать, поскольку для вызова API требуется ключ API. Я создаю ключ API в своем профиле и повторяю попытку:
$ export TOKEN='xxxxxxxxxx'
$ jq --null-input --arg yaml "$(<.gitlab-ci.yml)" '.content=$yaml'
| curl "https://gitlab.mycompany.com/api/v4/ci/lint?include_merged_yaml=true"
--header "Content-Type: application/json PRIVATE-TOKEN=${TOKEN}"
--data @-
Когда я запускаю это, вывод ничего не показывает. Это подтверждается каналом, на wc -c
который выводится 0.
Мой ожидаемый результат должен быть:
{
"status": "valid",
"errors": [],
"warnings": []
}
Вопросы:
- Почему нет ответа в результате того, что я использую свой действительный ключ API (это с недавно сгенерированным ключом)?
- Как я могу это исправить и получить ожидаемый результат, показанный выше?
Комментарии:
1. Если вы удалите все, кроме команды curl (включая
--data @-
опцию), получите ли вы ответ, говорящийno content
?{"error": "content is missing"}