GitHub Actions!PlantUMLソースから画像ファイルを自動生成&コミット!


GitHub Actionsを初めて使ってみました。
色々情報探すの苦労したので自分的メモも含め記載します。

作ったもの

PlantUMLファイルをPushするとそれに対応したファイルを生成してCommit&Pushするコードを作りました。

create-plantuml-images.yml
# /${PlantUMLのファイルが置いてあるディレクトリ}/*.puml のソースコードから画像ファイルを生成する
# トリガー:上記のソースコードの変更・追加がpushされること
# 実行環境:macOS Big Sur 11.0
name: Create PlantUML Images

# トリガー
on:
  push:
    paths:
      - ${PlantUMLのファイルが置いてあるディレクトリ}/*.puml #eg. docs/sequence-diagrams/*.puml

# 実行内容
jobs:
  build:
    runs-on: macos-11.0
    steps:
      #git checkout
      - uses: actions/checkout@v2
      #PlantUMLのパッケージインストール
      - name: Install packages
        run: |
          brew install plantuml
      #画像生成(最後のlsはGitActionのコンソール上で結果確認するため)
      - name: Create Images
        run: |
          cd ./${PlantUMLのファイルが置いてあるディレクトリ}
          for puml in `ls -a *.puml`
          do
            cat ./${puml} | plantuml -tsvg -p > ./${puml%.*}.svg
          done
          ls -l
      #git commit & git push
      - name: Commit changes
        uses: EndBug/add-and-commit@v5
        with:
          message: 'Create image files by GitHub Action(create-plantuml-images.yml).'
          add: './${PlantUMLのファイルが置いてあるディレクトリ}/*'
          push: true
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # ここはおまじない的に必須

ここからGitHub Actionsのメモ

定義ファイル

配置場所

  • /.github/workflows配下に配置する。yml形式で記述。

テンプレートが豊富

  • GitHubサイトでActionsを作ろうとすると、以下のようにテンプレートが複数用意されている。
  • 欲しいところのSet up this workflow ボタンを押すとymlファイルが表示されるので、これをコピペすると楽。

起動条件

  • PushやPRなどのイベント×ファイルパス×追加・更新・削除 を組み合わせて指定することが可能。
  • cron的な指定も可能。
  • Pushを設定してもGitHubAction内でPushされても起動しない(らしい)。

実行マシン

ざっくり以下が利用可能。macOSを使えるのが個人的に嬉しい。
* WindowsServer
* Ubuntu
* macOS

Gitへのアクセス

Checkout

actions/checkout@v2
これだけでOK。勝手にトリガーとなったBranchをCheckoutしてくれる。
認証周りの設定は不要。

Commit & Push

EndBug/add-and-commit@v5 を利用(こちら)。
コミットメッセージと対象ファイル、Pushするという属性を入れるだけでよい。
より細かい設定も可能。

動かない!?

Actionsタブを開いた際に以下のメッセージが表示されている場合、GitHubActionsが使えません。
古い課金モデル(リポジトリ数)だと使えないので新しい課金モデル(メンバー数)に契約を変更してもらいましょう。

GitHub Actions workflows can't be executed on this repository.
The billing plan for XXXXXX does not include access to GitHub Actions. Please contact the organization owner or billing manager for questions about the current billing plan

所感

  • わずらわしい認証周りのやりとりがなく、スッキリ記載できました。
  • 新規作成時はテンプレートファイルも豊富で、Docker HubのコンテナイメージやDockerfileも利用可能なので、簡単に色々組めそうな印象を受けました。これから使っていこうと思います。