3
results
for CircleCI
-
第1回 CircleCI ユーザーコミュニティミートアップ CircleCIの記念すべき第1回目のユーザーコミュニティミートアップがDeNAさんのオフィスのヒカリエで開催されるとのことで、仕事終わりに参加してきた。 概要 会場:ヒカリエ DeNA 日付:2019.1.30 ハッシュタグ: #circlecijp 第1回目のメイントピックはCircleCIの最新機能であるOrbsについてです。Orbsがどのようにして作られたのか、Orbsを使うと何が嬉しいのか、などについてすでにOrbsを現場で使っているユーザーの方にお話いただきます。また、GitLabの開発者からみたCircleCIについてお話ししていただくセッションも用意しています。 今回は、昨年末にリリースされたCircleCIのOrbsという機能を中心としたトピックになっていた。 私はプライベートでも会社でもCircleCIを利用しているが、まだOrbsは使っていないのと、CIとしての情報のキャッチアップができればと思い参加した。 CircleCIのアップデートについて orbsでorbsが使えるようになった CLIでorbsの --sort オプション使えるようになった 画面の性能改善 2.16に12/17にリリース, オンプレ版は32GBRAMが必須になった 意外にもといったら私が知らなかっただけだが、オンプレ版のCircleCIがあるというのを初めて知った。 確かに外部のリソースでCIを回すのに抵抗のある環境とかであればとても有用だと思う。 Orbsリリースまでの歴史 by kimh 3,4年前Inference(コマンドを自動的に予測してくれる機能)が目玉機能の一つだった 2015年頃, Functions, Bash Script 2016年頃, 自動的にやってくれるからユーザーが全部定義することになった 2017年頃, Orbsの前進のBundlesがつくられた(当初はOrbsという名前については浸透してなかった) 2018年頃, Orbsが復活して爆誕 CircleCI、およびOrbsの歴史を話してもらい、知らないワードがちらほら。 特にInferenceはかなり便利そうだなとは思いつつ、確かに全て自動だと、本番サービスには厳しいところがありそうだなと思った。 Orbsベスト・プラクティス(仮) by sue445 ピクシブ 3rd party製では3位(上位2人はCircleCIの社員) Orbsのテストは難しい dependabot.com がSaaSで存在する ライブラリをフルインストールは時間がかかるので、CIではキャッシュする(save_cache,restore_cache) Orbsをつかって16行が1行に Orbs化モチベーションはコピペを減らすため インライン展開されるイメージ リポジトリをまたいだリファクタ処理ができる フルスタッキュアエンジニアとして活躍されているsue445さんの発表。 発表内容もさることなが、のっけからプリキュアのデスクトップを晒すというとてもインパクトの強い方だった。 CircleCIの調べ物をしていると必ずといっていいほど、sue445さんのブログを拝見するので、いつもありがとうございますという気持ちで聞いていた。 OrbsをつかったiOSアプリのCI/CD導入 by ngs CircleCI Orbs を使った iOS アプリの CI/CD 導入 #circlecijp – Atsushi Nagase
-
概要 Terraformを使っていてインデントがずれてしまうのを修正するのにterraform fmtというコマンドがある。 これを手元で都度やるのをよく忘れる。 忘れてそのままマージするのは宜しくないので、せめてCIでチェックできればと思い調べたところ、hashicorpの公式のterraformイメージがあった。 これを活用することで、CircleCIと連携して簡単にterraform fmtで差分が出てしまった箇所が検知できる。 version: 2 jobs: terraform: working_directory: ~/repo/terraform/ docker: - image: hashicorp/terraform:0.11.8 steps: - checkout - run: name: "terraform fmt" command: | terraform fmt -diff=true -check=true workflows: version: 2 terraform: jobs: - terraform 上記のように、terraform fmtにいくつかオプションを付けている。 -diffをtrueにすると差分が表示されるので、どこが修正されるかがわかる。 -checkをtrueにするとチェックだけを行い、差分が発生するとコマンドの返り値に3を返す。 CircleCIでコマンドの返り値が0と異なるとエラーになり、CIがこけるようになる。 ちなみに実行した際の結果はこちら。 #!/bin/sh -eo pipefail terraform fmt -diff=true -check=true diff a/terraform/variables.tf b/terraform/variables.tf --- /tmp/875634021 +++ /tmp/774976384 @@ -1,6 +1,8 @@ variable "aws_access_key" {} variable "aws_secret_key" {} + variable "
-
概要 最近、CircleCI2.0ではtoriggerという機能でスケジュール実行ができるということを知った。 CircleCI公式ドキュメント まんまこちらの方の記事の通り。 Circle-CI 2.0のcron triggerを使って、定期実行をする 私が実現したかったのは、個人のアプリケーションでサーバーでcronで定期実行させてSlackに通知させているやつを、このtorrigerで実現できないかなと思ったことだった。 今までだとherokuとかのPaaSを使ったり、AWS Lambda、Google App Scriptとかを使うのがよくある方法だと思うのだけど、簡易的なバッチならCircleCIのみでいけないかな?と思い、やってみることにした。 CicleCIへのプロジェクト追加 まず、いつもどおりにCircleCIにログインして、「Add Project」からプロジェクトを追加する。※今回はすでに追加済みだが、tw4-html-parserというリポジトリを例にあげる。 次に「start building」しておく。 このままではCIはなにも実行されずにエラーになるので、下記をリポジトリに追加する。 追加先は、リポジトリ直下に .circleci/config.yml というのを作成して、runの部分に実行させたいコマンドを記載する。 --- version: 2 jobs: build: docker: - image: ruby:2.4 working_directory: ~/repo steps: - checkout - run: bundle install - run: bundle exec ruby htmlparser.rb workflows: version: 2 normal_workflow: jobs: - build schedule_workflow: triggers: - schedule: cron: "1 11 * * *" # UTCで記述。-9 filters: branches: only: - master jobs: - build ポイントはworkflowという箇所。