본문 바로가기

MLOps/Development

전장연 알리미 (feat. 지하철 뭐 안타지?) - 2

 

 

 

 

 

전장연 알리미

만약에 모든 지하철 호선을 타도 출근 시간이 똑같다면 어떤 지하철을 탈 것인가?

"음.. 곧 도착하는 지하철을 먼저 타지 않을까요?"

맞는 말이다. 물론 전장연 아침 지하철 승하차 시위가 일어나기 전 까지는 말이다.

그렇다면 정답은

"시위를 하지 않는 호선의 지하철을 타는 것"이, 지금 시대에 정답이다.

 

며칠 전까지 사당에서 출근해서 2호선과 4호선 중에 4호선만 고집하다 출근이 늦어진 나 때문에 만든 건 절대 아니라고 말하지 않는다.


1편을 보지 않았다면 먼저 보고 오기 바란다.

 

전장연 알리미 (feat. 지하철 뭐 안 타지?) - 1

전장연 알리미 만약에 모든 지하철 호선을 타도 출근 시간이 똑같다면 어떤 지하철을 탈 것인가? "음.. 곧 도착하는 지하철을 먼저 타지 않을까요? 맞는 말이다. 물론 전장연 아침 지하철 승하차

junnyhi.tistory.com

프로세스

1. 토큰 갱신

2. 나에게 메시지 전송

 

1. 토큰 갱신하기

카카오 토큰

  • 1편에서 말한 토큰 만료 문제를 해결하는 것은 매우 간단하다.
  • 일단, 카카오에서 처음 제공하는 토큰은 아래 2 가지로 구성되어 있다.

각 토큰은 만료 시간을 가지고 있다

  • Access Token : 6시간
  • Refresh Token : 2개월

전장연 알리미 같은 경우, 하루에 한 번만 돌리기 때문에 다음날에는 무조건 토큰이 만료되어 있다.

  • 따라서 Acees Token을 갱신시켜야 하는데, 방법은 Refresh Token에 있다.

  • 결론적으로는 보조 열쇠로 메인 열쇠를 계속 갱신시킬 수 있는 것이다.
  • Refresh Token은 만료가 얼마 안남은 경우, response에 담겨 온다고 한다.

간단하게 표현하자면 아래 그림 정도?..

코드는 그닥 어려운 내용이 없기 때문에 굳이 따로 포스팅하지 않는다.

 

GitHub - heohyunjun/NDA_notice_with_github_action

Contribute to heohyunjun/NDA_notice_with_github_action development by creating an account on GitHub.

github.com


매일 새벽에 메시지 전송하기 (Github Acrtion을 곁들인)

코드를 Public으로 공유하고 싶다 & Github Action 사용하고  싶다. & API KEY는 노출하기 싫다.

  • 라고 삼박자가 맞는다면 Github Secrets를 사용하면 된다.

Main.py 코드를 보면 아래 처럼 환경변수를 가지고 오는 부분이 있다.

    api_key = os.getenv('REST_API_KEY')
    refresh_token = os.getenv('REFRESH_TOKEN')

그럼 이 값들을 어디서 가져오냐면

  • 개별 Repo에서 secrets Key를 등록해서 yaml에서 설정하면 된다.
  • 아래 env부분에서 다음과 같이 설정한다. " {코드에서 호출할 변수명} : {{ secrets. 시크릿에서 등록한 키 이름 }}

name: nda_notice

on:
  schedule:
      - cron: '00 17 * * *'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Set up Python
      uses: actions/setup-python@v3
      with:
        python-version: "3.9"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
    - name: Run test.py
      run: |
        python main.py
      env:
        TOKEN_FOR_ACTION: ${{ secrets.TOKEN_FOR_ACTION }}
        REST_API_KEY: ${{ secrets.REST_API_KEY }}
        REFRESH_TOKEN: ${{ secrets.REFRESH_TOKEN }}

그럼 매일 새벽 1시에 실행하려면?

  • yaml에서 on.schedule.cron에서 시간 설정을 하면 된다.
  • cron 은 UTC 기준이다.
    • 즉, 아래는 17 : 00분,  한국 시간은 +9시간을 한 오전 1시가 된다. 
on:
  schedule:
      - cron: '00 17 * * *'
      
 """
 ┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
* * * * *

"""

그럼 이제 매일 새벽 1시마다 오늘의 전장연 알림을 볼 수 있겠군?

결론은 이것만으론 "못한다"

다 하고 나서 깨달은 사실인데 Github action의 Public IP를 고정할 수 없는 게 문제다.

그게 왜 문제임?

  • KaKao Developmnet에서 호출할 IP를 등록해야 하는데, IP가 계속 바뀌니 뭐..

그럼 무료 호스팅 서버에 올리 세...

  • 갈! 무료 호스팅은 더 재밌는 걸 하기 위해 남겨 두고 로컬에서 돌리든가 할 예정이다.

Reference

깃허브 공식 문서

카카오 공식 문서

변성윤님의 Github Action 사용법