bitbucket管道docker-run限制的可能解决方案

时间:2017-11-14 13:24:32

标签: bitbucket-pipelines

我的集成测试高度依赖于弹性搜索,因为要在bitbucket管道上构建我的集成测试,我必须执行docker-run命令才能在集成测试期间启动弹性搜索实例。

但正如你们中的一些人所知,bitbucket管道存在限制

  

有关如何使用的信息,请参阅Docker命令行参考   这些命令。目前正在执行其他命令,例如 docker run   出于安全原因禁止在我们的共享构建基础架构上

所以鉴于我不知道如何使用我需要的所有配置来启动我的escluster,无痛脚本,映射,暴露的端口可用于我的集成测试。

有人知道我怎么能实现这个目标?

4 个答案:

答案 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