View a markdown version of this page

Tutorial: Mengkonfigurasi pelari CodeBuild-hosted GitHub Actions - AWS CodeBuild

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:

    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
  1. Buka AWS CodeBuild konsol di https://console.aws.amazon.com/codesuite/codebuild/home.

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

  3. Di tipe proyek, pilih proyek Runner.

    Dalam Pelari:

    1. Untuk penyedia Runner, pilih GitHub.

    2. Untuk lokasi Runner, pilih Repositori.

    3. Untuk URL Repositori di bawah Repositori, pilih https://github.com/user-name/repository-name.

    catatan

    Secara default, proyek Anda hanya akan menerima WORKFLOW_JOB_QUEUED acara 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:true ditambahkan sebagai label. Sebagai gantinya, CodeBuild akan mengesampingkannya untuk menggunakan perintah yang akan mengatur pelari yang di-host sendiri.

  4. Lanjutkan dengan nilai default dan kemudian pilih Buat proyek build.

  5. Buka GitHub konsol di https://github.com/user-name/repository-name/settings/hooks untuk memverifikasi bahwa webhook telah dibuat dan diaktifkan untuk mengirimkan acara pekerjaan Workflow.

Langkah 2: Perbarui alur kerja GitHub Tindakan YAML

Pada langkah ini, Anda akan memperbarui file YAML alur kerja Actions Anda GitHub GitHub untuk mengonfigurasi lingkungan build Anda dan menggunakan Ac GitHub tions self-host runner di. CodeBuild Untuk informasi selengkapnya, lihat Menggunakan label dengan pelari yang di-host sendiri danPenggantian label didukung dengan Ac CodeBuild-hosted GitHub tions runner.

Memperbarui alur kerja GitHub Tindakan YAML

Arahkan ke GitHub dan perbarui runs-on setelan di ALUR KERJA GitHub Tindakan YAML untuk mengonfigurasi lingkungan build Anda. Untuk melakukannya, Anda dapat melakukan salah satu hal berikut:

  • 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 github konteks.

    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 testLabel sebagai 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 tindakan untuk menginstal Python untuk lingkungan build Anda.

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 BUILD fase tersebut, karena pelari yang di-host sendiri berjalan dalam fase tersebut. BUILD

  • CodeBuild tidak akan mengunduh sumber primer atau sekunder apa pun selama DOWNLOAD_SOURCE fase tersebut. Jika Anda memiliki file buildspec yang dikonfigurasi, hanya file itu yang akan diunduh dari sumber utama proyek.

  • Jika perintah build gagal dalam INSTALL fase PRE_BUILD atau, 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_SOURCE fase, yang memiliki waktu kedaluwarsa satu jam. Jika INSTALL fase PRE_BUILD atau 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

Memuat log pekerjaan.

Setelah pekerjaan selesai, Anda akan dapat melihat log pekerjaan.

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_NAME

Untuk 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_NAME

Untuk 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_ID

Untuk 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\"}]]"