我正在尝试使用Travis CI创建CI / CD管道,以测试前端,测试后端并进行部署。前端使用Node,后端使用Go。
我的存储库的结构如下:
- client
- DockerFile
- ...(front-end code)
- server
- DockerFile
- ...(back-end code)
- .travis.yml
我能够以某种方式利用DockerFiles对应用程序的两面执行测试,并让Travis正确报告其结果吗?
我对这两种工具都不熟悉,因此我希望能在自己陷入困境之前得到一些建议。我计划结合使用Travis阶段和docker build / docker run命令。像这样:
jobs:
include:
- stage: test client side
before_script:
- cd client
- docker build ...
script:
docker run image /bin/sh -c "run node tests"
after_script:
- cd ..
- stage: test server side
before_script:
- cd server
script:
docker run image /bin/sh -c "run go tests"
after_script:
- cd ..
- stage: deploy
script: skip
deploy:
- provider: s3
skip_cleanup: true
on:
branch: master
This doc page看起来很有前途,但是包含language: ruby
和script: - bundle exec rake test
会让我失望。我不确定如果通过docker运行测试,为什么需要Ruby(至少是这样)。
我相信我可以使其与应用程序的客户端正常工作。
这就是我得到的:
services:
- docker
jobs:
include:
- stage: test
before_script:
- docker pull node:12
script:
- docker run --rm -e CI=true -v $(pwd)/client:/src node:12 /bin/sh -c "cd src; npm install; npm test"