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
我有一个 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