SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

エンジニアのためのCI/CD再入門

モダンなCI/CDでは欠かせないワークフローを使った高度なビルド管理

エンジニアのためのCI/CD再入門 第3回


ワークスペースとキャッシュ

 ワークスペースとよく混同しがちなのがキャッシュです。実際、ワークスペースでも依存関係を保存して後のジョブで使い回せばキャッシュと同じようなことができます。

 ではワークスペースとキャッシュはどう違うのでしょうか? 一言で言うと、ワークスペースは実行中のワークフロー内だけで有効なのに対し、キャッシュはワークフローをまたいで使うことができます。つまり、ワースペースとキャッシュではライフサイクルが異なります。

 英語になってしまいますが、以下の図はワークスペースとキャッシュのライフサイクルの違いを表しています。

workspace_diagram
workspace_diagram

 ワークスペースが縦(1つのワークフローの上流から下流ジョブ)へ移動するのに対し、キャッシュは横(ワークフローをまたぐ)に移動していることが分かります。

 ワークスペースをキャッシュとして使うと、最低でも1回は依存関係のフルインストールが走ってしまいます。なぜなら、ワークスペースはワークフローが終了されると削除されてしまうからです。対して、キャッシュはワークフローをまたぐので、前のワークフローで一度依存関係をキャッシュしてしまえば依存関係が変わらない限り同じキャッシュを使い回すことができるのでパフォーマンスの面で優れています。

 もしこの2つの違いが分かりにくい時はシンプルに、依存関係のキャッシュにはsave_cacherestore_cacheを使い、上流から下流のジョブへファイルを渡したい時はattach_workspacepersist_workspaceを使うと覚えておけばよいでしょう。

その他のワークフロー

 ここまで紹介したのとは別の種類のワークフローもあります。スケジュールされたワークフローと承認ワークフローです。

 通常CircleCIのワークフローはVCSへのコードのプッシュをトリガーとして開始されます。スケジュールされたワークフローを使うと、コード変更がなくても決まった時間にワークフローを開始することができます。

workflows:
  version: 2
  nightly-build:
    triggers:
      - schedule:
          cron: "0 0 * * *"
    jobs:
      - build

 上記はスケジュールされたワークフローの例です。実行する時間はPOSIXのcrontabの書式で指定します。上記の例だとnightly-buildというワークフローを毎日0時に実行します。

 他にも手動で承認が必要なワークフローも設定することができます。主な使い所としては、デプロイジョブを承認が必要なようにして、ある権限を持ったユーザーしかデプロイを行えないようにする方法です。

workflows:
  version: 2
  test-and-lint:
    jobs:
    ...
    - deploy:
        type: approval
        requires:
        - run_test
        - run_lint
        - precompile

 この例だとdeployジョブがtype: approvalになっているので、依存するジョブがすべて完了しても承認されるまで開始されません。実際にワークフローの画面を見ると”ON HOLD"というステータスで止まっていることが分かります。

on_hold
on_hold

次のページ
Orbs

修正履歴

この記事は参考になりましたか?

エンジニアのためのCI/CD再入門連載記事一覧

もっと読む

この記事の著者

金 洋国(CircleCI Japan)(キム ヒロクニ)

CircleCIで2.0などのプロダクト開発に携わった後、CircleCI Japanを立ち上げてからはTech Leadとして技術全般を担当。趣味は電動キックボードで日本で普及するように様々な活動をしています。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11306 2019/01/16 10:41

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー