build_docker_image.sh #7

  • //
  • guest/
  • perforce_software/
  • sdp/
  • main/
  • test/
  • build_docker_image.sh
  • View
  • Commits
  • Open Download .zip Download (3 KB)
#!/bin/bash
#------------------------------------------------------------------------------
set -u

declare OpMode=Standard
declare BuildCmd=
declare OSList=
declare OS=
declare DockerDir=
declare DockerfileBase=
declare DockerfileSDP=
declare ScriptDir=
declare WorkDir=${HOME}/podman_tmp
declare -i ErrorCount=0

function msg () { echo -e "$*"; }
function errmsg () { msg "\\nError: ${1:-Unknown Error}\\n"; ErrorCount+=1; }
function bail () { errmsg "${1:-Unknown Error}"; exit "$ErrorCount"; }

#------------------------------------------------------------------------------
# Build the Docker containers for the SDP - now using podman instead of docker

# Usage:
#   build_docker_image.sh [<OS>] [-clean]
# Usage Examples from from the root of the workspace (assuming mapping):
#       //guest/perforce_software/sdp/dev/... //YourID.test_sdp_dev.sdp/sdp/...
#
#    sdp/test/build_docker_image.sh
#    sdp/test/build_docker_image.sh ubuntu20
#    sdp/test/build_docker_image.sh centos7 ubuntu20
#    sdp/test/build_docker_image.sh all
#    sdp/test/build_docker_image.sh ALL -clean
#
# Goes together with run_docker_tests.sh
# This is provided as a useful tool for testing!
#
# Note that this file is expecting to be mapped into the root of the workspace
# and with the sdp directory in the same root.
# So workspace view should look something like:
#    View:
#        //guest/perforce_software/sdp/main/... //myws.sdp/sdp/...

# This file should be in <workspace-root>/sdp/test/
# We calculate dir relative to directory of script
ScriptDir="${0%/*}"
# shellcheck disable=SC2164
root_dir="$(cd "$ScriptDir/../.."; pwd -P)"

for arg in $(echo "$@" | tr ',' ' '); do
   case "$arg" in
      (-clean) OpMode=Clean;;
      (all) OSList="rocky9 ubuntu22";;
      (ALL) OSList="centos7 rocky8 rocky9 ubuntu20 ubuntu22";;
      (ubuntu20) OSList+="ubuntu20";;
      (ubuntu22) OSList+="ubuntu22";;
      (centos7) OSList+="centos7";;
      (rocky8) OSList+="rocky8";;
      (rocky9) OSList+="rocky9";;

      (-*)
         echo "Warning: Unknown option [$arg]."
      ;;

      (*)
         echo "Warning: Unknown OS [$arg]."
         OSList+="$arg"
      ;;
   esac
done

# Default is currently Rocky 9 only.
[[ -z "$OSList" ]] && OSList="rocky9"

mkdir -p "$WorkDir" || bail "Could not do: mkdir -p \"$WorkDir\""

export TMPDIR="$WorkDir"

echo Building SDP docker containers
for OS in $OSList; do
    DockerDir="$root_dir/sdp/test/docker"
    Dockerfile="${DockerDir}/Dockerfile.${OS}"
    # Build the base Docker for the OS, and then the SDP variant on top
    BuildCmd="podman build --rm=true -t=perforce/${OS} -f ${Dockerfile} ${DockerDir}"
    [[ "$OpMode" == Clean ]] && BuildCmd=${BuildCmd/--rm=true/--rm=true --no-cache}
    msg "Running: $BuildCmd"
    $BuildCmd || errmsg "Error building SDP container."
done

if [[ "$ErrorCount" -eq 0 ]]; then
   msg "\\nAll processing completed OK."
else
   msg "\\nProcessing completed, but with $ErrorCount errors."
fi

exit "$ErrorCount"
# Change User Description Committed
#7 30915 C. Thomas Tyler Released SDP 2024.1.30913 (2024/11/20).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#6 30388 C. Thomas Tyler Released SDP 2024.1.30385 (2024/06/11).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#5 30297 C. Thomas Tyler Released SDP 2023.2.30295 (2024/05/08).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#4 28858 C. Thomas Tyler Released SDP 2022.1.28855 (2022/05/27).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#3 28240 C. Thomas Tyler Released SDP 2021.1.28238 (2021/11/12).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#2 27331 C. Thomas Tyler Released SDP 2020.1.27325 (2021/01/29).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
#1 25245 C. Thomas Tyler Released SDP 2019.1.25238 (2019/03/02).
Copy Up using 'p4 copy -r -b perforce_software-sdp-dev'.
//guest/perforce_software/sdp/dev/test/build_docker_image.sh
#2 25153 Robert Cowham Change scripts to be able to be run from workspace root
sdp/test/run_docker_tests.sh

So no longer requires funny mapping in workspace view (see README.md for view)
#1 25150 Robert Cowham Utiltiy script to help build docker images
//guest/robert_cowham/perforce/sdp/test/build_docker_image.sh
#5 25116 Robert Cowham Docker compose tests starting to get there...
#4 23433 Robert Cowham Got it working with basic ssh stuff if sshd run manually on a box
#3 22485 Robert Cowham Update python to 3.5
Refactor tests to simplify workspace (no mapping into root), and to allow easy setup
#2 20827 Robert Cowham Default to centos6 for nowç
#1 20813 Robert Cowham Using docker-compose