サイトアイコン てくてくぷれいす

GitHub Actions使ってpython自動実行して結果をcommit&pushしてみる

こんにちは,しまさん(@shimasan0x00)です.

GitHub ActionsというGitHubが提供しているCI/CDサービスがあります.

無料でもある程度の時間使用することができるので,個人的に特定の処理を自動化して遊ぶことはできそうです.

アカウントに含まれるストレージや利用時間 (分) を超えてGitHub Actionsを使用したい場合は、追加の使用分が請求されます。
GitHub Actionsの支払いについて – GitHub Docs – 

今回は普段使用しているPythonをターゲットにして,特定ファイルがpushされたらリポジトリ内にあるpythonファイルを実行し,結果をcommit&pushしてみたいと思います.

リポジトリ

github actionの練習レポジトリ. Contribute to Villager-B/github-action-training development by creating an account on GitHub.
Villager-B/github-action-training – GitHub

スポンサーリンク

実行する内容

もともとはNumericCharacter2Stringという自分のリポジトリを自動化したくて作成しています.

数値文字参照されているファイルを文字列に変換してファイルを別途生成するPyrhonスクリプト. Contribute to Villager-B/NumericCharacter2String development by creating an account on GitHub.
Villager-B/NumericCharacter2String – GitHub

数値文字参照になっている任意のファイル名をコマンドライン引数として与えることで filename-unescape.fileextensionの文字列に変更されたファイルを生成させるものです.

これでCytoScapeなどで可視化したときに日本語がちゃんと表示されます.

これはpython実行させればいいだけなので楽ですけど,Windowsだと動かなかったりするのでできればfileをpushするだけで自動でpython実行され,ファイルをよしなにディレクトリにpushしてくれることを望むわけです.

なので今回はこれをGitHub Actionsで実現しようと思います.

スポンサーリンク

リポジトリにパスワードを用意する

まずは自分のリポジトリのsettingsからsecretsを選び,作成していきます.

名前は適当でいいですが,GITHUBから始まる名前はだめだったりいくつか制約があるので気をつけてください.

Actionsの作成

GitHub Actionsを実行させるための設定ファイルをyaml形式で書きます.

.github/workflows/以下にymlファイルを用意することでいけますが,GitHub上でActionsからファイル作成することをオススメします.

色々推薦なり,間違えを指摘してくれるので最初のうちはいいかもです.

結果以下の設定ファイルを作成しました.これはリポジトリにも書いてあります.

name: auto create escape-gml file

on:
  push:
    paths:
      - 'dirs/**.gml'

jobs:
  build:
    runs-on: Ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - name: Setup python and Run
        uses: actions/setup-python@v2
        with:
          python-version: '3.6.9'
          architecture: x64
      - run: python numetric_char_str.py
      - name: Run a multi-line script
        run: |
          git config user.name ${NAME}
          git config user.email ${EMAIL}
          git remote set-url origin https://${NAME}:${{ secrets.USER_GITHUB }}@github.com/${NAME}/${REPO}
          git add .
          git commit -m "create escape gml file"
          git pull
          git push origin master
        env:
          NAME: Villager-B
          EMAIL: kkss07020@gmail.com
          REPO: github-action-training


env内の値は各自で変更してください.

このActionsではdirs以下でgmlファイルをpushすることで実行されます.

Ubuntu-20.04上でPythonが実行できる環境を作成し,python実行,変更をcommit,pushしています.

これによってdirにpushしたgmlファイルはoriginalへ,実行した結果のファイルはescapeへ移動し,その結果がリポジトリに反映されます.

自動化って結構簡単にできるんですね.

もっと勉強してどんどん自動化して楽していきたいと思います.

スポンサーリンク

参考

ワークフローは、1つ以上のジョブからなる設定可能な自動化プロセスです。 ワークフローの設定を定義するには、YAMLファイルを作成しなければなりません。
GitHub Actionsのワークフロー構文 – GitHub Docs – 
Set up a specific version of Python and add the command-line tools to the PATH
Setup Python – GitHub Marketplace – GitHub
Github Actions をワークフロー内で使う方法についてすぐに見返すための備忘録Github Action を作るためのメモはこちら => Github Action の作り方メモドキュメントGitHub …
Github Actionsの使い方メモ – Qiita – Qiita
Github Actionsで作業の自動化をするのって楽しいですよね。 今回は、actions上でファイルを変更したり追加して、最後にgitコマンドでコミット&プッシュをしたいと思います。 GITHUB_TOKENの設定 workflowのyml定義 git configって必要なの? git pullでwarningが出るかも? 実行結果
Github Actionsを使ってgit commitとgit pushを自動化しよう。 – ポンコツエンジニ… – ポンコツエンジニアのごじゃっぺ開発日記。
モバイルバージョンを終了