Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Mengkonfigurasi pelari CodeBuild-hosted GitHub Actions
Tutorial ini menunjukkan cara mengonfigurasi CodeBuild proyek Anda untuk menjalankan tugas GitHub Actions. Untuk informasi selengkapnya tentang menggunakan GitHub Tindakan dengan CodeBuild lihatTutorial: Mengkonfigurasi pelari CodeBuild-hosted GitHub Actions.
Untuk menyelesaikan tutorial ini, Anda harus terlebih dahulu:
-
Terhubung dengan token akses pribadi, rahasia Manajer Rahasia, aplikasi OAuth, atau GitHub Aplikasi. Jika Anda ingin terhubung dengan aplikasi OAuth, Anda harus menggunakan CodeBuild konsol untuk melakukannya. Jika Anda ingin membuat token akses pribadi, Anda dapat menggunakan CodeBuild konsol atau menggunakan ImportSourceCredentials API. Untuk instruksi lebih lanjut, lihatGitHub dan akses Server GitHub Perusahaan di CodeBuild.
-
Hubungkan CodeBuild ke GitHub akun Anda. Untuk melakukannya, Anda dapat melakukan salah satu hal berikut:
-
Anda dapat menambahkan GitHub sebagai penyedia sumber di konsol. Anda dapat terhubung dengan token akses pribadi, rahasia Manajer Rahasia, aplikasi OAuth, atau GitHub Aplikasi. Untuk petunjuk, lihat GitHub dan akses Server GitHub Perusahaan di CodeBuild.
-
Anda dapat mengimpor GitHub kredensibilitas Anda melalui ImportSourceCredentials API. Ini hanya dapat dilakukan dengan token akses pribadi. Jika Anda terhubung menggunakan aplikasi OAuth, Anda harus terhubung menggunakan konsol sebagai gantinya. Untuk petunjuk, lihat Terhubung GitHub dengan token akses (CLI).
catatan
Ini hanya perlu dilakukan jika Anda belum terhubung ke GitHub akun Anda.
-
Langkah 1: Buat CodeBuild proyek dengan webhook
Pada langkah ini, Anda akan membuat CodeBuild proyek dengan webhook dan meninjaunya di GitHub konsol. Anda juga dapat memilih GitHub Enterprise sebagai penyedia sumber Anda. Untuk mempelajari selengkapnya tentang membuat webhook dalam GitHub Enterprise, lihatGitHub webhook manual.
Untuk membuat CodeBuild proyek dengan webhook
Buka AWS CodeBuild konsol di https://console.aws.amazon.com/codesuite/codebuild/home
. -
Buat proyek pembangunan. Untuk informasi selengkapnya, lihat Membuat proyek build (konsol) dan Jalankan build (konsol).
-
Di tipe proyek, pilih proyek Runner.
Dalam Pelari:
-
Untuk penyedia Runner, pilih GitHub.
-
Untuk lokasi Runner, pilih Repositori.
-
Untuk URL Repositori di bawah Repositori, pilih https://github.com/user-name/repository-name.
catatan
Secara default, proyek Anda hanya akan menerima
WORKFLOW_JOB_QUEUEDacara untuk satu repositori. Jika Anda ingin menerima acara untuk semua repositori dalam organisasi atau perusahaan, lihatGitHub webhook global dan organisasi. -
-
-
Di Lingkungan:
-
Pilih gambar Lingkungan yang didukung dan Compute. Perhatikan bahwa Anda memiliki opsi untuk mengganti setelan gambar dan instance dengan menggunakan label di ALUR KERJA Tindakan YAM GitHub L Anda. Untuk informasi selengkapnya, lihat Langkah 2: Perbarui alur kerja GitHub Tindakan YAML
-
-
Dalam Buildspec:
-
Perhatikan bahwa buildspec Anda akan diabaikan kecuali
buildspec-override:trueditambahkan sebagai label. Sebagai gantinya, CodeBuild akan mengesampingkannya untuk menggunakan perintah yang akan mengatur pelari yang di-host sendiri.
-
-
-
Lanjutkan dengan nilai default dan kemudian pilih Buat proyek build.
-
Buka GitHub konsol di
https://github.com/untuk memverifikasi bahwa webhook telah dibuat dan diaktifkan untuk mengirimkan acara pekerjaan Workflow.user-name/repository-name/settings/hooks
Langkah 2: Perbarui alur kerja GitHub Tindakan YAML
Pada langkah ini, Anda akan memperbarui file YAML alur kerja Actions Anda GitHub GitHub
Memperbarui alur kerja GitHub Tindakan YAML
Arahkan ke GitHubruns-on
-
Anda dapat menentukan nama proyek dan menjalankan ID, dalam hal ini build akan menggunakan konfigurasi proyek yang ada untuk komputasi, gambar, versi gambar, dan ukuran instance. Nama proyek diperlukan untuk menautkan pengaturan AWS terkait pekerjaan T GitHub indakan Anda ke CodeBuild proyek tertentu. Dengan menyertakan nama proyek di YAML, CodeBuild diizinkan untuk memanggil pekerjaan dengan pengaturan proyek yang benar. Dengan memberikan ID run, memet CodeBuild akan build Anda ke alur kerja tertentu yang dijalankan dan menghentikan build saat alur kerja dibatalkan. Untuk informasi selengkapnya, lihat
githubkonteks. runs-on: codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }}catatan
Pastikan bahwa Anda
<project-name>cocok dengan nama proyek yang Anda buat di langkah sebelumnya. Jika tidak cocok, tidak CodeBuild akan memproses webhook dan alur kerja Actions GitHub mungkin macet.Berikut ini adalah contoh dari alur kerja T GitHub indakan YAML:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} steps: - run: echo "Hello World!" -
Anda juga dapat mengganti gambar dan tipe komputasi Anda di label. Lihat Hitung gambar yang didukung dengan Ac CodeBuild-hosted GitHub tions runner untuk daftar gambar yang dikuratori. Untuk menggunakan gambar khusus, lihatPenggantian label didukung dengan Ac CodeBuild-hosted GitHub tions runner. Jenis komputasi dan gambar dalam label akan menggantikan pengaturan lingkungan pada proyek Anda. Untuk mengganti setelan lingkungan Anda untuk build komputasi CodeBuild EC2 atau Lambda, gunakan sintaks berikut:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} image:<environment-type>-<image-identifier>instance-size:<instance-size>Berikut ini adalah contoh dari alur kerja T GitHub indakan YAML:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} image:arm-3.0 instance-size:small steps: - run: echo "Hello World!" -
Anda dapat mengganti armada yang digunakan untuk build Anda di label. Ini akan mengganti pengaturan armada yang dikonfigurasi pada proyek Anda untuk menggunakan armada yang ditentukan. Untuk informasi selengkapnya, lihat Jalankan build pada armada kapasitas yang dicadangkan. Untuk mengganti setelan armada Anda untuk build komputasi Amazon EC2, gunakan sintaks berikut:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>Untuk mengganti armada dan gambar yang digunakan untuk build, gunakan sintaks berikut:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} fleet:<fleet-name>image:<environment-type>-<image-identifier>Berikut ini adalah contoh dari alur kerja T GitHub indakan YAML:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} fleet:myFleet image:arm-3.0 steps: - run: echo "Hello World!" -
Untuk menjalankan tugas Tind GitHub akan pada gambar kustom, Anda dapat mengonfigurasi gambar kustom dalam CodeBuild proyek Anda dan menghindari memberikan label penggantian gambar. CodeBuild akan menggunakan gambar yang dikonfigurasi dalam proyek jika tidak ada label penggantian gambar yang disediakan.
-
Secara opsional, Anda dapat memberikan label di luar label yang CodeBuild mendukung. Label ini akan diabaikan untuk tujuan mengganti atribut build, tetapi tidak akan gagal dalam permintaan webhook. Misalnya, menambahkan
testLabelsebagai label tidak akan mencegah build berjalan.
catatan
Jika ketergantungan yang disediakan GitHub-hosted oleh pelari tidak tersedia di CodeBuild lingkungan, Anda dapat menginstal dependensi menggunakan Tind GitHub akan dalam alur kerja Anda. Misalnya, Anda dapat menggunakan setup-python
Jalankan perintah buildspec dalam fase INSTALL, PRE_BUILD, dan POST_BUILD
Secara default, CodeBuild mengabaikan perintah buildspec apa pun saat menjalankan build Actions yang di-host sendiri. GitHub Untuk menjalankan perintah buildspec selama build, buildspec-override:true dapat ditambahkan sebagai akhiran ke label:
runs-on: - codebuild-<project-name>-${{ github.run_id }}-${{ github.run_attempt }} buildspec-override:true
Dengan menggunakan perintah ini, CodeBuild akan membuat folder yang disebut actions-runner di folder sumber utama container. Ketika Ac GitHub tions runner dimulai selama BUILD fase, pelari akan berjalan di actions-runner direktori.
Ada beberapa batasan saat menggunakan penggantian buildspec di build Actions yang di-host sendiri: GitHub
-
CodeBuild tidak akan menjalankan perintah buildspec selama
BUILDfase tersebut, karena pelari yang di-host sendiri berjalan dalam fase tersebut.BUILD -
CodeBuild tidak akan mengunduh sumber primer atau sekunder apa pun selama
DOWNLOAD_SOURCEfase tersebut. Jika Anda memiliki file buildspec yang dikonfigurasi, hanya file itu yang akan diunduh dari sumber utama proyek. -
Jika perintah build gagal dalam
INSTALLfasePRE_BUILDatau, tidak CodeBuild akan memulai pelari yang di-host sendiri dan pekerjaan alur kerja Ac GitHub tions perlu dibatalkan secara manual. -
CodeBuild mengambil token pelari selama
DOWNLOAD_SOURCEfase, yang memiliki waktu kedaluwarsa satu jam. JikaINSTALLfasePRE_BUILDatau Anda melebihi satu jam, token pelari dapat kedaluwarsa sebelum pelari yang GitHub dihosting sendiri dimulai.
Langkah 3: Tinjau hasil Anda
Setiap kali al GitHub ur kerja Tindakan dijalankan, CodeBuild akan menerima peristiwa pekerjaan alur kerja melalui webhook. Untuk setiap pekerjaan dalam alur kerja, CodeBuild mulai build untuk menjalankan pelari Ac GitHub tions sementara. Pelari bertanggung jawab untuk menjalankan tugas alur kerja tunggal. Setelah pekerjaan selesai, runner dan proses build terkait akan segera dihentikan.
Untuk melihat log pekerjaan alur kerja Anda, navigasikan ke repositori Anda GitHub, pilih Tindakan, pilih alur kerja yang Anda inginkan, lalu pilih Pekerjaan tertentu yang ingin Anda tinjau lognya.
Anda dapat meninjau label yang diminta di log saat pekerjaan sedang menunggu untuk diambil oleh pelari yang dihosting sendiri. CodeBuild
Setelah pekerjaan selesai, Anda akan dapat melihat log pekerjaan.
GitHub Opsi konfigurasi pelari tindakan
Anda dapat menentukan variabel lingkungan berikut dalam konfigurasi proyek Anda untuk mengubah konfigurasi penyiapan pelari yang dihosting sendiri.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAME-
CodeBuild akan mendaftarkan pelari yang di-host sendiri ke nama organisasi yang ditentukan sebagai nilai variabel lingkungan ini. Untuk informasi selengkapnya tentang mendaftarkan pelari di tingkat organisasi dan izin yang diperlukan, lihat Membuat konfigurasi untuk pelari just-in-time untuk organisasi.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAME-
CodeBuild akan mendaftarkan pelari yang di-host sendiri ke nama perusahaan yang ditentukan sebagai nilai variabel lingkungan ini. Untuk informasi selengkapnya tentang mendaftarkan pelari di tingkat perusahaan dan izin yang diperlukan, lihat Membuat konfigurasi untuk pelari just-in-time untuk Enterprise.
catatan
Pelari perusahaan tidak tersedia untuk repositori organisasi secara default. Agar pelari yang dihosting sendiri dapat mengambil pekerjaan alur kerja, Anda mungkin perlu mengonfigurasi pengaturan akses grup pelari Anda. Untuk informasi selengkapnya, lihat Membuat pelari perusahaan tersedia untuk repositori
. CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_ID-
CodeBuild akan mendaftarkan pelari yang di-host sendiri ke ID grup pelari integer yang disimpan sebagai nilai variabel lingkungan ini. Secara default, nilai ini adalah 1. Untuk informasi selengkapnya tentang grup pelari yang di-host sendiri, lihat M engelola akses ke pelari yang di-host sendiri menggunakan grup.
CODEBUILD_CONFIG_GITHUB_ACTIONS_ORG_REGISTRATION_NAMEUntuk mengonfigurasi pendaftaran pelari tingkat organisasi menggunakan file YAM GitHub L alur kerja Tindakan Anda, Anda dapat menggunakan sintaks berikut:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} organization-registration-name:myOrganization steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_ENTERPRISE_REGISTRATION_NAMEUntuk mengonfigurasi pendaftaran pelari tingkat perusahaan menggunakan file YAML alur kerja Ac GitHub tions Anda, Anda dapat menggunakan sintaks berikut:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} enterprise-registration-name:myEnterprise steps: - run: echo "Hello World!"CODEBUILD_CONFIG_GITHUB_ACTIONS_RUNNER_GROUP_IDUntuk mengonfigurasi pendaftaran pelari ke ID grup pelari tertentu menggunakan file YAML GitHub alur kerja Tindakan Anda, Anda dapat menggunakan sintaks berikut:
name: Hello World on: [push] jobs: Hello-World-Job: runs-on: - codebuild-myProject-${{ github.run_id }}-${{ github.run_attempt }} registration-group-id:3 steps: - run: echo "Hello World!"
Filter T GitHub indakan acara webhook (CloudFormation)
Bagian CloudFormation
template berikut YAML-formatted membuat grup filter yang memicu build ketika dievaluasi menjadi true. Grup filter berikut menentukan permintaan pekerjaan alur kerja Ac GitHub tions dengan nama alur kerja yang cocok dengan ekspresi reguler\[CI-CodeBuild\].
CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: NO_ARTIFACTS Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.0 Source: Type: GITHUB Location: CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION Triggers: Webhook: true ScopeConfiguration: Name: organization-name Scope: GITHUB_ORGANIZATION FilterGroups: - - Type: EVENT Pattern: WORKFLOW_JOB_QUEUED - Type: WORKFLOW_NAME Pattern: \[CI-CodeBuild\]
Filter T GitHub indakan acara webhook (AWS CDK)
AWS CDK Template berikut membuat grup filter yang memicu build saat dievaluasi menjadi true. Grup filter berikut menentukan permintaan pekerjaan al GitHub ur kerja Tindakan.
import { aws_codebuild as codebuild } from 'aws-cdk-lib'; import {EventAction, FilterGroup} from "aws-cdk-lib/aws-codebuild"; const source = codebuild.Source.gitHub({ owner: 'owner', repo: 'repo', webhook: true, webhookFilters: [FilterGroup.inEventOf(EventAction.WORKFLOW_JOB_QUEUED)], })
Filter T GitHub indakan acara webhook (Terraform)
Template Terraform berikut membuat grup filter yang memicu build saat dievaluasi menjadi true. Grup filter berikut menentukan permintaan pekerjaan al GitHub ur kerja Tindakan.
resource "aws_codebuild_webhook" "example" { project_name = aws_codebuild_project.example.name build_type = "BUILD" filter_group { filter { type = "EVENT" pattern = "WORKFLOW_JOB_QUEUED" } } }
Filter T GitHub indakan acara webhook (AWS CLI)
Per AWS CLI intah berikut membuat proyek Ac GitHub tions runner yang di-host sendiri dengan GitHub grup filter permintaan pekerjaan alur kerja Actions yang memicu build saat dievaluasi menjadi true.
aws codebuild create-project \ --name <project name> \ --source "{\"type\":\"GITHUB\",\"location\":\"<repository location>\",\"buildspec\":\"\"}" \ --artifacts {"\"type\":\"NO_ARTIFACTS\""} \ --environment "{\"type\": \"LINUX_CONTAINER\",\"image\": \"aws/codebuild/amazonlinux-x86_64-standard:5.0\",\"computeType\": \"BUILD_GENERAL1_MEDIUM\"}" \ --service-role "<service role ARN>"
aws codebuild create-webhook \ --project-name <project name> \ --filter-groups "[[{\"type\":\"EVENT\",\"pattern\":\"WORKFLOW_JOB_QUEUED\"}]]"