build_website.sh (1710B)
1 #!/usr/bin/env bash 2 set -euo pipefail 3 4 : "${DOCKER_BUILDKIT:=1}" 5 6 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 7 REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" 8 PUBLIC_DIR="${REPO_ROOT}/www_jci/public" 9 RELEASES_DIR="${PUBLIC_DIR}/releases" 10 11 IMAGE_NAME="jci-stagit" 12 CONTAINER_NAME="jci-stagit-builder" 13 14 # Ensure releases directory exists 15 mkdir -p "${RELEASES_DIR}" 16 17 # Build docker image with stagit (using inline Dockerfile via here-doc) 18 if ! docker image inspect "${IMAGE_NAME}">/dev/null 2>&1; then 19 tmp_dir="$(mktemp -d)" 20 mkdir -p "${tmp_dir}/repo" "${tmp_dir}/public_assets" 21 cp -R "${REPO_ROOT}"/.[!.]* "${tmp_dir}/repo" 2>/dev/null || true 22 cp -R "${REPO_ROOT}"/* "${tmp_dir}/repo" 23 cp "${PUBLIC_DIR}/assets/logo.png" "${tmp_dir}/public_assets/logo.png" 24 cp "${REPO_ROOT}/www_jci/Dockerfile" "${tmp_dir}/Dockerfile" 25 docker build -t "${IMAGE_NAME}" "${tmp_dir}" 26 rm -rf "${tmp_dir}" 27 fi 28 29 # Prepare context for stagit run 30 BUILD_CONTEXT="$(mktemp -d)" 31 mkdir -p "${BUILD_CONTEXT}/repo" "${BUILD_CONTEXT}/public_assets" 32 cp -a "${REPO_ROOT}/." "${BUILD_CONTEXT}/repo" 33 cp "${PUBLIC_DIR}/assets/logo.png" "${BUILD_CONTEXT}/public_assets/logo.png" 34 if [ -f "${REPO_ROOT}/ui/src/libs/git.style.css" ]; then 35 cp "${REPO_ROOT}/ui/src/libs/git.style.css" "${BUILD_CONTEXT}/stagit_style.css" 36 else 37 cat <<'EOF' > "${BUILD_CONTEXT}/stagit_style.css" 38 :root {font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;} 39 EOF 40 fi 41 42 docker run --rm \ 43 -v "${BUILD_CONTEXT}/repo:/tmp/repo" \ 44 -v "${PUBLIC_DIR}/assets/logo.png:/data/www_jci/public/assets/logo.png" \ 45 -v "${RELEASES_DIR}:/gitrepo" \ 46 "${IMAGE_NAME}" 47 48 rm -rf "${BUILD_CONTEXT}" 49 50 echo "Releases site generated at ${RELEASES_DIR}"