Lampiran A: GitHub tindakan sumber 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 1

Lampiran ini memberikan informasi tentang versi 1 GitHub tindakan di CodePipeline.

catatan

Meskipun kami tidak menyarankan untuk menggunakan GitHub versi 1, jaringan pipa yang ada dengan GitHub versi 1 tindakan akan terus bekerja tanpa dampak apapun. Untuk pipa dengan GitHubtindakan 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 Anda GitHub repositori. Sumber daya koneksi menggunakan token berbasis aplikasi untuk terhubung. Untuk informasi lebih lanjut tentang memperbarui alur 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 berbasis OAuth GitHub akses berbeda dengan berbasis aplikasi 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. CodePipelinemenggunakan webhook untuk mengelola deteksi perubahan untuk pipeline Anda dengan GitHub versi 1 tindakan sumber

catatan

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

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

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

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

  • Untuk informasi tentang cara mengelola webhook untuk GitHub tindakan sumber versi 1, lihatGunakan webhook untuk memulai pipeline (GitHub tindakan sumber versi 1). Yang GitHubtindakan sumber versi 1 menggunakan webhook 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 webhook

    • Kelola webhook di CLI Anda danAWS CloudFormationjaringan pipa

    • Migrasi GitHub jaringan pipa dari polling ke webhooks

  • Untuk informasi tentang cara mengelola aplikasi OAuth atau token akses pribadi untuk GitHubtindakan sumber versi 1, lihatmengonfigurasi autentikasi (GitHub tindakan sumber versi 1). Yang GitHub GitHub tindakan sumber versi 1 menggunakan aplikasi berbasis OAuth untuk otorisasi antara CodePipeline dan repositori Anda. Lampiran ini memberikan detail 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 tindakan sumber versi 1 dan webhook, lihatTutorial: Buat pipeline denganAWS CloudFormation(GitHub tindakan sumber versi 1).

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

Menambahkan GitHub aksi sumber 1

Anda menambahkan GitHub tindakan sumber versi 1 untuk CodePipeline oleh:

GitHub referensi struktur aksi sumber versi 1

catatan

Meskipun kami tidak menyarankan untuk menggunakan GitHub versi 1, jaringan pipa yang ada dengan GitHub versi 1 tindakan akan terus bekerja tanpa dampak apapun. Untuk pipa dengan GitHub GitHub versi 1 tindakan sumber, 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 alur Anda ke yang direkomendasikan GitHub tindakan yang menggunakan koneksi, lihatMemperbarui tindakan sumber GitHub versi 1 ke aksi sumber GitHub versi 2.

Memicu pipeline saat komit baru dibuat pada konfigurasi GitHub repositori dan cabang.

Untuk mengintegrasikan dengan GitHub, CodePipeline menggunakan aplikasi OAuth atau token akses pribadi untuk pipeline Anda. Jika Anda menggunakan konsol untuk membuat atau mengedit pipeline Anda, CodePipeline menciptakan GitHub webhook yang memulai pipeline 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 berikan akses akun hanya ke repositori yang ingin Anda integrasikan CodePipeline. Gunakan akun itu saat Anda mengonfigurasi CodePipeline untuk menggunakan GitHub repositori untuk tahap sumber dalam jaringan pipa.

Untuk informasi lebih lanjut, lihatGitHub dokumentasi developerpada GitHub website.

Tipe tindakan

  • Kategori:Source

  • Pemilik:ThirdParty

  • Penyedia:GitHub

  • Versi:1

Parameter konfigurasi

owner

Diperlukan: Ya

Nama dari GitHub pengguna atau organisasi yang memiliki GitHubrepositori.

Repo

Diperlukan: Ya

Nama repositori tempat perubahan sumber akan terdeteksi.

Cabang

Diperlukan: Ya

Nama cabang di mana perubahan sumber yang akan terdeteksi.

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 berikut:

  • Saat Anda menggunakan konsol untuk membuat pipeline, 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 GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, mask empat-tanda bintang ditampilkan untuk nilai ini.

  • Saat Anda menggunakanAWS CloudFormationtemplate untuk membuat pipeline, 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 cakupan, lihatGitHub Referensi API Developerpada GitHub website.

PollForSourceChanges

Diperlukan: Tidak

PollForSourceChangesmengontrol apakah CodePipeline jajak pendapat GitHubrepositori untuk perubahan sumber. Sebagai gantinya, kami rekomendasikan Anda menggunakan webhook untuk mendeteksi perubahan sumber. Untuk informasi selengkapnya tentang konfigurasi webhook, lihatPerbarui pipeline untuk acara push (GitHub tindakan sumber versi 1) (CLI)atauPerbarui pipeline untuk acara push (GitHub tindakan sumber versi 1) (AWS CloudFormationtemplat).

penting

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

Nilai yang valid untuk parameter ini:

  • True: Jika diatur, CodePipeline polling 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 polling repositori Anda untuk perubahan sumber. Gunakan pengaturan ini jika Anda bermaksud mengonfigurasi webhook untuk mendeteksi perubahan sumber.

Artefak

  • Jumlah artefak: 0

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

Artefak

  • Jumlah artefak: 1

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

Variabel keluaran

Ketika dikonfigurasi, tindakan ini menghasilkan variabel yang dapat direferensikan oleh konfigurasi tindakan tindakan 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 CodePipelineLihatVariabel.

CommitId

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

CommitMessage

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

CommitUrl

Alamat URL untuk komit yang memicu pipeline.

RepositoryName

Nama dari GitHub repositori di mana komit yang memicu pipeline 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 (GitHubcontoh)

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-hal berikut GitHub cakupan:

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

  • Yangadmin: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 GitHub.

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

Untuk 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 webhook untuk memulai pipeline (GitHub tindakan sumber versi 1)

Webhook adalah pemberitahuan HTTP yang mendeteksi peristiwa di alat lain, seperti GitHubrepositori, dan menghubungkan peristiwa eksternal tersebut ke pipeline.

Saat Anda menggunakan konsol untuk membuat atau mengedit alur yang memiliki GitHub sumber, CodePipelinemembuat webhook. CodePipeline menghapus webhook Anda ketika Anda menghapus pipeline Anda. Anda tidak perlu mengelolanya di GitHub. Jika Anda menggunakanAWS CLIatauAWS CloudFormationuntuk membuat atau mengedit pipeline yang memiliki GitHub sumber, Anda harus menggunakan informasi di bagian ini untuk mengelola webhook sendiri.

Buat webhook untuk GitHub sumber

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

penting

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

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

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

  • Rahasia dalam file JSON yang akan digunakan GitHub otorisasi.

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

    Yang 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 pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala. Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan set ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationpipa adalah bahwaPollForSourceChangesdefault true 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 sertakan--cli-inputdan--regionparameter.

    Perintah contoh berikut membuat 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 menyertakanProjectkunci tag danProjectAnilai pada webhook. Untuk informasi lebih lanjut tentang penandaan sumber daya di CodePipelineLihatPenandaan pada sumber daya .

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

    Perintah contoh berikut register webhook bernamamy-webhook.

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

Jika Anda memperbarui pipeline untuk menggunakan webhook, Anda juga harus menggunakan prosedur berikut untuk mematikan pemeriksaan berkala.

Untuk mengedit saluran pipa Anda PollForSourceChangesparameter

penting

Ketika 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, pipeline Anda dimulai dua kali untuk satu perubahan sumber. 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 mengetikkan 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 akan mematikan pemeriksaan berkala sehingga Anda hanya dapat menggunakan deteksi perubahan berbasis peristiwa.

    "configuration": { "Owner": "darlaker", "Repo": "UserGitHubRepo", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "****" },
  3. Jika Anda bekerja dengan struktur pipa yang 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"bidang.

    Misalnya, hapus baris berikut dari struktur:

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

    Simpan file tersebut.

  4. Untuk menerapkan perubahan Anda, jalankanupdate-pipelineperintah, menentukan file JSON alur, 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

    Perintah ini mengembalikan seluruh struktur pipa diedit.

    catatan

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

Daftar webhook di akun Anda

Anda dapat menggunakanAWS CLIuntuk mencantumkan webhook di akun Anda.

Untuk mencantumkan webhook di akun Anda

  1. Untuk mencantumkan webhook Anda, hubungilist-webhooksperintah dan sertakan--endpoint-urldan--regionparameter.

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

    aws codepipeline list-webhooks --endpoint-url "https://codepipeline.eu-central-1.amazonaws.com" --region "eu-central-1"
  2. Webhook 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. Masuk GitHub, pilih repositori Anda.

  4. PilihPengaturan, dan kemudian pilihWebhook.

    Lihat informasi webhook untuk repositori Anda.

Edit webhook untuk GitHub sumber

Anda dapat menggunakanAWS CLIuntuk mengedit webhook untuk repositori Anda.

  • Jika Anda menggunakan konsol untuk mengedit GitHub tindakan sumber untuk pipeline Anda, webhook diperbarui untuk Anda (dan didaftarkan ulang, jika sesuai).

  • Jika Anda tidak memperbarui nama webhook, dan Anda tidak mengubah GitHubrepositori, 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. Contoh ini mengubah token rahasia 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. Selectput-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 aksi 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 diHapus webhook untuk Anda GitHubsumberuntuk 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 membuat ulang webhook.

    catatan

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

Hapus webhook untuk Anda GitHubsumber

Untuk menggunakanAWS CLIuntuk menghapus webhook:

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

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

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

    Perintah contoh berikut menghapus webhook bernama"my-webhook".

    aws codepipeline delete-webhook --name my-webhook

Tag webhook di CodePipeline

Anda dapat menerapkan 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 kendala nilai, dan jenis sumber daya yang didukung, lihatPenandaan pada sumber daya .

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

Menambahkan tanda ke webhook yang sudah ada

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk menambahkan tanda 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 perintah, jalankantag-resourceperintah, dengan menentukan Amazon Resource Name (ARN) dari webhook tempat Anda ingin menambahkan tanda dan nilai dari tanda yang ingin ditambahkan. Anda dapat menambahkan lebih dari satu tanda ke webhook. Misalnya, untuk menandai 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 di bagian berikutnya.

Pada terminal atau baris perintah perintah, jalankantag-resourceperintah, menentukan ARN dari 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

Hapus tanda untuk webhook

Ikuti langkah-langkah ini untuk menggunakanAWS CLIuntuk menghapus tanda 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. Anda tidak perlu menghapus tanda sebelum Anda menghapus webhook.

Pada terminal atau baris perintah perintah, jalankanuntag-resourceperintah, menentukan ARN dari webhook tempat Anda ingin menghapus tanda dan kunci tanda dari tanda yang ingin Anda hapus. Misalnya, untuk menghapus tanda pada webhook yang 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, perbarui 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 ke Secrets Manager untuk GitHubmandat 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 pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala.

catatan

Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan set ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationalur adalah bahwaPollForSourceChangesdefault true 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

    YangTargetActionyang Anda tentukan harus sesuai denganNameproperti dari tindakan sumber didefinisikan dalam pipa.

    JikaRegisterWithThirdPartydiatur ketrue, pastikan pengguna yang 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, dan kemudian pilihBuat Set Perubahan untuk Tumpukan Saat Ini.

  5. Unggah template, lalu lihat perubahan yang tercantumAWS CloudFormation. Ini adalah perubahan yang dibuat untuk tumpukan. Anda akan melihat sumber daya baru Anda dalam daftar.

  6. Pilih Eksekusi.

Untuk mengedit saluran pipa Anda PollForSourceChangesparameter

penting

Ketika 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, pipeline Anda dimulai dua kali untuk satu perubahan sumber. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  • Dalam template, ubahPollForSourceChangeskepadafalse. Jika Anda tidak termasukPollForSourceChangesdalam definisi pipeline 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 pipeline polling untuk GitHubaksi sumber 1

Memperbarui pipeline polling untuk GitHub aksi sumber 1

Perbarui pipeline untuk acara push (GitHub tindakan sumber versi 1) (konsol)

Anda dapat menggunakan CodePipeline konsol untuk memperbarui pipeline Anda untuk menggunakan webhook untuk mendeteksi perubahan pada CodeCommit repositori sumber.

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

Saat Anda menggunakan konsol,PollForSourceChangesparameter untuk pipelined Anda diubah untuk Anda. Yang GitHub webhook dibuat dan terdaftar untuk Anda.

Untuk mengedit tahap sumber alur

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

    Nama-nama semua jaringan pipa yang terkait denganAWSakun 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 detail pipeline, pilihedit.

  4. MasukTahap Edit, pilih ikon edit pada tindakan sumber.

  5. PerluasUbah opsi deteksidan pilihlahGunakan Amazon Amazon CloudWatch Acara untuk memulai pipeline saya secara otomatis saat terjadi perubahan (disarankan).

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

    • Rahasia, dibuat secara acak dan digunakan untuk mengotorisasi koneksi ke GitHub.

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

    CodePipeline register webhookbersama GitHub. Ini berlangganan URL untuk menerima peristiwa repositori.

  6. Setelah selesai mengedit alur Anda, pilihSimpan perubahan pipelineuntuk kembali ke halaman ringkasan.

    Sebuah pesan menampilkan nama webhook yang akan dibuat untuk pipeline 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 pipeline untuk acara push (GitHub tindakan sumber versi 1) (CLI)

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

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

  • GitHub parameter webhook dan otorisasi

Untuk membuat dan mendaftarkan webhook Anda

catatan

Bila Anda menggunakan CLI atauAWS CloudFormationuntuk membuat pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala. Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan set ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationalur adalah bahwaPollForSourceChangesdefault true 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. Selectput-webhookperintah dan termasuk--cli-inputdan--regionparameter.

    Perintah contoh berikut membuat 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 menyertakanProjectTombol tag danProjectAnilai pada webhook. Untuk informasi lebih lanjut tentang penandaan sumber daya di CodePipelineLihatPenandaan pada sumber daya .

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

    Perintah contoh berikut register webhook bernamamy-webhook.

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

Untuk mengedit saluran pipa Anda PollForSourceChangesparameter

penting

Ketika 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, pipeline Anda dimulai dua kali untuk satu perubahan sumber. 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 mengetikkan 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 akan mematikan pemeriksaan berkala sehingga Anda hanya dapat menggunakan deteksi perubahan berbasis peristiwa.

    "configuration": { "Owner": "darlaker", "Repo": "UserGitHubRepo", "PollForSourceChanges": "false", "Branch": "main", "OAuthToken": "****" },
  3. Jika Anda bekerja dengan struktur pipa yang 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"bidang.

    Misalnya, hapus baris berikut dari struktur:

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

    Simpan file tersebut.

  4. Untuk menerapkan perubahan Anda, jalankanupdate-pipelineperintah, menentukan file JSON alur, 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

    Perintah ini mengembalikan seluruh struktur pipa diedit.

    catatan

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

Perbarui pipeline untuk acara push (GitHub tindakan sumber versi 1) (AWS CloudFormationtemplat)

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

Untuk membangun pipeline yang digerakkan oleh peristiwa denganAWS CodeCommit, Anda mengeditPollForSourceChangesparameter pipa Anda dan kemudian menambahkan GitHub sumber daya webhook ke 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 ke Secrets Manager untuk GitHubmandat 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 pipeline dan menambahkan webhook, Anda harus menonaktifkan pemeriksaan berkala.

catatan

Untuk menonaktifkan pemeriksaan berkala, Anda harus secara eksplisit menambahkanPollForSourceChangesparameter dan set ke false, seperti yang dijelaskan dalam prosedur akhir di bawah ini. Jika tidak, default untuk CLI atauAWS CloudFormationpipa adalah bahwaPollForSourceChangesdefault true 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

    YangTargetActionyang Anda tentukan harus sesuai denganNameproperti dari tindakan sumber didefinisikan dalam pipa.

    JikaRegisterWithThirdPartydiatur ketrue, pastikan pengguna yang 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, dan kemudian pilihBuat Set Perubahan untuk Tumpukan Saat Ini.

  5. Unggah template, lalu lihat perubahan yang tercantumAWS CloudFormation. Ini adalah perubahan yang dibuat untuk tumpukan. Anda akan melihat sumber daya baru Anda dalam daftar.

  6. Pilih Eksekusi.

Untuk mengedit saluran pipa Anda PollForSourceChangesparameter

penting

Ketika 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, pipeline Anda dimulai dua kali untuk satu perubahan sumber. Untuk detailnya, lihat Pengaturan default untuk PollForSourceChanges parameter.

  • Dalam template, ubahPollForSourceChangeskepadafalse. Jika Anda tidak termasukPollForSourceChangesdalam definisi pipeline 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. Pipeline 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 ...

mengonfigurasi autentikasi (GitHub tindakan sumber versi 1)

CodePipeline menggunakan GitHub Token OAuth dan token akses pribadi untuk mengakses GitHubrepositori dan mengambil perubahan terbaru. Ada dua cara untuk mengkonfigurasi otentikasi GitHub:

  • AWSmembuat defaultAWStoken OAuth terkelola saat Anda menggunakan konsol untuk membuat atau memperbarui pipeline.

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

Melihat aplikasi OAuth resmi

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

Untuk melihat integrasi resmi Anda di GitHub

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

  2. PilihAplikasi, dan kemudian pilihAplikasi OAuth Resmi.

  3. Tinjau aplikasi resmi Anda.

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

Anda dapat mengonfigurasi pipeline Anda untuk menggunakan token akses pribadi untuk terhubung GitHub. Keuntungan menggunakan token alih-alih kata sandi dalam skrip adalah token dapat dicabut atau diputar. Anda juga dapat memberikan hak istimewa dan izin khusus ke token akses pribadi. Setiap token akses pribadi dikaitkan pada pipeline, bukan akun, level.

catatan

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

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

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

  2. PilihPengaturan developer, dan kemudian pilihToken akses pribadi.

  3. PilihBuat token baru.

    YangToken akses pribadi baruhalaman akan muncul.

  4. Di bawahPilih cakupanPilihadmin:repo_hookdanrepo.

  5. PilihMenghasilkan token.

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

    catatan

    Pastikan Anda menyalin token yang Anda hasilkan 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 pipeline di mana Anda ingin mengubah token OAuth, dan kemudian salin output perintah ke file JSON. Misalnya, untuk pipa bernama MyFirstPipeline, Anda akan mengetikkan sesuatu yang serupa dengan yang berikut ini:

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

    Output 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 GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, mask empat-tanda bintang 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 pipeline, 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 GitHub referensi struktur aksi sumber versi 1.

  9. Jika Anda bekerja dengan struktur pipa yang diambil menggunakanget-pipelineperintah, Anda harus memodifikasi struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Hapus bagian dari struktur pipeline di file JSON ("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 yang baru saja Anda edit.

    Misalnya, untuk memperbarui pipeline bernama MyFirstPipeline, Anda akan mengetikkan sesuatu yang serupa dengan yang 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 pipeline yang berisi a GitHub tindakan.

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

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

Keuntungan menggunakan token alih-alih kata sandi dalam skrip adalah 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 dan Pertimbangan Keamanan OAuth 2.0), bagian 5.1.5.3.

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

Setelah Anda membuat ulang token akses pribadi baru, Anda dapat memutarnya dengan menggunakanAWS CLIatau API atau dengan menggunakanAWS CloudFormationdan panggilanUpdatePipeline.

catatan

Anda mungkin harus memperbarui aplikasi lain jika mereka menggunakan token akses pribadi yang sama. Sebagai praktik terbaik keamanan, jangan berbagi token tunggal 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. Masuk GitHub, dari opsi tarik-bawah pada foto profil Anda, pilihPengaturan.

  2. PilihPengaturan developer, dan kemudian pilihToken akses pribadi.

  3. Di samping Anda 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 pipa bernama MyFirstPipeline, Anda akan mengetikkan sesuatu yang serupa dengan yang berikut ini:

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

    Output 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 GitHub. Ketika Anda menjalankanget-pipelineuntuk melihat konfigurasi tindakan, mask empat-tanda bintang 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 GitHub referensi struktur aksi sumber versi 1.

  8. Jika Anda bekerja dengan struktur pipa yang diambil menggunakanget-pipelineperintah, Anda harus memodifikasi struktur dalam file JSON dengan menghapusmetadatabaris dari file. Jika tidak,update-pipelineperintah tidak dapat menggunakannya. Hapus bagian dari struktur pipeline di file JSON ("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, dan kemudian jalankanupdate-pipelinedengan--cli-input-jsonparameter untuk menentukan file JSON yang baru saja Anda edit. Misalnya, untuk memperbarui pipeline bernama MyFirstPipeline, Anda akan mengetikkan sesuatu yang serupa dengan yang 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 alur Anda, hapus file JSON.

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

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

catatan

Yang GitHub versi 1 tindakan tidak dianjurkan. Untuk pipa dengan GitHub aksi 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 alur 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, pipeline, dan sumber daya deteksi perubahan (webhook Anda). Setelah Anda membuat tumpukan sumber dayaAWS 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 untuk GitHub mandat 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 aplikasi dan grup deployment. Anda dapat menggunakan CodeDeploy sumber daya yang Anda buatTutorial: Buat pipeline sederhana (CodeCommitrepositori).

  • Pilih salah satu tautan ini untuk mengunduh sampelAWS CloudFormationfile template untuk membuat pipeline: YAKL|JSON

    Buka zip 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 tersimpan 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 AndaOAuthTokendanSecretTokenbidang.

  • Unduh UnduhSampleApp_Linux.zip.

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

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

Untuk membuat tumpukanAWS CloudFormation

  1. Unzip filenya dariSampleApp_Linux.zipdan meng-upload file ke GitHub repositori. Anda harus mengunggah file unzip ke direktori root dari repositori Anda.

  2. BukaAWS CloudFormationkonsol dan pilihBuat Stack.

  3. MasukMemilih Templat, pilihMengunggah 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 CodeDeployaplikasi.

    2. MasukBetaFleet, masukkan nama CodeDeploy grup deployment.

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

    4. MasukGitHubOAuthToken, masukkan access key pribadi untuk 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 di halaman berikut, dan kemudian pilihSelanjutnya.

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

  7. Setelah pembuatan tumpukan 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 sumber pipa dan tahap penyebaran Anda.

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

Memecahkan masalah (GitHub tindakan sumber versi 1)

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

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

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

Kesalahan Alur: “Tidak dapat mengakses GitHubrepositori” atau “Tidak dapat terhubung ke GitHub repositori” (GitHub tindakan sumber versi 1)

Masalah: CodePipeline menggunakan token OAuth untuk diintegrasikan GitHub. Saat Anda membuat alur dengan GitHub penyedia sumber, CodePipeline mengelola Anda GitHubkredensi dengan membuat token OAuth default. Ketika pipeline Anda terhubung ke repositori, ia menggunakan GitHub kredensi untuk terhubung GitHub. Kredensyal token OAuth dikelola oleh CodePipeline. Anda tidak melihat atau mengelola token dengan cara apa pun. Jenis kredensil lain yang dapat Anda gunakan untuk terhubung 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 pipeline 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 pipeline 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 menjadi 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 di jaringan pipa yang mengandalkan token itu gagal.

  1. Periksa untuk melihat apakah izin untuk CodePipeline Telah dicabut. Untuk langkah-langkah untuk memeriksaAplikasi OAuth ResmiDaftar GitHubLihatMelihat aplikasi OAuth resmi. Jika Anda tidak melihat CodePipeline dalam daftar, Anda harus menggunakan konsol untuk menghubungkan kembali pipeline Anda GitHub.

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

    2. Pada GitHub tindakan sumber, pilih ikon edit.

    3. PadaEdit tindakanhalaman, pilihSambungkan ke GitHubuntuk mengembalikan otorisasi.

      Jika diminta, Anda mungkin perlu memasukkan kembaliRepositoridanCabanguntuk tindakan Anda. PilihSelesai. PilihSelesaidi halaman pengeditan panggung, lalu pilihSimpanpada halaman pengeditan pipa. Jalankan pipa.

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