Jinyoung Hong

Journal of building things, business and life

업무 자동화

  • Day 11 · 실행하기 (5)

    어제 일지를 “내일 아침엔 Actions 목록부터 확인해야겠다”로 끝냈는데,
    아침에 눈 뜨자마자 확인해 보니..
    새벽 1시 50분에 실행됐다 ^^;
    GitHub Actions 예약 지연, 이틀 연속이다.

    수요일 20:17 예약이 GitHub 대기열에서 5시간 넘게 밀려 목요일 새벽에 돈 것.
    스크립트는 실제 실행 시각을 기준으로 요일을 정해서
    목요일 주제인 ‘우월 기능 소개’ 글이 새벽에 올라갔고, 링크 댓글까지 야무지게 달렸다.
    결과적으로 수요일 글은 증발하고, 목요일 글은 새벽 배송 ㅋㅋ

    이틀 연속 이러니 결심했다.
    GitHub 예약은 지연이 들쭉날쭉해서 시간을 당기든 미루든 해결이 안 된다.
    어제 말해둔 플랜 B, cron-job.org로 갈아타기로!

    GitHub Actions 예약 지연 탈출기

    원래는 GitHub이 정해진 시간에 알아서 워크플로를 실행하는 구조였다.
    이제는 외부 예약 서비스(cron-job.org)가 정해진 시간에 GitHub API를 직접 호출해서 실행시킨다.
    대기열을 안 거치니 시간이 정확하다.

    1. 실행용 토큰 발급
      cronjob-trigger라는 이름의 Fine-grained 토큰을 만들었다. 이 저장소만, Actions 읽기/쓰기 권한만 딱.
      터미널에서 curl로 dry_run = 1 호출을 보내서 204 응답과 Actions 실행(#10)까지 확인!
    2. cron-job.org 설정
      매일 21:00(Asia/Seoul)에 GitHub API로 POST, 헤더 4개, 본문은 dry_run = 0. 실패하면 메일 알림이 오게 했다.
      TEST RUN을 돌려보니 204 응답, Actions #11에서 “오늘 이미 게시함”으로 얌전히 건너뜀. (새벽에 이미 올라갔으니까 ^^)
    3. GitHub 예약 제거
      daily-post.yml에서 schedule을 지웠다. 안 지우면 새벽에 또 중복으로 돌 수 있으니까.
      토큰 자동 갱신 단계는 예약 실행 대신 실제 게시 실행(dry_run ≠ 1)에서 돌도록 조건을 바꿨다. 갱신은 여전히 월요일에만!
    4. 뒷정리
      터미널에 남은 토큰 변수는 unset으로 깔끔하게 정리.
    github action 성공 리스트
    cron-job.org GitHub Actions 예약 실행 설정 화면

    예약 시간은 다시 21:00으로 돌아왔다.
    어제는 정각이 붐빈다고 20:17로 피했는데, 이제 대기열을 안 타니 굳이 피할 이유가 없다 ^ㅁ^

    남은 확인

    오늘(목) 21시: 정각쯤 실행이 찍히고 “오늘 이미 게시함”이 뜨면 성공. cron-job.org의 첫 정시 호출 테스트다.
    내일(금) 21시: 드디어 첫 정시 게시! ‘참여 유도 질문’ 글이 21시 직후에 올라오는지, 반말이랑 태그는 잘 붙었는지 볼 예정.

    그리고, 특허

    10월 목표 4번 ‘특허 준비’도 오늘 첫발을 뗐다.
    변리사님과 통화로 상담을 받고,
    특허 검토 요청 자료를 정리해서 메일로 보냈다.
    무슨 내용인지는… 출원 전이라 비밀 ^^
    답장 오면 또 기록해야지.

    봇 돌보기 3일 차.
    내일 저녁 9시엔 제발 제시간에 올라와 주라 ㅠㅠ

    (새벽 배송 사건의 시작은 Day 10 · 실행하기 (4)에서 ^^)