cron + 쉘 스크립트로 Github 녹화 자동화

5510 단어 ShellScriptcronGitHub

소개



이전에 Github를 녹화하기 위해 가능한 한 매일 코드를 쓰고 있었던 시기가 있었지만 자동으로 녹색으로 할 수 있다고 생각하는 것이 있었기 때문에 자동으로 Github에 커밋 해주는 시스템 를 만들었습니다.

※ 자신의 손으로 Github를 녹화하는 것은, 손을 움직이는 동기부여가 되기 때문에 그러한 사람에게는 추천하지 않습니다

Github가 초록색이라고 모르는 사람이 뽀뽀했을 때 "이 엔지니어는 적극적으로 활동하고 있구나"라는 인상이 되므로 인상도 좋을까 생각합니다. (얇은 녹색이 계속 줄지어 있는 것은 부자연스럽지만 거기는 적극적으로 다른 프로젝트에서 커밋하고 색을 진하게 해 갑시다 웃음)

↓ 참고까지 7월당부터 이 프로그램을 움직이고 있는 현재의 나의 Github는 이런 느낌이 되고 있습니다.



업무로 다른 프로젝트에 커밋하는 일도 많기 때문에 그들과 좋은 느낌에 중화하고 있군요.

구현 방법



자동으로 할 수 있는 방법은 몇 가지가 있다고 생각합니다만, 이번은 쉘 스크립트를 써, CentOS상에서 cron을 사용해 자동 실행시키는 것을 결정했습니다.

프로그램



그냥 잠자리에 텍스트를 Github에 push 시키는 것이 아니라, 어차피라면 조금만이라도 되도록 하고 싶다고 생각하고, qiita htps : // 코 m / Popu r-ms / Fue d .

app.sh
#!/bin/sh

cd $(cd $(dirname $0) && pwd)

file_name=`date +%Y-%m-%d`
path="$(cd $(dirname $0) && pwd)/posts/${file_name}.md"

if [ ! -e $path ]; then
  items=`curl -s https://qiita.com/popular-items/feed | \
         grep -o '<title>.*</title>\|https://qiita.com/.*?' | \
         sed -e '1d' -e 's/?$//' -e 's/^<title>//' -e 's/<\/title>$//'`

  IFS=$'\n'
  count=1

  for items in `echo "$items"`
  do
    if [ $(( count % 2 )) == 0 ]; then
      title="- [${items}]"
      row=$title$url
      echo $row >> $path
    else
      url="(${items})"
    fi
    count=$(( count + 1 ))
  done

  git add .
  git commit -m "add post ${file_name}.md"
  git push origin master
fi

자동 실행



처음에는 자신의 mac의 launchd를 이용해 자동 실행시키고 있었습니다만, mac를 기동하지 않으면 자동 실행해 주지 않기 때문에, 현재는 개인으로 계약하고 있는 VPS상에서 실행시키고 있습니다.

(엔지니어라면 VPS 정도는 가지고 있겠지.....)

인스톨하고 있는 OS는 CentOS이므로 cron을 이용해 자동 실행시키고 있습니다.
$ crontab -e

에서 매일 9시에 대상 스크립트가 움직이도록 설정합니다.
00 09 * * * /home/hiroki/qiita-trending/app.sh

이제 매일 9시에 Github에 qiita의 트렌드에 실려 있는 투고 목록이 자동으로 push 되게 되었습니다.

결론



이번에 작성한 프로그램은 여기 에 올려놓았습니다.

좋은 웹페이지 즐겨찾기