20190329-2-深夜のCI/CD CircleCI編
ref: https://wp.infra-workshop.tech/event/midnight-circleci/
ref: https://speakerdeck.com/nagashimaw/remember-circleci-for-me
CircleCIってなんだっけ
- CI/CDのSaaS
- GitHub, Bitbucketへのpushを検知して動作
- こいつらのアカウントが必要
- ビルド、テスト、デプロイ自動化して通知してくれる
- 主にCIで、CDは特化していないらしい by inductorさん
- CIとCDの違いは...
- 使い方
- Push 自分でやるのはここだけ
- CircleCIがnpm test, npm build
- 無料で1コンテナ
おれのconfig.yml(config.ymlをおさらい)
ref: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml
- 6: version
- CircleCIのバージョンを指定
- 最新: 2.1
- 1系は最近使用不可に
- CircleCIのバージョンを指定
- 7-16: jobs
- 1つ目のジョブで使うDocker Imageの情報
- CircleCIのリポジトリを指定
- ~/ リポジトリルートを指定
- ハマリポイント
- ls -alとか見ながら頑張ってました...
- 泥臭くやらないとわかんない by inductorさん
- 残骸: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml#L20-L29
- 1つ目のジョブで使うDocker Imageの情報
- 32-36: restore_cache
- 過去ジョブの依存関係のキャッシュ呼び出し
- 使いまわせる部分は使いまわし
- 過去ジョブの依存関係のキャッシュ呼び出し
- 38-53: run...
- name...ジョブの名前。CircleCI上では各nameごとに項目が出てくる
- npm install, キャッシュ保存 npm test, npm run build
- どっかでコケたら止まってくれる
- シェルでステータス0以外だと止まる※runの場合
- 7-16で指定したイメージ内でこれをやってる
- 54-57: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml#L54-L57
- deploy jobに続けている
- そこに引き継げるように
- deploy jobに続けている
- 59-62: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml#L59-L62
- 7-16と同じ
- run hogeをどのイメージでどこでやるねんの話
(この辺で秋田の枝豆スナックうめえ)
- 63-72: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml#L63-L72
- Firebaseにデプロイするので、それに必要な分も入れる
- Firebaseに入れる
- 変数について
- Build Settings -> Environment Variables
- ここに指定した内容で、pushされた内容が置き換えられる
- Travisでも同じような感じらしい
- Build Settings -> Environment Variables
- 74-: https://github.com/nagashima-w/test-project/blob/master/.circleci/config.yml#L74-L85
いかがでしたか?
- 基本的に無料
- OS X, iOSは有料
- 自動化したらやったった感高い
- Netlify, EC2
- 興味ドリブン
個人的な感想
- Docker勉強したおかげですんごい理解深まった
- 煽りカンガルー先生...コワイ...(参照 )