JavaScriptを有効にしてください

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

 ·   4 min read

はじめに

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を作成する。

1
2
3
4
5
import numpy as np

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

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

1
[4 6]

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

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

1
numpy >= 1.2

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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形式のファイルを置く。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
name: Action Sample

on:
  push:
    branches: 
      - master
  workflow_dispatch:

jobs:
  numpy-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/[email protected]
      - name: Setup Python
        uses: actions/[email protected]
        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/[email protected]でPython環境を指定する。
python-version: '3.8'でバージョンを指定している。
architecture: 'x64'でアーキテクチャを指定する(x64とx86が指定可能。デフォルトはx64)。

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

1
2
      - name: Get Python version
        run: python -V

GitHub Actionsを実行する

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

1
2
3
$ 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でPythonスクリプトを実行した。
requirements.txtを用意することで、標準以外のライブラリも使用できる。

参考

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

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

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。Twitterで新着記事を配信中です