blob: 254e0e3523ab7dc402400d6841f948147e49bbf7 [file] [log] [blame]
#!/bin/bash -xe
# This script is for running rootfs_size.py in Jenkins using docker.
#
# This script will build a docker container which will then be used to build
# and run the rootfs_size.py script.
#
# WORKSPACE: Required, location of unit test scripts and repository
# code to test
# SQUASHFS_FILE: Required, The squashfs file name to run rootfs_size
# against
# DISTRO: Optional, docker base image (ubuntu or fedora)
# DOCKER_IMG_NAME: Optional, default is openbmc/ubuntu-rootfs-size
# Trace bash processing. Set -e so when a step fails, we fail the build
set -uo pipefail
# Default variables
DOCKER_IMG_NAME=${DOCKER_IMG_NAME:-"openbmc/ubuntu-rootfs-size"}
DISTRO=${DISTRO:-ubuntu:bionic}
OBMC_BUILD_SCRIPTS="openbmc-build-scripts"
OBMC_TOOLS="openbmc-tools"
ROOTFS_SIZE_PY_DIR="rootfs_size"
ROOTFS_SIZE_PY="rootfs_size.py"
# Timestamp for job
echo "rootfs_size build started, $(date)"
if [[ "${DISTRO}" == "fedora" ]]; then
echo "Distro (${DISTRO}) not supported, running as ubuntu"
DISTRO="ubuntu:bionic"
fi
# Check workspace, build scripts exist
if [ ! -d "${WORKSPACE}" ]; then
echo "Workspace(${WORKSPACE}) doesn't exist, exiting..."
exit 1
fi
if [ ! -e "${WORKSPACE}/${SQUASHFS_FILE}" ]; then
echo "${WORKSPACE}/${SQUASHFS_FILE} doesn't exist, exiting..."
exit 1
fi
if [ ! -d "${WORKSPACE}/${OBMC_BUILD_SCRIPTS}" ]; then
echo "Clone (${OBMC_BUILD_SCRIPTS}) in ${WORKSPACE}..."
git clone https://gerrit.openbmc.org/openbmc/${OBMC_BUILD_SCRIPTS} "${WORKSPACE}"/${OBMC_BUILD_SCRIPTS}
fi
if [ ! -d "${WORKSPACE}/${OBMC_TOOLS}" ]; then
echo "Clone (${OBMC_TOOLS}) in ${WORKSPACE}..."
git clone https://gerrit.openbmc.org/openbmc/${OBMC_TOOLS} "${WORKSPACE}"/${OBMC_TOOLS}
fi
# Copy rootfs_size.py script into workspace
cp "${WORKSPACE}"/${OBMC_TOOLS}/${ROOTFS_SIZE_PY_DIR}/${ROOTFS_SIZE_PY} \
"${WORKSPACE}"/${ROOTFS_SIZE_PY}
chmod a+x "${WORKSPACE}"/${ROOTFS_SIZE_PY}
# Configure docker build
cd "${WORKSPACE}"/${OBMC_BUILD_SCRIPTS}
echo "Building docker image with build-rootfs-size-docker.sh"
# Export input env variables
export DOCKER_IMG_NAME
export DISTRO
./build-rootfs-size-docker.sh
# Run the docker container with the rootfs_size execution script
echo "Executing docker image"
docker run --cap-add=sys_admin --rm=true \
--network host \
--privileged=true \
-u "$USER" \
-w "${WORKSPACE}" -v "${WORKSPACE}":"${WORKSPACE}" \
-t "${DOCKER_IMG_NAME}" \
"${WORKSPACE}"/${ROOTFS_SIZE_PY} --build_dir "${WORKSPACE}"/ \
--squashfs_file "${SQUASHFS_FILE}"
# Timestamp for build
echo "rootfs_size build completed, $(date)"