skydum

個人的な作業記録とか備忘録代わりのメモ

GitHub ActionsでRyeを使う

会社ではpipenvを使っていてRyeは使っていないが、個人でpythonを使うときはryeを使っている。

GitHub Actionsを使いっていて、Ryeを使おうとしたら色々失敗して困ったので備忘録としてGitHub ActionsでRyeを使えるようにするためのworkflowを記録しておく。

Ryeを使ったプロジェクトのサンプル

python3.12+ryeを使って環境を構築し、pytestでテストを実行するサンプル。

name: pytest with github actions

on: [push]

jobs:
    build:
        runs-on: ubuntu-latest
        
        steps:
            - name: Checkout
              uses: actions/checkout@v2
            
            - name: Set up Python 3.12
              uses: actions/setup-python@v2
              with:
                python-version: "3.12"
            
            - name: Install rye
              run: curl -sSf https://rye-up.com/get | RYE_INSTALL_OPTION="--yes" bash
            
            - name: activate rye
              run: |
                source $HOME/.rye/env
                rye sync
                source .venv/bin/activate
                rye run pytest tests/test_main.py
            
            - name: Setup tmate session for debugging
              if: failure()
              uses: mxschmitt/action-tmate@v3

以下の所はGitHub Actionsが失敗したときに、構築途中のコンテナの中にsshで入ることができるようにするためのもの。 GitHub Actionsのデバッグが終わったら消してしまっても良いと思う。

            - name: Setup tmate session for debugging
              if: failure()
              uses: mxschmitt/action-tmate@v3

最初失敗した理由

公式サイトの手順をよく読みましょう、よく見ずに実行した結果失敗した。

最近ryeはpip install ryeで入る様になったと思っていたので、pip installしたらryeのインストール時にPyYAMLが依存パッケージとして読み込まれるがPyYAMLの5.x.xはpython3.12だとうまく動かない?ようで失敗していた。
PyYAML6.0ならpython3.12で問題ないようだったがryeが6.0.0には未対応でこちらもだめだった。
公式サイト(https://rye-up.com/guide/installation/#installing-rye)のインストールマニュアルを見るとpypiからインストールできると書いていない…。
pypiにあるryeは一体誰が提供してるものなのか謎…。

調べてみたが開発者本人ではないように見えるのでちょっとよくわからない。

パッケージ管理に使われるRye(https://rye-up.com/)と全く関係のない別プロジェクトみたいだ。