pythonで作った天気予報のプログラムをGithub Actionsで毎日決められた時間に実行しようとして設定をしてみたのですが、最初は上手く行かず、あれこれ試して最終的にできたので備忘録&戒めのつもりでブログにその過程を残しておきます。
まずはプログラムの全貌
name: Daily Weather Notification
# スケジュールを設定
on:
schedule:
- cron: "0 23 * * *" # 毎日朝8時に実行 (日本時間)
jobs:
run-weather-script:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: "3.x"
- name: List files in the root directory
run: ls -al
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
working-directory: ${{ github.workspace }}
- name: Run weather script
env:
LINE_NOTIFY_ACCESS_TOKEN_LIST: ${{ secrets.LINE_NOTIFY_ACCESS_TOKEN_LIST }}
run: |
python ScrapingYahooWeather.py
躓いたところ
その1:requirements.txtが見つからないエラー
最初はそもそもファイルを作っていなかった・・。
しかし、作っても再度プッシュして反映したつもりだけど、同じエラーの繰り返し
それで、working-directory: ${{ github.workspace }}を指定しても、actions/checkout@v2からactions/checkout@v3へ変更しても、エラーが消えることがありませんでした。
よく見たらファイルの中身を更新してプッシュしても、実際には変わらなかったです。
その後、以下をためしたら無事動いてくれました。
※尚、こちらの設定は「mainブランチがpushされたら」というトリガーになっているようです。
そのためこの設定があることで、mainブランチが更新されプッシュされるたびに、Jobが実行されることになります。本当はそうしたくありません。根本原因は恐らくGithub Actionsのキャッシュにあると思います。
on:
push:
branches:
- main
その2:設定した環境変数を上手く取得できず401エラー
こちらのエラーは自分の勘違いで設定ミスによるエラーでした。
「Repository secrets」として定義しないといけないのに、「Environment secrets」として定義してしまったことが原因でした。
Repository secretsの設定方法
- GitHubリポジトリのページに移動します。
Settings
タブをクリックします。- 左側のメニューから
Secrets and variables
>Actions
を選択します。 New repository secret
ボタンをクリックします。Name
フィールドにLINE_NOTIFY_ACCESS_TOKEN_LIST
と入力します。Value
フィールドに以下の値をそのまま入力します。
コメント