我正在尝试让GitLab CI运行程序从Docker映像构建我的项目,并在构建过程中安装NPM软件包。我的.gitlab-ci.yml
文件受此主题Gitlab CI with Docker and NPM的启发,在该主题中,PO正在处理相同的问题:
image: docker:stable
services:
- docker:dind
stages:
- build
cache:
paths:
- node_modules/
before_script:
- export REACT_APP_USERS_SERVICE_URL=http://127.0.0.1
compile:
image: node:8
stage: build
script:
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
- docker-compose up -d
- docker-compose exec -T users python manage.py recreate_db
- docker-compose exec -T users python manage.py seed_db
- npm install
- bash test.sh
after_script:
- docker-compose down
可悲的是,该解决方案效果不佳,但是我觉得我现在离实际的解决方案还差一点。在构建过程中出现两个错误:
/bin/bash: line 89: apk: command not found
Running after script...
$ docker-compose down
/bin/bash: line 88: docker-compose: command not found
如何解决此问题?
编辑:
image: docker:stable
services:
- docker:dind
stages:
- build
- test
before_script:
- export REACT_APP_USERS_SERVICE_URL=http://127.0.0.1
compile:
stage: build
script:
- apk add --no-cache py-pip python-dev libffi-dev openssl-dev gcc libc-dev make
- pip install docker-compose
- docker-compose up -d
- docker-compose exec -T users python manage.py recreate_db
- docker-compose exec -T users python manage.py seed_db
testing:
image: node:alpine
stage: test
script:
- npm install
- bash test.sh
after_script:
- docker-compose down
我将测试移到了单独的阶段testing
中,无论如何我应该这样做,并且我发现我已经在那里定义了映像以将其与构建阶段分开。不用找了。找不到Docker,也无法运行bash测试:
$ bash test.sh
/bin/sh: eval: line 87: bash: not found
Running after script...
$ docker-compose down
/bin/sh: eval: line 84: docker-compose: not found
答案 0 :(得分:0)
image: node:8
此图片不是基于高山的,因此,您出错了
apk:找不到命令
node:<version>
这些是 Debian版本的套件代码名称,并表示 图像基于哪个版本。如果您的映像需要安装 除了图片随附的任何其他软件包,您将 可能希望明确指定其中之一以最大程度地减少破损 Debian 的新版本。
只需将图片替换为
node:alpine
它应该可以工作。
第二个错误是因为未安装docker-compose。
您可以check this answer了解有关作曲家的更多详细信息。