1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CodeBuildでのS3キャッシュのタイムスタンプの扱いを調べてみる

Posted at

CodeBuildでのS3キャッシュで保存しているファイルのタイムスタンプが、CodeBuild前回実行時の日時を保存されているかどうかを実際に動かして確認してみました。

前回の記事の続きです。

わかったこと

  • S3キャッシュから復元されるファイルは、前回ビルド実行時のファイルタイムスタンプを維持している
  • 実際にはキャッシュ対象をtar.gzで固めたものがS3に保存されている
  • ただしtar.gzの中のディレクトリ構成は独自フォーマットになっており、tar.gzから手動で復元するのは困難

ついでにわかったこと(はまったポイント)

buildspec.yml でのキャッシュさせたいパスの書き方に注意です。ディレクトリの中をサブディレクトリも含めて丸ごとS3にキャッシュさせるには以下のように **/* という記述が必要です。

  cache:
    paths:
     - 'var/**/*'

S3キャッシュの設定方法

1.​
CodeBuildのマネジメントコンソールでCache type: S3を選択し、S3バケットを指定します。S3バケットのプレフィックスも指定可能です。プレフィックスを指定しないとファイルがバケット直下にできます。S3にはファイルが1つに固められます。

image.png

2.​
buildspec.yml にキャッシュしてほしいファイルやディレクトリを指定します。

version: 0.2
phases:
  pre_build:
    commands:
      - ...
  build:
    commands:
      - ...
  post_build:
    commands:
      - ...
cache:
  paths:
   - 'var/**/*'

キャッシュしてほしいパスの書き方に注意です。ディレクトリの中をサブディレクトリも含めて丸ごとS3にキャッシュさせるにはディレクトリ名の後ろにワイルドカードを並べて var/**/* という記述が必要です。ディレクトリ直下のファイルだけでよく、サブディレクトリの中はキャッシュ不要の場合は var/* と書きます。ディレクトリ名の var だけだとなにもキャッシュしてくれません。

やってみたこと

前回と同様に buildspec.ymlfind . -ls を記載するほか、 touch コマンドの実行もファイルパスをいろいろ変えながらCodeCommitを複数回実行してみました。

buildspec.yml のサンプルです。途中で touch コマンドがありますが、ここでtouchするファイルのディレクトリやファイル名を毎回変えてみて試しました。

version: 0.2
phases:
  pre_build:
    commands:
      - echo begin
  build:
    commands:
      - find . -ls
      - mkdir -p var
      - find . -ls
      - touch var/test.txt
      - find . -ls
  post_build:
    commands:
      - echo end
cache:
  paths:
   - 'var/**/*'
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?