From 6bae993f519e9d6e5bd51222fb0b08dc9adaa18a Mon Sep 17 00:00:00 2001 From: delvedor Date: Tue, 10 Mar 2020 12:52:15 +0100 Subject: [PATCH] =?UTF-8?q?Move=20back=20to=20the=20previous=20Jenkins=20c?= =?UTF-8?q?onfiguration=20The=20new=20iterations=20of=20the=20run-elastics?= =?UTF-8?q?earch.sh=20script=20do=20not=20play=20well=20with=20Elasticsear?= =?UTF-8?q?ch=20=E2=89=A4=206,=20so=20it's=20better=20to=20move=20to=20the?= =?UTF-8?q?=20previous=20working=20configuration.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ci/run-elasticsearch.sh | 115 --------------------------------------- .ci/run-repository.sh | 46 ---------------- .ci/run-tests | 62 +++++++++++++++------ .ci/test-matrix.yml | 2 +- 4 files changed, 46 insertions(+), 179 deletions(-) delete mode 100755 .ci/run-elasticsearch.sh delete mode 100755 .ci/run-repository.sh diff --git a/.ci/run-elasticsearch.sh b/.ci/run-elasticsearch.sh deleted file mode 100755 index f9d13906a..000000000 --- a/.ci/run-elasticsearch.sh +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env bash -# -# Launch one or more Elasticsearch nodes via the Docker image, -# to form a cluster suitable for running the REST API tests. -# -# Export the STACK_VERSION variable, eg. '8.0.0-SNAPSHOT'. -# Export the TEST_SUITE variable, eg. 'oss' or 'xpack' defaults to 'oss'. -# Export the NUMBER_OF_NODES variable to start more than 1 node - -# Version 1.1.0 -# - Initial version of the run-elasticsearch.sh script -# - Deleting the volume should not dependent on the container still running -# - Fixed `ES_JAVA_OPTS` config -# - Moved to STACK_VERSION and TEST_VERSION -# - Refactored into functions and imports -# - Support NUMBER_OF_NODES - -script_path=$(dirname $(realpath -s $0)) -source $script_path/functions/imports.sh -set -euo pipefail - -echo -e "\033[34;1mINFO:\033[0m Take down node if called twice with the same arguments (DETACH=true) or on seperate terminals \033[0m" -cleanup_node $es_node_name - -master_node_name=${es_node_name} -cluster_name=${moniker}${suffix} - -declare -a volumes -environment=($(cat <<-END - --env node.name=$es_node_name - --env cluster.name=$cluster_name - --env cluster.initial_master_nodes=$master_node_name - --env discovery.seed_hosts=$master_node_name - --env cluster.routing.allocation.disk.threshold_enabled=false - --env bootstrap.memory_lock=true - --env node.attr.testattr=test - --env path.repo=/tmp - --env repositories.url.allowed_urls=http://snapshot.test* -END -)) -if [[ "$TEST_SUITE" == "xpack" ]]; then - environment+=($(cat <<-END - --env ELASTIC_PASSWORD=$elastic_password - --env xpack.license.self_generated.type=trial - --env xpack.security.enabled=true - --env xpack.security.http.ssl.enabled=true - --env xpack.security.http.ssl.verification_mode=certificate - --env xpack.security.http.ssl.key=certs/testnode.key - --env xpack.security.http.ssl.certificate=certs/testnode.crt - --env xpack.security.http.ssl.certificate_authorities=certs/ca.crt - --env xpack.security.transport.ssl.enabled=true - --env xpack.security.transport.ssl.key=certs/testnode.key - --env xpack.security.transport.ssl.certificate=certs/testnode.crt - --env xpack.security.transport.ssl.certificate_authorities=certs/ca.crt -END -)) - volumes+=($(cat <<-END - --volume $ssl_cert:/usr/share/elasticsearch/config/certs/testnode.crt - --volume $ssl_key:/usr/share/elasticsearch/config/certs/testnode.key - --volume $ssl_ca:/usr/share/elasticsearch/config/certs/ca.crt -END -)) -fi - -cert_validation_flags="" -if [[ "$TEST_SUITE" == "xpack" ]]; then - cert_validation_flags="--insecure --cacert /usr/share/elasticsearch/config/certs/ca.crt --resolve ${es_node_name}:443:127.0.0.1" -fi - -NUMBER_OF_NODES=${NUMBER_OF_NODES-1} -http_port=9200 -for (( i=0; i<$NUMBER_OF_NODES; i++, http_port++ )); do - node_name=${es_node_name}$i - node_url=${external_elasticsearch_url/9200/${http_port}}$i - if [[ "$i" == "0" ]]; then node_name=$es_node_name; fi - environment+=($(cat <<-END - --env node.name=$node_name -END -)) - echo "$i: $http_port $node_url " - volume_name=${node_name}-${suffix}-data - volumes+=($(cat <<-END - --volume $volume_name:/usr/share/elasticsearch/data${i} -END -)) - - # make sure we detach for all but the last node if DETACH=false (default) so all nodes are started - local_detach="true" - if [[ "$i" == "$((NUMBER_OF_NODES-1))" ]]; then local_detach=$DETACH; fi - echo -e "\033[34;1mINFO:\033[0m Starting container $node_name \033[0m" - set -x - docker run \ - --name "$node_name" \ - --network "$network_name" \ - --env "ES_JAVA_OPTS=-Xms1g -Xmx1g" \ - "${environment[@]}" \ - "${volumes[@]}" \ - --publish "$http_port":9200 \ - --ulimit nofile=65536:65536 \ - --ulimit memlock=-1:-1 \ - --detach="$local_detach" \ - --health-cmd="curl $cert_validation_flags --fail $elasticsearch_url/_cluster/health || exit 1" \ - --health-interval=2s \ - --health-retries=20 \ - --health-timeout=2s \ - --rm \ - docker.elastic.co/elasticsearch/"$elasticsearch_container"; - - set +x - if wait_for_container "$es_node_name" "$network_name"; then - echo -e "\033[32;1mSUCCESS:\033[0m Running on: $node_url\033[0m" - fi - -done - diff --git a/.ci/run-repository.sh b/.ci/run-repository.sh deleted file mode 100755 index e76c5ecb0..000000000 --- a/.ci/run-repository.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash -# parameters are available to this script - -# STACK_VERSION -- version e.g Major.Minor.Patch(-Prelease) -# TEST_SUITE -- which test suite to run: oss or xpack -# ELASTICSEARCH_URL -- The url at which elasticsearch is reachable, a default is composed based on STACK_VERSION and TEST_SUITE -# NODE_JS_VERSION -- node js version (defined in test-matrix.yml, a default is hardcoded here) -script_path=$(dirname $(realpath -s $0)) -source $script_path/functions/imports.sh -set -euo pipefail - -NODE_JS_VERSION=${NODE_JS_VERSION-12} -ELASTICSEARCH_URL=${ELASTICSEARCH_URL-"$elasticsearch_url"} -elasticsearch_container=${elasticsearch_container-} - -echo -e "\033[34;1mINFO:\033[0m VERSION ${STACK_VERSION}\033[0m" -echo -e "\033[34;1mINFO:\033[0m TEST_SUITE ${TEST_SUITE}\033[0m" -echo -e "\033[34;1mINFO:\033[0m URL ${ELASTICSEARCH_URL}\033[0m" -echo -e "\033[34;1mINFO:\033[0m CONTAINER ${elasticsearch_container}\033[0m" -echo -e "\033[34;1mINFO:\033[0m NODE_JS_VERSION ${NODE_JS_VERSION}\033[0m" - -echo -e "\033[1m>>>>> Build docker container >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m" - -docker build \ - --file .ci/Dockerfile \ - --tag elastic/elasticsearch-js \ - --build-arg NODE_JS_VERSION=${NODE_JS_VERSION} \ - . - -echo -e "\033[1m>>>>> NPM run test:integration >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m" - -repo=$(realpath $(dirname $(realpath -s $0))/../) -run_script_args="" -if [[ "$NODE_JS_VERSION" == "8" ]]; then - run_script_args="-- --node-arg=--harmony-async-iteration" -fi - -docker run \ - --network=${network_name} \ - --env "TEST_ES_SERVER=${ELASTICSEARCH_URL}" \ - --volume $repo:/usr/src/app \ - --volume /usr/src/app/node_modules \ - --name elasticsearch-js \ - --rm \ - elastic/elasticsearch-js \ - npm run test:integration ${run_script_args} diff --git a/.ci/run-tests b/.ci/run-tests index 8b0cc36a8..4426ad9c1 100755 --- a/.ci/run-tests +++ b/.ci/run-tests @@ -10,24 +10,52 @@ # - $NODE_JS_VERSION # - $TEST_SUITE # -# Version 1.1 -# - Moved to .ci folder and seperated out `run-repository.sh` -# - Add `$RUNSCRIPTS` env var for running Elasticsearch dependent products -script_path=$(dirname $(realpath -s $0)) -source $script_path/functions/imports.sh -set -euo pipefail -echo -e "\033[1m>>>>> Start [$STACK_VERSION container] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m" -DETACH=true bash .ci/run-elasticsearch.sh +set -eo pipefail -if [[ -n "$RUNSCRIPTS" ]]; then - for RUNSCRIPT in ${RUNSCRIPTS//,/ } ; do - echo -e "\033[1m>>>>> Running run-$RUNSCRIPT.sh >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m" - CONTAINER_NAME=${RUNSCRIPT} \ - DETACH=true \ - bash .ci/run-${RUNSCRIPT}.sh - done +docker build \ + --file .ci/Dockerfile \ + --tag elastic/elasticsearch-js \ + --build-arg NODE_JS_VERSION=${NODE_JS_VERSION} \ + . + +NODE_NAME="es1" +repo=$(pwd) +testnodecrt="/.ci/certs/testnode.crt" +testnodekey="/.ci/certs/testnode.key" +cacrt="/.ci/certs/ca.crt" + +elasticsearch_image="elasticsearch" +elasticsearch_url="https://elastic:changeme@${NODE_NAME}:9200" +if [[ $TEST_SUITE != "xpack" ]]; then + elasticsearch_image="elasticsearch" + elasticsearch_url="http://${NODE_NAME}:9200" fi -echo -e "\033[1m>>>>> Repository specific tests >>>>>>>>>>>>>>>>>>>>>>>>>>>>>\033[0m" -bash .ci/run-repository.sh +docker network create esnet + +docker run \ + --rm \ + --env "node.attr.testattr=test" \ + --env "path.repo=/tmp" \ + --env "repositories.url.allowed_urls=http://snapshot.*" \ + --env "discovery.zen.ping.unicast.hosts=${NODE_NAME}" \ + --env "xpack.security.enabled=false" \ + --env "xpack.monitoring.enabled=false" \ + --env "xpack.ml.enabled=false" \ + --env ES_JAVA_OPTS="-Xms1g -Xmx1g" \ + --network=esnet \ + --name=$NODE_NAME \ + --detach \ + docker.elastic.co/elasticsearch/elasticsearch:${ELASTICSEARCH_VERSION} + +docker run \ + --network=esnet \ + --env "TEST_ES_SERVER=${elasticsearch_url}" \ + --volume $(pwd):/usr/src/app \ + --volume /usr/src/app/node_modules \ + --name elasticsearch-js \ + --rm \ + elastic/elasticsearch-js \ + npm run test:integration + diff --git a/.ci/test-matrix.yml b/.ci/test-matrix.yml index 445d4c5e2..9575e0538 100644 --- a/.ci/test-matrix.yml +++ b/.ci/test-matrix.yml @@ -1,5 +1,5 @@ --- -STACK_VERSION: +ELASTICSEARCH_VERSION: - 5.6.16 NODE_JS_VERSION: