Blame salt/profile/static/files/git_pull_and_update.sh
|
Christian Boltz |
c34100 |
#!/bin/bash
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# managed by salt - do not edit
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
BASEDIR=/home/web_static/git
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
SERVERS='{% for server in server_list %}
|
|
Christian Boltz |
c34100 |
{{ server }}
|
|
Christian Boltz |
c34100 |
{%- endfor %}'
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
GIT_DIRS='{% for dir in git_dirs.keys() %}
|
|
Christian Boltz |
c34100 |
{{ dir }}
|
|
Christian Boltz |
c34100 |
{%- endfor %}'
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
EXPECTED_GITMODULES="$(echo '{%- for file in expected_gitmodules.keys() %}
|
|
Christian Boltz |
c34100 |
{{ file }}
|
|
Christian Boltz |
c34100 |
{%- endfor %}' | grep .)"
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
EXPECTED_SHA256="$(echo '{%- for file, sha256 in expected_gitmodules.items() %}
|
|
Christian Boltz |
c34100 |
{{ sha256 }} {{ file }}
|
|
Christian Boltz |
c34100 |
{%- endfor %}' | grep .)"
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# update all git repos, exit if one of them fails (better outdated than inconsistent)
|
|
Christian Boltz |
c34100 |
cd "$BASEDIR" || exit 1
|
|
Christian Boltz |
c34100 |
for dir in $GIT_DIRS ; do
|
|
Christian Boltz |
56d1b0 |
cd "$BASEDIR/$dir" && git pull -q || exit 1
|
|
Christian Boltz |
c34100 |
done
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# check if any .gitmodules appeared or disappeared
|
|
Christian Boltz |
c34100 |
cd "$BASEDIR" || exit 1
|
|
Christian Boltz |
c34100 |
test "$(find -name .gitmodules | LANG=C sort)" == "$EXPECTED_GITMODULES" || {
|
|
Christian Boltz |
c34100 |
echo ".gitmodules added or removed, please check manually" >&2
|
|
Christian Boltz |
c34100 |
exit 1
|
|
Christian Boltz |
c34100 |
}
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# check if content of .gitmodules matches the known ones
|
|
Christian Boltz |
c34100 |
cd "$BASEDIR" || exit 1
|
|
Christian Boltz |
c34100 |
echo "$EXPECTED_SHA256" | sha256sum -c --quiet --strict || {
|
|
Christian Boltz |
c34100 |
echo ".gitmodules were modified, please check manually" >&2
|
|
Christian Boltz |
c34100 |
exit 1
|
|
Christian Boltz |
c34100 |
}
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# sync to all servers
|
|
Christian Boltz |
c34100 |
cd $BASEDIR || exit 1
|
|
Christian Boltz |
c34100 |
for dir in *.opensuse.org ; do
|
|
Christian Boltz |
c34100 |
for server in $SERVERS ; do
|
|
Christian Boltz |
0c36f7 |
rsync -az --exclude '.git' --delete-after "$@" -e ssh "$BASEDIR/$dir/" "web_static@$server:/srv/www/vhosts/$dir/"
|
|
Christian Boltz |
c34100 |
done
|
|
Christian Boltz |
c34100 |
done
|
|
Christian Boltz |
c34100 |
|
|
Christian Boltz |
c34100 |
# vim: ts=4 expandtab
|