GitHub Action で Vim や Neovim を簡単にインストールできる action-setup-vim をつくった

今週ちまちまと git-messenger.vimclever-f.vim の CI を GitHub Actions に移行していました.毎回 Vim プラグインの CI のために Vim や Neovim のセットアップを書くのが面倒なのと,Windows 上で Vim や Neovim を入れるのが(Powershell に不慣れなこともあり)大変だったので,GitHub Action として切り出すことにしました.

github.com

1ステップで Vim や Neovim を簡単にインストールできます.

  • Vim と Neovim 両対応
  • Linux, macOS, Windows すべてで動作
  • 'stable' と 'nightly' の両方に対応
  • 追記: 特定バージョンにも対応(v1.1.0)

使い方

下記のようにステップを書けば Vim または Neovim をインストールしてくれます.

macOS または Linux で安定版 Vim をインストール:

- uses: rhysd/action-setup-vim@v1

Windows では github-token を input として与える必要があります.これは,vim-win32-installer から最新のリリースを持ってくる必要があり,そのために GitHub API を叩いているからです.

- uses: rhysd/action-setup-vim@v1
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}

最新の Vim をインストールするには version: nightly を input に指定します.

- uses: rhysd/action-setup-vim@v1
  with:
    version: nightly
    github-token: ${{ secrets.GITHUB_TOKEN }}

Neovim をインストールするには neovim: true を input に指定します.最新の stable の Neovim がすべての OS でインストールできます.Vim とは異なり,Windows 上でも github-token input は不要です.

- uses: rhysd/action-setup-vim@v1
  with:
    neovim: true

昨晩ビルドされたばかりの nightly の Neovim をインストールするには version: nightly を指定すれば OK です.

- uses: rhysd/action-setup-vim@v1
  with:
    neovim: true
    version: nightly

これらのステップを実行後,Vim をインストールした場合は vim コマンドが,Neovim をインストールした場合は nvim コマンドがそれぞれ利用可能になっているはずです.

また,action の executable output としてインストールした Vim または Neovim の実行ファイルへのフルパスをセットしていて,それを使うこともできます.

例えば checkout@v2themis.vim をインストールし,action-setup-vimVim をインストールして単体テストを走らせる例は

# テストしたいプラグインを checkout
- uses: actions/checkout@v2
# themis.vim を checkout
- uses: actions/checkout@v2
  with:
    repository: thinca/vim-themis
    path: vim-themis
# Vim をインストール
- uses: rhysd/action-setup-vim@v1
  id: vim
# プラグインの単体テストを themis.vim で実行
- name: Run unit tests with themis.vim
  env:
    THEMIS_VIM: ${{ steps.vim.outputs.executable }}
  run: |
    ./vim-themis/bin/themis ./test

実際に clever-f.vim のワークフロー で利用しています.

インストールされる Vim および Neovim の詳細

インストール元は OS と version input によって下記のようになっています.優先度は

  1. システムのパッケージマネージャ
  2. 公式リリース
  3. ソースからビルド

となっています.ユーザ数や実行の速さを考慮してこうなっています.

Vim

OS Version Installation
Linux stable gvim-gnome パッケージを apt でインストール
Linux nightly vim/vim リポジトリの HEAD をビルド
macOS stable brew install macvim で Homebrew からインストール
macOS nightly vim リポジトリの HEAD をビルド
Widnows stable Windows での公式安定版は無いので,Nightly と同じ
Windows nightly 公式インストーラ repository のリリースからインストール

Neovim

OS Version Installation
Linux stable Neovim 公式の stable release からインストール
Linux nightly Neovim 公式の nightly release からインストール
macOS stable Homebrew を使って brew install neovim でインストール
macOS nightly Neovim 公式の nightly release からインストール
Windows stable Neovim 公式の stable release からインストール
Windows nightly Neovim 公式の nightly release からインストール

制限

今のところ,特定のバージョンを指定してインストールはできません.技術的制約があるわけではないので,もし需要があればやるかもしれません. v1.1.0 で指定可能になりました.

# Vim v8.2.0126 を全ての OS でインストール.Windows でも github-token input は必要ありません
- uses: rhysd/action-setup-vim@v1
  with:
    version: v8.2.0126

# Neovim v0.4.3 を全ての OS でインストール
- uses: rhysd/action-setup-vim@v1
  with:
    neovim: true
    version: v0.4.3

また,GUI バージョンについては現状ではサポートしていませんが,リリース物に含まれる場合はインストールされます.具体的には下記の場合です:

まとめ

Vim または Neovim を簡単にインストールできる action action-setup-vim を作成しました. GitHub Action の Vim プラグイン CI への導入の敷居が個人的にぐっと下がったので,他のプラグインについても順次移行していきたいところ.