メインコンテンツへスキップ

GitHub ActionsでPythonスクリプトを実行する

·1527 文字·4 分
目次

はじめに
#

GitHub Actionsでリポジトリ内のPythonスクリプトを自動実行する方法をまとめた。

GitHubにはあらかじめ設定しておいた処理を自動実行するGitHub Actionsという機能がある。設定方法の概要は以下の記事を参照。 GitHub Actionsに入門する – Helve Tech Blog

この記事では以下について述べる。

  • GitHub ActionsでPythonスクリプトを実行する方法
  • GitHub Actions実行環境にPythonライブラリをインストールする方法

ファイルの準備
#

主な手順は次の通り。

  1. 実行するPythonスクリプトを作成
  2. 必要なPythonライブラリの設定ファイル (requirements.txt) を作成
  3. GitHub Actionsの設定ファイル (YAML) を作成

以下、順に解説し、最後にPythonスクリプトを実行できたことを確認する。

Pythonスクリプトの作成
#

まず、GitHub上に空のリポジトリを作成し、ローカルにcloneする。 この状態で、リポジトリのルートディレクトリに次のPythonスクリプトpython-sample.pyを作成する。

import numpy as np

a = np.array([1, 2])
b = np.array([3, 4])
print(a + b)

ちなみに、実行結果は以下の通りになる。

[4 6]

Pythonライブラリ設定ファイルの作成
#

Python標準以外のライブラリを使用したい場合には、設定ファイル (requirements.txt) を作成する。 ここではNumPyをインストールするため、リポジトリのルートディレクトリに以下のrequirements.txtを作成する。

numpy >= 1.2

ちなみにrequirements.txtを作成しないと実行環境にNumPyがインストールされないため、GitHub Actions実行時に以下のエラーが発生する。

Run python python-sample.py
  python python-sample.py
  shell: /usr/bin/bash -e {0}
  env:
    pythonLocation: /opt/hostedtoolcache/Python/3.8.10/x64
    LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.8.10/x64/lib
Traceback (most recent call last):
  File "python-sample.py", line 1, in <module>
    import numpy as np
ModuleNotFoundError: No module named 'numpy'
Error: Process completed with exit code 1.

GitHub Actions設定ファイルの作成
#

最後に、GitHub Actions設定ファイルを作成する。 リポジトリに/.github/workflows/というフォルダを作成し、次のgha-sample.ymlというYAML形式のファイルを置く。

name: Action Sample

on:
  push:
    branches: 
      - master
  workflow_dispatch:

jobs:
  numpy-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
          architecture: 'x64'
      - name: Get Python version
        run: python -V
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run Python
        run: python python-sample.py

この設定ファイルはpython-sample.pyを実行するものである。

トリガーイベントは2つあり、masterブランチへのpushと、GitHub上からの手動実行 (workflow_dispatch) である。

uses: actions/setup-python@v2でPython環境を指定する。 python-version: '3.8'でバージョンを指定している。 architecture: 'x64'でアーキテクチャを指定する(x64とx86が指定可能。デフォルトはx64)。

以下はPythonのバージョンを表示するだけなので、省略してよい。

      - name: Get Python version
        run: python -V

GitHub Actionsを実行する
#

作成したファイルをGitHubにpushすると、GitHub Actionsに設定したPythonスクリプトが実行される。(上記のファイルではpushがトリガーイベントになっているため、このpushで実行される)。

$ git add .github/workflows/sample.yml
$ git commit -m "Add GitHub Actions sample."
$ git push

GitHub Actions実行結果の確認
#

GitHubのリポジトリの画面を開き、“Actions"タブで実行結果を確認できる。 画像下部の"Run Python"で実行結果が[4 6]となっており、スクリプトを実行できている。

GitHub Actionsの実行結果
GitHub Actionsの実行結果

まとめ
#

GitHub ActionsでPythonスクリプトを実行した。 requirements.txtを用意することで、標準以外のライブラリも使用できる。

参考
#

Python のビルドとテスト - GitHub Docs

GitHub Actions設定ファイルの詳細は以下の記事を参照。 GitHub Actionsに入門する – Helve Tech Blog

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

GitHub Actionsに入門する
·2212 文字·5 分
GitHub Actionsでトリガーイベントを設定し、簡単なLinuコマンドを実行する方法をまとめた。
Gitコマンドの個人的まとめ(ブランチ利用なし)
·3222 文字·7 分
個人的によく使用するGitのコマンドをまとめた(ブランチに関連するコマンドを除く)。
Condaの仮想環境をYAMLファイルに保存する
·2095 文字·5 分
Condaで構築した仮想環境をYAML形式のファイルに保存し、再構築する方法を解説する。
PythonでJSONを扱う
·1099 文字·3 分
Pythonの標準ライブラリjsonを使って、JSONデータを辞書型データとして扱う方法を解説する。
非線形最適化ソルバIPOPTのアウトプットの読み方
·2049 文字·5 分
主双対内点法を用いた非線形最適化ソルバIPOPTのアウトプットの読み方を解説する。
SphinxでPython docstringからドキュメントを自動生成する
·2014 文字·5 分
ドキュメント生成ツールSphinxを使って、Pythonスクリプトのクラスや関数のdocstringからHTMLドキュメントを自動生成する方法を解説する。