Traffine I/O

日本語

2023-03-03

GitHub ActionsでBlackを統合する方法

はじめに

この記事では、BlackをGitHub Actionsと統合する方法について詳しく説明します。

BlackのためのGitHub Actionsの設定

PythonコードをフォーマットするためにBlackを使用するGitHub Actionsを設定する手順は次の通りです。

  1. ワークフローファイルの作成

リポジトリ内に.githubという名前のディレクトリを作成し、その中にworkflowsという名前の別のディレクトリを作成します。workflowsディレクトリ内にblack.ymlという新しいファイルを作成します。このファイルはワークフローを定義します。

  1. ワークフローの定義

black.ymlファイル内で、ワークフローを定義します。以下はワークフローの構成例です。

.github/workflows/black.yml
name: Code Formatting with Black

on: [push, pull_request]

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

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

      - name: Install Black
        run: pip install black

      - name: Check code formatting with Black
        run: black --check .

この設定の詳細を見てみます。

  • ワークフローの名前は「Code Formatting with Black」
  • pushpull_requestの両方のイベントでトリガーされる
  • formatという単一のジョブがある
  • ジョブは最新のUbuntu上で実行される
  • コードをチェックアウト
  • Python 3.xをセットアップ
  • Blackをインストール
  • コードが適切にフォーマットされているかをチェックするために、Blackを実行
  1. ワークフローファイルをコミットしてプッシュ

.github/workflows/black.ymlファイルをリポジトリにコミットし、GitHubにプッシュします。

bash
$ git add .github/workflows/black.yml
$ git commit -m "Add Black formatting check workflow"
$ git push

ワークフローの結果の処理

ワークフローファイルをプッシュすると、GitHub Actionsは指定したイベント(この例ではプッシュとプルリクエスト)でワークフローを実行し始めます。Blackがコードのフォーマットが適切でないことを検出した場合、ワークフローはs失敗します。

  • ワークフローが失敗した場合は、ローカルでBlackを実行してコードをフォーマットし、変更をコミットしてプッシュする必要があります。
bash
$ black .
$ git add .
$ git commit -m "Format code with Black"
$ git push
  • ワークフローが成功した場合は、コードがBlackのルールに従って適切にフォーマットされていることを意味します。

コードフォーマットの自動化

場合によっては、GitHub Actionsのワークフローの一部としてBlackを使用してコードフォーマットのプロセスを自動化したい場合があります。これは、コードがBlackのスタイルに準拠しているかどうかだけでなく、実際にコードを自動的にフォーマットし、変更をリポジトリにプッシュすることを意味します。

このアプローチは時間を節約できますが、注意して使用する必要があります。リポジトリへの変更の自動プッシュは予期しない結果を引き起こす可能性があります、特に複数の貢献者がプロジェクトで同時に作業している場合はさらに注意が必要です。

以下は、コードフォーマットの自動化のためのGitHub Actionsの設定手順です。

  1. パーソナルアクセストークンの作成

ワークフローから変更をリポジトリにプッシュするためには、GitHubのパーソナルアクセストークン(PAT)が必要です。PATには、GitHubユーザーとしてのアクションを実行するための権限が必要です。

PATを作成するには、GitHubの設定に移動し、「Developer settings」>「Personal access tokens」を選択します。「Generate new token」をクリックし、トークンに説明的な名前を付け、必要な権限を選択します。この使用例では、少なくともrepoの権限が必要です。「Generate token」をクリックし、トークンを安全な場所に保存しておくことを確認してください。トークンはもう一度表示できません。

  1. PATをシークレットとして追加

次に、PATをリポジトリのシークレットとして追加して、GitHub Actionsからアクセスできるようにする必要があります。リポジトリの設定に移動し、「Secrets」>「New repository secret」を選択します。シークレットの名前(例:BLACK_FORMATTER_TOKEN)を入力し、値としてPATを貼り付けます。

  1. ワークフローファイルの修正

ワークフローファイルを修正し、必要に応じてBlackでコードをフォーマットし、変更をプッシュするようにします。以下は修正されたワークフローの例です。

.github/workflows/black.yml
name: Automated Code Formatting with Black

on: [push, pull_request]

jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
        with:
          token: ${{ secrets.BLACK_FORMATTER_TOKEN }}  # Use the PAT to check out code

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

      - name: Install Black
        run: pip install black

      - name: Format code with Black
        run: black .

      - name: Commit and push changes
        run: |
          git config --local user.email "action@github.com"
          git config --local user.name "GitHub Action"
          git commit -am "Format code with Black" || exit 0  # The exit 0 is used to prevent the workflow from failing if no changes are made
          git push
  1. ワークフローファイルをコミットしてプッシュ

修正された.github/workflows/black.ymlファイルをリポジトリにコミットし、GitHubにプッシュします。

bash
$ git add .github/workflows/black.yml
$ git commit -m "Modify workflow for automated formatting"
$ git push

これらの手順を完了すると、ワークフローはコードのフォーマットをチェックするだけでなく、必要に応じてコードを自動的にフォーマットして変更をリポジトリにプッシュするようになります。

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!