我的集成测试高度依赖于弹性搜索,因为要在bitbucket管道上构建我的集成测试,我必须执行docker-run命令才能在集成测试期间启动弹性搜索实例。
但正如你们中的一些人所知,bitbucket管道存在限制
有关如何使用的信息,请参阅Docker命令行参考 这些命令。目前正在执行其他命令,例如 docker run 出于安全原因禁止在我们的共享构建基础架构上。
所以鉴于我不知道如何使用我需要的所有配置来启动我的escluster,无痛脚本,映射,暴露的端口可用于我的集成测试。
有人知道我怎么能实现这个目标?
答案 0 :(得分:1)
好的,我设法让它运转起来,我正在努力进行弹性搜索,因为这个错误https://github.com/docker-library/elasticsearch/issues/111
这是通过应用配置discovery-type: single-node
来解决的。由于我使用它进行集成测试,因此我不需要在生产模式下运行ES。事情是bitbucket-pipeline没有显示此错误的错误日志,所以我完全失明了,我不得不尝试很多东西,直到找出来。由于我无法在管道上构建和运行自己的映像,因此我使用自己的配置(包括单节点配置)和脚本以及docker hub上传了一个映像。
这就是我的yaml最终的样子:
image: maven:3.3.9
pipelines:
default:
- step:
caches:
- maven
script:
- docker version
- mvn clean package verify -Dmaven.docker.plugin.skip=true -s settings.xml
services:
- elasticsearch
definitions:
services:
elasticsearch:
image: elastic-search-bitbucket-pipeline
options:
docker: true
答案 1 :(得分:0)
您可以尝试将弹性搜索图像定义为服务,如下所述: Use services and databases in Bitbucket Pipelines
答案 2 :(得分:0)
对于那些仍在寻找更精致解决方案的人,我创建了这样的Dockerfile:
FROM elasticsearch:7.0.1
COPY --chown=elasticsearch:elasticsearch elasticsearch.yml /usr/share/elasticsearch/config/
在同一文件夹中,我还创建了一个自定义配置elasticsearch.yml
:
network.host: 127.0.0.1
然后我将自定义映像添加到Docker Hub,有关如何执行此操作的更多信息,请参见:https://docs.docker.com/docker-hub/repos/
您现在可以在管道服务配置中使用自定义映像,并使用它来运行测试。
您还可以在elasticsearch.yml
内提供更多配置
启用CORS:
http.cors.enabled: true
http.cors.allow-origin: "*"
设置发现类型:
discovery.type: single-node
答案 3 :(得分:0)
您可以使用我的docker映像: https://hub.docker.com/r/xiting/elasticsearch-bitbucket-pipeline
将服务添加到管道中,如下所示:
definitions:
steps:
- step: &run-tests
name: Run tests
script:
- sleep 30 # Waiting elasticsearch. In your real pipeline you can not use it.
- curl -XGET localhost:9250/_cat/health
services:
- elasticsearch
services:
elasticsearch:
image: xiting/elasticsearch-bitbucket-pipeline
variables:
ES_JAVA_OPTS: '-Xms512m -Xmx512m'
docker:
memory: 2048
pipelines:
pull-requests:
'**':
- step: *run-tests