LoginSignup
5
5

More than 5 years have passed since last update.

CircleCIでdotfilesリポジトリのコード品質管理する

Last updated at Posted at 2019-01-14

最近は投稿していなかったので、久しぶりとなります。
2013~2016年はゲームプログラマーでしたが、2017年からサーバーサイド業務するようになりました。
ここ一年半はvim設定ファイルのカスタマイズに熱を入れてましたね。

dotfilesの設定ファイルが増えてきたのでコード品質を維持したい

vim設定ファイルが1000行を超えて肥大化、shellファイル、zsh設定のファイルが増えてきたのでコード品質を保つ必要があるなと思いました。
今まではローカルのDockerコンテナを起動してパッケージが正常にインストールできているかテストしていました。
簡単な修正ならローカルのコンテナで確認せず、リモートで確認できたら便利だなと思いました。
CircleCIがお手軽そうなのでこちらを使います。(無料プラン)

出来たこと

コミット単位でコード品質を可視化できるようになった!

CircleCIの設定は2~3時間ででき、思ったより簡単にできました!
ビルド成功させるまでに10時間ぐらいかかりました。今まではエラーが出ても手作業でコマンド実行していた箇所を修正する必要がありました。
緑のチェックがビルド成功で赤のバツが失敗です。黄色がビルド中。
リポジトリ https://github.com/rainbow23/dotfiles
Screen Shot 2019-01-14 at 22.18.40.png

CircleCI管理画面

ビルドも5分くらいでPC環境のビルドより少し早い
Screen Shot 2019-01-14 at 22.18.54.png

準備

dockerイメージの用意

dotfilesリポジトリで必要なパッケージが含まれたDockerfileを作成
vim8, tmux, zsh等が動作する環境。
パスワードなしでSudoできるユーザーも作成している
https://github.com/rainbow23/dotfiles/blob/develop/docker/base/Dockerfile

CircleCIからDockerイメージを使えるようにDockerHubにpushする

CircleCI設定ファイルを作る

https://github.com/rainbow23/dotfiles/blob/develop/.circleci/config.yml
- image: rainbow23/base_dotfiles:latestがDockerHubにアップロードしたDockerイメージ
- run:の後ろにテストしたいファイルを記述 runにある5つのシェルが全て成功したらCircleCIのビルド成功になります。

 .circleci/config.yml
version: 2
jobs:
  build:
    docker:
      # specify the version
      - image: rainbow23/base_dotfiles:latest
    working_directory: /home/rainbow23/dotfiles
    steps:
      - checkout
      #deploy
      - run: ./symlink.sh
      # install
      - run: ./install_python.sh
      - run: ./install_vim.sh
      - run: ./install_tools.sh
      - run: ./gitclone_list.sh

CircleCI管理画面でconfig.ymlのrunで記載したシェルファイルの実行結果が見れます。
Screen Shot 2019-01-14 at 23.11.45.png

まとめ

コミットごとにリポジトリのコード品質が可視化できたのでよかったです。
これから各ファイルをフォルダに整理する予定なのでデグレードしていないか確認できるのが嬉しいですね。
次回はvimの便利プラグインの記事を書く予定です。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5