У меня есть следующий файл .gitlab-ci.yml:
image: docker
services:
- docker:dind
stages:
- test
- build
- deploy
test:
stage: test
before_script:
- apk add --update -y python-pip
- pip install docker-compose
script:
- echo "Testing the app"
- docker-compose run app sh -c "python manage.py test && flake8"
build:
stage: build
only:
- develop
- production
- feature/deploy-debug-gitlab
before_script:
- apk add --update -y python-pip
- pip install docker-compose
script:
- echo "Building the app"
- docker-compose build
deploy:
stage: deploy
only:
- master
- develop
- feature/deploy
- feature/deploy-debug-gitlab
before_script:
- apk add --update -y python-pip
- pip install docker-compose
script:
- echo "Deploying the app"
- docker-compose up -d
environment: production
when: manual
Когда бегун Gitlab выполняет его, я получаю следующую ошибку:
$ apk add --update -y python-pip
bash: line 82: apk: command not found
ERROR: Job failed: exit status 1
Как мне установить apk? Или какое изображение, кроме docker
, я должен использовать для запуска этого gitlab-ci.yml
файла?
Альтернативой является установка установки на шаге над test, как в Эта проблема.
image: docker:latest
services:
- docker:dind
before_script:
- apk add --update python-pip
Странно, может быть, какая-то проблема с сетевым подключением?
@Jaumzera Это проблема бегуна? (stackoverflow.com/a/56392255/6309)
Что ж, оказывается, у меня было два разных раннера: один помечен как «исполнитель оболочки» (Ubuntu), а другой помечен как «исполнитель докера».
Эта ошибка выбрасывалась только тогда, когда бегун Ubuntu отправлял задание, поскольку Ubuntu не поставляется с apk.
Я отключил бегун Ubuntu и решил проблему.
Хорошо подмечено, точнее, чем мой ответ. Проголосовал.
Вам нужно было настроить для этого собственный GitLab runner, у меня такая же проблема.
Спасибо @VonC, но эта альтернатива дает мне ту же ошибку: «команда apk не найдена». На самом деле, я понял, что задача случайно не выполняется. Чаще всего вылетает с этой ошибкой, но иногда проходит успешно. Я должен нажать «Повторить попытку», пока он не пройдет. Я действительно смущен.