깃헙 잔디 탈모를 치료해보자!

maketheworldwise·2022년 11월 18일
8


🌑 . 프로젝트 동기

1일 1커밋을 지키고자 했지만 내가 이 규칙을 지키기에는 너무 게으르다는 생각이 들었다. 게다가 의미있는 커밋만을 남기려다보니 쉽지 않았다.

그렇게 시간이 지날 수록 나의 깃헙 잔디는 심각한 탈모 증상이 보이기 시작했다. 탈모를 치료하기 위해 내가 어떤 행동을 취해야할지 고민하다가 결국 - "그럼 내가 안해도 자동으로 1일 1커밋을 수행하게 만들면 되지 않을까?"라는 결론에 도달하고 말았다.

(물론 하루에 한번 공부하자는 1일 1커밋 목표에 꼼수를 부린거긴 하지만 자동화해서 불편한 것을 개선하는 것은 개발자의 역할이니까... ⭐️)

🌒 . 구현해보자!

내가 사용한 것은 Github Actions 기능이다. 생각보다 간단하다. (가장 중요한 부분만 주석으로 남겨보았다.)

name: 1 Day 1 Commit Scheduler

on:
  # 5분마다 돌아가도록 스케줄링 (cron)
  schedule:
    - cron: "*/5 * * * *" 

jobs:
  plant_the_grass:
    runs-on: ubuntu-latest
    steps:
      - name: Set up
        uses: actions/checkout@v3
        with:
          # Github Actions에서 제공해주는 변수를 이용해 자신의 계정명과 Repository 정보를 가져옴
          repository: ${{ github.repository }}
          
          # 저장소에 Push 하기 위해 자신의 Github를 컨트롤할 수 있는 토큰을 가져옴
          token: ${{ secrets.GH_TOKEN}}

      - name: Run script
        run: |
          chmod +x ./scripts/plant_the_grass.sh
          ./scripts/plant_the_grass.sh
        shell: bash

      - name: Commit And push
        run: |
          git add .
          git config --global user.email "github-actions@github.com"
          git config --global user.name "github-actions"
          git commit -am "I planted the grass 🌱"
          git push

그리고 실행되는 스크립트는 다음과 같다.

#!/bin/bash

current_year=`date +%Y`
current_month=`date +%b`

monthly_file="$current_month.md"

if [ ! -d $current_year ]; then
  mkdir $current_year
fi

cd $current_year

echo -e Today\'s commit date ✨ : `date` \\n >> $monthly_file

참고 사항!

위의 내용들은 테스트하기 위해 5분에 한번씩 동작하도록 구성해놓았다. 토큰을 등록하는 방법과 매일 한번씩 돌아가도록 구성한 내용은 plant-the-grass Repository에 작성해두었다. (+추가적으로 Github Actions가 적용되기까지 시간이 걸린다. 심지어 UTC 기준으로 동작하기 때문에 정확히 한국 시간으로 동작하지 않다보니 인내가 좀 필요한 것 같다... 😉)

🌓 . 내가 직면했던 문제

처음에 workflow를 작성한 뒤에 제대로 코드가 돌아가고있다 생각했지만 중간에 다음과 같은 에러가 발생했었다.

Node.js 12 actions are deprecated. For more information see: 
https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. 
Please update the following actions to use Node.js 16: actions/checkout@v2

문구에 적힌 안내사항에 따라 공식 문서에 들어가 확인해보면 - 모든 Github Actions는 Node12가 아닌 Node16에서 돌아간다는 이야기가 적혀있었다.

하지만 나는 단순히 쉘 스크립트를 ubuntu에서 동작하도록 하는 것이기 때문에 Node 버전과 관련없다고 판단하여 더 구글링해보니 actions/checkout@v3로 업데이트해주면 해결할 수 있다는 글을 볼 수 있었다.

🌔 . 구현 결과

겨우 하루가 지났을 뿐이라서 계속 동작을 주기적으로 확인해봐야할 것 같다. 😀


22.11.22

3일째 커밋은 제대로 이루어지는데 내 잔디가 이상하게도 계속 비워지는 현상이 있었다. 무슨 문제일지 찾아보니 scheduler.yml에 커밋할 때 이메일 계정과 이름을 올바르게 설정해야한다는 것을 잊고있었다.. 바보같은 나...

git config --global user.email "maketheworldwise@gmail.com"
git config --global user.name "maketheworldwise"

후 잔디 치료 부작용 해결한거 같긴한데... 경과를 더 지켜봐야할 것 같다... 🥹

🌕 . 이 글의 레퍼런스

profile
세상을 현명하게 이끌어갈 나의 성장 일기 📓

3개의 댓글

comment-user-thumbnail
2022년 11월 21일

블로그 작성 스타일이 마음에 드네요!

1개의 답글
comment-user-thumbnail
2023년 5월 19일

저도 깃헙액션을 통해 탈모치료를 하고싶어요!

답글 달기