전체/개발지식

크론탭 스케줄링사용하여 github auto commit push 자동 잔디밭 만들기

effortDev 2020. 6. 2. 18:57


github 잔디밭을 매일 만들어보자. (매일 파일이 생성되는 개발일기장을 만들어보자)


매일 파일이 하나씩 자동생성하여 github에 commit, push하는 sh 파일을 만들고 crontab으로 스케줄링을 걸것이다.


Github 자동 배포 설정하기


AWS EC2 Ubuntu Linux 18.04로 진행하였다.

 


1. git 설치



1
2
3
4
5
6
7
$ sudo apt-get install git
 
$ git --version
 
$ git config --global user.name "shlee0882"
 
$ git config --global user.email "shlee0882@gmail.com"
cs




2. ssh key 생성



1
2
3
4
5
6
7
8
9
$ ssh-keygen -t rsa -"shlee0882@gmail.com"
 
# 엔터 3번 이상 칩니다.
 
$ cd /home/ubuntu/.ssh/
 
$ cat id_rsa.pub
 
# ssh-rsa AAAAB........ 내용 복사한다.
cs






ssh key를 생성 후 값을 복사해 Settings > SSH and GPG keys > SSH keys > New SSH key > 추가 후 저장한다.










4. git clone ssh type



새로운 github 레파지토리를 생성한다.







SSH git repository 주소를 복사 한다.


1
2
# ssh git repository 주소를 clone 한다.
$ git clone git@github.com:shlee0882/git-diary.git
cs

git clone 이 잘 되었는지 확인한다.




5. 스케줄링 sh파일 작성


1
2
3
4
5
$ mkdir git-sch
 
$ cd git-sch
 
$ vi git-sch.sh
cs


git-sch 라는 디렉토리 안에 스케줄링 쉘(sh) 파일을 만들어 넣어놓는다.


git-sch.sh 파일 내용은 다음과 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# git-sch.sh
 
Y=$(date +%Y)
M=$(date +%m)
D=$(date +%d)
 
Ym=$Y-$M
Ymd=$Y-$M-$D
GitRep="git-diary"
 
HomeDir="/home/ubuntu"
GitDir="$HomeDir/$GitRep"
FileDir="$HomeDir/$GitRep/$Ym"
FileNm="$Ymd".md
 
mkdir -p $FileDir
 
echo "### $Ymd 일기" >> $FileDir/$FileNm
 
cd $GitDir
git add .
git commit -"commit $FileNm"
git push origin master
cs


1
2
3
# 권한 부여
 
$ chmod +x git-sch.sh
cs



6. 쉘파일 실행



쉘파일 디렉토리 위치에서


1
2
# 작성한 쉘파일 실행 > 테스트
$ ./git-sch.sh
cs


github repository에 접속해 push가 잘되었는지 확인한다.




성공적으로 push 된것을 확인했다.




7. 날짜 확인하기



크론탭으로 스케줄링 걸기 전에 현재 시간을 알아본다.


1
2
3
$ date
 
# Tue Jun  2 09:03:18 UTC 2020
cs



우리나라 시간대로 바꿔준다.

일본과 우리나라는 같은 시간대를 사용하므로 Japan으로 바꿔준다.



1
2
3
4
5
6
$ cd  /usr/share/zoneinfo/
$ ls
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
 
$ date
# Tue Jun  2 18:53:40 JST 2020
cs




시간을 변경했으니 크론탭 서비스를 재시작해준다.




1
2
3
$ sudo service cron restart
 
$ sudo /etc/init.d/crond restart
cs




8. 크론탭 스케줄링 테스트 하기



1
2
3
4
5
# 크론탭 리스트 확인
$ crontab -l
 
# 크론탭 등록 및 수정
$ crontab -e
cs



크론탭 등록 시 에디터를 선택하는 창이 나오는데 

nano editor 1번을 선택하고 enter를 친다.


들어가면 주석으로 어떻게 사용하는지 상세하게 나와있다.

주석 맨 아래로 내려가 스케줄링 걸 작업을 적고 저장한다.


일단 크론탭이 잘 작동하는지 기본 테스트를 해보자.



1
2
3
4
$ crontab -e
 
# 추가
* * * * * echo "cron works" >> /home/ubuntu/test.txt
cs




파일을 저장후 나온다.

(ctrl+x, y, enter를 누른다) 


1
$ cat /home/ubuntu/test.txt
cs





크론탭에 매분마다 실행될수 있게 등록하여

시간이 지나면 cron works에 계속 찍히는 것을 확인할 수 있다.


크론탭이 정상적으로 동작하는 것을 확인했으므로 

테스트용 등록 크론탭을 지운다.


1
$ crontab -r
cs



9. 크론탭으로 github push 스케줄링 걸기


1
2
3
4
5
$ crontab -e
 
# 추가
# 분 시 일 월 요일 sh파일 
30 18 * * * /home/ubuntu/git-sch/git-sch.sh
cs



해당시간에 크론탭이 sh파일을 실행하여 github으로 push작업이 될것이고



매일 매일 제목이 붙은 github diary(일기장)이 생성될 것이다.