s's-nook:

uvでプロジェクト管理しているPythonスクリプトをgithub actionsで実行する

uvでプロジェクト管理しているPythonスクリプトをGitHub Actionsで実行する環境を整えたので紹介します。

Github Actionsは無料でちょっとしたスクリプトの定期実行にとても便利なので重宝しています。

今回はChatGPT apiを定期的に叩くタスクを想定して、OpenAIのAPI KeyをGithub Secretsに格納して参照することろまで解説します。

プロジェクト概要

ディレクトリ構造

~/py-batch ❯ tree -L 1 -a . ├── .python-version ├── .venv ├── main.py ├── pyproject.toml └── uv.lock

pyproject.toml

[project] name = "py-batch" version = "0.1.0" requires-python = ">=3.9" dependencies = [ "langchain>=0.3.14", "openai>=1.59.6", ] [dependency-groups] dev = [ "transformers>=4.47.1", ]

main.py

import os API_KEY = os.environ.get("API_KEY") print("Hello from github actions!")

利用する setup テンプレート

uvの開発元であるAstral社が以下でgithub actions用のsetupを提供しているのでこちらを利用します。

https://github.com/astral-sh/setup-uv

ワークフローyaml全体

コード全体は以下になります。

name: py-batch on: workflow_dispatch: on: schedule: - cron: "0 0 * * *" # 毎日 0時 に実行 jobs: command: name: exec python script runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install the latest version of uv uses: astral-sh/setup-uv@v5 with: version: "latest" - name: run python script env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} run: uv run main.py

actions/checkout stepでコードをcloneし、 astral-sh/setup-uv stepを入れることで簡単にuv環境を整えることができます。

astral-sh/setup-uv を用いている場合、GitHub Actions上でpython環境を整える際によく利用する actions/setup-python をstepに加える必要はないようです。
Pythonのバージョンを指定してたい場合は、uvコマンド経由で指定することが可能です。

- name: Install the latest version of uv uses: astral-sh/setup-uv@v5 with: enable-cache: true - name: Install Python 3.12 run: uv python install 3.12

無事実行することができました

%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-01-11_12.04.09.png

最後に

雑談ですがuvの環境を整えていて思ったこと↓

広告