From b3abdb1d2e48659d2c8c99af8a5fc74165c5593b Mon Sep 17 00:00:00 2001 From: Antoine Cotten Date: Wed, 23 Jun 2021 20:37:20 +0200 Subject: [PATCH] ci: Use Compose v2 --- .github/workflows/ci.yml | 74 ++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 30 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bf8a326..3caaf69 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,6 +24,8 @@ jobs: ##################################################### - name: Prepare environment + env: + COMPOSE_VERSION: v2.0.1 run: | # Install Linux packages @@ -33,9 +35,18 @@ jobs: sudo apt install -y expect + # Enable support for Compose V2 + # + # Instructions: + # https://docs.docker.com/compose/cli-command/#install-on-linux + + mkdir -p ~/.docker/cli-plugins + curl -sL "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-x86_64" -o ~/.docker/cli-plugins/docker-compose + chmod +x ~/.docker/cli-plugins/docker-compose + # Pre-build container images - docker-compose build + docker compose build ######################################################## # # @@ -57,7 +68,7 @@ jobs: # Run Elasticsearch and wait for its availability - docker-compose up -d elasticsearch + docker compose up -d elasticsearch source .github/workflows/scripts/lib/testing.sh poll_ready "$(container_id elasticsearch)" "http://$(service_ip elasticsearch):9200/" -u 'elastic:changeme' @@ -72,7 +83,7 @@ jobs: ########################################################## - name: Run the stack - run: docker-compose up -d + run: docker compose up -d - name: Execute core test suite run: .github/workflows/scripts/run-tests-core.sh @@ -82,10 +93,10 @@ jobs: # https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#job-status-check-functions if: always() run: | - docker-compose ps - docker-compose logs elasticsearch - docker-compose logs logstash - docker-compose logs kibana + docker compose ps + docker compose logs elasticsearch + docker compose logs logstash + docker compose logs kibana ############################## # # @@ -104,26 +115,29 @@ jobs: sed -i '$ a input { udp { port => 5000 codec => json } }' logstash/pipeline/logstash.conf - # Run Logspout and execute tests. - # Logstash will be restarted as a result of building the Logspout - # image, so changes above will automatically take effect. + # Restart Logstash for changes to take effect - docker-compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml up -d logspout + docker compose restart logstash + + # Run Logspout and execute tests. + + docker compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml up -d logspout .github/workflows/scripts/run-tests-logspout.sh # Revert changes to Logstash configuration sed -i '/input { udp { port => 5000 codec => json } }/d' logstash/pipeline/logstash.conf + docker compose restart logstash - name: 'debug: Display state and logs (Logspout)' if: always() run: | - docker-compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml ps - docker-compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml logs logspout + docker compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml ps + docker compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml logs logspout # next steps don't need Logspout - docker-compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml stop logspout + docker compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml stop logspout # next steps don't need Logstash - docker-compose stop logstash + docker compose stop logstash # # Enterprise Search @@ -138,25 +152,25 @@ jobs: # Restart Elasticsearch for changes to take effect - docker-compose restart elasticsearch + docker compose restart elasticsearch # Run Enterprise Search and execute tests - docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml up -d enterprise-search + docker compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml up -d enterprise-search .github/workflows/scripts/run-tests-enterprise-search.sh # Revert changes to Elasticsearch configuration sed -i '/xpack.security.authc.api_key.enabled: true/d' elasticsearch/config/elasticsearch.yml - docker-compose restart elasticsearch + docker compose restart elasticsearch - name: 'debug: Display state and logs (Enterprise Search)' if: always() run: | - docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml ps - docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml logs enterprise-search + docker compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml ps + docker compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml logs enterprise-search # next steps don't need Enterprise Search - docker-compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml stop enterprise-search + docker compose -f docker-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml stop enterprise-search # # APM Server @@ -164,16 +178,16 @@ jobs: - name: Execute APM Server test suite run: | - docker-compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml up -d apm-server + docker compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml up -d apm-server .github/workflows/scripts/run-tests-apm-server.sh - name: 'debug: Display state and logs (APM Server)' if: always() run: | - docker-compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml ps - docker-compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml logs apm-server + docker compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml ps + docker compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml logs apm-server # next steps don't need APM Server - docker-compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml stop apm-server + docker compose -f docker-compose.yml -f extensions/apm-server/apm-server-compose.yml stop apm-server # # Metricbeat @@ -181,16 +195,16 @@ jobs: - name: Execute Metricbeat test suite run: | - docker-compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml up -d metricbeat + docker compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml up -d metricbeat .github/workflows/scripts/run-tests-metricbeat.sh - name: 'debug: Display state and logs (Metricbeat)' if: always() run: | - docker-compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml ps - docker-compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml logs metricbeat + docker compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml ps + docker compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml logs metricbeat # next steps don't need Metricbeat - docker-compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml stop metricbeat + docker compose -f docker-compose.yml -f extensions/metricbeat/metricbeat-compose.yml stop metricbeat ############## # # @@ -201,7 +215,7 @@ jobs: - name: Terminate all components if: always() run: >- - docker-compose + docker compose -f docker-compose.yml -f extensions/logspout/logspout-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml