#!/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)"