CircleCIでDangerを動かすためにOnly Build Pull Requestsの設定を調べてみた

はじめに 巷にはDangerというPull Requestのチェックを自動化するツールがありまして、自分のプロジェクトにも導入してみたいなと考えています。ただ、このDangerをCircleCI上で実行するにはちょっとした問題があるようです。 ...

August 18, 2018 · Shun Sugai

Circle CI 2.0で特定のブランチでだけ処理を実行したい

単一のjobかworkflowsを使うかでやり方が異なります。 単一のjobの場合 branchesを使います。 masterブランチでのみ処理を実行したい場合の例: version: 2 jobs: build: docker: - image: circleci/ruby:2.5.0 branches: only: - master steps: - run: command: echo "This job runs on only master branch" この機能、ローカル環境では機能していないように見えます。onlyのところをmasterにしてもdevelopにしてもjobが成功したので。 Circle CI上で走らせるとskippedになっているので問題はなさそうです。 ...

April 27, 2018 · Shun Sugai

Circle CI 2.0でステップが失敗しても次のステップを実行したい

ステップが失敗しても次のステップを実行したい Circle CI 1.0とは異なり、2.0ではステップが失敗すると次のステップは実行されません。 ちなみにコマンドの戻り値が0以外であれば失敗となります。 ...

April 25, 2018 · Shun Sugai

Circle CI 2.0で実行ユーザーを変更したい

dockerのuserattributeを使います。 例: version: 2 jobs: build: docker: - image: circleci/ruby:2.5.0-node-browsers user: root steps: - run: command: whoami 結果: #!/bin/bash -eo pipefail whoami root 例のcircleci/rubyのデフォルトのuserはcircleciになっていますが、上記のようにuserを上書きすればユーザーをrootに変更できます。おそらくdocker runの--userオプション相当なのだと思います。 ...

April 25, 2018 · Shun Sugai

Circle CI 2.0でenvironmentの中で環境変数を参照したい

たとえば下記のような感じでCircleCIのビルド番号を参照して新たに環境変数をenvironmentセクションの中で定義しようとしても期待したとおり(c5f3e6619f3637af832c862918ad6e896d87b85d.zipみたいな)にはなりません。 ...

April 25, 2018 · Shun Sugai

Circle CI 2.0でWorkflow間でファイルを参照したい

workflowを利用して、build jobで作成した成果物をdeploy jobで特定の場所にリリースしたいことはよくあると思います。 Circle CI 2.0ではjobごとに異なるDockerコンテナが起動するので、別のjobにファイルを受け渡すにはpersist_to_workspaceを使います。 一方、そのファイルを参照するjobではattach_workspaceを使います。 実際にやってみます。以下、config.yml version: 2 jobs: build: docker: - image: circleci/ruby:2.5.0-node-browsers steps: - run: mkdir -p /tmp/workspace - run: echo 'This is artifact' >> /tmp/workspace/artifact.txt - run: cat /tmp/workspace/artifact.txt - persist_to_workspace: root: /tmp/workspace paths: - artifact.txt deploy: docker: - image: circleci/ruby:2.5.0-node-browsers steps: - attach_workspace: at: /tmp/workspace - run: cat /tmp/workspace/artifact.txt workflows: version: 2 build-deploy: jobs: - build - deploy: requires: - build workflowはローカルでは試せないのでリモートで実行します。 ...

April 25, 2018 · Shun Sugai

CircleCI Tokyo User Meet-Upに行ってきた

CircleCI Tokyo User Meet-Upに行ってきたので、そこで見聞きしたことを簡単にお伝えしたいと思います。 Circle CIが2018年にリリースする大きめの機能3つ Protected Resources 権限管理を強化して、アカウントによってこの人はデプロイまでできるけど、この人は実行できないよ、みたいなのを実現する機能 従量課金制への移行 現状コンテナベースなので使っていないときも課金される 従量課金制に移行していく これはけっこううれしい Insightsをもっといい感じにするらしい 今は中途半端であまり応用がきかない データを活用できるようなプラットフォームを作る予定 私も現状ほぼ使っていない機能なのでどんな感じになるのか期待 その他 東京オフィスを開設する。 Hiring a local teamということで募集しているそうです GraphQLでAPIを作ろうとしている ユーザーに近い表側の部分はClojureで書かれているらしい 懇親会でCircle CIの裏側の話が聞けてとても楽しかったです。 ...

March 29, 2018 · Shun Sugai

LighthouseをCircle CI上で雑に実行してみる

問題 GoogleのWebサイトパフォーマンス計測ツール、Lighthouseを定期的に実行したい。こんなときどうすれば良いだろうか? 解決策 Circle CIで実行する。 試してみた LighthouseはChromeのDevToolsだけでなくnode製のCLIもあるので今回はそちらを使う。 以下、.circleci/config.yml version: 2 jobs: build: docker: - image: circleci/node:8-browsers steps: - run: name: Install lighthouse command: | sudo npm install -g lighthouse - run: name: Check lighthouse command: | lighthouse --version - run: name: Run lighthouse command: | lighthouse https://blog.sugai.dev/ --save-assets - store_artifacts: path: '.' imageは特に吟味していないのだが、circleci製のnodeが入っているものを使った。余裕があれば後で中身を見てみたい。 sudo npm installしないとPermission deniedになるのでsudoをつける必要がある。 store_artifactsしておくことでCircle CIのページからlighthouseのreportを閲覧できて便利だ。 “Artifacts"というタブにreportが保存されている。 一番下の”*.report.html"というファイルを開くとレポートが見れる。 定期的に実行するにはWorkflowのスケジュール機能を使えば良いと思う。 毎回雑なのでいつか丁寧に試してみたいものである。 参考 https://developers.google.com/web/tools/lighthouse/ https://discuss.circleci.com/t/globally-installed-node-module-yields-eacess-permission-denied/13608 https://hub.docker.com/r/circleci/node/tags/ ...

March 21, 2018 · Shun Sugai

ローカルでcircleciコマンドを実行する時に環境変数を渡す方法

問題 ローカル環境でcircleciコマンドを実行するときに、環境変数を渡したいことがあると思う。こんなときどうすれば良いだろうか? 解決策 circleci build --env VAR=VAL 以上。 ...

February 7, 2018 · Shun Sugai

Serverless FrameworkでGoを使いつつCircle CIでデプロイしてみる

はじめに AWS LambdaでGolangが使えるようになったなあと思っていたら早速Serverless FrameworkでもGoが使えるようになっていた。 下記の公式ブログにサンプルがあるので、そのまま試してみた。 Serverless Framework example for Golang and Lambda ...

February 5, 2018 · Shun Sugai