CircleCI Orbs ミニハッカソンに行ってきた

2018年12月16日

こんにちは。、 .ごっちです。 circlecijp CircleCI Orbs ミニハッカソン (2018/12/15 10:00〜) _Orbs のリリースを記念して CircleCI としては初となる(ミニ)ハッカソンを開催します! 今回はスタディサプリの開発で有名な Quipper 様に作業スペースを提供していただけることになりました。 # 開催概要 _ 開催日: 2018 年…*circleci.connpass.com

2018/12/15 に参加してきました。

CircleCI 2.1 のおさらい

2.0 までの設定はさらっとやったことあるんですけども、2.1 はやろうやろうと思っていたけどやれていなかったので、ちょうどいい機会だなと。

なにができるようになったかというと、オレオレのステップを定義できるようになったんですよね。 CircleCI 2.1 preview の commands が便利だった - くりにっき *https://github.com/CircleCI-Public/config-preview-sdk を見てたら commands が便利そうだったのでためしに個人プロダクトに入れてみた。 Advanced…*sue445.hatenablog.com

冗長な部分はざっと自分で定義できますよと。たとえば複数の Workflows があったときに同じコードを書くのは変更があったらその分だけ書き直さなければいけなかったのが、コマンド一つでまとめられるというやつです。

version: 2.1
commands:
  run-rails-test:
    description: Railsのテスト
    steps:
      - run:
          command: |
            bundle exec rails db:create
            bundle exec rails db:schema:load
      - run: bundle exec rspec

プロジェクトがひとつだった場合は Rails のテストは一つでいいんですが、ほかにも Rails プロジェクトがある場合、結局同じコードを書いてしまうというお話なのです。

そこでいろんなプロジェクトから CI の設定を配布したり読み込んだりすることができるのが Orbs(らしい)です。 CircleCI Orbs 入門 - 生産性向上ブログ *この記事は、 CircleCI Advent Calendar 2018 初日の記事です。記事公開時点ではまだ空いてる日程があるので、CircleCI に関するネタならなんでも気軽に参加してください! 長いので目次。 Orbs は、最近…*www.kaizenprogrammer.com

ざっくり Orbs の作り方は

  • Docker をインストールする

  • Circle CLIをインストールする

  • NameSpace を決める

  • Orbs を CircleCI にプッシュする

  • 確認する

感じです。ほかの人が書いたブログポストや公式ドキュメントのほうが詳しいです。

やったこと

最初はなれるためにも hello world 的なものを作りました。

https://circleci.com/orbs/registry/orb/yutagoto/hello-world YutaGoto/hello-orbs *Contribute to YutaGoto/hello-orbs development by creating an account on GitHub.*github.com

この hello world 的なものを公開してもいいのかどうかとか微妙なところではありますが、わりとカンタンに作成&公開できるのがすばらしい点だと思います。

version: 2.1
description: hello orbs

commands:
  hello:
    description: greeting hello
    parameters:
      username:
        type: string
        description: a user name
    steps:
      - run:
          name: hello world
          command: "echo 'hello orbs, << parameters.username >>!'"

これでみなさんもこのコマンドを使うことができます!使い所がまったくないですが。。

次に Rails でよく使うのをつくろうかと思ったけど、Ruby ですばらしいものがすでにあるので、一旦放置。テストコマンドの共通化はこのブログを書いているときに思いつきました

Wish List に名言 BOT があったので、それをつくろうかなと考えてました。 YutaGoto/meigen-command *circleci orb. Contribute to YutaGoto/meigen-command development by creating an account on GitHub.*github.com

この Orbs を読み込んで実行すれば名言が結果に表示されるようにするというやつです。

version: 2.1
description: 名言を表示してくれるものです

commands:
  echo-meigen:
    description: 名言を出力
    steps:
      - run:
          name: 名言
          command: |
            echo 夢は逃げない、逃げるのはいつも自分だ。

カンタンに echo コマンドで出力させればいいんですけど、これではいつも同じ名言が出力してしまって面白くありません。 名言集.com - 名言・ことわざ・金言・格言集めました 名言集.com - 名言・ことわざ・金言・格言集めました www.meigensyu.com

これをうまいこと活用したいところではありましたが、json 形式で返してくれるようなものがないので、おしいところでした。 http://www.meigensyu.com/quatations/view/random にアクセスしての HTML を解析して。。。。。みたいなことを shell でやれればいいんですが、そこまでの技量はぼくに備わっていなかった。。

もうちょいといったところで時間切れです。

ハッカソン後は簡単に成果発表をしました。次の予定の都合上、自分のぶんだけ発表してさりました。ちょっと惜しかった。。

感想

2.1 や Orbs をさわるいいきっかけになってよかったと思っております。布教したり、自分のプロジェクトに取り入れていきたいやつでした!

いまは完全に理解したフェーズにあるけれども、もうちょっとするとまた全然わからないフェーズに突入するので、さっさとチョットデキル状態に持っていきたいです。

あと、🍣 うまかったです

当日盛り上がっていた Twitter のまとめはここから。 CircleCI Orbs ハッカソン 12/15 に CircleCI 初のハッカソンを行ったときのまとめtogetter.com

また時間をとっていじいじしたいところでした。まる。

References

ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。