Crontab으로 Git Commit Automation with sh 파일 on M1
Page content
개요
- Mac Crontab으로 SH 파일을 실행하도록 한다.
SH 파일 작성
- 주요 내용은 아래와 같이 작성한다. (파일명 : deploy.sh)
#!/bin/bash
echo "Git Push Starting..."
cd /Users/evan/Desktop/alphaco_test
# Check out repo
git add -A
git commit -m "Automated commit on $(date '+%Y-%m-%d %H:%M:%S')"
git push
수동 업로드
- 수동으로 업로드 하기 위해 파일 권한을 열어준다.
- 777은 소유자, 그룹, 다른 모든 사용자에게 읽기, 쓰기, 실행 권한 부여하는 명령어를 말한다.
chmod 777 deploy.sh
실행
- 해당 파일이 있는 경로에서
deploy.sh
파일을 실행한다.
~$ ./deploy.sh
Crontab 등록
- 싸이트 소개 : https://crontab.guru/
Crontab에 파일 등록하기
- 먼저 아래와 같이 명령어를 실행한다.
crontab -e
- vi 편집기를 활용하여 아래와 같이 파일 스크립트를 실행한다.
* * * * * echo "cron works" >> /Users/evan/Desktop/alphaco_test/test.txt
* * * * * /Users/evan/Desktop/alphaco_test/deploy.sh
Crontab 실행 에러
- 우선, System Settings > Privacy & Security > Full Disk Access에서 일부 앱을 활성화를 한다.
- Terminal
- Cron (크론 등록방법은 아래 글 참조)
Github 인증 에러
- Github 인증 메시지가 계속 뜨게 되면 이제 인증절차를 진행해야 한다.
Github SSH Key
- 터미널 앱을 열고 다음 코드를 붙여넣은 후 이메일 주소 변경
ssh-keygen -t ed25519 -C "your_github_email@email.com"
- 키를 저장할 파일 위치를 묻는 경우 Enter 키 입력
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/evan/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/evan/.ssh/id_ed25519
Your public key has been saved in /Users/evan/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:29ULNHKJ8NEE7vhw0v8f5DzKpXZmCXMdOJsTQ5zGQo8 j2hoon85@gmail.com
The key's randomart image is:
+--[ED25519 256]--+
| . +=+ . |
| + ++B |
| =EO.. |
| + + B . |
| S + o B.o|
| B o B+o.|
| . o . **.|
| .o+=o|
| .+=..|
+----[SHA256]-----+
Add SSH to Github Account
- 아래와 같이 명령어를 실행한 후, 모두 복사한다.
cat id_ed25519.pub
-
Github Account에서 Settings > SSH and GPG keys 값을 찾는다.
-
잘 등록이 되었는지 확인하기 위해 아래와 같이 등록한다.
ssh -T git@github.com
# "Hi your_name! You've successfully authenticated, but GitHub does not provide shell access.
- 마지막 단계로, cron 작업을 설정하기 전에 로컬 디렉토리에서 원격 origin URL을 변경
cd my/folder/path
git remote -v
# origin https://github.com/USERNAME/REPOSITORY.git (fetch)
# origin https://github.com/USERNAME/REPOSITORY.git (push)
- 터미널에서 아래 코드를 사용하여 원격 URL을 HTTPS에서 SSH로 업데이트
git remote set-url origin https://github.com/USERNAME/REPOSITORY.git
정상 반영 확인
- 정상적으로 반영되는지 확인한다.
- test.txt 파일에 계속 데이터가 업로드가 되고 있기 때문에 반영이 가능한 상황이다.