forked from brickstudy/ETL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheck_and_pull.sh
50 lines (40 loc) · 1.62 KB
/
check_and_pull.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash
# log 폴더
# log 폴더 경로
log_dir="log"
# log 폴더가 존재하지 않으면 생성
if [ ! -d "$log_dir" ]; then
mkdir "$log_dir"
fi
# log 파일 생성
# 현재 날짜를 "YYYY-MM-DD.log" 형식의 문자열로 변환
today_date=$(date +"%Y-%m-%d.log")
# 파일 경로 설정
log_file="$log_dir/$today_date"
# 파일이 존재하는지 확인
if [ ! -f "$log_file" ]; then
# 파일이 존재하지 않으면 파일을 생성
touch "$log_file"
echo "$(date): $log_file 파일이 생성되었습니다." >> $log_file 2>&1
else
echo "파일이 존재 합니다."
fi
# 원격 저장소의 변경 사항을 가져옵니다.
git fetch
# 원격 브랜치와 로컬 브랜치 간의 차이점이 있는지 확인합니다.
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse @{u})
BASE=$(git merge-base @ @{u})
if [ $LOCAL = $REMOTE ]; then
echo "$(date): 로컬 저장소가 최신 상태입니다." >> $log_file 2>&1
elif [ $LOCAL = $BASE ]; then
echo "$(date): 변경 사항이 있습니다. git pull을 실행합니다." >> $log_file 2>&1
git pull origin main
echo "$(date): 정상적으로 git pull을 실행했습니다." >> $log_file 2>&1
docker restart etl-airflow-scheduler-1
echo "$(date): 정상적으로 docker scheduler을 재실행 했습니다." >> $log_file 2>&1
elif [ $REMOTE = $BASE ]; then
echo "$(date): 로컬 저장소에 커밋되지 않은 변경 사항이 있습니다. 먼저 커밋을 하세요." >> $log_file 2>&1
else
echo "$(date): 로컬 저장소와 원격 저장소가 다릅니다. 충돌이 있을 수 있습니다." >> $log_file 2>&1
fi