5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-25 01:46:22 +00:00
panel/bin/jekyll_build_all

81 lines
2.5 KiB
Text
Raw Normal View History

2018-02-20 17:47:11 +00:00
#!/bin/bash
# TODO convertir a ruby!
set -e
rails_root="${PWD}"
# Encontrar todos los sitios únicos con el archivo `.generate`. Esto
# significa que la usuaria quiso generar el sitio.
find -L ./_sites -mindepth 3 -maxdepth 3 -name .generate \
| sed "s/\/\.generate$//" \
| while read _path ; do
# Como seguimos todos los symlinks y los sitios pueden estar
# vinculados entre sí, volvemos a chequear si existe el archivo para
# no generarlo dos veces
test -f "${_path}/.generate" || continue
2018-03-01 13:42:18 +00:00
test -f "${_path}/.generating" && continue
2018-02-20 17:47:11 +00:00
# Obtenemos las direcciones de correo de las responsables
_mail=($(cat "${_path}/.usuarias"))
_site="$(echo "${_path}" | xargs basename)"
_deploy="${rails_root}/_deploy/${_site}"
# Entrar al directorio del sitio
pushd "${_path}" &>/dev/null
2018-09-10 13:58:34 +00:00
# Reiniciar el log con la fecha
date > build.log
# Instalar las gemas si no están
test -f .bundle/config \
2018-09-10 13:58:34 +00:00
|| bundle install --path=/srv/http/gems.kefir.red \
>> build.log
# Actualizar las gemas
2018-09-10 13:58:34 +00:00
bundle >> build.log
# Instalar los assets
test -f yarn.lock \
2018-09-10 13:58:34 +00:00
&& yarn >> build.log
2018-02-20 17:47:11 +00:00
# Crear el sitio con lujo de detalles y guardar un log, pero a la vez
# tenerlo en la salida estándar para poder enviar al MAILTO del
# cronjob.
#
# Ya que estamos, eliminamos la ruta donde estamos paradas para no dar
# información sobre la servidora.
2018-02-28 20:40:23 +00:00
touch .generating
# Correr en baja prioridad
nice -n 19 \
2018-02-20 17:47:11 +00:00
bundle exec \
2018-02-28 19:10:50 +00:00
jekyll build --trace --destination "${_deploy}" 2>&1 \
2018-02-20 17:47:11 +00:00
| sed -re "s,${_path},,g" \
2018-09-10 13:58:34 +00:00
>> "build.log"
2018-02-20 17:47:11 +00:00
# Acciones posteriores
# TODO convertir en un plugin de cada sitio?
if test $? -eq 0; then
# Si funciona, enviar un mail
# TODO enviar un mail más completo y no hardcodear direcciones
echo "Everything was good! You can see your changes in https://${_site}" \
| mail -b "sysadmin@kefir.red" \
2018-02-20 17:47:11 +00:00
-s "${_site}: :)" \
${_mail[@]}
else
echo "There was an error, please check build log at https://sutty.kefir.red/" \
| mail -b "sysadmin@kefir.red" \
2018-02-20 17:47:11 +00:00
-s "${_site}: :(" \
${_mail[@]}
date +%s >.failed
fi
# Eliminar el archivo para sacar el sitio de la cola de compilación
2018-02-28 20:40:23 +00:00
rm -f .generate .generating
# TODO descubrir el grupo según la distro?
chgrp -R http "${_deploy}"
2018-08-22 19:59:31 +00:00
find "${_deploy}" -type f -print0 | xargs -r -0 chmod 640
find "${_deploy}" -type d -print0 | xargs -r -0 chmod 2750
2018-02-20 17:47:11 +00:00
# Volver al principio para continuar con el siguiente sitio
popd &>/dev/null
done