0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

中級者向け:ハッカソンの開発効率UP!GitHub Actionsで自動テストを導入する方法

Posted at

はじめに

GitHub Actionsは、ソフトウェアの自動化を支援する強力なCI/CDツールです。

これにより、リポジトリ内でコードが更新されるたびにビルドやテストが自動的に行われ、開発の効率が向上します。

本記事では、Pythonを用いたGitHub Actionsのワークフローを構成し、テストが自動で実行されるプロセスを備忘録としてまとめます。

知識整理

GitHub Actionsとは?

GitHub Actionsは、GitHub上でコードのビルドやテスト、デプロイなどのタスクを自動化するためのCI/CDプラットフォームです。

スクリーンショット 2024-10-25 12.44.01.png
引用画像:https://blog.studysapuri.jp/entry/2024/07/09/101443

GitHubリポジトリにワークフローファイルを設定するだけで、プルリクエストやプッシュ時に指定されたアクションがトリガーされ、ワークフローが実行されます。

これにより、手作業で行っていた一連の作業を自動化し、開発スピードと効率を向上させることができます。

CI/CDとは?

CI(Continuous Integration)は、コードの変更をリポジトリに継続的に統合し、バグやエラーの早期発見を目指すプロセスです。

スクリーンショット 2024-10-25 12.46.47.png
引用画像:https://codezine.jp/article/detail/11083

CD(Continuous DeploymentまたはContinuous Delivery)は、CIでテストされたコードを自動的にデプロイするプロセスを指し、迅速なリリースを実現します。

ディレクトリ構成

Pythonを使ったGitHub Actionsワークフローのディレクトリ構成は、以下の通りです。

/<プロジェクトルートディレクトリ>
├── .github
│   └── workflows
│       └── python-app.yml   # GitHub Actionsのワークフローファイル
├── main.py                  # Pythonスクリプト
├── test_main.py              # テストコード
├── requirements.txt          # 依存ライブラリ
└── README.md                 # プロジェクトの概要(任意)

今回は、README.mdは任意のため、作成していません。必要に応じて作成してください。

ハンズオン: PythonでGitHub Actionsを構成する

以下の手順で、GitHub Actionsを用いたPythonの自動テストワークフローを作成します。

Step 1: GitHubリポジトリを作成する

GitHubにログインし、新しいリポジトリを作成します。

スクリーンショット 2024-10-25 12.52.18.png

リポジトリ名と説明を入力し、「Create repository」をクリックします。

Step 2: GitHub Actions ワークフローファイルを作成する

作成したリポジトリのトップページで、「Actions」タブに移動します。

スクリーンショット 2024-10-25 12.53.39.png

Set up a workflow yourself」をクリックし、新しいYAMLファイルの編集画面を開きます。

スクリーンショット 2024-10-25 13.07.44.png

python-app.yml という名前で、以下の内容を入力します

name: Python Application CI

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Check out the code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.x'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Run Tests
        run: |
          pytest

このワークフローファイルは、リポジトリにプッシュやプルリクエストがあるたびにPython環境をセットアップし、テストを実行します。

Step 3: Pythonコードとテストファイルを作成する

ここでは、main.py ファイルを作成し、シンプルな関数を追加します。

mai.py
def add(x, y):
    return x + y

if __name__ == "__main__":
    print(add(3, 5))

次に、作成した関数のテストを記述します。

test_main.py
from main import add

def test_add():
    assert add(3, 5) == 8
    assert add(-1, 1) == 0

最後に、依存関係を記述した requirements.txt ファイルを作成します。

requirements.txt
pytest

Step 4: 変更をコミットし、GitHubにプッシュする

ターミナルを開き、以下のコマンドを実行して変更をコミットし、リポジトリにプッシュします。

git add .
git commit -m "Add Python script and test"
git push origin main

これにより、リポジトリが更新され、GitHub Actionsがトリガーされます。

GitHub Actionsの実行を確認する

GitHubのリポジトリに戻り、「Actions」タブをクリックします。更新が反映されている場合、以下のような画面が表示されます。

スクリーンショット 2024-10-25 13.26.22.png

ワークフローが成功すると、ステータスとして緑色のチェックマークが表示されます。

スクリーンショット 2024-10-25 13.27.17.png

「Run Tests」ステップでテストが実行され、すべてのテストがパスしていることを確認してください。

スクリーンショット 2024-10-25 13.35.29.png

ワークフローが問題なく完了していれば、GitHub ActionsによるPythonテストの自動化が成功です。

============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /home/runner/work/GitHub-Actions/GitHub-Actions
collected 1 item

test_main.py .                                                           [100%]

============================== 1 passed in 0.01s ==============================

1件のテストが実行され、すべて成功 (1 passed) していることが示されています。

まとめ

初めてGitHub Actionsを触った時はどれが何をしているかさっぱりわからなかったのですが、記事としてアウトプットすることで仕組みが理解できました。

次回のITスクールのハッカソンで、GitHub Actionsを活用し、リポジトリへのコード更新時に自動でビルドやテストが行われるようにしたいと考えています。

Pythonのテスト自動化ワークフローを設定し、開発効率向上を目指します。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?