blob: 885ec25f4d51fd4b0656622257df6418cfc9d819 [file] [log] [blame]
#!/usr/bin/env bash
# ----------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# ----------------------------------------------------------------------------
########################################################################################################################
# 0. Check Docker Memory Availability
########################################################################################################################
# Minimum required memory in bytes (12 GB)
REQUIRED_MEM=$((12 * 1024 * 1024 * 1024))
# Extract total memory from `docker system info`
TOTAL_MEM=$(docker system info --format '{{.MemTotal}}')
# Check if TOTAL_MEM was retrieved successfully
if [[ -z "$TOTAL_MEM" || "$TOTAL_MEM" -eq 0 ]]; then
echo "❌ Unable to determine total Docker memory. Is Docker running?"
exit 1
fi
# Compare and exit if not enough memory
if (( TOTAL_MEM < REQUIRED_MEM )); then
echo "❌ Docker runtime has insufficient memory: $(awk "BEGIN {printf \"%.2f\", $TOTAL_MEM/1024/1024/1024}") GB"
echo " At least 12 GB is required. Aborting."
exit 1
fi
########################################################################################################################
# 1. Check if the release properties file exists.
########################################################################################################################
########################################################################################################################
# 2. Do a simple release-perform command skip signing of artifacts and deploy to local directory
# (inside the Docker container)
########################################################################################################################
echo "Validate Release:"
docker compose build
if ! docker compose run releaser bash /ws/mvnw -e -P with-java -Dmaven.repo.local=/ws/out/.repository -Dreference.repo=https://repository.apache.org/content/repositories/staging/ -Dbuildinfo.reproducible verify artifact:compare;
then
echo "❌ Got non-0 exit code from docker compose, aborting."
exit 1
fi