Penyimpanan cache Amazon S3 - AWS CodeBuild

View a markdown version of this page

Penyimpanan cache Amazon S3 - AWS CodeBuild

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Penyimpanan cache Amazon S3

Caching Amazon S3 menyimpan cache dalam bucket Amazon S3 yang tersedia di beberapa host build. Ini adalah pilihan yang baik untuk artefak bangunan berukuran kecil hingga menengah yang lebih mahal untuk dibangun daripada untuk diunduh.

Untuk menggunakan Amazon S3 dalam build, Anda dapat menentukan jalur untuk file yang ingin Anda simpan dalam cachebuildspec.yml. CodeBuild akan secara otomatis menyimpan dan memperbarui cache ke lokasi Amazon S3 yang dikonfigurasi pada proyek. Jika Anda tidak menentukan jalur file, upaya terbaik CodeBuild akan menyimpan dependensi bahasa umum untuk membantu Anda mempercepat build. Anda dapat melihat detail cache di log build.

Selain itu, jika Anda ingin memiliki beberapa versi cache, Anda dapat menentukan kunci cache dibuildspec.yml. CodeBuild menyimpan cache di bawah konteks kunci cache ini, dan membuat salinan cache unik yang tidak akan diperbarui setelah dibuat. Kunci cache dapat dibagikan di seluruh proyek juga. Fitur seperti kunci dinamis, versi cache, dan berbagi cache di seluruh build hanya tersedia ketika kunci ditentukan.

Untuk mempelajari lebih lanjut tentang sintaks cache dalam file buildspec, lihat cache di referensi buildspec.

Hasilkan kunci dinamis

Kunci cache dapat menyertakan perintah shell dan variabel lingkungan untuk membuatnya unik, memungkinkan pembaruan cache otomatis ketika kunci berubah. Misalnya, Anda dapat menentukan kunci menggunakan hash package-lock.json file. Ketika dependensi dalam file itu berubah, hash — dan karenanya kunci cache — berubah, memicu pembuatan cache baru secara otomatis.

cache: key: npm-key-$(codebuild-hash-files package-lock.json)

CodeBuild akan mengevaluasi ekspresi $(codebuild-hash-files package-lock.json) untuk mendapatkan kunci akhir:

npm-key-abc123

Anda juga dapat menentukan kunci cache menggunakan variabel lingkungan, sepertiCODEBUILD_RESOLVED_SOURCE_VERSION. Ini memastikan bahwa setiap kali sumber Anda berubah, kunci baru dihasilkan, menghasilkan cache baru yang disimpan secara otomatis:

cache: key: npm-key-$CODEBUILD_RESOLVED_SOURCE_VERSION

CodeBuild akan mengevaluasi ekspresi dan mendapatkan kunci akhir:

npm-key-046e8b67481d53bdc86c3f6affdd5d1afae6d369

kodebuild-hash-file

codebuild-hash-filesadalah alat CLI yang menghitung SHA-256 hash untuk satu set file di direktori CodeBuild sumber menggunakan pola glob:

codebuild-hash-files <glob-pattern-1> <glob-pattern-2> ...

Berikut adalah beberapa contoh menggunakancodebuild-hash-files:

codebuild-hash-files package-lock.json codebuild-hash-files '**/*.md'

Versi cache

Versi cache adalah hash yang dihasilkan dari jalur direktori yang di-cache. Jika dua cache memiliki versi yang berbeda, mereka diperlakukan sebagai cache yang berbeda selama proses pencocokan. Misalnya, dua cache berikut dianggap berbeda karena mereferensikan jalur yang berbeda:

version: 0.2 phases: build: commands: - pip install pandas==2.2.3 --target pip-dependencies cache: key: pip-dependencies paths: - "pip-dependencies/**/*"
version: 0.2 phases: build: commands: - pip install pandas==2.2.3 --target tmp/pip-dependencies cache: key: pip-dependencies paths: - "tmp/pip-dependencies/**/*"

Berbagi cache antar proyek

Anda dapat menggunakan bidang cacheNamespace API di bawah cache bagian untuk berbagi cache di beberapa proyek. Bidang ini mendefinisikan ruang lingkup cache. Untuk berbagi cache, Anda harus melakukan hal berikut:

  • Gunakan yang samacacheNamespace.

  • Tentukan cache yang samakey.

  • Tentukan jalur cache yang identik.

  • Gunakan bucket Amazon S3 yang sama dan pathPrefix jika disetel.

Ini memastikan konsistensi dan memungkinkan berbagi cache di seluruh proyek.

Tentukan namespace cache (konsol)

  1. Buka AWS CodeBuild konsol di https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Pilih Buat proyek. Untuk informasi selengkapnya, lihat Membuat proyek build (konsol) dan Jalankan build (konsol).

  3. Di Artefak, pilih Konfigurasi tambahan.

  4. Untuk jenis Cache, pilih Amazon S3.

  5. Untuk Cache namespace - opsional, masukkan nilai namespace.

    Parameter namespace cache di CodeBuild konsol.
  6. Lanjutkan dengan nilai default dan kemudian pilih Buat proyek build.

Tentukan namespace cache (AWS CLI)

Anda dapat menggunakan --cache parameter di AWS CLI untuk menentukan namespace cache.

--cache '{"type": "S3", "location": "your-s3-bucket", "cacheNamespace": "test-cache-namespace"}'

Contoh Buildspec

Berikut adalah beberapa contoh buildspec untuk bahasa umum:

Keter Node.js gantungan cache

Jika proyek Anda menyertakan package-lock.json file dan digunakan npm untuk mengelola Node.js dependensi, contoh berikut menunjukkan cara mengatur caching. Secara default, npm menginstal dependensi ke node_modules direktori.

version: 0.2 phases: build: commands: - npm install cache: key: npm-$(codebuild-hash-files package-lock.json) paths: - "node_modules/**/*"

Dependensi Cache Python

Jika proyek Anda menyertakan requirements.txt file dan menggunakan pip untuk mengelola dependensi Python, contoh berikut menunjukkan cara mengkonfigurasi caching. Secara default, pip menginstal paket ke site-packages direktori sistem.

version: 0.2 phases: build: commands: - pip install -r requirements.txt cache: key: python-$(codebuild-hash-files requirements.txt) paths: - "/root/.pyenv/versions/${python_version}/lib/python${python_major_version}/site-packages/**/*"

Selain itu, Anda dapat menginstal dependensi ke direktori tertentu dan mengkonfigurasi caching untuk direktori itu.

version: 0.2 phases: build: commands: - pip install -r requirements.txt --target python-dependencies cache: key: python-$(codebuild-hash-files requirements.txt) paths: - "python-dependencies/**/*"

Dependensi Cache Ruby

Jika proyek Anda menyertakan Gemfile.lock file dan digunakan Bundler untuk mengelola dependensi permata, contoh berikut menunjukkan cara mengkonfigurasi caching secara efektif.

version: 0.2 phases: build: commands: - bundle install --path vendor/bundle cache: key: ruby-$(codebuild-hash-files Gemfile.lock) paths: - "vendor/bundle/**/*"

Dependensi Cache Go

Jika proyek Anda menyertakan go.sum file dan menggunakan modul Go untuk mengelola dependensi, contoh berikut menunjukkan cara mengkonfigurasi caching. Secara default, modul Go diunduh dan disimpan di ${GOPATH}/pkg/mod direktori.

version: 0.2 phases: build: commands: - go mod download cache: key: go-$(codebuild-hash-files go.sum) paths: - "/go/pkg/mod/**/*"