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-08-22 19:58:53 +00:00
|
|
|
# Instalar las gemas si no están
|
|
|
|
test -f .bundle/config \
|
|
|
|
|| bundle install --path=/srv/http/gems.kefir.red
|
|
|
|
|
|
|
|
# Actualizar las gemas
|
|
|
|
bundle
|
|
|
|
# Instalar los assets
|
|
|
|
test -f yarn.lock \
|
|
|
|
&& yarn
|
|
|
|
|
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
|
2018-03-21 08:03:13 +00:00
|
|
|
# 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" \
|
|
|
|
> "build.log"
|
|
|
|
|
|
|
|
# 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
|
2018-03-21 08:03:13 +00:00
|
|
|
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
|
2018-03-21 08:03:13 +00:00
|
|
|
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
|
2018-03-21 08:03:13 +00:00
|
|
|
# TODO descubrir el grupo según la distro?
|
|
|
|
chgrp -R http "${_deploy}"
|
|
|
|
find "${_deploy}" -type f -print0 | xargs -0 chmod 640
|
|
|
|
find "${_deploy}" -type d -print0 | xargs -0 chmod 2750
|
2018-02-20 17:47:11 +00:00
|
|
|
|
|
|
|
# Volver al principio para continuar con el siguiente sitio
|
|
|
|
popd &>/dev/null
|
|
|
|
done
|