PythonのDockerコンテナ内からGitHubのIssueを書く

3 min読了の目安(約2300字TECH技術記事

はじめまして、こんにちはSIerで営業なのに研究開発をしている能登と申します。一応営業ですが、1日のほとんどはコードを書いてます。

研究開発で機械学習を使って開発を行っているのですが、実験結果を保存しておく事がとても大事になります。1度回すと数時間くらいかかるような処理の場合、途中経過なども調べたりしたいのですが、実行環境を開かないと分かりません。
 そこで、実行中の処理をGitHubのIssueをメモ変わりにして、POSTできたらいいなと思って試してみました。

GitHubにIssueを作成する方法は、いくつかありますが、最近リリースされたGitHub CLIを使うのが簡単そうなので、採用しました。

この記事でやっている事

  • DockerにGitHub CLIをインストールする
  • Pythonを使ってGitHubのIssueを書く

DockerにGitHub CLIをインストールする

Pythonの環境構築については様々ありますが、私はDockerを使っています。端末を切り替えて作業したりする事も多いので、リポジトリにDockerfileごとコミットしておけば、他の端末でも簡単に環境構築できますしね。
それでは、DockerのPythonコンテナにGitHub CLIをインストールしていきます。

GitHub Personal access tokens取得

GitHub CLIを使うにはGitHubのPersonal access tokenが必要となります。
取得方法は、GitHubのヘルプページが分かりやすいので、こちらを元にトークンを作成してください。

GitHub 個人アクセストークンを使用する

ルートディレクトリにtoken.txtファイルを作成

Dockerファイルを作成するディレクトリと同じディレクトリに、token.txtファイルを作成して、先ほど作成した、トークンを保存してください。

Dockerfile作成

次はDockerfileの作成です。Pythonのバージョンなどはお好みで。

Dockerfile

# Pythonのバージョンはお好きなもので大丈夫です
FROM python:3.7.9

# ディレクトリの指定は忘れずに行いましょう
WORKDIR /app
ADD . /app

# github-cli install
RUN apt update
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
RUN apt install software-properties-common -y
RUN apt-add-repository https://cli.github.com/packages
# GitHub CLIインストール
RUN apt install gh
# 先ほどのトークンファイルを読み込んで、ログイン
RUN gh auth login --with-token < token.txt

Dockerビルド

やり方は人それぞれですが、私はVSCodeの拡張機能Remote Containersを使ってDockerビルドを行っています。ワンクリックでコンテナ立てて、VSCodeともシームレスにつないでくれるので、最高ですね。

Visual Studio Code Remote Development

PythonでIssueを書く

Pythonでコマンドを実行するためにsubprocessモジュールを使います。
実際のIssueを書くコードがこちら。

import subprocess

cliString="gh issue create --title PythonからIssue書いたよ --body " + "'" +"BODYも普通に書けるよ \n 改行もできるよ"+"'"
cliString=subprocess.call(cliString, shell=True)

あら簡単ですね。
実際にできたIssueがこちら。

あとがき

機械学習で一度回すと数時間かかるような処理の場合、結果がいつ返ってくるのか分からず、翌日確認するか的な感じにしていたのですが、IssueがPOSTされるので、ふとした合間に確認する事ができるようになりました。