Архивация измененных файлов после git pull

Стояла задача по архивации файлов, которые были изменены после релиза на проекте. То есть при выполнении git pull origin master средствами gitlab-ранера нужен был архив с файлами, которые были изменены. Реализация простая средствами git и bash:

#!/bin/bash

# Получение полного хеша текущего комита
commit1=`git log --pretty=format:"%H" | head -n 1`

# Выкатка релиза
cd /data/project && git pull origin master

# Получение нового полного хеша текущего комита
commit2=`git log --pretty=format:"%H" | head -n 1`

# Просмотр разницы в виде списка файлов между двумя комитами
files=`git diff --name-only $commit1 $commit2`

# Создание временной директории для хранения измененных файлов
if [ ! -d /data/project/release-files/tmp ] ;
then mkdir -p /data/project/release-files/tmp
fi

tmp="/data/project/release-files/tmp"

# Имя будущего архива
curdate=/data/project/release-files/`date +%Y-%m-%d_%H-%M-%S`.tar

# Вывод списка файлов и копирование во временную директорию
for line in $files
do
cp $line $tmp/`basename $line`
done

# Создание архива и удаление временных файлов
cd $tmp
tar cf $curdate ./ && rm -rf $tmp

В результате после того, как разработчики выполняют commit & push, ранер на сервере выполняет вышеописанный скрипт.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: