Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemecahan masalah CodePipeline
Informasi berikut dapat membantu Anda memecahkan masalah umum di AWS CodePipeline.
Topik
Tambahkan CodeBuild GitClone izin untuk tindakan CodeCommit sumber
GitHub Tindakan sumber (melalui GitHub Aplikasi): Tidak dapat menyelesaikan koneksi untuk repositori
Pipeline dengan Amazon S3, Amazon ECR, atau CodeCommit sumber tidak lagi dimulai secara otomatis
Pipeline dengan mode eksekusi diubah menjadi mode QUEUED atau PARALLEL gagal saat batas run tercapai
Pipeline yang diubah dari mode PARALLEL akan menampilkan mode eksekusi sebelumnya
Tindakan EC2 Deploy gagal dengan pesan kesalahan Tidak ada file seperti itu
Tindakan EKS Deploy gagal dengan pesan kesalahan cluster yang tidak dapat dijangkau
Kesalahan pipa: Pipa yang dikonfigurasi dengan AWS Elastic Beanstalk mengembalikan pesan kesalahan: “Penerapan gagal. Peran yang disediakan tidak memiliki izin yang memadai: Service:AmazonElasticLoadBalancing”
Masalah: Peran layanan untuk CodePipeline tidak memiliki izin yang memadai untuk AWS Elastic Beanstalk, termasuk, tetapi tidak terbatas pada, beberapa operasi di Elastic Load Balancing. Peran layanan untuk CodePipeline diperbarui pada 6 Agustus 2015 untuk mengatasi masalah ini. Pelanggan yang membuat peran layanan sebelum tanggal ini harus mengubah pernyataan kebijakan untuk peran layanan mereka untuk menambahkan izin yang diperlukan.
Kemungkinan perbaikan: Solusi termudah adalah mengedit pernyataan kebijakan untuk peran layanan Anda seperti yang dijelaskan dalamMenambahkan izin ke peran CodePipeline layanan.
Setelah menerapkan kebijakan yang diedit, ikuti langkah-langkah Mulai pipa secara manual untuk menjalankan ulang saluran apa pun yang menggunakan Elastic Beanstalk secara manual.
Tergantung pada kebutuhan keamanan Anda, Anda juga dapat mengubah izin dengan cara lain.
Kesalahan penerapan: Saluran pipa yang dikonfigurasi dengan AWS Elastic Beanstalk tindakan penerapan hang alih-alih gagal jika izin DescribeEvents "" hilang
Masalah: Peran layanan untuk CodePipeline harus menyertakan "elasticbeanstalk:DescribeEvents" tindakan untuk saluran apa pun yang digunakan AWS Elastic Beanstalk. Tanpa izin ini, AWS Elastic Beanstalk tindakan penerapan terhenti tanpa gagal atau menunjukkan kesalahan. Jika tindakan ini hilang dari peran layanan Anda, maka CodePipeline tidak memiliki izin untuk menjalankan tahap penyebaran pipeline atas nama Anda. AWS Elastic Beanstalk
Kemungkinan perbaikan: Tinjau peran CodePipeline layanan Anda. Jika "elasticbeanstalk:DescribeEvents" tindakan tidak ada, gunakan langkah-langkah Menambahkan izin ke peran CodePipeline layanan untuk menambahkannya menggunakan fitur Edit Policy di konsol IAM.
Setelah menerapkan kebijakan yang diedit, ikuti langkah-langkah Mulai pipa secara manual untuk menjalankan ulang saluran apa pun yang menggunakan Elastic Beanstalk secara manual.
Kesalahan pipeline: Tindakan sumber mengembalikan pesan izin yang tidak mencukupi: “Tidak dapat mengakses nama reposit CodeCommit ori repositori. Pastikan bahwa peran IAM pipeline memiliki izin yang cukup untuk mengakses repositori.”
Masalah: Peran layanan untuk CodePipeline tidak memiliki izin yang memadai untuk CodeCommit dan kemungkinan dibuat sebelum dukungan untuk menggunakan CodeCommit repositori ditambahkan pada 18 April 2016. Pelanggan yang membuat peran layanan sebelum tanggal ini harus mengubah pernyataan kebijakan untuk peran layanan mereka untuk menambahkan izin yang diperlukan.
Kemungkinan perbaikan: Tambahkan izin yang diperlukan CodeCommit untuk kebijakan peran CodePipeline layanan Anda. Untuk informasi selengkapnya, lihat Menambahkan izin ke peran CodePipeline layanan.
Kesalahan pipeline: Tindakan build atau pengujian Jenkins berjalan untuk waktu yang lama dan kemudian gagal karena kurangnya kredenSIAL atau izin
Masalah: Jika server Jenkins diinstal pada instans Amazon EC2, instans mungkin tidak dibuat dengan peran instans yang memiliki izin yang diperlukan. CodePipeline Jika Anda menggunakan pengguna IAM di server Jenkins, instans lokal, atau instans Amazon EC2 yang dibuat tanpa peran IAM yang diperlukan, pengguna IAM tidak memiliki izin yang diperlukan, atau server Jenkins tidak dapat mengakses kredentif tersebut melalui profil yang dikonfigurasi di server.
Kemungkinan perbaikan: Pastikan peran instans Amazon EC2 atau pengguna IAM dikonfigurasi dengan kebijakan terkel AWSCodePipelineCustomActionAccess ola atau dengan izin yang setara. Untuk informasi selengkapnya, lihat AWS kebijakan yang dikelola untuk AWS CodePipeline.
Jika Anda menggunakan pengguna IAM, pastikan AWS profil yang dikonfigurasi pada instance menggunakan pengguna IAM yang dikonfigurasi dengan izin yang benar. Anda mungkin harus memberikan kredentif pengguna IAM yang Anda konfigurasikan untuk integrasi antara Jenkins dan CodePipeline langsung ke UI Jenkins. Ini bukan praktik terbaik yang direkomendasikan. Jika Anda harus melakukannya, pastikan server Jenkins aman dan menggunakan HTTPS alih-alih HTTP.
Kesalahan pipa: Pipa dibuat dalam satu AWS Wilayah menggunakan ember yang dibuat di tempat lain AWS Wilayah mengembalikan InternalError "" dengan kode "JobFailed”
Masalah: Pengunduhan artefak yang disimpan dalam bucket Amazon S3 akan gagal jika pipeline dan bucket dibuat di Wil AWS ayah yang berbeda.
Kemungkinan perbaikan: Pastikan bucket Amazon S3 tempat artefak Anda disimpan berada di Wilayah yang sama AWS dengan pipeline yang telah Anda buat.
Kesalahan penerapan: File ZIP yang berisi file WAR berhasil diterapkan ke AWS Elastic Beanstalk, tetapi URL aplikasi melaporkan kesalahan 404 tidak ditemukan
Masalah: File WAR berhasil digunakan ke AWS Elastic Beanstalk lingkungan, tetapi URL aplikasi mengembalikan kesalahan 404 Not Found.
Kemungkinan perbaikan: AWS Elastic Beanstalk dapat membongkar file ZIP, tetapi bukan file WAR yang terkandung dalam file ZIP. Alih-alih menentukan file WAR dalam buildspec.yml file Anda, tentukan folder yang berisi konten yang akan digunakan. Contoh:
version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app ./ artifacts: files: - my-web-app/**/* discard-paths: yes
Sebagai contoh, lihat Sam AWS Elastic Beanstalk pel untuk CodeBuild.
Nama folder artefak pipa tampaknya terpotong
Masalah: Saat Anda melihat nama artefak pipeline di CodePipeline, nama tampak terpotong. Ini dapat membuat nama tampak serupa atau tampaknya tidak lagi berisi seluruh nama pipeline.
Penjelasan CodePipeline : memotong nama artefak untuk memastikan bahwa jalur Amazon S3 lengkap tidak melebihi batas ukuran kebijakan saat membuat kredentif sementara CodePipeline untuk pekerja pekerjaan.
Meskipun nama artefak tampaknya terpotong, CodePipeline petakan ke ember artefak dengan cara yang tidak terpengaruh oleh artefak dengan nama terpotong. Pipa dapat berfungsi secara normal. Ini bukan masalah dengan folder atau artefak. Ada batas 100 karakter untuk nama pipeline. Meskipun nama folder artefak mungkin tampak dipersingkat, itu masih unik untuk pipeline Anda.
Tambahkan CodeBuild GitClone izin untuk koneksi ke Bitbucket, GitHub, GitHub Enterprise Server, atau GitLab.com
Saat Anda menggunakan tindakan AWS CodeConnections dalam sumber dan CodeBuild tindakan, ada dua cara artefak input dapat diteruskan ke build:
-
Default: Tindakan sumber menghasilkan file zip yang berisi kode yang CodeBuild diunduh.
-
Klon penuh: Kode sumber dapat langsung diunduh ke lingkungan build.
Mode klon penuh memungkinkan Anda berinteraksi dengan kode sumber sebagai repositori Git yang berfungsi. Untuk menggunakan mode ini, Anda harus memberikan izin CodeBuild lingkungan Anda untuk menggunakan koneksi.
Untuk menambahkan izin ke kebijakan peran CodeBuild layanan Anda, Anda membuat kebijakan yang dikelola pelanggan yang Anda lampirkan ke peran CodeBuild layanan Anda. Langkah-langkah berikut membuat kebijakan di mana UseConnection izin ditentukan di action bidang, koneksi ARN ditentukan di Resource bidang, dan ID repositori sumber dibatasi melaluiCondition.
Untuk menggunakan konsol untuk menambahkan UseConnection izin
-
Untuk menemukan ARN koneksi dan ID repositori sumber untuk pipeline Anda, buka pipeline Anda, klik ikon (i) pada tindakan sumber Anda dan beralih ke tab Input.
Contoh koneksi ARN adalah:
arn:aws:codeconnections:eu-central-1:123456789123:connection/sample-1908-4932-9ecc-2ddacee15095Contoh ID repositori sumber:
owner/test-appAnda menambahkan ARN koneksi dan ID repositori ke kebijakan peran CodeBuild layanan Anda.
-
Untuk menemukan peran CodeBuild layanan Anda, pilih proyek build yang digunakan dalam pipeline Anda dan navigasikan ke tab Detail build.
-
Pilih tautan Peran Layanan. Ini membuka konsol IAM tempat Anda dapat menambahkan kebijakan baru yang memberikan akses ke koneksi Anda.
-
Di konsol IAM, pilih Tam bah izin, lalu pilih Buat kebijakan sebaris.
Gunakan templat kebijakan sampel berikut. Tambahkan ARN koneksi Anda di
Resourcebidang dan ID repositori Anda dicodeconnections:FullRepositoryIdConditionbidang, seperti yang ditunjukkan dalam contoh ini:Gunakan
Conditionbidang ini untuk menguraikan izin kebijakan Anda lebih jauh berdasarkan persyaratan spesifikasi build Anda (lihat dokumentasiCodeConnectionkondisi).Pada tab JSON, tempel kebijakan Anda.
-
Pilih Berikutnya. Masukkan nama untuk kebijakan (misalnya,
connection-permissions), lalu pilih Buat kebijakan.Anda akan melihat
connection-permissionskebijakan yang dilampirkan pada kebijakan Izin peran Anda.
Tambahkan CodeBuild GitClone izin untuk tindakan CodeCommit sumber
Ketika pipeline Anda memiliki tindakan CodeCommit sumber, ada dua cara Anda dapat meneruskan artefak input ke build:
-
Default — Tindakan sumber menghasilkan file zip yang berisi kode yang CodeBuild diunduh.
-
Klon penuh — Kode sumber dapat langsung diunduh ke lingkungan build.
Opsi klon penuh memungkinkan Anda berinteraksi dengan kode sumber sebagai repositori Git yang berfungsi. Untuk menggunakan mode ini, Anda harus menambahkan izin untuk CodeBuild lingkungan Anda untuk menarik dari repositori Anda.
Untuk menambahkan izin ke kebijakan peran CodeBuild layanan Anda, Anda membuat kebijakan yang dikelola pelanggan yang Anda lampirkan ke peran CodeBuild layanan Anda. Langkah-langkah berikut membuat kebijakan yang menentukan codecommit:GitPull izin di action bidang.
Untuk menggunakan konsol untuk menambahkan GitPull izin
-
Untuk menemukan peran CodeBuild layanan Anda, buka proyek build yang digunakan dalam pipeline Anda dan navigasikan ke tab Detail build.
-
Pilih tautan Peran Layanan. Ini membuka konsol IAM tempat Anda dapat menambahkan kebijakan baru yang memberikan akses ke repositori Anda.
-
Pada konsol IAM, pilih Lampirkan kebijakan, lalu pilih Buat kebijakan.
-
Pada tab JSON, tempel kebijakan sampel berikut.
{ "Action": [ "codecommit:GitPull" ], "Resource": "*", "Effect": "Allow" }, -
Pilih Tinjau kebijakan. Masukkan nama untuk kebijakan (misalnya,
codecommit-gitpull), lalu pilih Buat kebijakan. -
Kembali ke halaman tempat Anda melampirkan izin, segarkan daftar kebijakan, dan pilih kebijakan yang baru saja Anda buat. Pilih Lampirkan kebijakan.
Kesalahan pipa: Penerapan dengan CodeDeployToECS tindakan mengembalikan pesan kesalahan: “Pengecualian saat mencoba membaca file artefak definisi tugas dari: nama artefak < sumber” >
Masalah:
File definisi tugas adalah artefak yang diperlukan untuk tindakan pener CodePipeline apan ke Amazon ECS melalui CodeDeploy (CodeDeployToECStindakan). Ukuran ZIP artefak maksimum dalam tindakan pener CodeDeployToECS apan adalah 3 MB. Pesan kesalahan berikut dikembalikan ketika file tidak ditemukan atau ukuran artefak melebihi 3 MB:
Pengecualian saat mencoba membaca file artefak definisi tugas dari: <source artifact name>
Kemungkinan perbaikan: Pastikan file definisi tugas disertakan sebagai artefak. Jika file sudah ada, pastikan ukuran terkompresi kurang dari 3 MB.
GitHub (melalui aplikasi OAuth) tindakan sumber: Daftar repositori menunjukkan repositori yang berbeda
Masalah:
Setelah otorisasi berhasil untuk tindakan GitHub (melalui aplikasi OAuth) di CodePipeline konsol, Anda dapat memilih dari daftar repositori Anda GitHub . Jika daftar tidak menyertakan repositori yang diharapkan untuk dilihat, maka Anda dapat memecahkan masalah akun yang digunakan untuk otorisasi.
Kemungkinan perbaikan: Daftar repositori yang disediakan di CodePipeline konsol didasarkan pada GitHub organisasi milik akun resmi. Verifikasi bahwa akun yang Anda gunakan untuk mengotorisasi GitHub adalah akun yang terkait dengan GitHub organisasi tempat repositori Anda dibuat.
GitHub Tindakan sumber (melalui GitHub Aplikasi): Tidak dapat menyelesaikan koneksi untuk repositori
Masalah:
Karena koneksi ke GitHub repositori menggunakan AWS Konektor untuk GitHub, Anda memerlukan izin pemilik organisasi atau izin admin ke repositori untuk membuat koneksi.
Kemungkinan perbaikan: Untuk informasi tentang tingkat izin untuk GitHub repositori, lihat https://docs.github.com/en/free-pro-team @ latest/github /setting-up-and-managing- teams/permission organizations-dan- -levels-for-an-organization.
Kesalahan Amazon S3: peran CodePipeline < layanan ARN > mendapatkan akses S3 ditolak untuk bucket S3 < BucketName >
Masalah:
Saat sedang berlangsung, CodeCommit tindakan dalam CodePipeline memeriksa apakah bucket artefak pipa ada. Jika tindakan tidak memiliki izin untuk memeriksa, AccessDenied kesalahan terjadi di Amazon S3 dan pesan kesalahan berikut ditampilkan di CodePipeline:
CodePipeline peran layanan “arn:aws:iam::AccountID: role/service -role/RoleID" mendapatkan akses S3 ditolak untuk bucket S3 "” BucketName
CloudTrail Log untuk tindakan juga mencatat AccessDenied kesalahan.
Kemungkinan perbaikan: Lakukan hal berikut:
-
Untuk kebijakan yang dilampirkan ke peran CodePipeline layanan Anda, tambahkan
s3:ListBucketke daftar tindakan dalam kebijakan Anda. Untuk petunjuk tentang cara melihat kebijakan peran layanan Anda, lihatLihat ARN pipeline dan peran layanan ARN (konsol). Edit pernyataan kebijakan untuk peran layanan Anda seperti yang dijelaskan dalamMenambahkan izin ke peran CodePipeline layanan. -
Untuk kebijakan berbasis sumber daya yang dilampirkan ke bucket artefak Amazon S3 untuk pipeline Anda, juga disebut kebijakan keranjang artefak, tambahkan pernyataan untuk mengizinkan
s3:ListBucketizin digunakan oleh peran layanan Anda. CodePipelineUntuk menambahkan kebijakan Anda ke bucket artefak
-
Ikuti langkah-langkah Lihat ARN pipeline dan peran layanan ARN (konsol) untuk memilih bucket artefak Anda di halaman Peng aturan pipeline, lalu lihat di konsol Amazon S3.
-
Pilih Izin.
-
Di bagian Kebijakan bucket, pilih Edit.
-
Di bidang teks Kebijakan, masukkan kebijakan bucket baru, atau edit kebijakan yang ada seperti yang ditunjukkan pada contoh berikut. Kebijakan bucket adalah file JSON, jadi Anda harus memasukkan JSON yang valid.
Contoh berikut menunjukkan pernyataan kebijakan bucket untuk bucket artefak di mana contoh ID peran untuk peran layanan berada
AROAEXAMPLEID.{ "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BucketName", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }Contoh berikut menunjukkan pernyataan kebijakan bucket yang sama setelah izin ditambahkan.
Untuk informasi selengkapnya, lihat langkah-langkah dihttps://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/
. -
Pilih Simpan.
-
Setelah menerapkan kebijakan yang diedit, ikuti langkah-langkah Mulai pipa secara manual untuk menjalankan kembali pipeline secara manual.
Pipeline dengan Amazon S3, Amazon ECR, atau CodeCommit sumber tidak lagi dimulai secara otomatis
Masalah:
Setelah membuat perubahan pada pengaturan konfigurasi untuk tindakan yang menggunakan aturan peristiwa (EventBridgeatau Per CloudWatch istiwa) untuk deteksi perubahan, konsol mungkin tidak mendeteksi perubahan di mana pengidentifikasi pemicu sumber serupa dan memiliki karakter awal yang identik. Karena aturan peristiwa baru tidak dibuat oleh konsol, pipeline tidak lagi dimulai secara otomatis.
Contoh perubahan kecil di akhir nama parameter untuk CodeCommit adalah mengubah nama CodeCommit cabang Anda MyTestBranch-1 menjadiMyTestBranch-2. Karena perubahan berada di akhir nama cabang, aturan peristiwa untuk tindakan sumber mungkin tidak memperbarui atau membuat aturan untuk pengaturan sumber baru.
Ini berlaku untuk tindakan sumber yang menggunakan peristiwa CWE untuk deteksi perubahan sebagai berikut:
| Tindakan sumber | Parameter/pengidentifikasi pemicu (konsol) |
|---|---|
| Amazon ECR |
Nama repositori Tag gambar |
| Amazon S3 |
Bucket Kunci objek S3 |
| CodeCommit |
Nama repositori Nama cabang |
Kemungkinan perbaikan:
Lakukan salah satu tindakan berikut:
-
U CodeCommit/S3/ECR bah pengaturan konfigurasi sehingga perubahan dilakukan pada bagian awal dari nilai parameter.
Contoh: Ubah nama cabang Anda
release-branchmenjadi2nd-release-branch. Hindari perubahan di akhir nama, sepertirelease-branch-2. -
Ubah pengaturan CodeCommit/S3/ECR konfigurasi untuk setiap pipeline.
Contoh: Ubah nama cabang Anda
myRepo/myBranchmenjadimyDeployRepo/myDeployBranch. Hindari perubahan di akhir nama, sepertimyRepo/myBranch2. -
Alih-alih konsol, gunakan CLI atau CloudFormation untuk membuat dan memperbarui aturan peristiwa deteksi perubahan Anda. Untuk petunjuk tentang membuat aturan acara untuk tindakan sumber S3, lihatMenghubungkan ke tindakan sumber Amazon S3 yang menggunakan EventBridge dan AWS CloudTrail. Untuk petunjuk tentang membuat aturan acara untuk tindakan Amazon ECR, lihatTindakan dan sumber EventBridge daya sumber Amazon ECR. Untuk petunjuk tentang membuat aturan acara untuk suatu CodeCommit tindakan, lihatCodeCommit Tindakan sumber dan EventBridge.
Setelah Anda mengedit konfigurasi tindakan di konsol, terima sumber daya deteksi perubahan yang diperbarui yang dibuat oleh konsol.
Kesalahan koneksi saat menghubungkan ke GitHub: “Terjadi masalah, pastikan cookie diaktifkan di browser Anda” atau “Pemilik organisasi harus menginstal GitHub aplikasi”
Masalah:
Untuk membuat koneksi untuk tindakan GitHub sumber di CodePipeline, Anda harus menjadi pemilik GitHub organisasi. Untuk repositori yang tidak berada di bawah organisasi, Anda harus menjadi pemilik repositori. Ketika koneksi dibuat oleh orang lain selain pemilik organisasi, permintaan dibuat untuk pemilik organisasi, dan salah satu kesalahan berikut ditampilkan:
Masalah terjadi, pastikan cookie diaktifkan di browser Anda
ATAU
Pemilik organisasi harus menginstal GitHub aplikasi
Kemungkinan perbaikan: Untuk repositori dalam GitHub organisasi, pemilik organisasi harus membuat koneksi ke GitHub repositori. Untuk repositori yang tidak berada di bawah organisasi, Anda harus menjadi pemilik repositori.
Pipeline dengan mode eksekusi diubah menjadi mode QUEUED atau PARALLEL gagal saat batas run tercapai
Masalah: Jumlah maksimum eksekusi bersamaan untuk pipeline dalam mode QUEUED adalah 50 eksekusi. Ketika batas ini tercapai, pipeline gagal tanpa pesan status.
Kemungkinan perbaikan: Saat mengedit definisi pipeline untuk mode eksekusi, buat pengeditan secara terpisah dari tindakan edit lainnya.
Untuk informasi selengkapnya tentang mode eksekusi QUEUED atau PARALLEL, lihatCodePipeline konsep.
Pipeline dalam mode PARALEL memiliki definisi pipeline yang sudah ketinggalan zaman jika diedit saat mengubah ke mode QUEUED atau SUPERSEDED
Masalah: Untuk pipeline dalam mode paralel, saat mengedit mode eksekusi pipeline ke QUEUED atau SUPERSEDED, definisi pipeline untuk mode PARALEL tidak akan diperbarui. Definisi pipeline yang diperbarui saat memperbarui mode PARALLEL tidak digunakan dalam mode SUPERSEDED atau QUEUED.
Kemungkinan perbaikan: Untuk pipeline dalam mode paralel, saat mengedit mode eksekusi pipeline ke QUEUED atau SUPERSEDED, hindari memperbarui definisi pipeline pada saat yang sama.
Untuk informasi selengkapnya tentang mode eksekusi QUEUED atau PARALLEL, lihatCodePipeline konsep.
Pipeline yang diubah dari mode PARALLEL akan menampilkan mode eksekusi sebelumnya
Masalah: Untuk pipeline dalam mode PARALEL, saat mengedit mode eksekusi pipeline ke QUEUED atau SUPERSEDED, status pipeline tidak akan menampilkan status yang diperbarui sebagai PARALEL. Jika pipeline berubah dari PARALLEL menjadi QUEUED atau SUPERSEDED, status untuk pipeline dalam mode SUPERSEDED atau QUEUED akan menjadi status terakhir yang diketahui di salah satu mode tersebut. Jika pipa tidak pernah dijalankan dalam mode itu sebelumnya, maka status akan kosong.
Kemungkinan perbaikan: Untuk pipeline dalam mode paralel, saat mengedit mode eksekusi pipeline ke QUEUED atau SUPERSEDED, perhatikan bahwa tampilan mode eksekusi tidak akan menampilkan status PARALEL.
Untuk informasi selengkapnya tentang mode eksekusi QUEUED atau PARALLEL, lihatCodePipeline konsep.
Pipeline dengan koneksi yang menggunakan pemicu pemfilteran berdasarkan jalur file mungkin tidak dimulai pada pembuatan cabang
Deskripsi: Untuk pipeline dengan tindakan sumber yang menggunakan koneksi, seperti tindakan BitBucket sumber, Anda dapat mengatur pemicu dengan konfigurasi Git yang memungkinkan Anda memfilter berdasarkan jalur file untuk memulai pipeline Anda. Dalam kasus tertentu, untuk pipeline dengan pemicu yang difilter pada jalur file, pipeline mungkin tidak dimulai ketika cabang dengan filter jalur file pertama kali dibuat, karena ini tidak memungkinkan CodeConnections koneksi untuk menyelesaikan file yang berubah. Ketika konfigurasi Git untuk pemicu diatur untuk memfilter jalur file, pipeline tidak akan dimulai ketika cabang dengan filter baru saja dibuat di repositori sumber. Untuk informasi selengkapnya tentang pemfilteran pada jalur file, lihatTambahkan pemicu dengan jenis acara push atau pull request kode.
Hasil: Misalnya, pipeline CodePipeline yang memiliki filter jalur file pada cabang “B” tidak akan dipicu saat cabang “B” dibuat. Jika tidak ada filter jalur file, pipeline masih akan dimulai.
Pipeline dengan koneksi yang menggunakan pemicu pemfilteran berdasarkan jalur file mungkin tidak dimulai saat batas file tercapai
Deskripsi: Untuk pipeline dengan tindakan sumber yang menggunakan koneksi, seperti tindakan BitBucket sumber, Anda dapat mengatur pemicu dengan konfigurasi Git yang memungkinkan Anda memfilter berdasarkan jalur file untuk memulai pipeline Anda. CodePipeline mengambil hingga 100 file pertama; oleh karena itu, ketika konfigurasi Git untuk pemicu diatur untuk memfilter jalur file, pipeline mungkin tidak dimulai jika ada lebih dari 100 file. Untuk informasi selengkapnya tentang pemfilteran pada jalur file, lihatTambahkan pemicu dengan jenis acara push atau pull request kode.
Hasil: Misalnya, jika diff berisi 150 file, CodePipeline lihat 100 file pertama (tanpa urutan tertentu) untuk memeriksa terhadap filter jalur file yang ditentukan. Jika file yang cocok dengan filter jalur file tidak termasuk di antara 100 file yang diambil oleh CodePipeline, pipeline tidak akan dipanggil.
CodeCommit atau revisi sumber S3 dalam mode PARALLEL mungkin tidak cocok dengan peristiwa EventBridge
Deskripsi: Untuk eksekusi pipeline dalam mode PARALLEL, eksekusi mungkin dimulai dengan perubahan terbaru, seperti komit CodeCommit repositori, yang mungkin tidak sama dengan perubahan untuk EventBridge acara tersebut. Dalam beberapa kasus, di mana sepersekian detik mungkin antara commit atau tag gambar yang memulai pipeline, ketika CodePipeline menerima peristiwa dan memulai eksekusi itu, komit atau tag gambar lain telah didorong, CodePipeline (misalnya, CodeCommit tindakan) akan mengkloning komit HEAD pada saat itu.
Hasil: Untuk pipeline dalam mode PARALLEL dengan sumber CodeCommit atau S3, terlepas dari perubahan yang memicu eksekusi pipeline, tindakan sumber akan selalu mengkloning HEAD pada saat dimulai. Misalnya, untuk pipeline dalam mode PARALLEL, komit didorong, yang memulai pipeline untuk eksekusi 1, dan eksekusi pipeline kedua menggunakan komit kedua.
Tindakan EC2 Deploy gagal dengan pesan kesalahan Tidak ada file seperti itu
Deskripsi: Setelah tindakan penerapan EC2 membuka ritsleting artefak di direktori target pada instans, tindakan tersebut menjalankan skrip. Jika skrip berada di direktori target tetapi tindakan tidak dapat menjalankan skrip, tindakan gagal pada instance tersebut, dan instans yang tersisa gagal dalam penerapan.
Kesalahan yang mirip dengan pesan kesalahan berikut ditampilkan di log untuk penerapan di mana direktori target berada /home/ec2-user/deploy/ dan jalur repositori sumber beradamyRepo/postScript.sh.
-
Instance i-0145a2d3f3EXAMPLE is FAILED on event AFTER_DEPLOY, message: ----------ERROR------- chmod: cannot access '/home/ec2-user/deploy/myRepo/postScript.sh': No such file or directory /var/lib/<path>/_script.sh: line 2: /home/ec2-user/deploy/myRepo/postScript.sh: No such file or directory failed to run commands: exit status 127 -
Executing commands on instances i-0145a2d3f3EXAMPLE, SSM command id <ID>, commands: chmod u+x /home/ec2-user/deploy/script.sh ----------ERROR-------: No such file or directory
Hasil: Tindakan penerapan gagal dalam pipeline.
Kemungkinan perbaikan: Untuk memecahkan masalah, gunakan langkah-langkah berikut.
-
Lihat log untuk memverifikasi instance mana yang menyebabkan skrip gagal.
-
Ubah direktori (
cd) ke direktori target pada instance Anda. Uji jalankan skrip pada instance. -
Di repositori sumber Anda, edit file skrip untuk menghapus komentar atau perintah yang mungkin menyebabkan masalah.
Tindakan EKS Deploy gagal dengan pesan kesalahan cluster yang tidak dapat dijangkau
Deskripsi: Setelah tindakan penerapan EKS berjalan, tindakan gagal dengan pesan cluster unreachable kesalahan. Pesan menunjukkan masalah akses pada cluster karena izin yang hilang. Berdasarkan jenis file (bagan Helm atau file manifes Kubernetes), pesan kesalahan ditampilkan sebagai berikut.
-
Untuk tindakan penerapan EKS yang menggunakan bagan Helm, kesalahan yang mirip dengan pesan kesalahan berikut akan ditampilkan.
error message: helm upgrade --install my-release test-chart --wait Error: Kubernetes cluster unreachable: the server has asked for the client to provide credentials -
Untuk tindakan penerapan EKS yang menggunakan file manifes Kubernetes, kesalahan yang mirip dengan pesan kesalahan berikut akan ditampilkan.
kubectl apply -f deployment.yaml Error: error validating "deployment.yaml": error validating data: failed to download openapi: the server has asked for the client to provide credentials
Hasil: Tindakan penerapan gagal dalam pipeline.
Kemungkinan perbaikan: Jika menggunakan peran yang ada, peran CodePipeline layanan harus diperbarui dengan izin yang diperlukan untuk menggunakan tindakan penerapan EKS. Selain itu, untuk mengi CodePipeline zinkan akses peran layanan ke cluster Anda, Anda harus menambahkan entri akses ke cluster Anda dan menentukan peran layanan untuk entri akses.
-
Verifikasi bahwa peran CodePipeline layanan memiliki izin yang diperlukan untuk tindakan penerapan EKS. Untuk referensi izin, lihatIzin kebijakan peran layanan.
-
Tambahkan entri akses ke cluster Anda dan tentukan peran CodePipeline layanan untuk akses tersebut. Sebagai contoh, lihat Langkah 4: Buat entri akses untuk peran CodePipeline layanan.
Pipeline tidak memicu untuk semua cabang ketika beberapa tindakan sumber mereferensikan repositori yang sama
Masalah: Pipeline memiliki beberapa tindakan sumber yang menggunakan koneksi (seperti Bitbucket, GitHub, atau GitLab koneksi), dengan setiap tindakan sumber menunjuk ke cabang berbeda dari repositori yang sama. Hanya satu cabang yang memicu pipa saat Anda mendorong perubahan. Langganan webhook koneksi terdaftar untuk kombinasi pipeline dan repositori, bukan per cabang. Akibatnya, beberapa tindakan sumber yang menargetkan cabang berbeda dari repositori yang sama dalam satu pipeline tidak didukung.
Kemungkinan perbaikan: Gunakan pipeline terpisah untuk setiap cabang yang ingin Anda picu secara independen.
Butuh bantuan dengan masalah yang berbeda?
Coba sumber daya lain ini:
-
Hubungi AWS Support
. -
Ajukan pertanyaan di CodePipeline forum
. -
Minta kenaikan kuota
. Untuk informasi selengkapnya, lihat Kuota di AWS CodePipeline. catatan
Diperlukan waktu hingga dua minggu untuk memproses permintaan peningkatan kuota.