GitLab CIを触ってみる

2019年02月25日

こんにちは。、.ごっちです。

今日が誕生日のアイマス CI シリーズ。今回は GitLabCI を触ってみました。

今日誕生日のアイドルを出力する CircleCI orb をつくったお話 *こんにちは、 .ごっちです。*medium.com todays-idol-travis-ci を作ってみた *こんにちは、 .ごっちです。*medium.com

アイドルを出力するのにいつもの im@sparql を使っていきます。 im@sparql 広がるアイマスワールドをオープンデータ化 Web やアプリから SPARQL で検索・利用可能なエンドポイントsparql.crssnky.xyz

前段

アカウント作っていなかったので、アカウント作りました。。GitHub アカウント使えるんですね。。 The first single application for the entire DevOps lifecycle - GitLab *“From project planning and source code management to CI/CD and monitoring, GitLab is a single application for the…*about.gitlab.com

リポジトリを作る

テンプレなどなどいろいろありましたが、ひとまず GitLab 上だけで動くものを作りました。

Yuta Goto / todays-imas-idol-gitlab-ci GitLab.comgitlab.com

.gitlab-ci.yml をプッシュする

いい感じに作って GitLab にプッシュします。

# .gitlab-ci.yml
before_script:
  - apt-get update -qq
  - apt-get install -y curl jq

idol:
  script:
    - TODAY=`date +%m-%d`
    - SPURL="https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3ESELECT%20(sample(%3Fo)%20as%20%3Fdate)%20(sample(%3Fn)%20as%20%3Fname)%20WHERE%20%7B%20%3Fsub%20schema%3AbirthDate%20%3Fo%3B%20schema%3Aname%7Cschema%3AalternateName%20%3Fn%3BFILTER(regex(str(%3Fo)%2C%20%22$TODAY%22%20)).%7Dgroup%20by(%3Fn)order%20by(%3Fname)"
    - IDOLS=`curl -s $SPURL | jq ".results.bindings | map(.name.value)" | jq -r 'join(" ")'`
    - echo $IDOLS

設定の構文は travis ci に似ているような気がします。

# .travisci.yml の場合
language: bash
before_install:
  - sudo apt-get update -qq
  - sudo apt-get install -y curl jq
script:
  - TODAY=`date +%m-%d`
  - SPURL="[https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3ESELECT%20(sample(%3Fo)%20as%20%3Fdate)%20(sample(%3Fn)%20as%20%3Fname)%20WHERE%20%7B%20%3Fsub%20schema%3AbirthDate%20%3Fo%3B%20schema%3Aname%7Cschema%3AalternateName%20%3Fn%3BFILTER(regex(str(%3Fo)%2C%20%22$TODAY%22%20)).%7Dgroup%20by(%3Fn)order%20by(%3Fname)](https://sparql.crssnky.xyz/spql/imas/query?query=PREFIX%20schema%3A%20%3Chttp%3A%2F%2Fschema.org%2F%3ESELECT%20(sample(%3Fo)%20as%20%3Fdate)%20(sample(%3Fn)%20as%20%3Fname)%20WHERE%20%7B%20%3Fsub%20schema%3AbirthDate%20%3Fo%3B%20schema%3Aname%7Cschema%3AalternateName%20%3Fn%3BFILTER(regex(str(%3Fo)%2C%20%22$TODAY%22%20)).%7Dgroup%20by(%3Fn)order%20by(%3Fname))"
  - IDOLS=`curl -s $SPURL | jq ".results.bindings | map(.name.value)" | jq -r 'join(" ")'`
  - echo $IDOLS

文法チェックはブラウザ上でできるので、その部分はかなり強い気がしています。

(ブログ用に失敗したページのスクショを撮ろうとしたら 500 が返却されて撮れなかった・。・;;)

チェックする

プッシュしたらほぼ勝手に実行されるので、実行結果をチェックします。

正しいと見覚えのある実行結果が確認できます。

上でも書いたんですが、設定方法自体は travisci に似ている感じがありました。あと、GitLab 側がいろいろテンプレを用意しているので、かなりとっつきやすいと思いました。

GitLab のプロジェクトを作るときに他のリポジトリと連携させて、CI 部分だけを作ることも可能なのでかなりつよいです。!

初めて GitLab を触りましたが、思っていたよりも高機能でした!

References

ProfilePicture

Yuta Goto

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