我有以下.gitlab-ci.yml
文件:
image:
name: docker/compose:1.24.1
entrypoint: ["/bin/sh","-l","-c"]
services:
- docker:dind
stages:
- test
- deploy
pytest:
stage: test
script:
- cd tests/
- docker-compose -f docker-compose.test.yml up --abort-on-container-exit --exit-code-from pytest
运行docker-compose.test.yml
文件,如下所示:
version: '3'
services:
pytest:
build: ..
command: bash -c "/wait-for-it.sh dynamodb:8000 -- && cd /tests/ && pytest -s"
dynamodb:
image: amazon/dynamodb-local
ports:
- '8000:8000'
command: -jar DynamoDBLocal.jar -inMemory -port 8000
在这种情况下,pytest
等待dynamodb
启动并运行,然后运行python测试。这在我的机器上效果很好。
但是,当Gitlab CI实际运行它时,出现以下错误:
bash: /wait-for-it.sh: Permission denied
如何避免此问题?使用chmod -x
,找不到文件。
答案 0 :(得分:1)
您需要使wait-for-it.sh
可执行,在您的Dockerfile
中添加:
RUN chmod +x /path/to/wait-for-it.sh