Lampiran A: GitHub Tindakan sumber versi 1 - AWS CodePipeline

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

Lampiran A: GitHub Tindakan sumber versi 1

Apendiks ini memberikan informasi tentang versi 1 dari GitHub tindakan di CodePipeline.

catatan
catatan

Meskipun kami tidak merekomendasikan menggunakan GitHub versi 1 tindakan, jaringan pipa yang ada dengan GitHub Versi 1 tindakan akan terus bekerja tanpa dampak apapun. Untuk pipa dengan tindakan GitHub versi 1, CodePipeline menggunakan token berbasis OAuth untuk terhubung ke GitHub repositori. Sebaliknya, GitHub action (versi 2) menggunakan sumber daya koneksi untuk mengasosiasikanAWSsumber daya untuk GitHub repositori. Sumber daya koneksi menggunakan token berbasis aplikasi untuk terhubung. Untuk informasi lebih lanjut tentang memperbarui pipa Anda ke yang direkomendasikan GitHub tindakan yang menggunakan koneksi, lihatMemperbarui tindakan sumber GitHub versi 1 ke aksi sumber GitHub versi 2. Untuk informasi lebih lanjut tentang OAuth-based GitHub akses berbeda dengan aplikasi berbasis GitHub akses, lihathttps://docs.github.com/en/developers/apps/differences-between-github-apps-and-oauth-apps.

Untuk mengintegrasikan dengan GitHub, CodePipeline menggunakan GitHub Aplikasi OAuth untuk alur Anda. CodePipeline menggunakan webhooks untuk mengelola deteksi perubahan untuk pipa Anda dengan GitHub versi 1 tindakan sumber.

catatan

Ketika Anda mengkonfigurasi GitHub tindakan sumber versi 2 diAWS CloudFormation, Anda tidak termasuk GitHub informasi token atau menambahkan sumber daya webhook. Anda mengkonfigurasi sumber daya koneksi seperti yang ditunjukkan diAWS::CodeStarConnections::Connectiondi AWS CloudFormationPanduan Pengguna.

Referensi ini berisi bagian-bagian berikut untuk GitHub tindakan versi 1:

  • Untuk informasi tentang cara menambahkan GitHub versi 1 tindakan sumber dan webhook ke pipa, lihatMenambahkan GitHub Tindakan sumber versi 1.

  • Untuk informasi tentang parameter konfigurasi dan contoh cuplikan YAML/JSON untuk GitHub tindakan sumber versi 1, lihatReferensi struktur aksi sumber GitHub versi 1.

  • Untuk informasi tentang cara mengelola webhook untuk GitHub tindakan sumber versi 1, lihatGunakan webhooks untuk memulai pipeline (tindakan sumber GitHub versi 1). Tindakan sumber GitHub versi 1 menggunakan webhooks untuk deteksi perubahan sumber untuk memicu jaringan pipa. Lampiran ini memberikan rincian untuk mengelola GitHub versi 1 webhooks tindakan sumber sebagai berikut:

    • Membuat dan mengelola webhooks

    • Kelola webhooks di CLI Anda danAWS CloudFormationjaringan pipa

    • Migrasi GitHub pipa dari pemungutan suara ke webhooks

  • Untuk informasi tentang cara mengelola aplikasi OAuth atau token akses pribadi untuk tindakan sumber GitHub versi 1, lihatKonfigurasi otentikasi (tindakan sumber GitHub versi 1). Parameter GitHub Tindakan sumber GitHub versi 1 menggunakan aplikasi berbasis OAuth untuk otorisasi antara CodePipeline dan repositori Anda. Lampiran ini memberikan rincian untuk mengelola aplikasi OAuth Anda sebagai berikut:

    • Mengelola aplikasi OAuth

    • Kelola Token Akses Pribadi Anda

    • Kelola token Anda dengan CLI atauAWS CloudFormation

  • Untuk sampelAWS CloudFormationtemplate untuk membuat tumpukan sumber daya untuk pipeline dengan GitHub GitHub versi 1 tindakan sumber dan webhook, lihatTutorial: Buat pipa denganAWS CloudFormation(GitHub versi 1 tindakan sumber).

  • Untuk prosedur pemecahan masalah yang terkait dengan GitHub tindakan sumber versi 1, lihatPemecahan masalah (tindakan sumber GitHub versi 1).

Menambahkan GitHub Tindakan sumber versi 1

Anda menambahkan GitHub tindakan sumber versi 1 untuk CodePipeline oleh:

Referensi struktur aksi sumber GitHub versi 1

catatan

Meskipun kami tidak merekomendasikan menggunakan GitHub versi 1 tindakan, jaringan pipa yang ada dengan GitHub Versi 1 tindakan akan terus bekerja tanpa dampak apapun. Untuk pipa dengan GitHub Tindakan sumber GitHub versi 1, CodePipeline menggunakan token berbasis OAuth untuk terhubung ke GitHub repositori. Sebaliknya, yang baru GitHub action (versi 2) menggunakan sumber daya koneksi untuk mengasosiasikanAWSsumber daya untuk GitHub repositori. Sumber daya koneksi menggunakan token berbasis aplikasi untuk terhubung. Untuk informasi lebih lanjut tentang memperbarui pipa Anda ke yang direkomendasikan GitHub tindakan yang menggunakan koneksi, lihatMemperbarui tindakan sumber GitHub versi 1 ke aksi sumber GitHub versi 2.

Memicu pipa ketika commit baru dibuat pada dikonfigurasi GitHub repositori dan cabang.

Untuk mengintegrasikan dengan GitHub, CodePipeline menggunakan aplikasi OAuth atau token akses pribadi untuk pipa Anda. Jika Anda menggunakan konsol untuk membuat atau mengedit saluran Anda, CodePipeline menciptakan GitHub webhook yang memulai pipa Anda ketika perubahan terjadi di repositori.

Anda harus sudah membuat GitHub akun dan repositori sebelum Anda menghubungkan pipa melalui GitHub tindakan.

Jika Anda ingin membatasi akses CodePipeline harus repositori, membuat GitHub akun dan memberikan akses akun hanya ke repositori yang ingin Anda integrasikan dengan CodePipeline. Gunakan akun tersebut saat Anda mengonfigurasi CodePipeline untuk menggunakan GitHub repositori untuk tahap sumber dalam jaringan pipa.

Untuk informasi selengkapnya, lihatDokumentasi pengembang GitHubpada GitHub website.

Tipe tindakan

  • Kategori:Source

  • Pemilik:ThirdParty

  • Penyedia:GitHub

  • Versi:1

Parameter konfigurasi

Pemilik

Diperlukan: Ya

Nama GitHub pengguna atau organisasi yang memiliki repositori GitHub.

Repo

Diperlukan: Ya

Nama repositori tempat perubahan sumber harus dideteksi.

Cabang

Diperlukan: Ya

Nama cabang di mana perubahan sumber harus dideteksi.

OAuthToken

Diperlukan: Ya

Merupakan GitHub token otentikasi yang memungkinkan CodePipeline untuk melakukan operasi pada GitHub repositori. Entri selalu ditampilkan sebagai topeng empat tanda bintang. Ini merupakan salah satu dari nilai-nilai berikut:

  • Bila Anda menggunakan konsol untuk membuat pipa, CodePipeline menggunakan token OAuth untuk mendaftarkan GitHub koneksi.

  • Saat Anda menggunakanAWS CLIuntuk membuat pipa, Anda dapat melewati GitHub token akses pribadi di bidang ini. Ganti tanda bintang (****) dengan token akses pribadi Anda yang disalin dari GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, topeng empat asterisk ditampilkan untuk nilai ini.

  • Saat Anda menggunakanAWS CloudFormationtemplate untuk membuat pipa, Anda harus terlebih dahulu menyimpan token sebagai rahasia diAWS Secrets Manager. Anda menyertakan nilai untuk bidang ini sebagai referensi dinamis ke rahasia yang disimpan di Secrets Manager, seperti{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}.

Untuk informasi lebih lanjut tentang GitHub lingkup, lihatReferensi API Pengembang GitHubpada GitHub situs.

PollForSourceChanges

Diperlukan: Tidak

PollForSourceChangesmengontrol apakah CodePipeline jajak ulang repositori GitHub untuk perubahan sumber. Sebaiknya Anda menggunakan webhooks untuk mendeteksi perubahan sumber. Untuk informasi lebih lanjut tentang mengonfigurasi webhooks, lihatPerbarui saluran pipa untuk peristiwa push (tindakan sumber GitHub versi 1) (CLI)atauPerbarui saluran pipa untuk peristiwa push (tindakan sumber GitHub versi 1) (AWS CloudFormationtemplat).

penting

Jika Anda berniat untuk mengkonfigurasi webhooks, Anda harus mengaturPollForSourceChangeskepadafalseuntuk menghindari eksekusi pipa duplikat.

Nilai yang valid untuk parameter ini:

  • True: Jika diatur, CodePipeline jajak pendapat repositori Anda untuk perubahan sumber.

    catatan

    Jika Anda menghilangkanPollForSourceChanges, CodePipeline default untuk polling repositori Anda untuk perubahan sumber. Ini adalah perilaku yang sama seperti jikaPollForSourceChangesdiatur ketrue.

  • False: Jika diatur, CodePipeline tidak memilih repositori Anda untuk perubahan sumber. Gunakan pengaturan ini jika Anda ingin mengkonfigurasi webhook untuk mendeteksi perubahan sumber.

artefak masukan

  • Jumlah artefak: 0

  • Deskripsi: Artefak masukan tidak berlaku untuk jenis tindakan ini.

artefak keluaran

  • Jumlah artefak: 1

  • Deskripsi: Artefak keluaran dari tindakan ini adalah file ZIP yang berisi isi repositori dan cabang yang dikonfigurasi pada komit yang ditentukan sebagai revisi sumber untuk eksekusi pipa. Artefak yang dihasilkan dari repositori adalah artefak output untuk GitHub tindakan. ID komit kode sumber ditampilkan di CodePipeline sebagai revisi sumber untuk eksekusi pipa dipicu.

Variabel output

Ketika dikonfigurasi, tindakan ini menghasilkan variabel yang dapat direferensikan oleh konfigurasi aksi aksi hilir dalam pipa. Tindakan ini menghasilkan variabel yang dapat dilihat sebagai variabel output, bahkan jika tindakan tidak memiliki namespace. Anda mengkonfigurasi tindakan dengan namespace untuk membuat variabel tersebut tersedia untuk konfigurasi tindakan hilir.

Untuk informasi lebih lanjut tentang variabel di CodePipeline, lihatVariabel.

CommitId

Parameter GitHub ID yang memicu eksekusi alur. Commit ID adalah SHA penuh dari komit.

CommitMessage

Pesan deskripsi, jika ada, terkait dengan komit yang memicu eksekusi pipa.

CommitUrl

Alamat URL untuk komit yang memicu pipa.

repositoryName

Nama GitHub repositori di mana komit yang memicu pipa dibuat.

BranchName

Nama cabang untuk GitHub repositori di mana perubahan sumber dibuat.

AuthorDate

Tanggal ketika komit ditulis, dalam format timestamp.

Untuk informasi lebih lanjut tentang perbedaan antara penulis dan committer di Git, lihatMelihat Riwayat Komitdi Pro Git oleh Scott Chacon dan Ben Straub.

CommitterDate

Tanggal ketika komit dilakukan, dalam format timestamp.

Untuk informasi lebih lanjut tentang perbedaan antara penulis dan committer di Git, lihatMelihat Riwayat Komitdi Pro Git oleh Scott Chacon dan Ben Straub.

Deklarasi aksi (contoh GitHub)

YAML
Name: Source Actions: - InputArtifacts: [] ActionTypeId: Version: '1' Owner: ThirdParty Category: Source Provider: GitHub OutputArtifacts: - Name: SourceArtifact RunOrder: 1 Configuration: Owner: MyGitHubAccountName Repo: MyGitHubRepositoryName PollForSourceChanges: 'false' Branch: main OAuthToken: '{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}' Name: ApplicationSource
JSON
{ "Name": "Source", "Actions": [ { "InputArtifacts": [], "ActionTypeId": { "Version": "1", "Owner": "ThirdParty", "Category": "Source", "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceArtifact" } ], "RunOrder": 1, "Configuration": { "Owner": "MyGitHubAccountName", "Repo": "MyGitHubRepositoryName", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Name": "ApplicationSource" } ] },

Terhubung ke GitHub (OAuth)

Pertama kali Anda menggunakan konsol untuk menambahkan GitHub repositori ke pipa, Anda diminta untuk mengotorisasi CodePipeline akses ke repositori Anda. Token memerlukan hal berikut GitHub cakupan:

  • Parameterrepolingkup, yang digunakan untuk kontrol penuh untuk membaca dan menarik artefak dari repositori publik dan swasta ke dalam pipa.

  • Parameteradmin:repo_hooklingkup, yang digunakan untuk kontrol penuh kait repositori.

Bila Anda menggunakan CLI atauAWS CloudFormationTemplate, Anda harus memberikan nilai untuk token akses pribadi yang telah Anda buat di GitHub.

Untuk melihat CodePipeline Aplikasi OAuth untuk pipa Anda, lihatMelihat aplikasi OAuth resmi Anda.

Membuat dan mengelola GitHub token akses pribadi, lihatKonfigurasikan pipeline Anda untuk menggunakan token akses pribadi (GitHub dan CLI).

Sumber daya terkait berikut dapat membantu Anda saat bekerja dengan tindakan ini.

Gunakan webhooks untuk memulai pipeline (tindakan sumber GitHub versi 1)

Webhook adalah notifikasi HTTP yang mendeteksi peristiwa di alat lain, seperti repositori GitHub, dan menghubungkan peristiwa eksternal tersebut ke saluran pipa.

Saat Anda menggunakan konsol untuk membuat atau mengedit pipeline yang memiliki GitHub sumber, CodePipeline menciptakan webhook sebuah. CodePipeline menghapus webhook Anda saat Anda menghapus saluran pipa Anda. Anda tidak perlu mengelolanya di GitHub. Jika Anda menggunakanAWS CLIatauAWS CloudFormationuntuk membuat atau mengedit pipa yang memiliki GitHub sumber, Anda harus menggunakan informasi di bagian ini untuk mengelola webhooks sendiri.

Buat webhook untuk GitHub sumber

Setelah Anda menggunakanAWS CLIuntuk membuat webhook secara manual, Anda harus mendaftarkan webhook di GitHub. Sebuah ditunjukAWSendpoint digunakan untuk webhook dan disediakan olehput-webhookperintah.

penting

Jika Anda menggunakan konsol untuk membuat atau mengedit pipeline, webhook Anda dibuat untuk Anda.

Untuk menggunakanAWS CLIuntuk membuat webhook, memanggilput-webhookperintah dan menyediakan berikut:

  • Sebuah nama yang unik mengidentifikasi webhook. Nama ini harus unik dalam wilayah akun untuk pipa.

  • Sebuah rahasia dalam file JSON yang akan digunakan untuk GitHub otorisasi.

    Parameterrahasia webhookdigunakan ketika GitHub membuat permintaan webhook untuk CodePipeline sehingga CodePipeline dapat memvalidasi permintaan webhook otentik dan berasal dari GitHub. Disarankan untuk memberikan nilai rahasia yang dihasilkan secara acak untuk bidang ini. Saat CodePipeline RegisterWebhookWithThirdPartyAPI disebut, rahasia webhook ispassed ke GitHub melalui GitHub membuat webhook API. Untuk informasi selengkapnya, lihathttps://developer.github.com/v3/repos/hooks/#create-hook-config-params.

    Parameter GitHub OAuth atau token pribadi tidak boleh digunakan sebagai rahasia webhook.

Untuk membuat dan mendaftarkan webhook Anda

catatan

Bila Anda menggunakan CLI atauAWS CloudFormationuntuk membuat pipa dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala. Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan mengaturnya ke false, seperti yang rinci dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationpipa adalah bahwaPollForSourceChangesdefault untuk benar dan tidak ditampilkan dalam output struktur pipa. Untuk informasi lebih lanjut tentang PollForSourceChanges default, lihatPengaturan default untuk PollForSourceChanges parameter.

  1. Dalam editor teks, buat dan simpan file JSON untuk webhook yang ingin Anda buat. Gunakan file contoh ini untuk webhook bernamamy-webhook:

    {"webhook": {"name": "my-webhook", "targetPipeline": "pipeline_name", "targetAction": "source_action_name", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ], "authentication": "GITHUB_HMAC", "authenticationConfiguration": {"SecretToken":"secret"} } }
  2. Memanggilput-webhookperintah dan termasuk--cli-inputdan--regionparameter.

    Contoh perintah berikut menciptakan webhook denganwebhook_jsonFile JSON.

    aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
  3. Dalam output yang ditunjukkan dalam contoh ini, URL dan ARN dikembalikan untuk webhook bernamamy-webhook.

    { "webhook": { "url": "https://webhooks.domain.com/trigger111111111EXAMPLE11111111111111111", "definition": { "authenticationConfiguration": { "SecretToken": "secret" }, "name": "my-webhook", "authentication": "GITHUB_HMAC", "targetPipeline": "pipeline_name", "targetAction": "Source", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ] }, "arn": "arn:aws:codepipeline:eu-central-1:ACCOUNT_ID:webhook:my-webhook" }, "tags": [{ "key": "Project", "value": "ProjectA" }] }

    Contoh ini menambahkan penandaan ke webhook dengan memasukkanProjectkunci tag danProjectAnilai pada webhook. Untuk informasi lebih lanjut tentang penandaan sumber daya di CodePipeline, lihatPenandaan pada sumber daya .

  4. Memanggilregister-webhook-with-third-partyperintah dan termasuk--webhook-nameparameter.

    Contoh perintah berikut mendaftarkan webhook bernamamy-webhook.

    aws codepipeline register-webhook-with-third-party --webhook-name my-webhook

Jika Anda memperbarui pipa untuk menggunakan webhooks, Anda juga harus menggunakan prosedur berikut untuk mematikan pemeriksaan berkala.

Untuk mengedit parameter PollForSourceChanges pipeline

penting

Saat Anda membuat alur dengan metode ini,PollForSourceChangesparameter default ke true jika tidak secara eksplisit diatur ke false. Ketika Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipa Anda dimulai dua kali untuk perubahan sumber tunggal. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  1. Jalankanget-pipelineperintah untuk menyalin struktur pipa ke dalam file JSON. Misalnya, untuk pipa bernamaMyFirstPipeline, Anda akan mengetik perintah berikut:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Perintah ini tidak mengembalikan apa pun, tapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah tersebut.

  2. Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah atau menambahkanPollForSourceChangesparameter. Dalam contoh ini, untuk repositori bernamaUserGitHubRepo, parameter diatur kefalse.

    Mengapa saya membuat perubahan ini? Mengubah parameter ini mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    "configuration": { "Owner": "darlaker", "Repo": "UserGitHubRepo", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "****" },
  3. Jika Anda bekerja dengan struktur pipa diambil menggunakanget-pipelineperintah, Anda harus mengedit struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Hapus"metadata"bagian dari struktur pipa dalam file JSON, termasuk:{ }dan"created","pipelineARN", dan"updated"kolom.

    Misalnya, hapus baris berikut dari struktur:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    Simpan file.

  4. Untuk menerapkan perubahan Anda, jalankanupdate-pipelineperintah, menentukan file JSON pipa, yang mirip dengan berikut ini:

    penting

    Pastikan untuk menyertakan file:// sebelum nama file. Ia diperlukan dalam perintah ini.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Perintah ini mengembalikan seluruh struktur pipa diedit.

    catatan

    Parameterupdate-pipelineperintah berhenti pipa. Jika revisi sedang dijalankan melalui pipa ketika Anda menjalankanupdate-pipelineperintah, yang menjalankan dihentikan. Anda harus secara manual memulai pipa untuk menjalankan revisi tersebut melalui pipa yang diperbarui. Gunakanstart-pipeline-executionperintah untuk secara manual memulai pipa Anda.

Cantumkan webhook di akun Anda

Anda dapat menggunakanAWS CLIuntuk mencantumkan webhook di akun Anda.

Untuk membuat daftar webhook di akun Anda

  1. Untuk membuat daftar webhooks Anda, hubungilist-webhooksperintah dan termasuk--endpoint-urldan--regionparameter.

    Perintah contoh berikut mencantumkan webhooks untuk URL endpoint “eu-central-1".

    aws codepipeline list-webhooks --endpoint-url "https://codepipeline.eu-central-1.amazonaws.com" --region "eu-central-1"
  2. Webhooks terdaftar, termasuk nama dan ARN untuk setiap webhook.

    { "webhooks": [ { "url": "https://webhooks.domain.com/trigger111111111EXAMPLE11111111111111111": { "authenticationConfiguration": { "SecretToken": "Secret" }, "name": "my-webhook", "authentication": "GITHUB_HMAC", "targetPipeline": "my-Pipeline", "targetAction": "Source", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ] }, "arn": "arn:aws:codepipeline:eu-central-1:ACCOUNT_ID:webhook:my-webhook" } ] }
  3. Di GitHub, pilih repositori Anda.

  4. PilihPengaturan, dan kemudian pilihWebhook.

    Lihat informasi webhook untuk repositori Anda.

Mengedit webhook untuk GitHub sumber

Anda dapat menggunakanAWS CLIuntuk mengedit webhook untuk repositori Anda.

  • Jika Anda menggunakan konsol untuk mengedit GitHub tindakan sumber untuk pipa Anda, webhook diperbarui untuk Anda (dan terdaftar kembali, jika sesuai).

  • Jika Anda tidak memperbarui nama webhook, dan Anda tidak mengubah repositori GitHub, Anda dapat menggunakanAWS CLIuntuk memperbarui webhook. Lihat Contoh 1.

  • Jika Anda mengubah nama webhook atau GitHub nama repositori, Anda harus mengedit tindakan sumber di konsol atau menghapus dan menciptakan webhook di CLI. Setelah Anda membuat webhook, Anda juga mendaftarkannya. Lihat Contoh 2.

Contoh 1: Untuk memperbarui rahasia webhook

  1. Dalam editor teks, edit file JSON untuk webhook yang ingin Anda perbarui. Contoh ini memodifikasi file sampel yang digunakan untuk membuat webhook diBuat webhook untuk GitHub sumber. Sampel ini mengubah token rahasia dari webhook bernama"my-webhook".

    {"webhook": {"name": "my-webhook", "targetPipeline": "pipeline_name", "targetAction": "source_action_name", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ], "authentication": "GITHUB_HMAC", "authenticationConfiguration": {"SecretToken":"new_secret"} } }
  2. Memanggilput-webhookperintah dan termasuk--cli-inputdan--regionparameter.

    Perintah contoh berikut memperbarui webhook dengan dimodifikasi"webhook_json"File JSON.

    aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
  3. Output mengembalikan rincian webhook dan rahasia baru.

    catatan

    Anda dapat mengedit GitHub tindakan sumber di konsol. Hal ini memungkinkan CodePipeline untuk mengelola webhooks untuk Anda.

Contoh 2: Untuk memperbarui nama webhook atau GitHub repositori

  1. Gunakan langkah-langkah diMenghapus webhook untuk sumber GitHubuntuk membatalkan pendaftaran dan menghapus webhook yang ada yang terkait dengan nama webhook lama atau GitHub repositori.

  2. Gunakan langkah-langkah diBuat webhook untuk GitHub sumberuntuk menciptakan webhook.

    catatan

    Anda dapat mengedit GitHub tindakan sumber di konsol. Hal ini memungkinkan CodePipeline untuk mengelola webhooks untuk Anda.

Menghapus webhook untuk sumber GitHub

Untuk menggunakanAWS CLIuntuk menghapus webhook:

  1. Anda harus membatalkan pendaftaran webhook sebelum Anda menghapusnya. Memanggilderegister-webhook-with-third-partyperintah dan termasuk--webhook-nameparameter.

    Contoh perintah berikut deregisters webhook bernama"my-webhook".

    aws codepipeline deregister-webhook-with-third-party --webhook-name my-webhook
  2. Memanggildelete-webhookperintah dan termasuk--nameparameter.

    Contoh perintah berikut menghapus webhook bernama"my-webhook".

    aws codepipeline delete-webhook --name my-webhook

Menandai webhook di CodePipeline

Anda dapat memasang tanda ke webhook Anda di CodePipeline. Tag adalah pasangan nilai kunci yang terhubung dengan sumber daya AWS. Untuk informasi tentang CodePipeline penandaan sumber daya, kasus penggunaan, kunci tanda dan batasan nilai, dan jenis sumber daya yang didukung, lihatPenandaan pada sumber daya .

Anda dapat menentukan tag saat membuat webhook. Anda dapat menambahkan, menghapus, dan memperbarui nilai tanda di webhook. Anda dapat menambahkan hingga 50 tanda ke setiap webhook.

Menambahkan tag ke webhook yang ada

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk menambahkan sebuah tag ke webhook. Untuk menambahkan tanda ke webhook saat Anda membuatnya, lihatBuat webhook untuk GitHub sumber.

Dalam langkah-langkah ini, kami menganggap bahwa Anda telah menginstal versi terbaru dari AWS CLI atau diperbarui ke versi terkini. Untuk informasi lebih lanjut, lihat Menginstal AWS Command Line Interface.

Pada terminal atau baris perintah, jalankantag-resourceperintah, menentukan Amazon Resource Name (ARN) dari webhook tempat Anda ingin menambahkan tanda dan kunci serta nilai dari tanda yang ingin Anda tambahkan. Anda dapat menambahkan lebih dari satu tanda ke webhook. Misalnya, untuk menandai sebuah webhook bernamaMyWebhookdengan dua tag, kunci tag bernamaProyekdengan nilai tagNewProject, dan kunci tag bernamaApplicationNamedengan nilai tagMyApplication:

aws codepipeline tag-resource --resource-arn arn:aws:codepipeline:us-west-2:account-id:webhook:MyWebhook --tags key=Project,value=NewProject key=ApplicationName,value=MyApplication

Jika berhasil, perintah ini tidak mengembalikan apa pun.

Tampilkan tag untuk webhook

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk melihatAWStag untuk webhook sebuah. Jika tidak ada tanda yang telah ditambahkan, daftar yang ditampilkan kosong.

Pada terminal atau baris perintah, jalankan perintah list-tags-for-resource. Misalnya, untuk melihat daftar kunci tanda dan nilai tanda untuk webhook yang bernamaMyWebhookdengan ARNarn:aws:codepipeline:us-west-2:account-id:webhook:MyWebhook:

aws codepipeline list-tags-for-resource --resource-arn arn:aws:codepipeline:us-west-2:account-id:webhook:MyWebhook

Jika berhasil, perintah ini menampilkan informasi yang serupa dengan yang berikut:

{ "tags": { "Project": "NewProject", "ApplicationName": "MyApplication" } }

Edit tag untuk webhook

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk memperbarui tag untuk webhook. Anda dapat mengubah nilai untuk kunci yang ada atau menambahkan kunci lain. Anda juga dapat menghapus tanda dari webhook, seperti yang ditunjukkan pada bagian berikutnya.

Pada terminal atau baris perintah, jalankantag-resourceperintah, menentukan ARN webhook tempat Anda ingin memperbarui tanda dan menentukan kunci tanda dan nilai tanda:

aws codepipeline tag-resource --resource-arn arn:aws:codepipeline:us-west-2:account-id:webhook:MyWebhook --tags key=Project,value=UpdatedProject

Menghapus tag untuk webhook

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk menghapus tag dari webhook. Saat Anda menghapus tanda dari sumber daya yang terkait, tanda akan dihapus.

catatan

Jika Anda menghapus webhook, semua asosiasi tanda dihapus dari webhook tersebut. Anda tidak perlu menghapus tanda sebelum menghapus webhook.

Pada terminal atau baris perintah, jalankanuntag-resourceperintah, menentukan ARN webhook tempat Anda ingin menghapus tanda dan kunci tanda dari tanda yang ingin Anda hapus. Sebagai contoh, untuk menghapus tanda di webhook bernamaMyWebhookdengan kunci tagProyek:

aws codepipeline untag-resource --resource-arn arn:aws:codepipeline:us-west-2:account-id:webhook:MyWebhook --tag-keys Project

Jika berhasil, perintah ini tidak mengembalikan apa pun. Untuk memverifikasi tag yang terkait dengan webhook, jalankanlist-tags-for-resourceperintah.

Buat webhook untuk GitHub sumber (AWS CloudFormationtemplat)

Untuk menggunakanAWS CloudFormationuntuk membuat webhook, memperbarui template Anda seperti yang dijelaskan di sini.

Untuk menambahkan parameter dan membuat webhook di template Anda

Kami sangat merekomendasikan agar Anda menggunakan AWS Secrets Manager untuk menyimpan kredensial Anda. Jika Anda menggunakan Secrets Manager, Anda harus sudah mengkonfigurasi dan menyimpan parameter rahasia Anda di Secrets Manager. Contoh ini menggunakan referensi dinamis untuk Secrets Manager untuk kredensi GitHub untuk webhook Anda. Untuk informasi selengkapnya, lihat Menggunakan Referensi Dinamis untuk Menentukan Nilai Templat.

penting

Saat meneruskan parameter rahasia, jangan masukkan nilainya langsung ke templat. Nilai tersebut diberikan sebagai teks biasa dan karena itu dapat dibaca. Untuk alasan keamanan, jangan gunakan teks biasa di templat AWS CloudFormation untuk menyimpan kredensial Anda.

Bila Anda menggunakan CLI atauAWS CloudFormationuntuk membuat pipa dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala.

catatan

Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan mengaturnya ke false, seperti yang rinci dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationpipa adalah bahwaPollForSourceChangesdefault untuk benar dan tidak ditampilkan dalam output struktur pipa. Untuk informasi lebih lanjut tentang PollForSourceChanges default, lihatPengaturan default untuk PollForSourceChanges parameter.

  1. Dalam template, di bawahResources, tambahkan parameter Anda:

    YAML
    Parameters: GitHubOwner: Type: String ...
    JSON
    { "Parameters": { "BranchName": { "Description": "GitHub branch name", "Type": "String", "Default": "main" }, "GitHubOwner": { "Type": "String" }, ...
  2. GunakanAWS::CodePipeline::Webhook AWS CloudFormationsumber daya untuk menambahkan webhook.

    catatan

    ParameterTargetActionAnda menentukan harus sesuai denganNameproperti dari tindakan sumber didefinisikan dalam pipa.

    JikaRegisterWithThirdPartydiatur ketrue, pastikan pengguna terkait denganOAuthTokendapat mengatur cakupan yang diperlukan di GitHub. Token dan webhook memerlukan yang berikut GitHub cakupan:

    • repo- digunakan untuk kontrol penuh untuk membaca dan menarik artefak dari repositori publik dan swasta ke dalam pipa.

    • admin:repo_hook- digunakan untuk kontrol penuh kait repositori.

    Jika tidak, GitHub mengembalikan 404. Untuk informasi lebih lanjut tentang 404 yang dikembalikan, lihathttps://help.github.com/articles/about-webhooks.

    YAML
    AppPipelineWebhook: Type: AWS::CodePipeline::Webhook Properties: Authentication: GITHUB_HMAC AuthenticationConfiguration: SecretToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} Filters: - JsonPath: "$.ref" MatchEquals: refs/heads/{Branch} TargetPipeline: !Ref AppPipeline TargetAction: SourceAction Name: AppPipelineWebhook TargetPipelineVersion: !GetAtt AppPipeline.Version RegisterWithThirdParty: true ...
    JSON
    "AppPipelineWebhook": { "Type": "AWS::CodePipeline::Webhook", "Properties": { "Authentication": "GITHUB_HMAC", "AuthenticationConfiguration": { "SecretToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Filters": [ { "JsonPath": "$.ref", "MatchEquals": "refs/heads/{Branch}" } ], "TargetPipeline": { "Ref": "AppPipeline" }, "TargetAction": "SourceAction", "Name": "AppPipelineWebhook", "TargetPipelineVersion": { "Fn::GetAtt": [ "AppPipeline", "Version" ] }, "RegisterWithThirdParty": true } }, ...
  3. Simpan template yang diperbarui ke komputer lokal Anda, dan kemudian bukaAWS CloudFormationkonsol.

  4. Pilih tumpukan Anda, lalu pilihBuat Ubah Set untuk Stack Saat Ini.

  5. Upload template, dan kemudian melihat perubahan yang tercantum dalamAWS CloudFormation. Ini adalah perubahan yang akan dibuat untuk tumpukan. Anda akan melihat sumber daya baru Anda dalam daftar.

  6. Pilih Eksekusi.

Untuk mengedit parameter PollForSourceChanges pipeline

penting

Saat Anda membuat alur dengan metode ini,PollForSourceChangesparameter default ke true jika tidak secara eksplisit diatur ke false. Ketika Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipa Anda dimulai dua kali untuk perubahan sumber tunggal. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  • Dalam template, perubahanPollForSourceChangeskepadafalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipa Anda, tambahkan dan atur ke false.

    Mengapa saya membuat perubahan ini? Mengubah parameter ini kefalsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    YAML
    Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: ThirdParty Version: 1 Provider: GitHub OutputArtifacts: - Name: SourceOutput Configuration: Owner: !Ref GitHubOwner Repo: !Ref RepositoryName Branch: !Ref BranchName OAuthToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} PollForSourceChanges: false RunOrder: 1
    JSON
    { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "ThirdParty", "Version": 1, "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "Owner": { "Ref": "GitHubOwner" }, "Repo": { "Ref": "RepositoryName" }, "Branch": { "Ref": "BranchName" }, "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}", "PollForSourceChanges": false }, "RunOrder": 1 }

Memperbarui jalur pemungutan suara untuk tindakan sumber GitHub versi 1

Memperbarui pipa pemungutan suara untuk GitHub Tindakan sumber versi 1

Perbarui saluran pipa untuk peristiwa push (tindakan sumber GitHub versi 1) (konsol)

Anda dapat menggunakan CodePipeline konsol untuk memperbarui pipa Anda untuk menggunakan webhooks untuk mendeteksi perubahan dalam CodeCommit repositori sumber.

Ikuti langkah-langkah berikut untuk mengedit pipa yang menggunakan polling (pemeriksaan berkala) untuk menggunakan Amazon CloudWatch Peristiwa sebagai gantinya. Jika Anda ingin membuat alur, lihatBuat pipa di CodePipeline.

Bila Anda menggunakan konsol,PollForSourceChangesparameter untuk pipelined Anda diubah untuk Anda. Parameter GitHub webhook dibuat dan terdaftar untuk Anda.

Untuk mengedit tahap sumber pipa

  1. Masuk keAWS Management Consoledan membuka CodePipeline konsol dihttp://console.aws.amazon.com/codesuite/codepipeline/home.

    Nama-nama semua jaringan pipa yang terkait dengan AndaAWSakun ditampilkan.

  2. MasukNama, pilih nama alur yang ingin Anda edit. Ini membuka pandangan rinci tentang pipa, termasuk keadaan masing-masing tindakan di setiap tahap pipa.

  3. Pada halaman rincian pipa, pilihedit.

  4. MasukMengedit tahap, pilih ikon edit pada tindakan sumber.

  5. PerluasOpsi deteksidan pilihlahGunakan Amazon CloudWatch Peristiwa untuk secara otomatis memulai pipa saya ketika terjadi perubahan (direkomendasikan).

    Sebuah pesan ditampilkan untuk menasihati CodePipeline menciptakan webhook di GitHub untuk mendeteksi perubahan sumber: AWS CodePipeline akan membuat webhook untuk Anda. Anda dapat memilih keluar dalam opsi di bawah ini. Pilih Update (Perbarui). Selain webhook, CodePipeline menciptakan yang berikut:

    • Sebuah rahasia, dihasilkan secara acak dan digunakan untuk mengotorisasi koneksi ke GitHub.

    • URL webhook, yang dihasilkan menggunakan titik akhir publik untuk Wilayah.

    CodePipeline mendaftarkan webhookdengan GitHub. Ini berlangganan URL untuk menerima peristiwa repositori.

  6. Setelah Anda selesai mengedit pipa Anda, pilihSimpan perubahan pipauntuk kembali ke halaman ringkasan.

    Sebuah pesan menampilkan nama webhook yang akan dibuat untuk pipa Anda. Jangan pilih Save and continue (Simpan dan lanjutkan).

  7. Untuk menguji tindakan Anda, lepaskan perubahan dengan menggunakanAWS CLIuntuk melakukan perubahan ke sumber yang ditentukan dalam tahap sumber pipa.

Perbarui saluran pipa untuk peristiwa push (tindakan sumber GitHub versi 1) (CLI)

Ikuti langkah-langkah berikut untuk mengedit pipa yang menggunakan pemeriksaan berkala untuk menggunakan webhook sebagai gantinya. Jika Anda ingin membuat alur, lihatBuat pipa di CodePipeline.

Untuk membangun pipa yang digerakkan oleh acara, Anda mengeditPollForSourceChangesparameter pipa Anda dan kemudian membuat sumber daya berikut secara manual:

  • Parameter webhook dan otorisasi GitHub

Untuk membuat dan mendaftarkan webhook Anda

catatan

Bila Anda menggunakan CLI atauAWS CloudFormationuntuk membuat pipa dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala. Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan mengaturnya ke false, seperti yang rinci dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationadalah bahwaPollForSourceChangesdefault untuk benar dan tidak ditampilkan dalam output struktur pipa. Untuk informasi lebih lanjut tentang PollForSourceChanges default, lihatPengaturan default untuk PollForSourceChanges parameter.

  1. Dalam editor teks, buat dan simpan file JSON untuk webhook yang ingin Anda buat. Gunakan file contoh ini untuk webhook bernamamy-webhook:

    {"webhook": {"name": "my-webhook", "targetPipeline": "pipeline_name", "targetAction": "source_action_name", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ], "authentication": "GITHUB_HMAC", "authenticationConfiguration": {"SecretToken":"secret"} } }
  2. Memanggilput-webhookperintah dan termasuk--cli-inputdan--regionparameter.

    Contoh perintah berikut menciptakan webhook denganwebhook_jsonFile JSON.

    aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
  3. Dalam output yang ditunjukkan dalam contoh ini, URL dan ARN dikembalikan untuk webhook bernamamy-webhook.

    { "webhook": { "url": "https://webhooks.domain.com/trigger111111111EXAMPLE11111111111111111", "definition": { "authenticationConfiguration": { "SecretToken": "secret" }, "name": "my-webhook", "authentication": "GITHUB_HMAC", "targetPipeline": "pipeline_name", "targetAction": "Source", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ] }, "arn": "arn:aws:codepipeline:eu-central-1:ACCOUNT_ID:webhook:my-webhook" }, "tags": [{ "key": "Project", "value": "ProjectA" }] }

    Contoh ini menambahkan penandaan ke webhook dengan memasukkanProjectkunci tag danProjectAnilai pada webhook. Untuk informasi lebih lanjut tentang penandaan sumber daya di CodePipeline, lihatPenandaan pada sumber daya .

  4. Memanggilregister-webhook-with-third-partyperintah dan termasuk--webhook-nameparameter.

    Contoh perintah berikut mendaftarkan webhook bernamamy-webhook.

    aws codepipeline register-webhook-with-third-party --webhook-name my-webhook

Untuk mengedit parameter PollForSourceChanges pipeline

penting

Saat Anda membuat alur dengan metode ini,PollForSourceChangesparameter default ke true jika tidak secara eksplisit diatur ke false. Ketika Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipa Anda dimulai dua kali untuk perubahan sumber tunggal. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  1. Jalankanget-pipelineperintah untuk menyalin struktur pipa ke dalam file JSON. Misalnya, untuk pipa bernamaMyFirstPipeline, Anda akan mengetik perintah berikut:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Perintah ini tidak mengembalikan apa pun, tapi file yang Anda buat akan muncul di direktori tempat Anda menjalankan perintah tersebut.

  2. Buka file JSON di editor teks biasa dan edit tahap sumber dengan mengubah atau menambahkanPollForSourceChangesparameter. Dalam contoh ini, untuk repositori bernamaUserGitHubRepo, parameter diatur kefalse.

    Mengapa saya membuat perubahan ini? Mengubah parameter ini mematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    "configuration": { "Owner": "darlaker", "Repo": "UserGitHubRepo", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "****" },
  3. Jika Anda bekerja dengan struktur pipa diambil menggunakanget-pipelineperintah, Anda harus mengedit struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Hapus"metadata"bagian dari struktur pipa dalam file JSON, termasuk:{ }dan"created","pipelineARN", dan"updated"kolom.

    Misalnya, hapus baris berikut dari struktur:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    Simpan file.

  4. Untuk menerapkan perubahan Anda, jalankanupdate-pipelineperintah, menentukan file JSON pipa, yang mirip dengan berikut ini:

    penting

    Pastikan untuk menyertakan file:// sebelum nama file. Ia diperlukan dalam perintah ini.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Perintah ini mengembalikan seluruh struktur pipa diedit.

    catatan

    Parameterupdate-pipelineperintah berhenti pipa. Jika revisi sedang dijalankan melalui pipa ketika Anda menjalankanupdate-pipelineperintah, yang menjalankan dihentikan. Anda harus secara manual memulai pipa untuk menjalankan revisi tersebut melalui pipa yang diperbarui. Gunakanstart-pipeline-executionperintah untuk secara manual memulai pipa Anda.

Perbarui saluran pipa untuk peristiwa push (tindakan sumber GitHub versi 1) (AWS CloudFormationtemplat)

Ikuti langkah-langkah berikut ini untuk memperbarui alur Anda (dengan GitHub sumber) dari pemeriksaan periodik (polling) hingga deteksi perubahan berbasis peristiwa menggunakan webhooks.

Untuk membangun pipa yang digerakkan oleh acara denganAWS CodeCommit, Anda mengeditPollForSourceChangesparameter dari pipa Anda dan kemudian menambahkan GitHub Webhook sumber daya untuk template Anda.

Jika Anda menggunakanAWS CloudFormationuntuk membuat dan mengelola jaringan pipa Anda, template Anda memiliki konten seperti berikut ini.

catatan

CatatanPollForSourceChangesproperti konfigurasi dalam tahap sumber. Jika template Anda tidak menyertakan properti itu, makaPollForSourceChangesdiatur ketruesecara default.

YAML
Resources: AppPipeline: Type: AWS::CodePipeline::Pipeline Properties: Name: github-polling-pipeline RoleArn: !GetAtt CodePipelineServiceRole.Arn Stages: - Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: ThirdParty Version: 1 Provider: GitHub OutputArtifacts: - Name: SourceOutput Configuration: Owner: !Ref GitHubOwner Repo: !Ref RepositoryName Branch: !Ref BranchName OAuthToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} PollForSourceChanges: true RunOrder: 1 ...
JSON
"AppPipeline": { "Type": "AWS::CodePipeline::Pipeline", "Properties": { "Name": "github-polling-pipeline", "RoleArn": { "Fn::GetAtt": [ "CodePipelineServiceRole", "Arn" ] }, "Stages": [ { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "ThirdParty", "Version": 1, "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "Owner": { "Ref": "GitHubOwner" }, "Repo": { "Ref": "RepositoryName" }, "Branch": { "Ref": "BranchName" }, "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}", "PollForSourceChanges": true }, "RunOrder": 1 } ] }, ...

Untuk menambahkan parameter dan membuat webhook di template Anda

Kami sangat merekomendasikan agar Anda menggunakan AWS Secrets Manager untuk menyimpan kredensial Anda. Jika Anda menggunakan Secrets Manager, Anda harus sudah mengkonfigurasi dan menyimpan parameter rahasia Anda di Secrets Manager. Contoh ini menggunakan referensi dinamis untuk Secrets Manager untuk kredensi GitHub untuk webhook Anda. Untuk informasi selengkapnya, lihat Menggunakan Referensi Dinamis untuk Menentukan Nilai Templat.

penting

Saat meneruskan parameter rahasia, jangan masukkan nilainya langsung ke templat. Nilai tersebut diberikan sebagai teks biasa dan karena itu dapat dibaca. Untuk alasan keamanan, jangan gunakan teks biasa di templat AWS CloudFormation untuk menyimpan kredensial Anda.

Bila Anda menggunakan CLI atauAWS CloudFormationuntuk membuat pipa dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala.

catatan

Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan mengaturnya ke false, seperti yang rinci dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationpipa adalah bahwaPollForSourceChangesdefault untuk benar dan tidak ditampilkan dalam output struktur pipa. Untuk informasi lebih lanjut tentang PollForSourceChanges default, lihatPengaturan default untuk PollForSourceChanges parameter.

  1. Dalam template, di bawahResources, tambahkan parameter Anda:

    YAML
    Parameters: GitHubOwner: Type: String ...
    JSON
    { "Parameters": { "BranchName": { "Description": "GitHub branch name", "Type": "String", "Default": "main" }, "GitHubOwner": { "Type": "String" }, ...
  2. GunakanAWS::CodePipeline::Webhook AWS CloudFormationsumber daya untuk menambahkan webhook.

    catatan

    ParameterTargetActionAnda menentukan harus sesuai denganNameproperti dari tindakan sumber didefinisikan dalam pipa.

    JikaRegisterWithThirdPartydiatur ketrue, pastikan pengguna terkait denganOAuthTokendapat mengatur cakupan yang diperlukan di GitHub. Token dan webhook memerlukan yang berikut GitHub cakupan:

    • repo- digunakan untuk kontrol penuh untuk membaca dan menarik artefak dari repositori publik dan swasta ke dalam pipa.

    • admin:repo_hook- digunakan untuk kontrol penuh kait repositori.

    Jika tidak, GitHub mengembalikan 404. Untuk informasi lebih lanjut tentang 404 yang dikembalikan, lihathttps://help.github.com/articles/about-webhooks.

    YAML
    AppPipelineWebhook: Type: AWS::CodePipeline::Webhook Properties: Authentication: GITHUB_HMAC AuthenticationConfiguration: SecretToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} Filters: - JsonPath: "$.ref" MatchEquals: refs/heads/{Branch} TargetPipeline: !Ref AppPipeline TargetAction: SourceAction Name: AppPipelineWebhook TargetPipelineVersion: !GetAtt AppPipeline.Version RegisterWithThirdParty: true ...
    JSON
    "AppPipelineWebhook": { "Type": "AWS::CodePipeline::Webhook", "Properties": { "Authentication": "GITHUB_HMAC", "AuthenticationConfiguration": { "SecretToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" }, "Filters": [ { "JsonPath": "$.ref", "MatchEquals": "refs/heads/{Branch}" } ], "TargetPipeline": { "Ref": "AppPipeline" }, "TargetAction": "SourceAction", "Name": "AppPipelineWebhook", "TargetPipelineVersion": { "Fn::GetAtt": [ "AppPipeline", "Version" ] }, "RegisterWithThirdParty": true } }, ...
  3. Simpan template yang diperbarui ke komputer lokal Anda, dan kemudian bukaAWS CloudFormationkonsol.

  4. Pilih tumpukan Anda, lalu pilihBuat Ubah Set untuk Stack Saat Ini.

  5. Upload template, dan kemudian melihat perubahan yang tercantum dalamAWS CloudFormation. Ini adalah perubahan yang akan dibuat untuk tumpukan. Anda akan melihat sumber daya baru Anda dalam daftar.

  6. Pilih Eksekusi.

Untuk mengedit parameter PollForSourceChanges pipeline

penting

Saat Anda membuat alur dengan metode ini,PollForSourceChangesparameter default ke true jika tidak secara eksplisit diatur ke false. Ketika Anda menambahkan deteksi perubahan berbasis peristiwa, Anda harus menambahkan parameter ke output Anda dan mengaturnya ke false untuk menonaktifkan polling. Jika tidak, pipa Anda dimulai dua kali untuk perubahan sumber tunggal. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  • Dalam template, perubahanPollForSourceChangeskepadafalse. Jika Anda tidak menyertakanPollForSourceChangesdalam definisi pipa Anda, tambahkan dan atur ke false.

    Mengapa saya membuat perubahan ini? Mengubah parameter ini kefalsemematikan pemeriksaan berkala sehingga Anda dapat menggunakan deteksi perubahan berbasis peristiwa saja.

    YAML
    Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: ThirdParty Version: 1 Provider: GitHub OutputArtifacts: - Name: SourceOutput Configuration: Owner: !Ref GitHubOwner Repo: !Ref RepositoryName Branch: !Ref BranchName OAuthToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} PollForSourceChanges: false RunOrder: 1
    JSON
    { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "ThirdParty", "Version": 1, "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "Owner": { "Ref": "GitHubOwner" }, "Repo": { "Ref": "RepositoryName" }, "Branch": { "Ref": "BranchName" }, "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}", "PollForSourceChanges": false }, "RunOrder": 1 }

Saat Anda membuat sumber daya ini denganAWS CloudFormation, webhook didefinisikan dibuat dalam ditentukan GitHub repositori. Pipa Anda dipicu pada komit.

YAML
Parameters: GitHubOwner: Type: String Resources: AppPipelineWebhook: Type: AWS::CodePipeline::Webhook Properties: Authentication: GITHUB_HMAC AuthenticationConfiguration: SecretToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} Filters: - JsonPath: "$.ref" MatchEquals: refs/heads/{Branch} TargetPipeline: !Ref AppPipeline TargetAction: SourceAction Name: AppPipelineWebhook TargetPipelineVersion: !GetAtt AppPipeline.Version RegisterWithThirdParty: true AppPipeline: Type: AWS::CodePipeline::Pipeline Properties: Name: github-events-pipeline RoleArn: !GetAtt CodePipelineServiceRole.Arn Stages: - Name: Source Actions: - Name: SourceAction ActionTypeId: Category: Source Owner: ThirdParty Version: 1 Provider: GitHub OutputArtifacts: - Name: SourceOutput Configuration: Owner: !Ref GitHubOwner Repo: !Ref RepositoryName Branch: !Ref BranchName OAuthToken: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}} PollForSourceChanges: false RunOrder: 1 ...
JSON
{ "Parameters": { "BranchName": { "Description": "GitHub branch name", "Type": "String", "Default": "main" }, "RepositoryName": { "Description": "GitHub repository name", "Type": "String", "Default": "test" }, "GitHubOwner": { "Type": "String" }, "ApplicationName": { "Description": "CodeDeploy application name", "Type": "String", "Default": "DemoApplication" }, "BetaFleet": { "Description": "Fleet configured in CodeDeploy", "Type": "String", "Default": "DemoFleet" } }, "Resources": { ... }, "AppPipelineWebhook": { "Type": "AWS::CodePipeline::Webhook", "Properties": { "Authentication": "GITHUB_HMAC", "AuthenticationConfiguration": { "SecretToken": { "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}" } }, "Filters": [ { "JsonPath": "$.ref", "MatchEquals": "refs/heads/{Branch}" } ], "TargetPipeline": { "Ref": "AppPipeline" }, "TargetAction": "SourceAction", "Name": "AppPipelineWebhook", "TargetPipelineVersion": { "Fn::GetAtt": [ "AppPipeline", "Version" ] }, "RegisterWithThirdParty": true } }, "AppPipeline": { "Type": "AWS::CodePipeline::Pipeline", "Properties": { "Name": "github-events-pipeline", "RoleArn": { "Fn::GetAtt": [ "CodePipelineServiceRole", "Arn" ] }, "Stages": [ { "Name": "Source", "Actions": [ { "Name": "SourceAction", "ActionTypeId": { "Category": "Source", "Owner": "ThirdParty", "Version": 1, "Provider": "GitHub" }, "OutputArtifacts": [ { "Name": "SourceOutput" } ], "Configuration": { "Owner": { "Ref": "GitHubOwner" }, "Repo": { "Ref": "RepositoryName" }, "Branch": { "Ref": "BranchName" }, "OAuthToken": "{{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}", "PollForSourceChanges": false }, "RunOrder": 1 ...

Konfigurasi otentikasi (tindakan sumber GitHub versi 1)

Menggunakan CodePipeline GitHub Token OAuth dan token akses pribadi untuk mengakses repositori GitHub Anda dan mengambil perubahan terbaru. Ada dua cara untuk mengkonfigurasi otentikasi di GitHub:

  • AWSmembuat defaultAWStoken OAuth yang dikelola saat Anda menggunakan konsol untuk membuat atau memperbarui jaringan pipa.

  • Anda dapat membuat dan mengelola token akses pribadi buatan pelanggan Anda sendiri. Anda memerlukan token akses pribadi saat Anda menggunakan CLI, SDK, atauAWS CloudFormationuntuk membuat atau memperbarui pipa Anda.

Melihat aplikasi OAuth resmi Anda

CodePipeline menggunakan token OAuth untuk diintegrasikan dengan GitHub. GitHub melacak izin token OAuth untuk CodePipeline.

Untuk melihat integrasi resmi Anda di GitHub

  1. Di GitHub, dari opsi tarik-bawah pada foto profil Anda, pilihPengaturan.

  2. PilihAplikasi, dan kemudian pilihAplikasi OAuth yang Diizinkan.

  3. Tinjau aplikasi resmi Anda.

Konfigurasikan pipeline Anda untuk menggunakan token akses pribadi (GitHub dan CLI)

Anda dapat mengonfigurasi saluran Anda untuk menggunakan token akses pribadi untuk terhubung ke GitHub. Keuntungan menggunakan token alih-alih password dalam skrip adalah bahwa token dapat dicabut atau diputar. Anda juga dapat memberikan hak istimewa dan izin khusus ke token akses pribadi. Setiap token akses pribadi dikaitkan di pipa, bukan akun, tingkat.

catatan

Anda mungkin harus memperbarui aplikasi lain jika mereka menggunakan token akses pribadi yang sama. Sebagai praktik terbaik keamanan, jangan berbagi satu token di beberapa aplikasi. Buat token akses pribadi untuk setiap aplikasi. Untuk informasi selengkapnya, lihatMembuat token akses pribadi untuk baris perintahdi situs web GitHub.

Untuk membuat GitHub token akses pribadi dan kemudian memperbarui struktur pipa dengan token baru

  1. Di GitHub, dari opsi tarik-bawah pada foto profil Anda, pilihPengaturan.

  2. PilihPengaturan developer, dan kemudian pilihToken akses pribadi.

  3. PilihBuat token baru.

    ParameterToken akses pribadi baruHalaman akan muncul.

  4. Di bawahPilih cakupan, pilihadmin:repo_hookdanrepo.

  5. PilihMenghasilkan token.

  6. Di samping token yang dihasilkan, pilih ikon salin.

    catatan

    Pastikan Anda menyalin token yang dihasilkan sekarang. Anda tidak dapat melihat token setelah Anda menutup halaman ini.

  7. Pada terminal (Linux, macOS, atau Unix) atau command prompt (Windows), jalankanget-pipelineperintah pada pipa di mana Anda ingin mengubah token OAuth, dan kemudian salin output perintah ke file JSON. Misalnya, untuk pipeline yang bernama MyFirstPipeline, Anda akan mengetik sesuatu yang serupa dengan berikut ini:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Output dari perintah dikirim kepipeline.jsonberkas.

  8. Buka file di editor teks biasa dan edit nilai diOAuthTokenFielddari GitHub tindakan.

    Saat Anda menggunakanAWS CLIuntuk membuat pipa, Anda dapat melewati GitHub token akses pribadi di bidang ini. Ganti tanda bintang (****) dengan token yang Anda salin dari GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, topeng empat asterisk ditampilkan untuk nilai ini. Misalnya, untuk token akses pribadi dengan nilai111222333444555666777888EXAMPLE:

    "configuration": { "Owner": "MyGitHubUserName", "Repo": "test-repo", "Branch": "main", "OAuthToken": "111222333444555666777888EXAMPLE" }
    catatan

    Saat Anda menggunakanAWS CloudFormationtemplate untuk membuat pipa, Anda harus terlebih dahulu menyimpan token sebagai rahasia diAWS Secrets Manager. Anda menyertakan nilai untuk bidang ini sebagai referensi dinamis ke rahasia yang disimpan di Secrets Manager. Sebagai contoh, lihat Referensi struktur aksi sumber GitHub versi 1.

  9. Jika Anda bekerja dengan struktur pipa diambil menggunakanget-pipelineperintah, Anda harus memodifikasi struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Lepaskan bagian dari struktur pipa di file JSON (yang"metadata": { }garis dan"created","pipelineARN", dan"updated"kolom).

    Misalnya, hapus baris berikut dari struktur:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }
  10. Simpan file, dan kemudian jalankanupdate-pipelinedengan--cli-input-jsonparameter untuk menentukan file JSON Anda baru saja diedit.

    Misalnya, untuk memperbarui pipeline yang bernama MyFirstPipeline, Anda akan mengetik sesuatu yang serupa dengan berikut ini:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json
    penting

    Pastikan untuk menyertakan file:// sebelum nama file. Ia diperlukan dalam perintah ini.

  11. Ulangi langkah 6 sampai 8 untuk setiap pipa yang berisi GitHub tindakan.

  12. Setelah selesai, hapus file JSON yang digunakan untuk memperbarui jaringan pipa tersebut.

Gunakan GitHub dan CodePipeline CLI untuk membuat dan memutar GitHub token akses pribadi secara teratur

Keuntungan menggunakan token alih-alih password dalam skrip adalah bahwa token dapat dicabut atau diputar. Anda juga dapat memberikan hak istimewa dan izin khusus ke token akses pribadi. Token harus disimpan dengan aman dan diputar atau diregenerasi secara rutin. Rotasi Token direkomendasikan olehRFC-6819 (Model Ancaman OAuth 2.0 dan Pertimbangan Keamanan), bagian 5.1.5.3.

Untuk informasi selengkapnya, lihatMembuat token akses pribadi untuk baris perintahpada GitHub website.

Setelah Anda meregenerasi token akses pribadi baru, Anda dapat memutarnya dengan menggunakanAWS CLIatau API atau dengan menggunakanAWS CloudFormationdan memanggilUpdatePipeline.

catatan

Anda mungkin harus memperbarui aplikasi lain jika mereka menggunakan token akses pribadi yang sama. Sebagai praktik terbaik keamanan, jangan berbagi satu token di beberapa aplikasi. Buat token akses pribadi baru untuk setiap aplikasi.

Gunakan langkah-langkah ini untuk memutar GitHub token akses pribadi dan kemudian perbarui struktur pipa dengan token baru.

catatan

Setelah Anda memutar token akses pribadi Anda, ingatlah untuk memperbaruiAWS CLIskrip atauAWS CloudFormationtemplate yang berisi informasi token lama.

  1. Di GitHub, dari opsi tarik-bawah pada foto profil Anda, pilihPengaturan.

  2. PilihPengaturan developer, dan kemudian pilihToken akses pribadi.

  3. Di samping GitHub token akses pribadi, pilihedit.

  4. PilihToken regenerasi.

  5. Di samping token yang diregenerasi, pilih ikon salin.

  6. Pada terminal (Linux, macOS, atau Unix) atau command prompt (Windows), jalankanget-pipelineperintah pada pipa di mana Anda ingin mengubah token akses pribadi, dan kemudian menyalin output dari perintah ke file JSON. Misalnya, untuk pipeline yang bernama MyFirstPipeline, Anda akan mengetik sesuatu yang serupa dengan berikut ini:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    Output dari perintah dikirim kepipeline.jsonberkas.

  7. Buka file di editor teks biasa dan edit nilai diOAuthTokenFielddari GitHub tindakan.

    Saat Anda menggunakanAWS CLIuntuk membuat pipa, Anda dapat melewati GitHub token akses pribadi di bidang ini. Ganti tanda bintang (****) dengan token yang Anda salin dari GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, topeng empat asterisk ditampilkan untuk nilai ini. Misalnya, untuk token akses pribadi dengan nilai111222333444555666777888EXAMPLE:

    "configuration": { "Owner": "MyGitHubUserName", "Repo": "test-repo", "Branch": "main", "OAuthToken": "111222333444555666777888EXAMPLE" }
    catatan

    Saat Anda menggunakanAWS CloudFormationtemplate untuk memperbarui pipa, Anda harus terlebih dahulu menyimpan token sebagai rahasia diAWS Secrets Manager. Anda menyertakan nilai untuk bidang ini sebagai referensi dinamis ke rahasia yang disimpan di Secrets Manager. Sebagai contoh, lihat Referensi struktur aksi sumber GitHub versi 1.

  8. Jika Anda bekerja dengan struktur pipa diambil menggunakanget-pipelineperintah, Anda harus memodifikasi struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Lepaskan bagian dari struktur pipa di file JSON (yang"metadata": { }garis dan"created","pipelineARN", dan"updated"kolom).

    Misalnya, hapus baris berikut dari struktur:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }
  9. Simpan file, lalu jalankanupdate-pipelinedengan--cli-input-jsonparameter untuk menentukan file JSON Anda baru saja diedit. Misalnya, untuk memperbarui pipeline yang bernama MyFirstPipeline, Anda akan mengetik sesuatu yang serupa dengan berikut ini:

    penting

    Pastikan untuk menyertakan file:// sebelum nama file. Ia diperlukan dalam perintah ini.

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json
  10. Setelah selesai memperbarui jaringan pipa Anda, hapus file JSON.

Untuk informasi selengkapnya, lihat Kesalahan Pipeline: “Tidak dapat mengakses repositori GitHub” atau “Tidak dapat menyambung ke GitHub repositori” (GitHub versi 1 tindakan sumber).

Tutorial: Buat pipa denganAWS CloudFormation(GitHub versi 1 tindakan sumber)

catatan

Parameter GitHub versi 1 tindakan tidak dianjurkan. Untuk pipa dengan GitHub tindakan versi 1, CodePipeline menggunakan token berbasis OAuth untuk terhubung ke GitHub repositori. Sebaliknya, GitHub action (versi 2) menggunakan sumber daya koneksi untuk mengasosiasikanAWSsumber daya untuk GitHub repositori. Sumber daya koneksi menggunakan token berbasis aplikasi untuk terhubung. Untuk informasi lebih lanjut tentang memperbarui pipa Anda ke yang direkomendasikan GitHub tindakan yang menggunakan koneksi, lihatMemperbarui tindakan sumber GitHub versi 1 ke aksi sumber GitHub versi 2.

Tutorial ini menunjukkan cara menggunakanAWS CloudFormationkonsol untuk membuat infrastruktur yang mencakup pipa yang terhubung ke GitHub repositori sumber. Dalam tutorial ini, Anda menggunakan file template sampel yang disediakan untuk membuat tumpukan sumber daya Anda, yang mencakup toko artefak, pipa, dan sumber daya deteksi perubahan (webhook Anda). Setelah Anda membuat tumpukan sumber daya AndaAWS CloudFormation, Anda dapat melihat alur Anda diAWS CodePipelinekonsol. Pipa adalah pipa dua tahap dengan GitHub tahap sumber dan CodeDeploy tahap deployment.

Kami sangat merekomendasikan agar Anda menggunakan AWS Secrets Manager untuk menyimpan kredensial Anda. Jika Anda menggunakan Secrets Manager, Anda harus sudah mengkonfigurasi dan menyimpan parameter rahasia Anda di Secrets Manager. Contoh ini menggunakan referensi dinamis untukAWSSecrets Manager GitHub kredensi untuk webhook Anda. Untuk informasi selengkapnya, lihat Menggunakan Referensi Dinamis untuk Menentukan Nilai Templat.

penting

Saat meneruskan parameter rahasia, jangan masukkan nilainya langsung ke templat. Nilai tersebut diberikan sebagai teks biasa dan karena itu dapat dibaca. Untuk alasan keamanan, jangan gunakan teks biasa di templat AWS CloudFormation untuk menyimpan kredensial Anda.

Prasyarat:

Anda harus telah membuat sumber daya berikut untuk digunakan denganAWS CloudFormationTemplat sampel:

  • SEBUAH CodeDeploy grup aplikasi dan deployment. Anda dapat menggunakan CodeDeploy sumber daya yang Anda buatTutorial: Buat pipa sederhana (repositori CodeCommit).

  • Pilih salah satu tautan ini untuk mengunduh sampelAWS CloudFormationfile template untuk membuat pipa: YAML|JSON

    Unzip file dan letakkan di komputer lokal Anda.

  • Contoh template dalam bullet di atas dikonfigurasi untuk menggunakan GitHub token rahasia dengan referensi dinamis ini ke token yang disimpan diAWS Secrets Manager: {{resolve:secretsmanager:MyGitHubSecret:SecretString:token}}. Anda harus membuat GitHub token dan menyimpannya di Secrets Manager untuk menggunakan referensi dinamis dalam template untuk AndaOAuthTokendanSecretTokenkolom.

  • UnduhSampleApp_Linux.zip.

  • Parameter GitHub repositori dan cabang yang ingin Anda gunakan untuk sumber Anda.

  • Kunci akses pribadi untuk GitHub repositori. Ini digunakan untuk menyediakan token OAuth untuk koneksi ke repositori Anda.

Untuk membuat tumpukan AndaAWS CloudFormation

  1. Buka filenya dariSampleApp_Linux.zipdan upload file ke GitHub repositori. Anda harus mengunggah file unzip ke direktori root repositori Anda.

  2. BukaAWS CloudFormationkonsol dan pilihMembuat Stack.

  3. MasukMemilih templat, pilihMeng-unggah templat ke Amazon S3. PilihJelajahi, dan kemudian pilih file templat dari komputer lokal Anda. Pilih Selanjutnya.

  4. MasukNama tumpukan, masukkan nama untuk alur Anda. Parameter yang ditentukan oleh template sampel ditampilkan. Masukkan parameter berikut:

    1. MasukApplicationName, masukkan nama aplikasi CodeDeploy Anda.

    2. MasukBetaFleet, masukkan nama CodeDeploy grup deployment.

    3. MasukBranchName, masukkan cabang repositori yang ingin Anda gunakan.

    4. MasukGitHubOAuthToken, masukkan kunci akses pribadi untuk Anda GitHub repositori.

    5. MasukGitHubOwner, masukkan GitHub nama pengguna untuk pemilik repositori.

    6. MasukGitHubSecret, masukkan rahasia yang ingin Anda gunakan untuk webhookAWS CloudFormationmenciptakan.

    7. MasukrepositoryName, masukkan nama GitHub repositori sumber.

  5. Pilih Selanjutnya. Terima default pada halaman berikut, lalu pilihSelanjutnya.

  6. MasukKemampuan, pilihSaya mengakui bahwaAWS CloudFormation mungkin membuat sumber daya IAM, dan kemudian pilihBuat.

  7. Setelah pembuatan stack selesai, lihat daftar acara untuk memeriksa kesalahan apa pun.

  8. Masuk keAWS Management Consoledan membuka CodePipeline konsol dihttps://console.aws.amazon.com/codepipeline/.

    Di bawahAlur, pilih alur Anda, lalu pilihLihat. Diagram menunjukkan tahap sumber dan penyebaran pipa Anda.

  9. Di repositori sumber Anda, komit dan dorong perubahan. Sumber daya deteksi perubahan Anda mengambil perubahan dan saluran pipa Anda dimulai.

Pemecahan masalah (tindakan sumber GitHub versi 1)

Kesalahan Pipeline: Saya GitHub tahap sumber berisi submodul Git, tapi CodePipeline tidak menginisialisasi mereka (tindakan sumber GitHub versi 1)

Masalah: CodePipeline tidak mendukung git submodules. CodePipeline bergantung pada API tautan arsip dari GitHub, yang tidak mendukung submodul.

Perbaikan yang dimungkinkan: Pertimbangkan mengkloning GitHub repositori langsung sebagai bagian dari script terpisah. Misalnya, Anda dapat menyertakan tindakan klon dalam skrip Jenkins.

Kesalahan Pipeline: “Tidak dapat mengakses repositori GitHub” atau “Tidak dapat menyambung ke GitHub repositori” (GitHub versi 1 tindakan sumber)

Masalah: CodePipeline menggunakan token OAuth untuk diintegrasikan dengan GitHub. Saat Anda membuat alur dengan GitHub penyedia sumber, CodePipeline mengelola kredensi GitHub Anda dengan membuat token OAuth default. Ketika pipa Anda terhubung ke repositori, menggunakan GitHub kredensi untuk terhubung ke GitHub. Kredensi token OAuth dikelola oleh CodePipeline. Anda tidak melihat atau mengelola token dengan cara apa pun. Jenis kredensi lain yang dapat Anda gunakan untuk terhubung ke GitHub adalah token akses pribadi, yang dibuat oleh Anda bukan oleh aplikasi OAuth. Token akses pribadi dikelola oleh Anda dan bukan oleh CodePipeline.

Jika izin ini telah dicabut atau dinonaktifkan, maka pipa gagal ketika tidak dapat menggunakan GitHub token untuk terhubung ke repositori.

Ini adalah praktik terbaik keamanan untuk memutar token akses pribadi Anda secara teratur. Untuk informasi selengkapnya, lihat Gunakan GitHub dan CodePipeline CLI untuk membuat dan memutar GitHub token akses pribadi secara teratur.

Perbaikan yang dimungkinkan:

Jika CodePipeline tidak dapat terhubung ke GitHub repositori, ada dua opsi pemecahan masalah:

  • Anda mungkin hanya perlu menghubungkan kembali pipa Anda ke repositori secara manual. Anda mungkin telah mencabut izin token OAuth untuk CodePipeline dan mereka hanya perlu dipulihkan. Untuk melakukan hal ini, lihat langkah-langkah di bawah ini.

  • Anda mungkin perlu mengubah token OAuth default Anda ke token akses pribadi. Jumlah token OAuth terbatas. Untuk informasi selengkapnya, lihatsang GitHub dokumentasi. Jika CodePipeline mencapai batas itu, token yang lebih tua berhenti bekerja, dan tindakan dalam jaringan pipa yang bergantung pada token itu gagal.

  1. Periksa untuk melihat apakah izin untuk CodePipeline telah dicabut. Untuk langkah-langkah untuk memeriksaAplikasi OAuth yang Diizinkandaftar di GitHub, lihatMelihat aplikasi OAuth resmi Anda. Jika Anda tidak melihat CodePipeline dalam daftar, Anda harus menggunakan konsol untuk menghubungkan kembali pipa Anda ke GitHub.

    1. Buka alur Anda di konsol dan pilihedit. Pada tahap sumber yang berisi GitHub tindakan sumber, pilihMengedit tahap.

    2. Pada GitHub tindakan sumber, pilih ikon edit.

    3. PadaEdit tindakanhalaman, pilihConnect ke GitHubuntuk mengembalikan otorisasi.

      Jika diminta, Anda mungkin perlu memasukkan ulangRepositoridanCabanguntuk tindakan Anda. PilihSelesai. PilihSelesaipada halaman pengeditan panggung, dan kemudian pilihSimpanpada halaman pengeditan pipa. Jalankan pipa.

  2. Jika ini tidak memperbaiki kesalahan tetapi Anda dapat melihat CodePipeline diAplikasi OAuth yang Diizinkandaftar di GitHub, Anda mungkin telah melampaui jumlah token yang diizinkan. Untuk memperbaiki masalah ini, Anda dapat mengkonfigurasi satu token OAuth secara manual sebagai token akses pribadi, dan kemudian mengkonfigurasi semua saluran pipa diAWSakun untuk menggunakan token itu. Untuk informasi selengkapnya, lihat Konfigurasikan pipeline Anda untuk menggunakan token akses pribadi (GitHub dan CLI).