Opensearch docker 图像服务是否支持在 Gitlab Ci 中进行测试?

Is testing in Gitlab Ci supported with Opensearch docker images as a service?

我有一个 Java 应用程序 运行 与 Gitlab 中的 Elasticsearch 集成测试。

.gitlab-ci.yml:

...

integration:
  stage: integration
  tags:
    - onprem
  services:
    - name: "docker.elastic.co/elasticsearch/elasticsearch:7.10.1"
      alias: "elasticsearch"
      command: [ "bin/elasticsearch", "-Expack.security.enabled=false", "-Ediscovery.type=single-node" ]
  script:
    - curl "http://elasticsearch:9200/_cat/health"
    - mvn -Dgroups="IntegrationTest" -DargLine="-Durl=elasticsearch" test

...

现在我想使用 Opensearch 1.1.0,因为这是我们在 AWS 上使用的。我尝试使用 Opensearch 为开发人员建议的 docker compose 设置 ( https://opensearch.org/docs/latest/opensearch/install/docker/#sample-docker-compose-file-for-development ),并得出以下结论:

...

integration:
  stage: integration
  tags:
    - onprem
  services:
    - name: "opensearchproject/opensearch:1.1.0"
      alias: "elasticsearch"
      command: [
          "./opensearch-docker-entrypoint.sh",
          "-Ecluster.name=opensearch-cluster",
          "-Enode.name=opensearch-node1",
          "-Ebootstrap.memory_lock=true",
          "-Ediscovery.type=single-node",
          "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m",
          "DISABLE_INSTALL_DEMO_CONFIG=true",
          "DISABLE_SECURITY_PLUGIN=true"
      ]
  script:
    - curl "http://elasticsearch:9200/_cat/health"
    - mvn -Dgroups="IntegrationTest" -DargLine="-Durl=elasticsearch" test

...

卷曲响应:

$ curl "http://elasticsearch:9200/_cat/health"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0curl: (7) Failed to connect to elasticsearch port 9200: No route to host

一个很大的区别似乎是 Elasticsearch 通过环境变量禁用安全性,但 Opensearch 通过设置通过参数来做到这一点。我尝试直接通过“bin/”目录 运行 Opensearch,但这似乎会产生各种额外的错误。 Opensearch 图像在 dockerhub ( https://hub.docker.com/layers/opensearchproject/opensearch/1.1.0/images/sha256-94254d215845723e73829f34cf7053ae9810db360cf73c954737a717e9cf031d?context=explore ) 上可用,但我无权访问 Elasticsearch 图像的 Dockerfile 进行比较。

我有许多其他失败的设置:尝试将不同的参数组合作为 gitlab 中的阶段变量移动-ci。

我是不是误解了这里要做什么,或者我正在尝试的东西是否完全受支持?

opensearchproject/opensearch:1.1.0 中的最后一层是

CMD ["./opensearch-docker-entrypoint.sh"]

which reconfigures opensearch 基于环境变量,如 DISABLE_SECURITY_PLUGIN,并填充 opensearch 启动选项,如 -Eplugins.security.disabled=true

即使 Docker 接受此类 ENV,bash 也不允许导出环境变量,例如 discovery.type=single-node,因此 gitlab-ci作业失败。

CMD 在以后的版本中被重构为 ENTRYPOINT issue

欺骗 CMD 的一种方法是在启动脚本之前设置变量:

integration:
  stage: integration
  variables:
    OPENSEARCH_JAVA_OPTS: "-Xms512m -Xmx512m"
    DISABLE_INSTALL_DEMO_CONFIG: "true"
    DISABLE_SECURITY_PLUGIN: "true"
  services:
    - name: opensearchproject/opensearch:1.1.0
      alias: opensearch
      command: ["bash", "-c", "env 'discovery.type=single-node' 'cluster.name=opensearch' ./opensearch-docker-entrypoint.sh"]
  script:
    - curl -sS http://opensearch:9200/_cat/health