Skip to content

feat(install): Adds support for podman(compose) #3673

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 53 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
d87c155
feat(install): Adds support for podman(compose), while maintaining co…
Apr 22, 2025
cd24311
Renames container-technology -> container-engine
Apr 23, 2025
64c9741
Adds feature flag to enable podman; fixes test runner
Apr 23, 2025
8034a6e
fix(install): platform detection for amd64
Apr 23, 2025
0fca38e
fix(install): Adds separate prox-args for podman build vs. podman-com…
Apr 23, 2025
d98e2fb
fix(install): Substitues docker compose --rmi for podman
Apr 23, 2025
27e524d
fix(install): handling of ps command for docker compose vs. podman-co…
Apr 23, 2025
d711b5b
fix(install): Susbstitutes docker compose --wait for podman
Apr 23, 2025
0e5e24e
fix(install): Substitues occurence of docker run with run
Apr 24, 2025
f89f0c2
fix(install): docker substitutions
Apr 24, 2025
7c886c9
fix(install): substitues docker volume create with correct syntax
Apr 24, 2025
8039e03
fix(install): remove dangling images under podman on compose down
Apr 24, 2025
00f4c81
fix(install): Replaces how images are pulled
Apr 24, 2025
b467a55
fix(install): Substitues up <service> --wait with start_service_and_…
Apr 24, 2025
b9bff98
fix(install): run podman-compose up with --force-recreate
Apr 24, 2025
8185732
fix(install): start_service_and_Wait_ready uses daemonized start
Apr 24, 2025
3bd844c
fix(install): multiple merge instrtuctions in docker-compose.yml
Apr 24, 2025
fc3d976
fix(install): Substitute --force-rm for podman
Apr 24, 2025
059f0c7
chore(install): simplify container-engine selection
Apr 28, 2025
ed1e604
chore(install): cleanups
Apr 28, 2025
abb4551
Update install/create-docker-volumes.sh
DuncanConroy Apr 28, 2025
b8a0206
Update install/turn-things-off.sh
DuncanConroy Apr 28, 2025
5ae7db9
Update install/upgrade-clickhouse.sh
DuncanConroy Apr 28, 2025
e2d60ee
Update install/wrap-up.sh
DuncanConroy Apr 28, 2025
dd74c39
run tests with podman too
BYK Apr 28, 2025
cfa9157
fix sentry-admin script
BYK Apr 28, 2025
9df8ab4
add missing renamed file
BYK Apr 28, 2025
b679f06
chore(install): Switch docker/podman if-else in install/update-docker…
Apr 28, 2025
400e4ea
fix import place
BYK Apr 28, 2025
5abf5a7
chore(install): fixes from review
Apr 29, 2025
cb54be2
fix unbound variable error
BYK Apr 29, 2025
6416fa6
remove incorrect pull_policy definitions
BYK Apr 29, 2025
43f5431
lol
BYK Apr 29, 2025
09f54a0
install podman-compose too?
BYK Apr 29, 2025
257dc2d
sigh, try using brew to install
BYK Apr 29, 2025
7259d27
shfmt
BYK Apr 29, 2025
705a8b7
sigh...
BYK Apr 29, 2025
8e6e116
podman install....
BYK Apr 29, 2025
7d7f1c2
use ubuntu latest :facepalm:
BYK Apr 29, 2025
ffe08d8
bump podman version requirement one notch down
BYK Apr 29, 2025
2544ec8
install podman-compose too
BYK Apr 29, 2025
06e6e24
sigh...
BYK Apr 29, 2025
8f0ba1a
moar swaps
BYK Apr 29, 2025
ab342b9
latest podman-compose
BYK Apr 29, 2025
1973cb0
silence podman compose a bit
BYK Apr 29, 2025
a61a7a5
Merge branch 'master' into pr3673
BYK May 7, 2025
69e671d
add --in-pod=false to dcr
BYK May 7, 2025
dc4c1db
lol, wrong line
BYK May 7, 2025
485c264
try to fix force rm
BYK May 7, 2025
fe231a4
try no quotes at all
BYK May 7, 2025
ca40557
well, it should be --podman-build
BYK May 7, 2025
dbe912d
we don't need this as default is true
BYK May 7, 2025
a2792f7
--force-rm is no longer anyway
BYK May 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 16 additions & 14 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
x-restart-policy: &restart_policy
restart: unless-stopped
x-pull-policy: &pull_policy
pull_policy: never
x-depends_on-healthy: &depends_on-healthy
condition: service_healthy
x-depends_on-default: &depends_on-default
Expand All @@ -15,7 +17,7 @@ x-healthcheck-defaults: &healthcheck_defaults
retries: $HEALTHCHECK_RETRIES
start_period: 10s
x-sentry-defaults: &sentry_defaults
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: sentry-self-hosted-local
# Set the platform to build for linux/arm64 when needed on Apple silicon Macs.
platform: ${DOCKER_PLATFORM:-}
Expand Down Expand Up @@ -65,7 +67,7 @@ x-sentry-defaults: &sentry_defaults
- "./geoip:/geoip:ro"
- "./certificates:/usr/local/share/ca-certificates:ro"
x-snuba-defaults: &snuba_defaults
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
depends_on:
clickhouse:
<<: *depends_on-healthy
Expand All @@ -90,23 +92,23 @@ x-snuba-defaults: &snuba_defaults
SNUBA_STATSD_PORT: # Example value: 8125
services:
smtp:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
platform: linux/amd64
image: tianon/exim4
hostname: "${SENTRY_MAIL_HOST:-}"
volumes:
- "sentry-smtp:/var/spool/exim4"
- "sentry-smtp-log:/var/log/exim4"
memcached:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "memcached:1.6.26-alpine"
command: ["-I", "${SENTRY_MAX_EXTERNAL_SOURCEMAP_SIZE:-1M}"]
healthcheck:
<<: *healthcheck_defaults
# From: https://stackoverflow.com/a/31877626/5155484
test: echo stats | nc 127.0.0.1 11211
redis:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "redis:6.2.14-alpine"
healthcheck:
<<: *healthcheck_defaults
Expand All @@ -123,7 +125,7 @@ services:
hard: 10032
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
postgres:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
# Using the same postgres version as Sentry dev for consistency purposes
image: "postgres:14.11"
healthcheck:
Expand All @@ -141,7 +143,7 @@ services:
volumes:
- "sentry-postgres:/var/lib/postgresql/data"
kafka:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "confluentinc/cp-kafka:7.6.1"
environment:
# https://docs.confluent.io/platform/current/installation/docker/config-reference.html#cp-kakfa-example
Expand Down Expand Up @@ -178,7 +180,7 @@ services:
timeout: 10s
retries: 30
clickhouse:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: clickhouse-self-hosted-local
build:
context: ./clickhouse
Expand Down Expand Up @@ -305,7 +307,7 @@ services:
profiles:
- feature-complete
symbolicator:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "$SYMBOLICATOR_IMAGE"
volumes:
- "sentry-symbolicator:/data"
Expand All @@ -315,7 +317,7 @@ services:
target: /etc/symbolicator
command: run -c /etc/symbolicator/config.yml
symbolicator-cleanup:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: symbolicator-cleanup-self-hosted-local
build:
context: ./cron
Expand Down Expand Up @@ -449,7 +451,7 @@ services:
entrypoint: "/entrypoint.sh"
command: '"0 0 * * * gosu sentry sentry cleanup --days $SENTRY_EVENT_RETENTION_DAYS"'
nginx:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
ports:
- "$SENTRY_BIND:80/tcp"
image: "nginx:1.25.4-alpine"
Expand All @@ -464,7 +466,7 @@ services:
- web
- relay
relay:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "$RELAY_IMAGE"
volumes:
- type: bind
Expand All @@ -483,7 +485,7 @@ services:
web:
<<: *depends_on-healthy
vroom:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: "$VROOM_IMAGE"
environment:
SENTRY_KAFKA_BROKERS_PROFILING: "kafka:9092"
Expand All @@ -498,7 +500,7 @@ services:
profiles:
- feature-complete
vroom-cleanup:
<<: *restart_policy
<<: [*restart_policy, *pull_policy]
image: vroom-cleanup-self-hosted-local
build:
context: ./cron
Expand Down
3 changes: 3 additions & 0 deletions install/_min-requirements.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
MIN_DOCKER_VERSION='19.03.6'
MIN_COMPOSE_VERSION='2.32.2'

MIN_PODMAN_VERSION='4.9.4'
MIN_PODMAN_COMPOSE_VERSION='1.3.0'

# 16 GB minimum host RAM, but there'll be some overhead outside of what
# can be allotted to docker
if [[ "$COMPOSE_PROFILES" == "errors-only" ]]; then
Expand Down
8 changes: 6 additions & 2 deletions install/build-docker-images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@ echo "${_group}Building and tagging Docker images ..."
echo ""
# Build any service that provides the image sentry-self-hosted-local first,
# as it is used as the base image for sentry-cleanup-self-hosted-local.
$dcb --force-rm web
dcb_force="$dcb --force-rm"
if [[ "$CONTAINER_ENGINE" == "podman" ]]; then
dcb_force="$dcb --podman-rm-args='--force'"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like single quotes here passed as is which leads to

dcb_force='podman compose --no-ansi --env-file .env build --build-arg http_proxy= --build-arg https_proxy= --build-arg no_proxy= --podman-rm-args='\''--force'\'''

podman compose --no-ansi --env-file .env build --build-arg http_proxy= --build-arg https_proxy= --build-arg no_proxy= '--podman-rm-args='\''--force'\''' web

podman-compose: error: unrecognized arguments: --podman-rm-args='--force'

fi
$dcb_force web
# Build each other service individually to localize potential failures better.
for service in $($dc config --services); do
$dcb --force-rm "$service"
$dcb_force "$service"
done
echo ""
echo "Docker images built."
Expand Down
42 changes: 26 additions & 16 deletions install/check-minimum-requirements.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,41 @@ echo "${_group}Checking minimum requirements ..."

source install/_min-requirements.sh

DOCKER_VERSION=$(docker version --format '{{.Server.Version}}' || echo '')
DOCKER_VERSION=$($CONTAINER_ENGINE version --format '{{.Server.Version}}' || echo '')
if [[ -z "$DOCKER_VERSION" ]]; then
echo "FAIL: Unable to get docker version, is the docker daemon running?"
echo "FAIL: Unable to get $CONTAINER_ENGINE version, is the $CONTAINER_ENGINE daemon running?"
exit 1
fi

if ! vergte ${DOCKER_VERSION//v/} $MIN_DOCKER_VERSION; then
echo "FAIL: Expected minimum docker version to be $MIN_DOCKER_VERSION but found $DOCKER_VERSION"
exit 1
fi
echo "Found Docker version $DOCKER_VERSION"

if ! vergte ${COMPOSE_VERSION//v/} $MIN_COMPOSE_VERSION; then
echo "FAIL: Expected minimum $dc_base version to be $MIN_COMPOSE_VERSION but found $COMPOSE_VERSION"
exit 1
if [[ "$CONTAINER_ENGINE" == "docker" ]]; then
if ! vergte ${DOCKER_VERSION//v/} $MIN_DOCKER_VERSION; then
echo "FAIL: Expected minimum docker version to be $MIN_DOCKER_VERSION but found $DOCKER_VERSION"
exit 1
fi
if ! vergte ${COMPOSE_VERSION//v/} $MIN_COMPOSE_VERSION; then
echo "FAIL: Expected minimum $dc_base version to be $MIN_COMPOSE_VERSION but found $COMPOSE_VERSION"
exit 1
fi
elif [[ "$CONTAINER_ENGINE" == "podman" ]]; then
if ! vergte ${DOCKER_VERSION//v/} $MIN_PODMAN_VERSION; then
echo "FAIL: Expected minimum podman version to be $MIN_PODMAN_VERSION but found $DOCKER_VERSION"
exit 1
fi
if ! vergte ${COMPOSE_VERSION//v/} $MIN_PODMAN_COMPOSE_VERSION; then
echo "FAIL: Expected minimum $dc_base version to be $MIN_PODMAN_COMPOSE_VERSION but found $COMPOSE_VERSION"
exit 1
fi
fi
echo "Found Docker Compose version $COMPOSE_VERSION"
echo "Found $CONTAINER_ENGINE version $DOCKER_VERSION"
echo "Found $CONTAINER_ENGINE Compose version $COMPOSE_VERSION"

CPU_AVAILABLE_IN_DOCKER=$(docker run --rm busybox nproc --all)
CPU_AVAILABLE_IN_DOCKER=$($CONTAINER_ENGINE run --rm busybox nproc --all)
if [[ "$CPU_AVAILABLE_IN_DOCKER" -lt "$MIN_CPU_HARD" ]]; then
echo "FAIL: Required minimum CPU cores available to Docker is $MIN_CPU_HARD, found $CPU_AVAILABLE_IN_DOCKER"
exit 1
fi

RAM_AVAILABLE_IN_DOCKER=$(docker run --rm busybox free -m 2>/dev/null | awk '/Mem/ {print $2}')
RAM_AVAILABLE_IN_DOCKER=$($CONTAINER_ENGINE run --rm busybox free -m 2>/dev/null | awk '/Mem/ {print $2}')
if [[ "$RAM_AVAILABLE_IN_DOCKER" -lt "$MIN_RAM_HARD" ]]; then
echo "FAIL: Required minimum RAM available to Docker is $MIN_RAM_HARD MB, found $RAM_AVAILABLE_IN_DOCKER MB"
exit 1
Expand All @@ -35,9 +45,9 @@ fi
#SSE4.2 required by Clickhouse (https://clickhouse.yandex/docs/en/operations/requirements/)
# On KVM, cpuinfo could falsely not report SSE 4.2 support, so skip the check. https://github.com/ClickHouse/ClickHouse/issues/20#issuecomment-226849297
# This may also happen on other virtualization software such as on VMWare ESXi hosts.
IS_KVM=$(docker run --rm busybox grep -c 'Common KVM processor' /proc/cpuinfo || :)
IS_KVM=$($CONTAINER_ENGINE run --rm busybox grep -c 'Common KVM processor' /proc/cpuinfo || :)
if [[ ! "$SKIP_SSE42_REQUIREMENTS" -eq 1 && "$IS_KVM" -eq 0 && "$DOCKER_ARCH" = "x86_64" ]]; then
SUPPORTS_SSE42=$(docker run --rm busybox grep -c sse4_2 /proc/cpuinfo || :)
SUPPORTS_SSE42=$($CONTAINER_ENGINE run --rm busybox grep -c sse4_2 /proc/cpuinfo || :)
if [[ "$SUPPORTS_SSE42" -eq 0 ]]; then
echo "FAIL: The CPU your machine is running on does not support the SSE 4.2 instruction set, which is required for one of the services Sentry uses (Clickhouse). See https://github.com/getsentry/self-hosted/issues/340 for more info."
exit 1
Expand Down
23 changes: 17 additions & 6 deletions install/create-docker-volumes.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
echo "${_group}Creating volumes for persistent storage ..."

echo "Created $(docker volume create --name=sentry-clickhouse)."
echo "Created $(docker volume create --name=sentry-data)."
echo "Created $(docker volume create --name=sentry-kafka)."
echo "Created $(docker volume create --name=sentry-postgres)."
echo "Created $(docker volume create --name=sentry-redis)."
echo "Created $(docker volume create --name=sentry-symbolicator)."
create_volume() {
create_command="$CONTAINER_ENGINE volume create"
if [ "$CONTAINER_ENGINE" = "docker" ]; then
create_command="$create_command --name=$1"
else
create_command="$create_command --ignore $1"
fi

$create_command
}

echo "Created $(create_volume sentry-clickhouse)."
echo "Created $(create_volume sentry-data)."
echo "Created $(create_volume sentry-kafka)."
echo "Created $(create_volume sentry-postgres)."
echo "Created $(create_volume sentry-redis)."
echo "Created $(create_volume sentry-symbolicator)."

echo "${_endgroup}"
68 changes: 60 additions & 8 deletions install/dc-detect-version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,27 @@ else
_endgroup=""
fi

echo "${_group}Initializing Docker Compose ..."
echo "${_group}Initializing Docker|Podman Compose ..."

export CONTAINER_ENGINE="docker"
if [[ "${CONTAINER_ENGINE_PODMAN:-0}" -eq 1 ]]; then
if command -v podman &> /dev/null; then
export CONTAINER_ENGINE="podman"
else
echo "FAIL: Podman is not installed on the system."
exit 1
fi
fi

# To support users that are symlinking to docker-compose
dc_base="$(docker compose version --short &>/dev/null && echo 'docker compose' || echo '')"
dc_base_standalone="$(docker-compose version --short &>/dev/null && echo 'docker-compose' || echo '')"
dc_base="$(${CONTAINER_ENGINE} compose version --short &>/dev/null && echo "$CONTAINER_ENGINE compose" || echo '')"
dc_base_standalone="$(${CONTAINER_ENGINE}-compose version --short &>/dev/null && echo "$CONTAINER_ENGINE-compose" || echo '')"

COMPOSE_VERSION=$([ -n "$dc_base" ] && $dc_base version --short || echo '')
STANDALONE_COMPOSE_VERSION=$([ -n "$dc_base_standalone" ] && $dc_base_standalone version --short || echo '')

if [[ -z "$COMPOSE_VERSION" && -z "$STANDALONE_COMPOSE_VERSION" ]]; then
echo "FAIL: Docker Compose is required to run self-hosted"
echo "FAIL: Docker|Podman Compose is required to run self-hosted"
exit 1
fi

Expand All @@ -25,14 +35,56 @@ if [[ -z "$COMPOSE_VERSION" ]] || [[ -n "$STANDALONE_COMPOSE_VERSION" ]] && ! ve
dc_base="$dc_base_standalone"
fi

if [[ "$CONTAINER_ENGINE" == "docker" ]]; then
NO_ANSI="--ansi never"
elif [[ "$CONTAINER_ENGINE" == "podman" ]]; then
NO_ANSI="--no-ansi"
fi

if [[ "$(basename $0)" = "install.sh" ]]; then
dc="$dc_base --ansi never --env-file ${_ENV}"
dc="$dc_base $NO_ANSI --env-file ${_ENV}"
else
dc="$dc_base --ansi never"
dc="$dc_base $NO_ANSI"
fi

proxy_args="--build-arg http_proxy=${http_proxy:-} --build-arg https_proxy=${https_proxy:-} --build-arg no_proxy=${no_proxy:-}"
dcr="$dc run --pull=never --rm"
if [[ "$CONTAINER_ENGINE" == "docker" ]]; then
proxy_args_dc=$proxy_args
dcr="$dc run --pull=never --rm"
elif [[ "$CONTAINER_ENGINE" == "podman" ]]; then
proxy_args_dc="--podman-build-args http_proxy=${http_proxy:-},https_proxy=${https_proxy:-},no_proxy=${no_proxy:-}"
dcr="$dc run --rm"
fi
dcb="$dc build $proxy_args"
dbuild="docker build $proxy_args"
dbuild="$CONTAINER_ENGINE build $proxy_args"

# Utility function to handle --wait with docker and podman
function start_service_and_wait_ready() {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well well...

@aldy505 - with this, maybe we can lower the Docker Compose version requirement again as some people were complaining about that?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes we might. Do you have any thoughts regarding this? @aminvakil

local options=()
local services=()
local found_service=0

for arg in "$@"; do
if [[ $found_service -eq 0 && "$arg" == -* ]]; then
options+=("$arg")
else
found_service=1
services+=("$arg")
fi
done

if [ "$CONTAINER_ENGINE" = "docker" ]; then
$dc up --wait "${options[@]}" "${services[@]}"
else
$dc up --force-recreate -d "${options[@]}" "${services[@]}"
for service in "${services[@]}"; do
while ! $CONTAINER_ENGINE ps --filter "health=healthy" | grep "$service"; do
sleep 2
done
done
fi
}



echo "${_endgroup}"
10 changes: 5 additions & 5 deletions install/detect-platform.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,13 @@ echo "${_group}Detecting Docker platform"
# linux/amd64 by default due to virtualization.
# See https://github.com/docker/cli/issues/3286 for the Docker bug.

if ! command -v docker &>/dev/null; then
echo "FAIL: Could not find a \`docker\` binary on this system. Are you sure it's installed?"
exit 1
FORMAT="{{.Architecture}}"
if [[ $CONTAINER_ENGINE == "podman" ]]; then
FORMAT="{{.Host.Arch}}"
fi

export DOCKER_ARCH=$(docker info --format '{{.Architecture}}')
if [[ "$DOCKER_ARCH" = "x86_64" ]]; then
export DOCKER_ARCH=$($CONTAINER_ENGINE info --format "$FORMAT")
if [[ "$DOCKER_ARCH" = "x86_64" || "$DOCKER_ARCH" = "amd64" ]]; then
export DOCKER_PLATFORM="linux/amd64"
elif [[ "$DOCKER_ARCH" = "aarch64" ]]; then
export DOCKER_PLATFORM="linux/arm64"
Expand Down
8 changes: 4 additions & 4 deletions install/error-handling.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ fi

$dbuild -t sentry-self-hosted-jq-local --platform="$DOCKER_PLATFORM" jq

jq="docker run --rm -i sentry-self-hosted-jq-local"
sentry_cli="docker run --rm -v /tmp:/work -e SENTRY_DSN=$SENTRY_DSN getsentry/sentry-cli"
jq="$CONTAINER_ENGINE run --rm -i sentry-self-hosted-jq-local"
sentry_cli="$CONTAINER_ENGINE run --rm -v /tmp:/work -e SENTRY_DSN=$SENTRY_DSN getsentry/sentry-cli"

send_envelope() {
# Send envelope
Expand All @@ -27,7 +27,7 @@ send_event() {
local breadcrumbs=$5
local fingerprint_value=$(
echo -n "$cmd_exit $error_msg $traceback" |
docker run -i --rm busybox md5sum |
$CONTAINER_ENGINE run -i --rm busybox md5sum |
cut -d' ' -f1
)
local envelope_file="sentry-envelope-${fingerprint_value}"
Expand Down Expand Up @@ -151,7 +151,7 @@ fi

# Make sure we can use sentry-cli if we need it.
if [ "$REPORT_SELF_HOSTED_ISSUES" == 1 ]; then
if ! docker pull getsentry/sentry-cli:latest; then
if ! $CONTAINER_ENGINE pull getsentry/sentry-cli:latest; then
echo "Failed to pull sentry-cli, won't report to Sentry after all."
export REPORT_SELF_HOSTED_ISSUES=0
fi
Expand Down
Loading