Git автоматизация

Простейшие скрипты для тест-серверов, которые должны всегда автоматически забирать последнюю версию кода из репозитория

#!/bin/bash

#предотвращаем повторный запуск скрипта
r=`ps aux | grep "git_fetch.sh" | grep -v "grep " | wc -l`
# $r -gt 2 - проверка на количество запущенных экземпляров процесса с таким именем. В разных системах и под разными оболочками может отличаться, если возникают проблемы - корректируем

if [ $r -gt 2 ]; then
    echo $r
    exit
fi

#сама функция
function git_report {
    cd $1
    res=`git pull origin master`
    cnt=`echo "$res" | wc -l`
    time=`date +"%T"`
    timestamp=`date +"%s"`

    #ping домена
    ping=`ping $2 -c3 | grep transmitted | awk '{print $4}'`

    #результат пулла и пинга складываем в отдельный каталог. пригодится для мониторинга
    if [ $cnt -eq 1 ]; then
        echo "!";
        first=`echo "$res" | awk '{print $1}'`
        if [ $first == "Updating" ]; then
            echo "$timestamp|$time|merge error|$ping" > "/var/log/git_status/$2"
        else
            if [ ! -f "/var/log/git_status/$2" ]; then
                echo "$timestamp|$time|updated|$ping" > "/var/log/git_status/$2"
            fi
        fi
    else
        echo "$timestamp|$time|updated|$ping" > "/var/log/git_status/$2"
    fi
    #складываем результат в лог
    echo $res >> /var/log/git_fetch.log;
}

#выполняем функцию для всех каталогов, которые нужно пулить автоматически. Первый параметр - путь, 2 - домен для пинга и складывания в лог.
git_report "/var/www/my.site.com" "my.site.com"
git_report "/var/www/my.secondsite.com" "test.my.secondsite.com"

Результат работы такого скрипта легко использовать для мониторинга. К примеру такого:

f7ca35bf3b

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.