昔つくったpythonリポジトリにgithub actionを適用してみる。
やったこと
題名の通り。なんか楽しそうだからやってみた。
更新したrepositrory
https://github.com/yukiYamada/AutoCookieClicker
Autoクッキークリッカー君。そこそこ楽しめて作ってた記憶と、
確かテストあったよなーということでこの子に決めた。
とりあえず。
本当にテストがあるのか、動くのかわからんのでCloneしてきた。
それっぽいのがある。 Test_Sample.py 動かしてみる。
なんかわからんけど「OK」ってなったから動くんでしょう。やったぜ。
requirementsをつくる。
python触り始めて初期のころにつくったような。そんな感じのツールだから
requirementsも何もなくて、このままpipでいinstallしまくった者共が入ってなくて、別環境じゃ使い物にならない。
requirementsについてはここを見てほしい。
https://note.nkmk.me/python-pip-install-requirements/
ということで
pip freeze > requirements.txt
という魔法のコードをうつことで、現行の環境は書き出せる。
しかしこれ、余計なのも絶対はかれるよなぁ。気にしない。
できた。pushして下準備おわり。
なぞAlert
さっそくgithubでActionつくるかーとおもって開いたら
なんか警告出とる・・・解決しないと怖いなぁ。viewをぽちっとおしてみてみる。
うーん。importしてるパッケージで2つほど脆弱な奴がいるらしい。さらに中身を見てみる。
typed-astの方は、やりようによっては関係ないメモリにアクセスできるてきな?
かなぁ。わからん。Webサービスでもないし無視でよさそう。
pillowの方は画像次第では異様にメモリ食う時があるよ。ということ。
まーこっちも。問題ないかな。無視。
ということで両警告は無視してすすむ。upgradeかけたら解決しそうだけど。 ※1
気を取り直してAction
上の方のActionsボタンをクリックする。
pythonだからこの3つの中のどれかなんだけど。
publishでもないし、なんだったらパッケージでもないので一番左を選ぶ
ただのウィザードだから、後で変更すればいいんだろうけど。とりあえず近い環境を選んだほうがいいだろう。
ポチっと押すと以下が自動で展開される。
name: Python application on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Set up Python 3.7 uses: actions/setup-python@v1 with: python-version: 3.7 - name: Install dependencies run: | python -m pip install --upgrade pip pip install -r requirements.txt - name: Lint with flake8 run: | pip install flake8 # stop the build if there are Python syntax errors or undefined names flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | pip install pytest pytest
ひゅー全然わかんねー。 とりあえずこのまま適当にポチポチして実行してみる。
もう一回Actionsをおすと
こんな感じになる。×がなんこもついているのはこの記事を書くのに試行錯誤した結果。
一番うえの黄色いやつが今回つくったworkflowに相当している。実行中だから黄色。終わるとマークが変わる。
クリックすると詳細が表示できる。
requirements.txtがないってさ。あるんだけど。ディレクトリがわからない。場所が悪いのかな。
rootに移動して、Push。
ステータスが増えとる!!!
yamlの先頭の方の「on: [push]」がトリガを示しているようで、
見たまんまpushがトリガになっているのね。すごい。
actionの調整
さっきでていたエラーのところは解消された。rootにおいとけばいいらしい。
が、別のところでまたエラーになっている。
見る限りのここが問題のブロック。
- name: Test with pytest run: | pip install pytest pytest
pytestって書いてるけど。そもそもpytestつかってないぞ。このリポジトリ。
さっきのrequireでわかったけど、どうやらカレントはそのままgitのrootにいる模様。
こうしてやった。
- name: Test with pytest run: | python src/Test_Sample.py
それ。pushだ!
無事成功
お!来たんじゃないか?詳細を見てみよう。
はーすーぱーグッド。画像じゃ見にくいかもしれないけど、
require適当に作りすぎて44secもかかっている。実際のテスト自体は2sなので、全然いいでっしょう。
ということで。
git hub action最高でござった。
push以外のトリガーもあるが、とりあえずコード書いたらpushしとけば勝手にテストして
レスポンス帰ってくるのが最高にクール。ぜひ職場に持ち込みたいガガガ。
そんなレベル。まともなCIツール初めて使ったけど、みんなこんないい感じのツールつかってたのか。いいなぁ。これ。
いいなぁ・・・職場に・・・いいなぁ・・・
※1 なんかgithubさんが勝手に自動でよきバージョンに書き換えるプルリクくれた。特に変なとこもなかったからそのまま採用。素晴らしい。