Skip to content

Commit 971e46a

Browse files
authored
feat: Heroku Scheduler から GitHub Actions への定期タスク移行 (#1803)
* feat: Heroku Scheduler から GitHub Actions への定期タスク移行 - daily.yml に upcoming_events:aggregation タスクを追加(毎日 0:00 UTC / 9:00 JST) - weekly.yml を新規作成し statistics:aggregation タスクを追加(毎週月曜 1:00 AM UTC / 10:00 AM JST) - README.md を更新し、Heroku Scheduler から GitHub Actions への移行を反映 * refactor: run を env より先に配置し、可読性を向上 - レビュー時に実行内容が最初に見えるように run を先に配置 - -a オプションを --app に変更(より明示的) - 1行で収まるコマンドは行継続を削除 * fix: 西条の Doorkeeper URL を修正 - saijo.doorkeeper.jp → coderdojo-saijo.doorkeeper.jp - 正しい URL に修正してイベント取得を可能にする
1 parent 98a22b0 commit 971e46a

4 files changed

Lines changed: 51 additions & 8 deletions

File tree

.github/workflows/daily.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,35 @@ jobs:
4545
echo "FOUND_NEWS=false" >> $GITHUB_OUTPUT
4646
fi
4747
48+
run-on-heroku:
49+
needs: daily
50+
runs-on: ubuntu-latest
51+
timeout-minutes: 15
52+
53+
steps:
54+
- name: 📦 Install Heroku CLI
55+
run: curl https://cli-assets.heroku.com/install.sh | sh
56+
57+
- name: 📅 Run upcoming_events:aggregation on Heroku
58+
run: |
59+
heroku run rails upcoming_events:aggregation --app $HEROKU_APP_NAME
60+
env:
61+
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
62+
HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}
63+
4864
deploy:
4965
needs: daily
5066
if: ${{ needs.daily.outputs.FOUND_NEWS == 'true' }}
5167
# TODO: ubuntu-latest image needs to install heroku CLI to deploy.
5268
# https://github.com/AkhileshNS/heroku-deploy/issues/188
5369
runs-on: ubuntu-22.04
54-
70+
5571
steps:
5672
- name: ☑️ Checkout code
5773
uses: actions/checkout@v4
5874
with:
5975
ref: main
60-
76+
6177
- name: 🚀 Deploy to Heroku
6278
uses: akhileshns/heroku-deploy@v3.14.15
6379
with:

.github/workflows/weekly.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: Weekly Workflow
2+
3+
on:
4+
schedule:
5+
# 毎週月曜 1:00 AM UTC (日本時間 10:00 AM)
6+
- cron: '0 1 * * 1'
7+
# Allows you to run this workflow manually from the Actions tab
8+
# https://docs.github.com/en/actions/managing-workflow-runs/manually-running-a-workflow
9+
workflow_dispatch:
10+
11+
jobs:
12+
run-on-heroku:
13+
runs-on: ubuntu-latest
14+
timeout-minutes: 15
15+
16+
steps:
17+
- name: 📦 Install Heroku CLI
18+
run: curl https://cli-assets.heroku.com/install.sh | sh
19+
20+
- name: 📊 Run statistics:aggregation on Heroku
21+
run: |
22+
heroku run rails statistics:aggregation --app $HEROKU_APP_NAME
23+
env:
24+
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
25+
HEROKU_APP_NAME: ${{ secrets.HEROKU_APP_NAME }}

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,16 +173,18 @@ bundle exec rails podcasts:upsert
173173

174174
<div id='howto-develop-jobs'></div><br>
175175

176-
### [:alarm_clock:](#howto-develop-jobs) 定期的に実行されるスクリプト (Heroku Scheduler)
176+
### [:alarm_clock:](#howto-develop-jobs) 定期的に実行されるスクリプト (GitHub Actions)
177177

178-
以下のコマンドは上記 CI とは関係なく、定期的に実行されます
178+
以下のコマンドは上記 CI とは関係なく、GitHub Actions で定期的に実行されます
179179

180180
```console
181-
# 【毎日】近日開催のイベント収集 (Daily at 9:00 PM UTC)
181+
# 【毎日】近日開催のイベント収集 (Daily at 0:00 UTC / 9:00 JST)
182+
# 実行タイミング: .github/workflows/daily.yml
182183
$ bundle exec rails upcoming_events:aggregation
183184

184-
# 【毎週】統計情報ページ用のデータ収集 (Daily at 1:00 AM UTC)
185-
$ [ $(date +%u) = 1 ] && bundle exec rails statistics:aggregation
185+
# 【毎週】統計情報ページ用のデータ収集 (Weekly on Monday at 1:00 AM UTC / 10:00 AM JST)
186+
# 実行タイミング: .github/workflows/weekly.yml
187+
$ bundle exec rails statistics:aggregation
186188
```
187189

188190

db/dojo_event_services.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
- dojo_id: 350
3838
name: doorkeeper
3939
group_id: 104819
40-
url: https://saijo.doorkeeper.jp/
40+
url: https://coderdojo-saijo.doorkeeper.jp/
4141

4242
# SAGA @ 駅前中央(佐賀県佐賀市)
4343
- dojo_id: 349

0 commit comments

Comments
 (0)