feat: Support docker compose CLI (#1116)

Check if docker compose v2, CLI, is available and get semantic version
from it, or fallback to get semantic version out of docker-compose v1
when checking minimum requirements during install.sh script

Fixes #962
This commit is contained in:
EricsonMacedo 2021-10-15 15:21:19 -03:00 committed by GitHub
parent f2e2dc2bb3
commit 78a5c3cb87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 31 additions and 14 deletions

View File

@ -26,17 +26,28 @@ jobs:
integration-test:
runs-on: ubuntu-20.04
name: "integration test"
strategy:
max-parallel: 1
fail-fast: false
matrix:
include:
- compose_version: '1.28.0'
compose_path: '/usr/local/bin'
- compose_version: 'v2.0.1'
compose_path: '/usr/local/lib/docker/cli-plugins'
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Pin docker-compose
- name: Get Compose
run: |
COMPOSE_PATH=/usr/local/bin/docker-compose
source ./install/_min-requirements.sh
sudo rm $COMPOSE_PATH
sudo curl -L https://github.com/docker/compose/releases/download/${MIN_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` -o $COMPOSE_PATH
sudo chmod +x $COMPOSE_PATH
# Always remove `docker compose` support as that's the newer version
# and comes installed by default nowadays.
sudo rm -f "/usr/local/lib/docker/cli-plugins/docker-compose"
sudo rm -f "${{ matrix.compose_path }}/docker-compose"
sudo mkdir -p "${{ matrix.compose_path }}"
sudo curl -L https://github.com/docker/compose/releases/download/${{ matrix.compose_version }}/docker-compose-`uname -s`-`uname -m` -o "${{ matrix.compose_path }}/docker-compose"
sudo chmod +x "${{ matrix.compose_path }}/docker-compose"
- name: Integration Test
run: |

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
set -e
set -ex
source "$(dirname $0)/../install/_lib.sh"
@ -118,7 +118,7 @@ done
echo "${_endgroup}"
echo "${_group}Ensure cleanup crons are working ..."
$dc ps | grep -q -- "-cleanup_.\+[[:space:]]\+Up[[:space:]]\+"
$dc ps | grep -q -E "\-cleanup\s+running\s+|\-cleanup_.+\s+Up\s+"
echo "${_endgroup}"
echo "${_group}Test custom CAs work ..."

View File

@ -93,7 +93,7 @@ services:
smtp:
<<: *restart_policy
image: tianon/exim4
hostname: ${SENTRY_MAIL_HOST:-}
hostname: ${SENTRY_MAIL_HOST:-''}
volumes:
- "sentry-smtp:/var/spool/exim4"
- "sentry-smtp-log:/var/log/exim4"

View File

@ -25,7 +25,8 @@ else
_endgroup=""
fi
dc="docker-compose --ansi never"
dc_base="$(docker compose version >/dev/null && echo 'docker compose' || echo 'docker-compose')"
dc="$dc_base --ansi never"
dcr="$dc run --rm"
# A couple of the config files are referenced from other subscripts, so they

View File

@ -3,8 +3,13 @@ echo "${_group}Checking minimum requirements ..."
source "$(dirname $0)/_min-requirements.sh"
DOCKER_VERSION=$(docker version --format '{{.Server.Version}}')
# Do NOT use $dc instead of `docker-compose` below as older versions don't support certain options and fail
COMPOSE_VERSION=$(docker-compose --version | sed 's/docker-compose version \(.\{1,\}\),.*/\1/')
# Get semantic version of Docker Compose v2
if docker compose version >/dev/null; then
COMPOSE_VERSION=$(docker compose version --short | sed 's/v\{0,1\}\(.\{1,\}\)/\1/')
else
# Do NOT use $dc instead of `docker-compose` below as older versions don't support certain options and fail
COMPOSE_VERSION=$(docker-compose --version | sed 's/docker-compose version \(.\{1,\}\),.*/\1/')
fi
RAM_AVAILABLE_IN_DOCKER=$(docker run --rm busybox free -m 2>/dev/null | awk '/Mem/ {print $2}');
CPU_AVAILABLE_IN_DOCKER=$(docker run --rm busybox nproc --all);

View File

@ -18,7 +18,7 @@ else
echo ""
echo "You're all done! Run the following command to get Sentry running:"
echo ""
echo " docker-compose up -d"
echo " $dc_base up -d"
echo ""
echo "-----------------------------------------------------------------"
echo ""