Средство запуска оболочки Gitlab не может загружать артефакты размером более 63 КБ: «501 не реализовано» - PullRequest
0 голосов
/ 30 октября 2019

У меня проблемы с использованием артефактов заданий в Gitlab CI.

Я работаю над докеризированным веб-приложением. Я запускаю приложение с помощью docker-compose и запускаю на нем несколько тестов. Когда тесты не пройдены, тестовая среда делает несколько снимков экрана. Затем я копирую скриншоты в каталог сборки и пытаюсь загрузить их как артефакты, но получаю следующее:

Uploading artifacts...
Runtime platform                                    arch=amd64 os=linux pid=6560 revision=d0b76032 version=12.0.2
src/tests/_output/: found 5 matching files         
WARNING: Uploading artifacts to coordinator... failed  id=11975 responseStatus=501 Not Implemented status=501 Not Implemented token=EyreCNs7
WARNING: Retrying...                                error=invalid argument
WARNING: Uploading artifacts to coordinator... failed  id=11975 responseStatus=501 Not Implemented status=501 Not Implemented token=EyreCNs7
WARNING: Retrying...                                error=invalid argument
WARNING: Uploading artifacts to coordinator... failed  id=11975 responseStatus=501 Not Implemented status=501 Not Implemented token=EyreCNs7
FATAL: invalid argument                            
ERROR: Job failed: exit status 1

Вот конфигурация этапа:

upload_screenshots:
  stage: upload_screenshots
  script:
    - docker cp myapp_php_test:/var/www/html/myapp/tests/_output/. src/tests/_output/
  when: on_failure
  artifacts:
    paths:
      - src/tests/_output/
    expire_in: 1 week

Я сделалТестовый проект, который просто создает текстовый файл и загружает его как артефакт, и он работает как ожидалось:

test:
  script: 
    - echo "test" > test.txt
    - ls -la
  artifacts:
    paths:
    - test.txt
    expire_in: 1 week
$ echo "test" > test.txt
Uploading artifacts...
Runtime platform                                    arch=amd64 os=linux pid=101330 revision=d0b76032 version=12.0.2
test.txt: found 1 matching files                   
Uploading artifacts to coordinator... ok            id=11946 responseStatus=201 Created token=xmkvqina
Job succeeded

Я использую Gitlab CE 11.3.5 (c74e8d9) и Gitlab Runner 12.0. 2 (d0b76032). Соответствующие серверы не находятся в одной подсети. Я думал, что это может быть наш прокси, но я не знаю, как в этом убедиться. Кроме того, мой тестовый проект работает.

Как я могу отладить это?
Есть ли способ использовать подробный режим загрузчика артефактов из конфигурации gitlab-ci?

Обновление

Кажется, это проблема размера файла. По какой-то причине я не могу загрузить файлы размером более 63 КБ.

stages:
  - passes
  - fails

passes:
  stage: passes
  when: always
  script:
    - dd if=/dev/urandom of=test.dat  bs=63K  count=1
  artifacts:
    paths:
      - "*.dat"

fails:
  stage: fails
  when: always
  script:
    - dd if=/dev/urandom of=test.dat  bs=64K  count=1
  artifacts:
    paths:
      - "*.dat"

1 Ответ

0 голосов
/ 07 ноября 2019

Это было чертов прокси ?
После установки переменной окружения no_proxy в настройках CI для нашего внутреннего субдомена загрузка артефактов работает как положено.
Также можно установить переменнуюв /etc/systemd/system/gitlab-runner.service.d/http-proxy.conf как указано в документах :

[Service]
Environment="HTTP_PROXY=http://proxy.my.domain.org:8080/"
Environment="NO_PROXY=my.domain.org"
...