ci: Use Compose v2

This commit is contained in:
Antoine Cotten 2021-06-23 20:37:20 +02:00
parent 791150114a
commit b3abdb1d2e
No known key found for this signature in database
GPG Key ID: 94637E68D4A79DD0
1 changed files with 44 additions and 30 deletions

View File

@ -24,6 +24,8 @@ jobs:
##################################################### #####################################################
- name: Prepare environment - name: Prepare environment
env:
COMPOSE_VERSION: v2.0.1
run: | run: |
# Install Linux packages # Install Linux packages
@ -33,9 +35,18 @@ jobs:
sudo apt install -y expect 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 # Pre-build container images
docker-compose build docker compose build
######################################################## ########################################################
# # # #
@ -57,7 +68,7 @@ jobs:
# Run Elasticsearch and wait for its availability # Run Elasticsearch and wait for its availability
docker-compose up -d elasticsearch docker compose up -d elasticsearch
source .github/workflows/scripts/lib/testing.sh source .github/workflows/scripts/lib/testing.sh
poll_ready "$(container_id elasticsearch)" "http://$(service_ip elasticsearch):9200/" -u 'elastic:changeme' poll_ready "$(container_id elasticsearch)" "http://$(service_ip elasticsearch):9200/" -u 'elastic:changeme'
@ -72,7 +83,7 @@ jobs:
########################################################## ##########################################################
- name: Run the stack - name: Run the stack
run: docker-compose up -d run: docker compose up -d
- name: Execute core test suite - name: Execute core test suite
run: .github/workflows/scripts/run-tests-core.sh 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 # https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#job-status-check-functions
if: always() if: always()
run: | run: |
docker-compose ps docker compose ps
docker-compose logs elasticsearch docker compose logs elasticsearch
docker-compose logs logstash docker compose logs logstash
docker-compose logs kibana docker compose logs kibana
############################## ##############################
# # # #
@ -104,26 +115,29 @@ jobs:
sed -i '$ a input { udp { port => 5000 codec => json } }' logstash/pipeline/logstash.conf sed -i '$ a input { udp { port => 5000 codec => json } }' logstash/pipeline/logstash.conf
# Run Logspout and execute tests. # Restart Logstash for changes to take effect
# Logstash will be restarted as a result of building the Logspout
# image, so changes above will automatically 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 .github/workflows/scripts/run-tests-logspout.sh
# Revert changes to Logstash configuration # Revert changes to Logstash configuration
sed -i '/input { udp { port => 5000 codec => json } }/d' logstash/pipeline/logstash.conf sed -i '/input { udp { port => 5000 codec => json } }/d' logstash/pipeline/logstash.conf
docker compose restart logstash
- name: 'debug: Display state and logs (Logspout)' - name: 'debug: Display state and logs (Logspout)'
if: always() if: always()
run: | 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 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 logs logspout
# next steps don't need 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 # next steps don't need Logstash
docker-compose stop logstash docker compose stop logstash
# #
# Enterprise Search # Enterprise Search
@ -138,25 +152,25 @@ jobs:
# Restart Elasticsearch for changes to take effect # Restart Elasticsearch for changes to take effect
docker-compose restart elasticsearch docker compose restart elasticsearch
# Run Enterprise Search and execute tests # 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 .github/workflows/scripts/run-tests-enterprise-search.sh
# Revert changes to Elasticsearch configuration # Revert changes to Elasticsearch configuration
sed -i '/xpack.security.authc.api_key.enabled: true/d' elasticsearch/config/elasticsearch.yml 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)' - name: 'debug: Display state and logs (Enterprise Search)'
if: always() if: always()
run: | 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 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 logs enterprise-search
# next steps don't need 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 # APM Server
@ -164,16 +178,16 @@ jobs:
- name: Execute APM Server test suite - name: Execute APM Server test suite
run: | 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 .github/workflows/scripts/run-tests-apm-server.sh
- name: 'debug: Display state and logs (APM Server)' - name: 'debug: Display state and logs (APM Server)'
if: always() if: always()
run: | 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 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 logs apm-server
# next steps don't need 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 # Metricbeat
@ -181,16 +195,16 @@ jobs:
- name: Execute Metricbeat test suite - name: Execute Metricbeat test suite
run: | 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 .github/workflows/scripts/run-tests-metricbeat.sh
- name: 'debug: Display state and logs (Metricbeat)' - name: 'debug: Display state and logs (Metricbeat)'
if: always() if: always()
run: | 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 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 logs metricbeat
# next steps don't need 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 - name: Terminate all components
if: always() if: always()
run: >- run: >-
docker-compose docker compose
-f docker-compose.yml -f docker-compose.yml
-f extensions/logspout/logspout-compose.yml -f extensions/logspout/logspout-compose.yml
-f extensions/enterprise-search/enterprise-search-compose.yml -f extensions/enterprise-search/enterprise-search-compose.yml