Gunakan sintaks GitHub Tindakan di buildspec di AWS CodeBuild - AWS CodeBuild

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

Gunakan sintaks GitHub Tindakan di buildspec di AWS CodeBuild

Anda dapat menggunakan runner aksi CodeBuild yang dikelola untuk menjalankan GitHub Tindakan di dalamnya. CodeBuild Ini dapat dilakukan dengan menambahkan steps ke fase apa pun di file buildspec Anda.

CodeBuild buildspecs mendukung daftar langkah GitHub Tindakan berurutan yang berjalan dalam fase terpisah dari perintah. CodeBuild GitHub Tindakan ini terintegrasi dengan fitur yang CodeBuild ada, yang mencakup cache dependensi, build batch, akses ke AWS Secrets Manager, dan banyak lagi.

Bagaimana cara memulai menggunakan GitHub Action di buildspec saya?

Langkah-langkah tingkat tinggi untuk menggunakan GitHub Action di buildspec Anda adalah sebagai berikut:

  1. Jika Anda belum melakukannya, hubungkan proyek Anda ke GitHub.

    Untuk melakukannya, Anda dapat melakukan salah satu dari yang berikut:

    catatan

    Ini hanya perlu dilakukan jika Anda belum terhubung GitHub di proyek lain.

  2. Di buildspec proyek Anda, Anda dapat menambahkansteps, yang masing-masing mereferensikan Action. GitHub Ini dapat diedit di CodeBuild konsol atau di repositori sumber Anda. Setiap fase build mendukung daftar perintah atau daftar langkah, tetapi keduanya tidak dapat digunakan dalam fase yang sama. Untuk informasi selengkapnya, lihat Gunakan sintaks GitHub Tindakan di buildspec di AWS CodeBuild.

GitHub Tindakan apa yang dapat saya gunakan di buildspec saya?

Anda dapat menggunakan tindakan apa pun yang tersedia di GitHub Marketplace yang tidak bertentangan dengan batasan ini.

Dapatkah saya menggunakan penyedia sumber selain GitHub saat menggunakan GitHub Actions di buildspec saya?

Ya, tetapi menghubungkan ke masih GitHub diperlukan untuk mengautentikasi dengan GitHub dan mengakses GitHub Tindakan. Untuk informasi selengkapnya, lihat GitHub dan token akses Server GitHub Perusahaan.

Mengapa saya harus terhubung GitHub sebagai penyedia sumber untuk menggunakan GitHub Actions di buildspec saya?

Untuk menggunakan GitHub Actions di buildspec Anda, sumber harus diunduh pada komputasi build. Unduhan anonim akan dibatasi tarifnya, jadi dengan menghubungkan ke GitHub, ini dapat membantu memastikan akses yang konsisten.

Berapa biaya untuk menggunakan GitHub Actions di buildspec saya?

Menggunakan GitHub Tindakan di buildspec Anda didukung tanpa biaya tambahan.

Wilayah mana yang mendukung penggunaan GitHub Tindakan di buildspec saya?

Menggunakan GitHub Tindakan di buildspec Anda didukung di semua wilayah. CodeBuild Untuk informasi selengkapnya tentang Wilayah AWS tempat CodeBuild tersedia, lihat AWS Layanan menurut Wilayah.

Praktik terbaik untuk menggunakan GitHub Actions di buildspec

GitHub Tindakan bersifat open source, dibangun dan dipelihara oleh masyarakat. Kami mengikuti model tanggung jawab bersama dan mempertimbangkan kode sumber GitHub Tindakan sebagai data pelanggan yang menjadi tanggung jawab Anda. GitHub Tindakan dapat diberikan akses ke rahasia, token repositori, kode sumber, dan tautan akun. Pastikan Anda yakin dengan kepercayaan dan keamanan GitHub Tindakan yang Anda rencanakan untuk dijalankan.

Panduan yang lebih spesifik dan praktik terbaik keamanan untuk GitHub Tindakan:

Batasan penggunaan GitHub Tindakan di buildspec Anda di CodeBuild

  • GitHub Tindakan di buildspec Anda yang secara internal bergantung pada githubkonteks atau sumber daya GitHub khusus referensi tersebut, seperti permintaan tarik dan masalah, tidak didukung. CodeBuild Misalnya, tindakan berikut tidak akan berfungsi di CodeBuild:

    • GitHub Tindakan yang mencoba menambahkan, mengubah, atau memperbarui GitHub sumber daya, seperti tindakan yang memperbarui permintaan tarik, atau membuat masalah GitHub.

    catatan

    Sebagian besar GitHub Tindakan resmi yang tercantum di https://github.com/actions bergantung pada github konteks. Sebagai gantinya, gunakan tindakan yang tersedia di GitHub Marketplace.

  • GitHub Tindakan dalam buildspec Anda yang merupakan tindakan penampung Docker akan berfungsi, tetapi proyek build Anda harus mengaktifkan mode istimewa dan dijalankan oleh pengguna Docker default (root).

  • GitHub Tindakan di buildspec Anda tidak didukung dalam CodeBuild proyek yang dikonfigurasi untuk berjalan di Windows.

  • GitHub Pekerjaan tindakan (grup langkah) dan properti pekerjaan GitHub Tindakan di buildspec Anda tidak didukung.

  • GitHub Tindakan dalam buildspec Anda tidak didukung dalam CodeBuild proyek yang dikonfigurasi untuk dipicu oleh webhook untuk repositori Git publik. Untuk informasi lebih lanjut, lihat git-credential-helper.

  • VPC build tanpa akses internet publik tidak dapat menjalankan GitHub Actions di buildspec Anda.

  • Setiap fase build mendukung daftar perintah atau daftar langkah, tetapi keduanya tidak dapat digunakan dalam fase yang sama. Misalnya, dalam contoh berikut, langkah-langkah digunakan dalam fase pra-pembuatan untuk mencantumkan GitHub Tindakan, sementara perintah digunakan dalam fase build untuk mencantumkan CodeBuild perintah.

    version: 0.2 phases: pre-build: steps: - name: Lint Code Base uses: github/super-linter@v4 env: VALIDATE_ALL_CODEBASE: 'true' DEFAULT_BRANCH: main build: commands: - echo "Building..." - npm run build

GitHub Referensi buildspec pelari aksi

Topik ini berisi referensi buildspec untuk properti GitHub Action runner.

langkah

Urutan opsional. Langkah-langkah digunakan untuk menjalankan perintah dan tindakan di CodeBuild. Untuk informasi selengkapnya, lihat Gunakan sintaks GitHub Tindakan di buildspec di AWS CodeBuild.

catatan

Setiap fase build mendukung daftar commands atau daftarsteps, tetapi keduanya tidak dapat digunakan dalam fase yang sama.

Setiap langkah build berisi properti berikut.

id

Tidak wajib. Pengidentifikasi untuk langkah yang dapat digunakan untuk referensi langkah dalam konteks lain.

jika

Tidak wajib. Pernyataan bersyarat yang dapat digunakan untuk mencegah langkah berjalan kecuali suatu kondisi terpenuhi. Pernyataan ini dapat menggunakan konteks yang didukung, seperti referensi variabel lingkungan dari CodeBuild, serta ekspresi.

name

Tidak wajib. Nama untuk langkahnya. Jika nama tidak ditentukan, nama akan default ke teks yang ditentukan dalam run perintah.

menggunakan

Tindakan yang berjalan untuk langkah tersebut. Beberapa tindakan mengharuskan Anda untuk mengatur input menggunakanwith. Referensikan README tindakan untuk menentukan input mana yang diperlukan. Untuk informasi selengkapnya, lihat GitHub Tindakan apa yang dapat saya gunakan di buildspec saya?.

Jika uses ditentukan dalam fase build Anda, itu tidak dapat digunakan denganrun.

catatan

Disarankan agar Anda menyertakan versi tindakan yang Anda gunakan. Ini dapat dilakukan dengan menentukan tag Git ref, SHA, atau Docker. Untuk informasi selengkapnya, lihat sintaks steps.uses.

lari

Perintah yang menjalankan program baris perintah. Ini bisa berupa perintah baris tunggal atau perintah multi-baris. Secara default, perintah ini berjalan menggunakan shell non-login. Untuk memilih shell yang berbeda, gunakanshell.

Jika run ditentukan dalam fase build Anda, itu tidak dapat digunakan denganuses.

cangkang

Tidak wajib. Shell yang ditentukan untuk urutan ini. Untuk parameter shell yang didukung, lihat steps.shell. Jika tidak ditentukan, shell yang digunakan adalah bash. Jika bash tidak tersedia, sh digunakan.

dengan

Tidak wajib. Peta parameter input yang ditentukan oleh tindakan. Setiap parameter adalah pasangan kunci/nilai.

dengan.args

Tidak wajib. String yang mendefinisikan input untuk wadah Docker.

dengan.entrypoint

Tidak wajib. Titik masuk Docker ditentukan untuk Dockerfile.

env

Tidak wajib. Variabel yang ditentukan untuk langkah-langkah yang akan digunakan di lingkungan.

continue-on-error

Tidak wajib. Nilai Boolean yang menunjukkan jika kegagalan urutan langkah ini dapat diabaikan.

false

Nilai default. Jika urutan langkah ini gagal, build akan gagal.

true

Jika urutan langkah ini gagal, build masih bisa berhasil.

batas waktu-menit

Tidak wajib. Jumlah maksimum menit langkah dapat dijalankan sebelum dihentikan. Secara default, tidak ada batas waktu. Jika batas waktu langkah melebihi batas waktu build, langkah akan berhenti saat batas waktu build tercapai.

Berikut ini adalah contoh menggunakan Super-Linter GitHub Action:

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true USE_FIND_ALGORITHM: true FILTER_REGEX_INCLUDE: '/github/workspace/buildspec.yml'

GitHub Sampel sintaks tindakan dengan AWS CodeBuild

Grup sampel ini dapat digunakan untuk bereksperimen dengan GitHub Actions di buildspec Anda di. CodeBuild

Contoh Tindakan Super-Linter GitHub

Contoh ini menunjukkan cara menambahkan GitHub Tindakan Super-Linter ke proyek. CodeBuild Tindakan Super-Linter memeriksa kode, menemukan area di mana kode memiliki kesalahan, masalah pemformatan, dan konstruksi yang mencurigakan, dan kemudian mengeluarkan hasilnya ke konsol. CodeBuild

Anda dapat menambahkan GitHub Tindakan Super-Linter ke CodeBuild proyek Anda dengan memperbarui bagian fase file buildspec Anda.

version: 0.2 phases: build: steps: - name: Lint Code Base uses: github/super-linter@v5 env: VALIDATE_ALL_CODEBASE: true

Log Super-Linter akan terlihat mirip dengan yang berikut ini:

/github/workspace/hello-world/app.js:3:13: Extra semicolon. /github/workspace/hello-world/app.js:9:92: Trailing spaces not allowed. /github/workspace/hello-world/app.js:21:7: Unnecessarily quoted property 'body' found. /github/workspace/hello-world/app.js:31:1: Expected indentation of 2 spaces but found 4. /github/workspace/hello-world/app.js:32:2: Newline required at end of file but not found.

Contoh grafik pembuatan batch

Contoh berikut mendefinisikan grafik build yang membuat rantai ketergantungan dan menjalankan perintah menggunakan. steps Dalam contoh ini, build1 berjalan terlebih dahulu karena tidak memiliki dependensi. Karena build2 memiliki ketergantungan padabuild1, jadi build2 jalankan setelah build1 selesai. Untuk informasi, lihat Membangun grafik.

version: 0.2 batch: fast-fail: false build-graph: - identifier: build1 env: variables: BUILD_ID: build1 ignore-failure: false - identifier: build2 env: variables: BUILD_ID: build2 depend-on: - build1 phases: build: steps: - run: echo $BUILD_ID

Contoh Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer menemukan masalah dalam kode Java dan Python Anda dan merekomendasikan cara memperbaikinya. Contoh berikut menggunakan CodeGuru Reviewer untuk memberikan ulasan kode analisis repositori lengkap. Ulasan kode ini memindai semua kode di cabang tertentu. Untuk selengkapnya, lihat Membuat ulasan kode dengan GitHub Tindakan di Panduan Pengguna Amazon CodeGuru Reviewer.

version: 0.2 phases: build: steps: - name: Amazon CodeGuru Reviewer Scanner if: ${{ always() }} uses: aws-actions/codeguru-reviewer@v1.1 with: s3_bucket: codeguru-reviewer-user artifacts: files: - codeguru-results.sarif.json
catatan

Bucket Amazon S3 Anda harus dimulai dengan awalan. codeguru-reviewer-

Log akan terlihat mirip dengan yang berikut ini:

INFO CodeReview created with arn=arn:aws:codeguru-reviewer:region:account-id:association:id:code-review:RepositoryAnalysis-job for job=job INFO SARIF persisted to /github/workspace/codeguru-results.sarif.json INFO Amazon CodeGuru Reviewer job execution completed

Setelah pekerjaan Amazon CodeGuru Reviewer selesai, laporan sarif dihasilkan sebagai CodeBuild artefak. Untuk selengkapnya, lihat Analisis repositori lengkap di Panduan Pengguna Amazon CodeGuru Reviewer.

AWS Secrets Manager sampel

AWS Secrets Manager membantu Anda mengelola, mengambil, dan memutar kredensi database, kredensi aplikasi, token OAuth, kunci API, dan rahasia lainnya sepanjang siklus hidupnya. Contoh berikut mendefinisikan rahasia menggunakan Secrets Manager dan menjalankan perintah menggunakansteps. Untuk informasi, lihat Apa itu AWS Secrets Manager? dalam AWS Secrets Manager User Guide.

version: 0.2 env: secrets-manager: SECRET_VALUE: "arn:aws:secretsmanager:us-east-1:xxxx:secret:/secret-l3IJg9:my_super_secret_key" phases: build: steps: - run: echo $SECRET_VALUE

Log akan terlihat mirip dengan yang berikut ini:

echo $SECRET_VALUE env: SECRET_VALUE: *** ***

Sampel variabel lingkungan

Contoh berikut mendefinisikan variabel lingkungan di bawah env urutan. <bucket-name>Variabel S3_BUCKET didefinisikan dalam buildspec dan ditetapkan sebagai nilainya. Variabel ini direferensikan dalam kondisional if seperti variabel lingkungan biasa dengan menggunakan tanda dolar ($) untuk mengakses konteks GitHub Action env. Untuk informasi lebih lanjut, lihat envurutan.

version: 0.2 env: variables: S3_BUCKET: "<bucket-name>" phases: build: steps: - if: ${{ env.S3_BUCKET == '<bucket-name>' }} run: echo "S3 bucket is $S3_BUCKET"

Log akan terlihat mirip dengan yang berikut ini:

echo "S3 bucket is $S3_BUCKET" env: S3_BUCKET: my-s3-bucket S3 bucket is my-s3-bucket

Sampel variabel lingkungan yang diekspor

Variabel lingkungan yang diekspor digunakan bersama dengan CodePipeline untuk mengekspor variabel lingkungan dari tahap pembuatan saat ini ke tahap selanjutnya dalam pipeline. Contoh berikut mendefinisikan variabel lingkungan yang diekspor di bawah env urutan bernama MY_VARIABLE dan menulis ke file lingkungan GITHUB_ENV.

version: 0.2 env: exported-variables: - MY_VARIABLE phases: build: steps: - run: echo "MY_VARIABLE=my-value" >> $GITHUB_ENV

Untuk informasi selengkapnya, lihat ExportedEnvironmentVariabledi Referensi AWS CodeBuild API.