Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Buat referensi spesifikasi untuk CodeBuild
Topik ini memberikan informasi referensi penting tentang file spesifikasi build (buildspec). Buildspec adalah kumpulan perintah build dan pengaturan terkait, dalam YAML format, yang CodeBuild digunakan untuk menjalankan build. Anda dapat menyertakan buildspec sebagai bagian dari kode sumber atau Anda dapat menentukan buildspec saat membuat proyek build. Untuk informasi tentang cara kerja spesifikasi build, lihatBagaimana cara CodeBuild kerja.
Topik
Nama file Buildspec dan lokasi penyimpanan
Jika Anda menyertakan buildspec sebagai bagian dari kode sumber, secara default, file buildspec harus diberi nama buildspec.yml
dan ditempatkan di root direktori sumber Anda.
Anda dapat mengganti nama dan lokasi file buildspec default. Sebagai contoh, Anda dapat:
-
Gunakan file buildspec yang berbeda untuk build yang berbeda di repositori yang sama, seperti dan.
buildspec_debug.yml
buildspec_release.yml
-
Simpan file buildspec di tempat lain selain root direktori sumber Anda, seperti
config/buildspec.yml
atau di bucket S3. Bucket S3 harus berada di AWS Wilayah yang sama dengan proyek build Anda. Tentukan file buildspec menggunakan nya ARN (misalnya,).arn:aws:s3:::
<my-codebuild-sample2>
/buildspec.yml
Anda hanya dapat menentukan satu buildspec untuk proyek build, terlepas dari nama file buildspec.
Untuk mengganti nama file buildspec default, lokasi, atau keduanya, lakukan salah satu hal berikut:
-
Jalankan
update-project
perintah AWS CLIcreate-project
or, aturbuildspec
nilai ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan.CODEBUILD_SRC_DIR
Anda juga dapat melakukan hal yang setara dengancreate project
operasi di AWS SDKs. Untuk informasi selengkapnya, lihat Buat proyek build atau Ubah pengaturan proyek build. -
Jalankan AWS CLI
start-build
perintah, aturbuildspecOverride
nilai ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan.CODEBUILD_SRC_DIR
Anda juga dapat melakukan hal yang setara denganstart build
operasi di AWS SDKs. Untuk informasi selengkapnya, lihat Jalankan build secara manual. -
Dalam AWS CloudFormation template, atur
BuildSpec
propertiSource
dalam sumber daya tipeAWS::CodeBuild::Project
ke jalur ke file buildspec alternatif relatif terhadap nilai variabel lingkungan bawaan.CODEBUILD_SRC_DIR
Untuk informasi selengkapnya, lihat BuildSpec properti di sumber AWS CodeBuild proyek di Panduan AWS CloudFormation Pengguna.
Sintaks Buildspec
File buildspec harus dinyatakan dalam format. YAML
Jika perintah berisi karakter, atau string karakter, yang tidak didukung olehYAML, Anda harus melampirkan perintah dalam tanda kutip (“”). Perintah berikut diapit tanda kutip karena titik dua (:) diikuti oleh spasi tidak diperbolehkan masuk. YAML Tanda kutip dalam perintah diloloskan (\”).
"export PACKAGE_NAME=$(cat package.json | grep name | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g')"
Buildspec memiliki sintaks berikut:
version: 0.2 run-as:
Linux-user-name
env: shell:shell-tag
variables:key
: "value
"key
: "value
" parameter-store:key
: "value
"key
: "value
" exported-variables: -variable
-variable
secrets-manager:key
:secret-id
:json-key
:version-stage
:version-id
git-credential-helper: no | yes proxy: upload-artifacts: no | yes logs: no | yes batch: fast-fail: false | true # build-list: # build-matrix: # build-graph: phases: install: run-as:Linux-user-name
on-failure: ABORT | CONTINUE runtime-versions:runtime
:version
runtime
:version
commands: -command
-command
finally: -command
-command
pre_build: run-as:Linux-user-name
on-failure: ABORT | CONTINUE commands: -command
-command
finally: -command
-command
build: run-as:Linux-user-name
on-failure: ABORT | CONTINUE commands: -command
-command
finally: -command
-command
post_build: run-as:Linux-user-name
on-failure: ABORT | CONTINUE commands: -command
-command
finally: -command
-command
reports:report-group-name-or-arn
: files: -location
-location
base-directory:location
discard-paths: no | yes file-format:report-format
artifacts: files: -location
-location
name:artifact-name
discard-paths: no | yes base-directory:location
exclude-paths:excluded paths
enable-symlinks: no | yes s3-prefix:prefix
secondary-artifacts:artifactIdentifier
: files: -location
-location
name:secondary-artifact-name
discard-paths: no | yes base-directory:location
artifactIdentifier
: files: -location
-location
discard-paths: no | yes base-directory:location
cache: paths: -path
-path
Buildspec berisi berikut ini:
versi
Pemetaan yang diperlukan. Merupakan versi buildspec. Kami menyarankan Anda menggunakan0.2
.
catatan
Meskipun versi 0.1 masih didukung, kami sarankan Anda menggunakan versi 0.2 bila memungkinkan. Untuk informasi selengkapnya, lihat Versi Buildspec.
jalankan-sebagai
Urutan opsional. Hanya tersedia untuk pengguna Linux. Menentukan pengguna Linux yang menjalankan perintah dalam file buildspec ini. run-as
memberikan izin baca dan jalankan pengguna yang ditentukan. Saat Anda menentukan run-as
di bagian atas file buildspec, itu berlaku secara global untuk semua perintah. Jika Anda tidak ingin menentukan pengguna untuk semua perintah file buildspec, Anda dapat menentukan satu untuk perintah dalam satu fase dengan menggunakan run-as
di salah satu blok. phases
Jika tidak run-as
ditentukan, maka semua perintah berjalan sebagai pengguna root.
env
Urutan opsional. Merupakan informasi untuk satu atau lebih variabel lingkungan kustom.
catatan
Untuk melindungi informasi sensitif, berikut ini disembunyikan di CodeBuild log:
-
AWS kunci aksesIDs. Untuk informasi selengkapnya, lihat Mengelola Kunci Akses untuk IAM Pengguna di Panduan AWS Identity and Access Management Pengguna.
-
String ditentukan menggunakan Parameter Store. Untuk informasi selengkapnya, lihat Systems Manager Parameter Store dan Systems Manager Parameter Store Console Walkthrough di Panduan Pengguna Amazon EC2 Systems Manager.
-
String ditentukan menggunakan AWS Secrets Manager. Untuk informasi selengkapnya, lihat Manajemen kunci.
- env/cangkang
-
Urutan opsional. Menentukan shell yang didukung untuk sistem operasi Linux atau Windows.
Untuk sistem operasi Linux, tag shell yang didukung adalah:
-
bash
-
/bin/sh
Untuk sistem operasi Windows, tag shell yang didukung adalah:
-
powershell.exe
-
cmd.exe
-
- env/variabel
-
Diperlukan jika
env
ditentukan, dan Anda ingin menentukan variabel lingkungan kustom dalam teks biasa. Berisi pemetaankey
/value
skalar, di mana setiap pemetaan mewakili variabel lingkungan kustom tunggal dalam teks biasa.key
adalah nama variabel lingkungan khusus, danvalue
adalah nilai variabel tersebut.penting
Kami sangat tidak menyarankan penyimpanan nilai sensitif dalam variabel lingkungan. Variabel lingkungan dapat ditampilkan dalam teks biasa menggunakan alat seperti CodeBuild konsol dan AWS CLI. Untuk nilai sensitif, sebaiknya gunakan
parameter-store
atausecrets-manager
pemetaan sebagai gantinya, seperti yang dijelaskan nanti di bagian ini.Setiap variabel lingkungan yang Anda tetapkan menggantikan variabel lingkungan yang ada. Misalnya, jika image Docker sudah berisi variabel lingkungan bernama
MY_VAR
dengan nilaimy_value
, dan Anda menetapkan variabel lingkungan bernamaMY_VAR
dengan nilaiother_value
,my_value
maka diganti denganother_value
. Demikian pula, jika image Docker sudah berisi variabel lingkungan bernamaPATH
dengan nilai/usr/local/sbin:/usr/local/bin
, dan Anda menetapkan variabel lingkungan bernamaPATH
dengan nilai$PATH:/usr/share/ant/bin
,/usr/local/sbin:/usr/local/bin
maka digantikan oleh nilai$PATH:/usr/share/ant/bin
literal.Jangan mengatur variabel lingkungan apa pun dengan nama yang dimulai dengan
CODEBUILD_
. Awalan ini dicadangkan untuk penggunaan internal .Jika variabel lingkungan dengan nama yang sama didefinisikan di beberapa tempat, nilainya ditentukan sebagai berikut:
-
Nilai dalam panggilan operasi start build lebih diutamakan. Anda dapat menambahkan atau mengganti variabel lingkungan saat membuat build. Untuk informasi selengkapnya, lihat Jalankan AWS CodeBuild build secara manual.
-
Nilai dalam definisi proyek build akan diutamakan berikutnya. Anda dapat menambahkan variabel lingkungan di tingkat proyek saat Anda membuat atau mengedit proyek. Untuk informasi selengkapnya, silakan lihat Buat proyek build di AWS CodeBuild dan Ubah pengaturan proyek build di AWS CodeBuild.
-
Nilai dalam deklarasi buildspec diutamakan paling rendah.
-
- env/parameter-toko
-
Diperlukan jika
env
ditentukan, dan Anda ingin mengambil variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store. Berisi pemetaankey
/value
skalar, di mana setiap pemetaan mewakili variabel lingkungan kustom tunggal yang disimpan di Amazon EC2 Systems Manager Parameter Store.key
adalah nama yang Anda gunakan nanti dalam perintah build untuk merujuk ke variabel lingkungan khusus ini, danvalue
adalah nama variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store. Untuk menyimpan nilai sensitif, lihat Systems Manager Parameter Store and Walkthrough: Membuat dan menguji parameter String (konsol) di Panduan Pengguna Amazon EC2 Systems Manager.penting
CodeBuild Untuk memungkinkan mengambil variabel lingkungan kustom yang disimpan di Amazon EC2 Systems Manager Parameter Store, Anda harus menambahkan
ssm:GetParameters
tindakan ke peran CodeBuild layanan Anda. Untuk informasi selengkapnya, lihat Memungkinkan CodeBuild untuk berinteraksi dengan AWS layanan lain.Variabel lingkungan apa pun yang Anda ambil dari Amazon EC2 Systems Manager Parameter Store menggantikan variabel lingkungan yang ada. Misalnya, jika image Docker sudah berisi variabel lingkungan bernama
MY_VAR
dengan nilaimy_value
, dan Anda mengambil variabel lingkungan bernamaMY_VAR
dengan nilaiother_value
, makamy_value
diganti dengan.other_value
Demikian pula, jika image Docker sudah berisi variabel lingkungan bernamaPATH
dengan nilai/usr/local/sbin:/usr/local/bin
, dan Anda mengambil variabel lingkungan bernamaPATH
dengan nilai$PATH:/usr/share/ant/bin
, maka digantikan/usr/local/sbin:/usr/local/bin
oleh nilai literal.$PATH:/usr/share/ant/bin
Jangan menyimpan variabel lingkungan apa pun dengan nama yang dimulai dengan
CODEBUILD_
. Awalan ini dicadangkan untuk penggunaan internal .Jika variabel lingkungan dengan nama yang sama didefinisikan di beberapa tempat, nilainya ditentukan sebagai berikut:
-
Nilai dalam panggilan operasi start build lebih diutamakan. Anda dapat menambahkan atau mengganti variabel lingkungan saat membuat build. Untuk informasi selengkapnya, lihat Jalankan AWS CodeBuild build secara manual.
-
Nilai dalam definisi proyek build akan diutamakan berikutnya. Anda dapat menambahkan variabel lingkungan di tingkat proyek saat Anda membuat atau mengedit proyek. Untuk informasi selengkapnya, silakan lihat Buat proyek build di AWS CodeBuild dan Ubah pengaturan proyek build di AWS CodeBuild.
-
Nilai dalam deklarasi buildspec diutamakan paling rendah.
-
- env/rahasia-manajer
-
Diperlukan jika Anda ingin mengambil variabel lingkungan khusus yang disimpan di AWS Secrets Manager. Tentukan Secrets Manager
reference-key
menggunakan pola berikut:
:<key>
<secret-id>
:<json-key>
:<version-stage>
:<version-id>
<key>
-
(Wajib) Nama variabel lingkungan lokal. Gunakan nama ini untuk mengakses variabel selama pembuatan.
<secret-id>
-
(Wajib) Nama atau Amazon Resource Name (ARN) yang berfungsi sebagai pengidentifikasi unik untuk rahasia tersebut. Untuk mengakses rahasia di AWS akun Anda, cukup tentukan nama rahasia. Untuk mengakses rahasia di AWS akun yang berbeda, tentukan rahasianyaARN.
<json-key>
-
(Opsional) Menentukan nama kunci pasangan nilai kunci Secrets Manager yang nilainya ingin Anda ambil. Jika Anda tidak menentukan
json-key
, CodeBuild mengambil seluruh teks rahasia. <version-stage>
-
(Opsional) Menentukan versi rahasia yang ingin Anda ambil dengan label pementasan yang dilampirkan ke versi. Label pementasan digunakan untuk melacak versi yang berbeda selama proses rotasi. Jika Anda menggunakan
version-stage
, jangan tentukanversion-id
. Jika Anda tidak menentukan tahap versi atau ID versi, defaultnya adalah mengambil versi dengan nilai tahap versi.AWSCURRENT
<version-id>
-
(Opsional) Menentukan identifier unik dari versi rahasia yang ingin Anda gunakan. Jika Anda menentukan
version-id
, jangan tentukanversion-stage
. Jika Anda tidak menentukan tahap versi atau ID versi, defaultnya adalah mengambil versi dengan nilai tahap versi.AWSCURRENT
Dalam contoh berikut,
TestSecret
adalah nama pasangan kunci-nilai yang disimpan di Secrets Manager. KuncinyaTestSecret
adalahMY_SECRET_VAR
. Anda mengakses variabel selama pembuatan menggunakanLOCAL_SECRET_VAR
nama.env: secrets-manager: LOCAL_SECRET_VAR: "TestSecret:MY_SECRET_VAR"
Untuk informasi selengkapnya, lihat Apa itu AWS Secrets Manager dalam Panduan Pengguna AWS Secrets Manager .
- env/variabel yang diekspor
-
Pemetaan opsional. Digunakan untuk daftar variabel lingkungan yang ingin Anda ekspor. Tentukan nama setiap variabel yang ingin Anda ekspor pada baris terpisah di bawah
exported-variables
. Variabel yang ingin Anda ekspor harus tersedia di wadah Anda selama pembuatan. Variabel yang Anda ekspor dapat menjadi variabel lingkungan.Variabel lingkungan yang diekspor digunakan bersama dengan AWS CodePipeline untuk mengekspor variabel lingkungan dari tahap pembuatan saat ini ke tahap selanjutnya dalam pipeline. Untuk informasi selengkapnya, lihat Bekerja dengan variabel di Panduan AWS CodePipeline Pengguna.
Selama build, nilai variabel tersedia dimulai dengan
install
fase. Ini dapat diperbarui antara awalinstall
fase dan akhirpost_build
fase. Setelahpost_build
fase berakhir, nilai variabel yang diekspor tidak dapat berubah.catatan
Berikut ini tidak dapat diekspor:
-
Amazon EC2 Systems Manager Parameter Menyimpan rahasia yang ditentukan dalam proyek build.
-
Rahasia Secrets Manager yang ditentukan dalam proyek build
-
Variabel lingkungan yang dimulai dengan
AWS_
.
-
- env/git-credential-helper
-
Pemetaan opsional. Digunakan untuk menunjukkan jika CodeBuild menggunakan pembantu kredensi Git untuk memberikan kredensi Git.
yes
jika digunakan. Jika tidak,no
atau tidak ditentukan. Untuk informasi selengkapnya, lihat gitcredentialsdi situs web Git. catatan
git-credential-helper
tidak didukung untuk build yang dipicu oleh webhook untuk repositori Git publik.
proxy
Urutan opsional. Digunakan untuk merepresentasikan setelan jika Anda menjalankan build di server proxy eksplisit. Untuk informasi selengkapnya, lihat Jalankan CodeBuild di server proxy eksplisit.
- proxy/upload-artefak
-
Pemetaan opsional. Setel ke
yes
jika Anda ingin build di server proxy eksplisit untuk mengunggah artefak. Default-nya adalahno
. - proksi/log
-
Pemetaan opsional. Setel ke
yes
build Anda di server proxy eksplisit untuk membuat CloudWatch log. Default-nya adalahno
.
fase
Urutan yang diperlukan. Merupakan perintah yang CodeBuild berjalan selama setiap fase build.
catatan
Di buildspec versi 0.1, CodeBuild jalankan setiap perintah dalam instance terpisah dari shell default di lingkungan build. Ini berarti bahwa setiap perintah berjalan secara terpisah dari semua perintah lainnya. Oleh karena itu, secara default, Anda tidak dapat menjalankan satu perintah yang bergantung pada status perintah sebelumnya (misalnya, mengubah direktori atau mengatur variabel lingkungan). Untuk mengatasi batasan ini, kami sarankan Anda menggunakan versi 0.2, yang memecahkan masalah ini. Jika Anda harus menggunakan buildspec versi 0.1, kami merekomendasikan pendekatannya di. Kerang dan perintah dalam membangun lingkungan
- fase/*/ run-as
-
Urutan opsional. Gunakan dalam fase build untuk menentukan pengguna Linux yang menjalankan perintahnya. Jika juga
run-as
ditentukan secara global untuk semua perintah di bagian atas file buildspec, maka pengguna tingkat fase diutamakan. Misalnya, jika secara globalrun-as
menentukan User-1, dan untukinstall
fase hanyarun-as
pernyataan yang menentukan User-2, maka semua perintah di kemudian file buildspec dijalankan sebagai User-1 kecuali perintah dalam fase, yang dijalankan sebagai User-2.install
- fase/*/kegagalan
-
Urutan opsional. Menentukan tindakan yang harus diambil jika kegagalan terjadi selama fase. Ini dapat berupa salah satu dari nilai berikut:
-
ABORT
- Batalkan bangunannya. -
CONTINUE
- Lanjutkan ke fase berikutnya.
Jika properti ini tidak ditentukan, proses kegagalan mengikuti fase transisi seperti yang ditunjukkan padaBangun transisi fase.
-
- fase/*/ akhirnya
-
Blok opsional. Perintah yang ditentukan dalam
finally
blok dijalankan setelah perintah dicommands
blok. Perintah dalamfinally
blok dijalankan bahkan jika perintah dicommands
blok gagal. Misalnya, jikacommands
blok berisi tiga perintah dan yang pertama gagal, CodeBuild lewati dua perintah yang tersisa dan jalankan perintah apa pun difinally
blok. Fase ini berhasil ketika semua perintah dicommands
danfinally
blok berjalan dengan sukses. Jika ada perintah dalam fase gagal, fase gagal.
Nama fase build yang diizinkan adalah:
- fase/instal
-
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan selama instalasi. Kami menyarankan Anda menggunakan
install
fase hanya untuk menginstal paket di lingkungan build. Misalnya, Anda mungkin menggunakan fase ini untuk menginstal kerangka pengujian kode seperti Mocha atauRSpec.- fase/instal/versi runtime
-
Urutan opsional. Versi runtime didukung dengan Ubuntu standard image 5.0 atau yang lebih baru dan Amazon Linux 2 standard image 4.0 atau yang lebih baru. Jika ditentukan, setidaknya satu runtime harus disertakan dalam bagian ini. Tentukan runtime menggunakan versi tertentu, versi mayor diikuti oleh
.x
untuk menentukan yang CodeBuild menggunakan versi mayor tersebut dengan versi minor terbarunya, ataulatest
untuk menggunakan versi mayor dan minor terbaru (misalnya,,ruby: 3.2
nodejs: 18.x
, ataujava: latest
). Anda dapat menentukan runtime menggunakan angka atau variabel lingkungan. Misalnya, jika Anda menggunakan Amazon Linux 2 image standar 4.0, maka berikut ini menentukan bahwa versi 17 dari Java, versi minor terbaru dari python versi 3, dan versi yang terkandung dalam variabel lingkungan Ruby diinstal. Untuk informasi selengkapnya, lihat Gambar Docker disediakan oleh CodeBuild.phases: install: runtime-versions: java: corretto8 python: 3.x ruby: "$MY_RUBY_VAR"
Anda dapat menentukan satu atau beberapa runtime di
runtime-versions
bagian file buildspec Anda. Jika runtime Anda bergantung pada runtime lain, Anda juga dapat menentukan runtime dependennya dalam file buildspec. Jika Anda tidak menentukan runtime apa pun dalam file buildspec, CodeBuild pilih runtime default yang tersedia di gambar yang Anda gunakan. Jika Anda menentukan satu atau beberapa runtime, hanya CodeBuild menggunakan runtime tersebut. Jika runtime dependen tidak ditentukan, CodeBuild coba pilih runtime dependen untuk Anda.Jika dua runtime yang ditentukan bertentangan, build gagal. Misalnya,
android: 29
danjava: openjdk11
konflik, jadi jika keduanya ditentukan, build gagal.Untuk informasi selengkapnya tentang runtime yang tersedia, lihatRuntime yang tersedia.
catatan
Jika Anda menentukan
runtime-versions
bagian dan menggunakan gambar selain Ubuntu Standard Image 2.0 atau yang lebih baru, atau Amazon Linux 2 (AL2) image standar 1.0 atau yang lebih baru, build akan mengeluarkan peringatan, "Skipping install of runtimes. Runtime version selection is not supported by this build image
.”
- fase/instal/perintah
-
Urutan opsional. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan selama instalasi. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.
- fase/pre_build
-
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan sebelum build. Misalnya, Anda dapat menggunakan fase ini untuk masuk ke AmazonECR, atau Anda dapat menginstal dependensi npm.
- fases/pre_build/ perintah
-
Urutan yang
pre_build
diperlukan jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan sebelum build. CodeBuildmenjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.
- fase/membangun
-
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan selama pembuatan. Misalnya, Anda mungkin menggunakan fase ini untuk menjalankan Mocha,RSpec, atau sbt.
- fase/build/ perintah
-
Diperlukan
build
jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan selama pembuatan. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.
- fase/post_build
-
Urutan opsional. Merupakan perintah, jika ada, yang CodeBuild berjalan setelah build. Misalnya, Anda dapat menggunakan Maven untuk mengemas artefak build ke dalam WAR file JAR atau, atau Anda dapat mendorong image Docker ke Amazon. ECR Kemudian Anda dapat mengirim pemberitahuan build melalui AmazonSNS.
- fases/post_build/ perintah
-
Diperlukan
post_build
jika ditentukan. Berisi urutan skalar, di mana setiap skalar mewakili satu perintah yang CodeBuild berjalan setelah build. CodeBuild menjalankan setiap perintah, satu per satu, dalam urutan yang tercantum, dari awal hingga akhir.
melaporkan
- report-group-name-or-arn
-
Urutan opsional. Menentukan grup laporan yang dikirimkan laporan. Sebuah proyek dapat memiliki maksimal lima kelompok laporan. Tentukan ARN grup laporan yang ada, atau nama grup laporan baru. Jika Anda menentukan nama, CodeBuild membuat grup laporan menggunakan nama proyek Anda dan nama yang Anda tentukan dalam format
<project-name>-<report-group-name>
. Nama grup laporan juga dapat diatur menggunakan variabel lingkungan dalam buildspec seperti.$REPORT_GROUP_NAME
Untuk informasi selengkapnya, lihat Laporkan penamaan grup. - <report-group>laporan// file
-
Urutan yang diperlukan. Merupakan lokasi yang berisi data mentah hasil tes yang dihasilkan oleh laporan. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan file pengujian, relatif terhadap lokasi build asli atau, jika disetel, file.
base-directory
Lokasi dapat mencakup yang berikut:-
Satu file (misalnya,
my-test-report-file.json
). -
Sebuah file tunggal dalam subdirektori (misalnya,
ataumy-subdirectory
/my-test-report-file.json
).my-parent-subdirectory
/my-subdirectory
/my-test-report-file.json -
'**/*'
mewakili semua file secara rekursif. -
mewakili semua file dalam subdirektori bernamamy-subdirectory
/*my-subdirectory
. -
mewakili semua file rekursif mulai dari subdirektori bernamamy-subdirectory
/**/*my-subdirectory
.
-
- <report-group>laporan// file-format
-
Pemetaan opsional. Merupakan format file laporan. Jika tidak ditentukan,
JUNITXML
digunakan. Nilai ini tidak peka huruf besar/kecil. Kemungkinan nilainya adalah:Laporan pengujian
-
CUCUMBERJSON
-
Mentimun JSON
-
JUNITXML
-
JUnit XML
-
NUNITXML
-
NUnit XML
-
NUNIT3XML
-
NUnit3 XML
-
TESTNGXML
-
TestNG XML
-
VISUALSTUDIOTRX
-
Studio Visual TRX
Laporan cakupan kode
-
CLOVERXML
-
Semanggi XML
-
COBERTURAXML
-
Cobertura XML
-
JACOCOXML
-
JaCoCo XML
-
SIMPLECOV
-
SimpleCov JSON
-
- <report-group>laporan//direktori dasar
-
Pemetaan opsional. Merupakan satu atau beberapa direktori tingkat atas, relatif terhadap lokasi build asli, yang CodeBuild digunakan untuk menentukan tempat menemukan file pengujian mentah.
- <report-group>laporan// buangan-jalur
-
Tidak wajib. Menentukan apakah direktori file laporan diratakan dalam output. Jika ini tidak ditentukan, atau berisi
no
, file laporan adalah output dengan struktur direktori mereka utuh. Jika ini berisiyes
, semua file pengujian ditempatkan di direktori output yang sama. Misalnya, jika jalur ke hasil tes adalahcom/myapp/mytests/TestResult.xml
, menentukanyes
akan menempatkan file ini di/TestResult.xml
.
artefak
Urutan opsional. Merupakan informasi tentang di mana CodeBuild dapat menemukan output build dan bagaimana CodeBuild mempersiapkannya untuk diunggah ke bucket keluaran S3. Urutan ini tidak diperlukan jika, misalnya, Anda sedang membangun dan mendorong image Docker ke AmazonECR, atau Anda menjalankan pengujian unit pada kode sumber Anda, tetapi tidak membangunnya.
catatan
Metadata Amazon S3 memiliki CodeBuild header bernama yang berisi CodeBuild build x-amz-meta-codebuild-buildarn
yang menerbitkan buildArn
artefak ke Amazon S3. Ditambahkan untuk memungkinkan pelacakan sumber untuk notifikasi dan referensi dari mana artefak tersebut dihasilkan. buildArn
- artefak/file
-
Urutan yang diperlukan. Merupakan lokasi yang berisi artefak keluaran build di lingkungan build. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan artefak keluaran build, relatif terhadap lokasi build asli atau, jika disetel, direktori dasar. Lokasi dapat mencakup yang berikut:
-
Satu file (misalnya,
my-file.jar
). -
Sebuah file tunggal dalam subdirektori (misalnya,
ataumy-subdirectory
/my-file.jar
).my-parent-subdirectory
/my-subdirectory
/my-file.jar -
'**/*'
mewakili semua file secara rekursif. -
mewakili semua file dalam subdirektori bernamamy-subdirectory
/*my-subdirectory
. -
mewakili semua file rekursif mulai dari subdirektori bernamamy-subdirectory
/**/*my-subdirectory
.
Bila Anda menentukan lokasi artefak keluaran build, CodeBuild dapat menemukan lokasi build asli di lingkungan build. Anda tidak perlu menambahkan lokasi keluaran artefak build Anda dengan jalur ke lokasi build asli atau menentukan
./
atau serupa. Jika Anda ingin mengetahui jalur ke lokasi ini, Anda dapat menjalankan perintah sepertiecho $CODEBUILD_SRC_DIR
selama pembuatan. Lokasi untuk setiap lingkungan bangunan mungkin sedikit berbeda. -
- artefak/nama
-
Nama opsional. Menentukan nama untuk artefak build Anda. Nama ini digunakan ketika salah satu dari berikut ini benar.
-
Anda menggunakan CodeBuild API untuk membuat build dan
overrideArtifactName
flag disetel padaProjectArtifacts
objek saat proyek diperbarui, proyek dibuat, atau build dimulai. -
Anda menggunakan CodeBuild konsol untuk membuat build, nama ditentukan dalam file buildspec, dan Anda memilih Aktifkan versi semantik saat membuat atau memperbarui proyek. Untuk informasi selengkapnya, lihat Buat proyek build (konsol).
Anda dapat menentukan nama dalam file buildspec yang dihitung pada waktu pembuatan. Nama yang ditentukan dalam file buildspec menggunakan bahasa perintah Shell. Misalnya, Anda dapat menambahkan tanggal dan waktu untuk nama artefak Anda sehingga selalu unik. Nama artefak unik mencegah artefak ditimpa. Untuk informasi selengkapnya, lihat Bahasa perintah Shell
. -
Ini adalah contoh nama artefak yang ditambahkan dengan tanggal artefak dibuat.
version: 0.2 phases: build: commands: - rspec HelloWorld_spec.rb artifacts: files: - '**/*' name: myname-$(date +%Y-%m-%d)
-
Ini adalah contoh nama artefak yang menggunakan variabel CodeBuild lingkungan. Untuk informasi selengkapnya, lihat Variabel lingkungan di lingkungan build.
version: 0.2 phases: build: commands: - rspec HelloWorld_spec.rb artifacts: files: - '**/*' name: myname-$AWS_REGION
-
Ini adalah contoh nama artefak yang menggunakan variabel CodeBuild lingkungan dengan tanggal pembuatan artefak ditambahkan padanya.
version: 0.2 phases: build: commands: - rspec HelloWorld_spec.rb artifacts: files: - '**/*' name: $AWS_REGION-$(date +%Y-%m-%d)
Anda dapat menambahkan informasi jalur ke nama sehingga artefak bernama ditempatkan di direktori berdasarkan jalur dalam nama. Dalam contoh ini, artefak build ditempatkan di output di bawah
builds/<build number>/my-artifacts
.version: 0.2 phases: build: commands: - rspec HelloWorld_spec.rb artifacts: files: - '**/*' name: builds/$CODEBUILD_BUILD_NUMBER/my-artifacts
-
- artefak/jalur buangan-
-
Tidak wajib. Menentukan apakah direktori artefak build diratakan dalam output. Jika ini tidak ditentukan, atau berisi
no
, artefak build adalah keluaran dengan struktur direktorinya utuh. Jika ini berisiyes
, semua artefak build ditempatkan di direktori keluaran yang sama. Misalnya, jika jalur ke file dalam artefak keluaran build adalahcom/mycompany/app/HelloWorld.java
, menentukanyes
akan menempatkan file ini./HelloWorld.java
- artefak/direktori dasar
-
Pemetaan opsional. Merupakan satu atau beberapa direktori tingkat atas, relatif terhadap lokasi build asli, yang CodeBuild digunakan untuk menentukan file dan subdirektori mana yang akan disertakan dalam artefak keluaran build. Nilai yang valid meliputi:
-
Sebuah direktori tingkat atas tunggal (misalnya,
my-directory
). -
'my-directory*'
mewakili semua direktori tingkat atas dengan nama yang dimulai dengan.my-directory
Direktori tingkat atas yang cocok tidak disertakan dalam artefak keluaran build, hanya file dan subdirektorinya.
Anda dapat menggunakan
files
dandiscard-paths
untuk lebih membatasi file dan subdirektori mana yang disertakan. Misalnya, untuk struktur direktori berikut:. ├── my-build-1 │ └── my-file-1.txt └── my-build-2 ├── my-file-2.txt └── my-subdirectory └── my-file-3.txt
Dan untuk
artifacts
urutan berikut:artifacts: files: - '*/my-file-3.txt' base-directory: my-build-2
Subdirektori dan file berikut akan disertakan dalam artefak keluaran build:
. └── my-subdirectory └── my-file-3.txt
Sedangkan untuk
artifacts
urutan berikut:artifacts: files: - '**/*' base-directory: 'my-build*' discard-paths: yes
File-file berikut akan disertakan dalam artefak keluaran build:
. ├── my-file-1.txt ├── my-file-2.txt └── my-file-3.txt
-
- artefak/tidak termasuk jalur
-
Pemetaan opsional. Merupakan satu atau lebih jalur, relatif terhadap
base-directory
, yang CodeBuild akan dikecualikan dari artefak build. Karakter tanda bintang (*
) cocok dengan karakter nol atau karakter lain dari komponen nama tanpa melintasi batas folder. Tanda bintang ganda (**
) cocok dengan nol atau lebih karakter dari komponen nama di semua direktori.Contoh jalur pengecualian meliputi yang berikut:
-
Untuk mengecualikan file dari semua direktori:
"**/
file-name
/**/*" -
Untuk mengecualikan semua folder titik:
"**/.*/**/*"
-
Untuk mengecualikan semua file titik:
"**/.*"
-
- artefak/aktifkan-symlink
-
Tidak wajib. Jika jenis output
ZIP
, menentukan apakah link simbolik internal dipertahankan dalam file. ZIP Jika ini berisiyes
, semua tautan simbolis internal di sumber akan disimpan dalam file artefakZIP. - artefak/awalan s3
-
Tidak wajib. Menentukan awalan yang digunakan saat artefak dikeluarkan ke bucket Amazon S3 dan jenis namespace adalah.
BUILD_ID
Saat digunakan, jalur keluaran di ember adalah<s3-prefix>/<build-id>/<name>.zip
. - artefak/artefak sekunder
-
Urutan opsional. Merupakan satu atau lebih definisi artefak sebagai pemetaan antara pengidentifikasi artefak dan definisi artefak. Setiap pengidentifikasi artefak di blok ini harus cocok dengan artefak yang ditentukan dalam
secondaryArtifacts
atribut proyek Anda. Setiap definisi terpisah memiliki sintaks yang sama denganartifacts
blok di atas.catatan
artifacts/filesUrutan selalu diperlukan, bahkan ketika hanya ada artefak sekunder yang ditentukan.
Misalnya, jika proyek Anda memiliki struktur berikut:
{ "name": "sample-project", "secondaryArtifacts": [ { "type": "S3", "location": "
<output-bucket1>
", "artifactIdentifier": "artifact1", "name": "secondary-artifact-name-1" }, { "type": "S3", "location": "<output-bucket2>
", "artifactIdentifier": "artifact2", "name": "secondary-artifact-name-2" } ] }Kemudian buildspec Anda terlihat seperti berikut:
version: 0.2 phases: build: commands: - echo Building... artifacts: files: - '**/*' secondary-artifacts: artifact1: files: - directory/file1 name: secondary-artifact-name-1 artifact2: files: - directory/file2 name: secondary-artifact-name-2
cache
Urutan opsional. Merupakan informasi tentang di mana CodeBuild dapat menyiapkan file untuk mengunggah cache ke bucket cache S3. Urutan ini tidak diperlukan jika jenis cache proyekNo Cache
.
- cache/jalur
-
Urutan yang diperlukan. Merupakan lokasi cache. Berisi urutan skalar, dengan setiap skalar mewakili lokasi terpisah di mana CodeBuild dapat menemukan artefak keluaran build, relatif terhadap lokasi build asli atau, jika disetel, direktori dasar. Lokasi dapat mencakup yang berikut:
-
Satu file (misalnya,
my-file.jar
). -
Sebuah file tunggal dalam subdirektori (misalnya,
ataumy-subdirectory
/my-file.jar
).my-parent-subdirectory
/my-subdirectory
/my-file.jar -
'**/*'
mewakili semua file secara rekursif. -
mewakili semua file dalam subdirektori bernamamy-subdirectory
/*my-subdirectory
. -
mewakili semua file rekursif mulai dari subdirektori bernamamy-subdirectory
/**/*my-subdirectory
.
-
penting
Karena deklarasi buildspec harus validYAML, spasi dalam deklarasi buildspec menjadi penting. Jika jumlah spasi dalam deklarasi buildspec Anda tidak valid, build mungkin akan segera gagal. Anda dapat menggunakan YAML validator untuk menguji apakah deklarasi buildspec Anda valid. YAML
Jika Anda menggunakan AWS CLI, atau AWS SDKs untuk mendeklarasikan buildspec saat membuat atau memperbarui proyek build, buildspec harus berupa string tunggal yang diekspresikan dalam YAML format, bersama dengan spasi putih yang diperlukan dan karakter escape baris baru. Ada contoh di bagian selanjutnya.
Jika Anda menggunakan CodeBuild atau AWS CodePipeline konsol alih-alih file buildspec.yl, Anda dapat menyisipkan perintah untuk fase saja. build
Alih-alih menggunakan sintaks sebelumnya, Anda mencantumkan, dalam satu baris, semua perintah yang ingin Anda jalankan selama fase build. Untuk beberapa perintah, pisahkan setiap perintah dengan &&
(misalnya,mvn test && mvn
package
).
Anda dapat menggunakan CodeBuild atau CodePipeline konsol alih-alih file buildspec.yl untuk menentukan lokasi artefak keluaran build di lingkungan build. Alih-alih menggunakan sintaks sebelumnya, Anda mencantumkan, dalam satu baris, semua lokasi. Untuk beberapa lokasi, pisahkan setiap lokasi dengan koma (misalnya,buildspec.yml, target/my-app.jar
).
Contoh Buildspec
Berikut adalah contoh file buildspec.yml.
version: 0.2 env: variables: JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64" parameter-store: LOGIN_PASSWORD: /CodeBuild/dockerLoginPassword phases: install: commands: - echo Entered the install phase... - apt-get update -y - apt-get install -y maven finally: - echo This always runs even if the update or install command fails pre_build: commands: - echo Entered the pre_build phase... - docker login -u User -p $LOGIN_PASSWORD finally: - echo This always runs even if the login command fails build: commands: - echo Entered the build phase... - echo Build started on `date` - mvn install finally: - echo This always runs even if the install command fails post_build: commands: - echo Entered the post_build phase... - echo Build completed on `date` reports: arn:aws:codebuild:your-region:your-aws-account-id:report-group/report-group-name-1: files: - "**/*" base-directory: 'target/tests/reports' discard-paths: no reportGroupCucumberJson: files: - 'cucumber/target/cucumber-tests.xml' discard-paths: yes file-format: CUCUMBERJSON # default is JUNITXML artifacts: files: - target/messageUtil-1.0.jar discard-paths: yes secondary-artifacts: artifact1: files: - target/artifact-1.0.jar discard-paths: yes artifact2: files: - target/artifact-2.0.jar discard-paths: yes cache: paths: - '/root/.m2/**/*'
Berikut adalah contoh buildspec sebelumnya, dinyatakan sebagai string tunggal, untuk digunakan dengan, atau. AWS CLI AWS SDKs
"version: 0.2\n\nenv:\n variables:\n JAVA_HOME: \"/usr/lib/jvm/java-8-openjdk-amd64\\"\n parameter-store:\n LOGIN_PASSWORD: /CodeBuild/dockerLoginPassword\n phases:\n\n install:\n commands:\n - echo Entered the install phase...\n - apt-get update -y\n - apt-get install -y maven\n finally:\n - echo This always runs even if the update or install command fails \n pre_build:\n commands:\n - echo Entered the pre_build phase...\n - docker login -u User -p $LOGIN_PASSWORD\n finally:\n - echo This always runs even if the login command fails \n build:\n commands:\n - echo Entered the build phase...\n - echo Build started on `date`\n - mvn install\n finally:\n - echo This always runs even if the install command fails\n post_build:\n commands:\n - echo Entered the post_build phase...\n - echo Build completed on `date`\n\n reports:\n reportGroupJunitXml:\n files:\n - \"**/*\"\n base-directory: 'target/tests/reports'\n discard-paths: false\n reportGroupCucumberJson:\n files:\n - 'cucumber/target/cucumber-tests.xml'\n file-format: CUCUMBERJSON\n\nartifacts:\n files:\n - target/messageUtil-1.0.jar\n discard-paths: yes\n secondary-artifacts:\n artifact1:\n files:\n - target/messageUtil-1.0.jar\n discard-paths: yes\n artifact2:\n files:\n - target/messageUtil-1.0.jar\n discard-paths: yes\n cache:\n paths:\n - '/root/.m2/**/*'"
Berikut adalah contoh perintah dalam build
fase, untuk digunakan dengan CodeBuild atau CodePipeline konsol.
echo Build started on `date` && mvn install
Dalam contoh ini:
-
Variabel lingkungan khusus, dalam teks biasa, dengan kunci
JAVA_HOME
dan nilai/usr/lib/jvm/java-8-openjdk-amd64
, diatur. -
Variabel lingkungan kustom bernama
dockerLoginPassword
Anda disimpan di Amazon EC2 Systems Manager Parameter Store direferensikan nanti dalam perintah build dengan menggunakan kunciLOGIN_PASSWORD
. -
Anda tidak dapat mengubah nama fase build ini. Perintah yang dijalankan dalam contoh ini adalah
apt-get update -y
danapt-get install -y maven
(untuk menginstal Apache Maven),mvn install
(untuk mengkompilasi, menguji, dan mengemas kode sumber ke dalam artefak keluaran build dan menginstal artefak keluaran build di repositori internalnya),docker login
(untuk masuk ke Docker dengan kata sandi yang sesuai dengan nilai variabel lingkungan khusus yang Anda tetapkan didockerLoginPassword
Amazon EC2 Systems Manager Parameter Store), dan beberapa perintah.echo
echo
Perintah disertakan di sini untuk menunjukkan bagaimana CodeBuild menjalankan perintah dan urutan di mana ia menjalankannya. -
files
mewakili file yang akan diunggah ke lokasi keluaran build. Dalam contoh ini, CodeBuild upload filemessageUtil-1.0.jar
tunggal.messageUtil-1.0.jar
File dapat ditemukan di direktori relatif bernamatarget
di lingkungan build. Karenadiscard-paths: yes
ditentukan,messageUtil-1.0.jar
diunggah langsung (dan bukan ketarget
direktori perantara). Nama filemessageUtil-1.0.jar
dan nama direktori relatiftarget
didasarkan pada cara Apache Maven membuat dan menyimpan artefak keluaran build untuk contoh ini saja. Dalam skenario Anda sendiri, nama file dan direktori ini akan berbeda. -
reports
mewakili dua grup laporan yang menghasilkan laporan selama pembuatan:-
arn:aws:codebuild:your-region:your-aws-account-id:report-group/report-group-name-1
menentukan ARN kelompok laporan. Hasil pengujian yang dihasilkan oleh kerangka pengujian ada ditarget/tests/reports
direktori. Format file adalahJunitXml
dan jalur tidak dihapus dari file yang berisi hasil pengujian. -
reportGroupCucumberJson
menentukan grup laporan baru. Jika nama proyek adalahmy-project
, grup laporan dengan nama akanmy-project-reportGroupCucumberJson
dibuat saat build dijalankan. Hasil pengujian yang dihasilkan oleh kerangka pengujian ada dicucumber/target/cucumber-tests.xml
. Format file pengujian adalahCucumberJson
dan jalur dihapus dari file yang berisi hasil pengujian.
-
Versi Buildspec
Tabel berikut mencantumkan versi buildspec dan perubahan antar versi.
Versi | Perubahan |
---|---|
0,2 |
|
0.1 | Ini adalah definisi awal dari format spesifikasi build. |