PythonのDockerコンテナ内からGitHubのIssueを書く
はじめまして、こんにちは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のヘルプページが分かりやすいので、こちらを元にトークンを作成してください。
ルートディレクトリに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されるので、ふとした合間に確認する事ができるようになりました。
Discussion