diff --git a/scripts/ci/libraries/_md5sum.sh b/scripts/ci/libraries/_md5sum.sh index d720c0b66fd37..052e98d51bd6e 100644 --- a/scripts/ci/libraries/_md5sum.sh +++ b/scripts/ci/libraries/_md5sum.sh @@ -40,7 +40,13 @@ function md5sum::calculate_file_md5sum { diff "${MD5SUM_FILE_NEW}" "${MD5SUM_FILE}" >/dev/null RES=$? if [[ "${RES}" != "0" ]]; then - verbosity::print_info "The md5sum changed for ${FILE}" + verbosity::print_info "The md5sum changed for ${FILE}: was $(cat "${MD5SUM_FILE}") now it is $(cat "${MD5SUM_FILE_NEW}")" + if [[ ${CI} == "true" ]]; then + echo "${COLOR_RED}The file has changed: ${FILE}${COLOR_RESET}" + echo "${COLOR_BLUE}==============================${COLOR_RESET}" + cat "${FILE}" + echo "${COLOR_BLUE}==============================${COLOR_RESET}" + fi RET_CODE=1 fi fi @@ -61,7 +67,7 @@ function md5sum::move_file_md5sum { MD5SUM_FILE_NEW=${CACHE_TMP_FILE_DIR}/$(basename "$(dirname "${FILE}")")-$(basename "${FILE}").md5sum.new if [[ -f "${MD5SUM_FILE_NEW}" ]]; then mv "${MD5SUM_FILE_NEW}" "${MD5SUM_FILE}" - verbosity::print_info "Updated md5sum file ${MD5SUM_FILE} for ${FILE}." + verbosity::print_info "Updated md5sum file ${MD5SUM_FILE} for ${FILE}: $(cat "${MD5SUM_FILE}")" fi } diff --git a/scripts/ci/libraries/_verify_image.sh b/scripts/ci/libraries/_verify_image.sh index 05e91c6b0e6c7..f9d2bb6d3a3c2 100644 --- a/scripts/ci/libraries/_verify_image.sh +++ b/scripts/ci/libraries/_verify_image.sh @@ -99,6 +99,15 @@ function verify_image::verify_ci_image_dependencies() { start_end::group_end } +function verify_image::verify_ci_image_has_dist_folder() { + start_end::group_start "Verify CI image dist folder (compiled www assets): ${DOCKER_IMAGE}" + + verify_image::check_command "Dist folder" '[ -f /opt/airflow/airflow/www/static/dist/manifest.json ] || exit 1' + + start_end::group_end +} + + function verify_image::verify_prod_image_dependencies() { start_end::group_start "Checking if Airflow dependencies are non-conflicting in ${DOCKER_IMAGE} image." @@ -241,6 +250,14 @@ function verify_image::verify_prod_image_as_root() { set -e } +function verify_image::verify_production_image_has_dist_folder() { + start_end::group_start "Verify prod image has dist folder (compiled www assets): ${DOCKER_IMAGE}" + # shellcheck disable=SC2016 + verify_image::check_command "Dist folder" '[ -f $(python -m site --user-site)/airflow/www/static/dist/manifest.json ] || exit 1' + + start_end::group_end +} + function verify_image::display_result { if [[ ${IMAGE_VALID} == "true" ]]; then echo @@ -265,6 +282,8 @@ function verify_image::verify_prod_image { verify_image::verify_prod_image_as_root + verify_image::verify_production_image_has_dist_folder + verify_image::display_result } @@ -273,5 +292,7 @@ function verify_image::verify_ci_image { DOCKER_IMAGE="${1}" verify_image::verify_ci_image_dependencies + verify_image::verify_ci_image_has_dist_folder + verify_image::display_result } diff --git a/scripts/docker/compile_www_assets.sh b/scripts/docker/compile_www_assets.sh index e303f51b9a626..9a8fef8d191ec 100755 --- a/scripts/docker/compile_www_assets.sh +++ b/scripts/docker/compile_www_assets.sh @@ -28,22 +28,20 @@ function compile_www_assets() { md5sum_file="static/dist/sum.md5" readonly md5sum_file local airflow_site_package - airflow_site_package="$(python -m site --user-site)" + airflow_site_package="$(python -m site --user-site)/airflow" local www_dir="" if [[ -f "${airflow_site_package}/www_rbac/package.json" ]]; then www_dir="${airflow_site_package}/www_rbac" elif [[ -f "${airflow_site_package}/www/package.json" ]]; then www_dir="${airflow_site_package}/www" fi - if [[ -n "${www_dir}" ]]; then - pushd ${www_dir} || exit 1 - yarn install --frozen-lockfile --no-cache - yarn run prod - find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${md5sum_file}" - rm -rf "${www_dir}/node_modules" - rm -vf "${www_dir}"/{package.json,yarn.lock,.eslintignore,.eslintrc,.stylelintignore,.stylelintrc,compile_assets.sh,webpack.config.js} - popd || exit 1 - fi + pushd ${www_dir} || exit 1 + yarn install --frozen-lockfile --no-cache + yarn run prod + find package.json yarn.lock static/css static/js -type f | sort | xargs md5sum > "${md5sum_file}" + rm -rf "${www_dir}/node_modules" + rm -vf "${www_dir}"/{package.json,yarn.lock,.eslintignore,.eslintrc,.stylelintignore,.stylelintrc,compile_assets.sh,webpack.config.js} + popd || exit 1 } compile_www_assets