Bekerja dengan tipe tindakan - AWS CodePipeline

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

Bekerja dengan tipe tindakan

Jenis tindakan adalah tindakan yang telah dikonfigurasi sebelumnya yang Anda buat sebagai penyedia untuk pelanggan dengan menggunakan salah satu model integrasi yang didukung. AWS CodePipeline

Anda dapat meminta, melihat, dan memperbarui jenis tindakan. Jika tipe tindakan dibuat untuk akun Anda sebagai pemilik, Anda dapat menggunakan AWS CLI untuk melihat atau memperbarui properti dan struktur tipe tindakan Anda. Jika Anda adalah penyedia atau pemilik tipe tindakan, pelanggan Anda dapat memilih tindakan dan menambahkannya ke saluran pipa mereka setelah tersedia di CodePipeline.

catatan

Anda membuat tindakan dengan custom di owner lapangan untuk dijalankan dengan pekerja kerja. Anda tidak membuatnya dengan model integrasi. Untuk informasi tentang tindakan kustom, lihatBuat dan tambahkan tindakan kustom di CodePipeline.

Komponen tipe aksi

Komponen berikut membentuk tipe tindakan.

  • ID tipe tindakan - ID terdiri dari kategori, pemilik, penyedia, dan versi. Contoh berikut menunjukkan ID tipe tindakan dengan pemilikThirdParty, kategoriTest, penyedia bernamaTestProvider, dan versi1.

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • Konfigurasi pelaksana — Model integrasi, atau mesin tindakan, yang ditentukan saat tindakan dibuat. Saat Anda menentukan eksekutor untuk tipe tindakan, Anda memilih salah satu dari dua jenis:

    • Lambda: Pemilik tipe tindakan menulis integrasi sebagai fungsi Lambda, yang dipanggil oleh CodePipeline setiap kali ada pekerjaan yang tersedia untuk tindakan tersebut.

    • JobWorker: Pemilik tipe tindakan menulis integrasi sebagai pekerja kerja yang melakukan polling untuk pekerjaan yang tersedia di jaringan pipa pelanggan. Pekerja pekerjaan kemudian menjalankan pekerjaan dan mengirimkan hasil pekerjaan kembali CodePipeline dengan menggunakan CodePipeline API.

      catatan

      Model integrasi pekerja kerja bukanlah model integrasi yang disukai.

  • Artefak input dan output: Batas artefak yang ditentukan oleh pemilik tipe tindakan untuk pelanggan tindakan.

  • Izin: Strategi izin yang menunjuk pelanggan yang dapat mengakses jenis tindakan pihak ketiga. Strategi izin yang tersedia bergantung pada model integrasi yang dipilih untuk jenis tindakan.

  • URL: Tautan mendalam ke sumber daya yang dapat berinteraksi dengan pelanggan, seperti halaman konfigurasi pemilik tipe tindakan.

Meminta tipe tindakan

Jika jenis CodePipeline tindakan baru diminta oleh penyedia pihak ketiga, tipe tindakan akan dibuat untuk pemilik tipe tindakan CodePipeline, dan pemilik dapat mengelola dan melihat jenis tindakan.

Jenis tindakan dapat berupa tindakan pribadi atau publik. Ketika jenis tindakan Anda dibuat, itu bersifat pribadi. Untuk meminta jenis tindakan diubah menjadi tindakan publik, hubungi tim CodePipeline layanan.

Sebelum membuat file definisi tindakan, sumber daya pelaksana, dan permintaan tipe tindakan untuk CodePipeline tim, Anda harus memilih model integrasi.

Langkah 1: Pilih model integrasi Anda

Pilih model integrasi Anda dan kemudian buat konfigurasi untuk model itu. Setelah Anda memilih model integrasi, Anda harus mengonfigurasi sumber daya integrasi Anda.

  • Untuk model integrasi Lambda, Anda membuat fungsi Lambda dan menambahkan izin. Tambahkan izin ke fungsi Lambda integrator Anda untuk menyediakan CodePipeline layanan dengan izin untuk memanggilnya menggunakan prinsip layanan:. CodePipeline codepipeline.amazonaws.com Izin dapat ditambahkan menggunakan AWS CloudFormation atau baris perintah.

    • Contoh untuk menambahkan izin menggunakan AWS CloudFormation:

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • Dokumentasi untuk baris perintah

  • Untuk model integrasi pekerja pekerjaan, Anda membuat integrasi dengan daftar akun yang diizinkan tempat pekerja pekerjaan melakukan polling untuk pekerjaan dengan CodePipeline API.

Langkah 2: Buat file definisi tipe tindakan

Anda menentukan tipe tindakan dalam file definisi tipe tindakan menggunakan JSON. Dalam file, Anda menyertakan kategori tindakan, model integrasi yang digunakan untuk mengelola tipe tindakan, dan properti konfigurasi.

catatan

Setelah membuat tindakan publik, Anda tidak dapat mengubah properti tipe tindakan di bawah properties dari optional kerequired. Anda juga tidak dapat mengubahowner.

Untuk informasi selengkapnya tentang parameter file definisi tipe tindakan, lihat ActionTypeDeclarationdan UpdateActionTypedi Referensi CodePipeline API.

Ada delapan bagian dalam file definisi tipe tindakan:

  • description: Deskripsi untuk jenis tindakan yang akan diperbarui.

  • executor: Informasi tentang pelaksana untuk tipe tindakan yang dibuat dengan model integrasi yang didukung, baik Lambda ataujob worker. Anda hanya dapat memberikan salah satu jobWorkerExecutorConfiguration ataulambdaExecutorConfiguration, berdasarkan jenis eksekutor Anda.

    • configuration: Sumber daya untuk konfigurasi tipe tindakan, berdasarkan model integrasi yang dipilih. Untuk model integrasi Lambda, gunakan fungsi Lambda ARN. Untuk model integrasi pekerja kerja, gunakan akun atau daftar akun dari tempat pekerja kerja berjalan.

    • jobTimeout: Batas waktu dalam hitungan detik untuk pekerjaan itu. Eksekusi tindakan dapat terdiri dari beberapa pekerjaan. Ini adalah batas waktu untuk satu pekerjaan, dan bukan untuk seluruh eksekusi tindakan.

      catatan

      Untuk model integrasi Lambda, batas waktu maksimum adalah 15 menit.

    • policyStatementsTemplate: Pernyataan kebijakan yang menentukan izin di akun CodePipeline pelanggan yang diperlukan untuk berhasil menjalankan eksekusi tindakan.

    • type: Model integrasi yang digunakan untuk membuat dan memperbarui tipe tindakan, baik Lambda atauJobWorker.

  • id: Kategori, pemilik, penyedia, dan ID versi untuk tipe tindakan:

    • category: Jenis tindakan dapat diambil dalam tahap: Sumber, Bangun, Deploy, Uji, Invoke, atau Persetujuan.

    • provider: Penyedia tipe tindakan yang dipanggil, seperti perusahaan penyedia atau nama produk. Nama penyedia diberikan saat tipe tindakan dibuat.

    • owner: Pencipta tipe tindakan yang disebut: AWS atauThirdParty.

    • version: String yang digunakan untuk versi tipe tindakan. Untuk versi pertama, atur nomor versi ke 1.

  • inputArtifactDetails: Jumlah artefak yang diharapkan dari tahap sebelumnya dalam pipa.

  • outputArtifactDetails: Jumlah artefak yang diharapkan dari hasil dari tahap tipe aksi.

  • permissions: Detail mengidentifikasi akun dengan izin untuk menggunakan tipe tindakan.

  • properties: Parameter yang diperlukan untuk menyelesaikan tugas proyek Anda.

    • description: Deskripsi properti yang ditampilkan kepada pengguna.

    • optional: Apakah properti konfigurasi adalah opsional.

    • noEcho: Apakah nilai bidang yang dimasukkan oleh pelanggan dihilangkan dari log. Jikatrue, maka nilainya disunting saat dikembalikan dengan permintaan GetPipeline API.

    • key: Apakah properti konfigurasi adalah kunci.

    • queryable: Apakah properti tersebut digunakan dengan polling. Tipe tindakan dapat memiliki hingga satu properti yang dapat dikueri. Jika ada, properti tersebut harus diperlukan dan bukan rahasia.

    • name: Nama properti yang ditampilkan kepada pengguna.

  • urls: Daftar URL CodePipeline ditampilkan kepada pengguna Anda.

    • entityUrlTemplate: URL ke sumber daya eksternal untuk jenis tindakan, seperti halaman konfigurasi.

    • executionUrlTemplate: URL ke detail untuk menjalankan tindakan terbaru.

    • revisionUrlTemplate: URL ditampilkan di CodePipeline konsol ke halaman tempat pelanggan dapat memperbarui atau mengubah konfigurasi tindakan eksternal.

    • thirdPartyConfigurationUrlURL halaman tempat pengguna dapat mendaftar untuk layanan eksternal dan melakukan konfigurasi awal tindakan yang disediakan oleh layanan tersebut.

Kode berikut menunjukkan contoh file definisi tipe tindakan.

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

Langkah 3: Daftarkan Integrasi Anda dengan CodePipeline

Untuk mendaftarkan jenis tindakan Anda CodePipeline, Anda menghubungi tim CodePipeline layanan dengan permintaan Anda.

Tim CodePipeline layanan mendaftarkan integrasi tipe tindakan baru dengan membuat perubahan dalam basis kode layanan. CodePipeline mencatat dua tindakan baru: tindakan publik dan tindakan pribadi. Anda menggunakan tindakan pribadi untuk pengujian, dan kemudian ketika siap, Anda mengaktifkan tindakan publik untuk melayani lalu lintas pelanggan.

Untuk mendaftarkan permintaan integrasi Lambda
  • Kirim permintaan ke tim CodePipeline layanan menggunakan formulir berikut.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of Wilayah AWS where your action will be available 5. Will this be available as a public action?
Untuk mendaftarkan permintaan integrasi pekerja kerja
  • Kirim permintaan ke tim CodePipeline layanan menggunakan formulir berikut.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of Wilayah AWS where your action will be available 5. Will this be available as a public action?

Langkah 4: Aktifkan Integrasi Baru Anda

Hubungi tim CodePipeline layanan ketika Anda siap untuk menggunakan integrasi baru secara publik.

Tambahkan tipe tindakan yang tersedia ke pipeline (konsol)

Anda menambahkan tipe tindakan Anda ke pipeline sehingga Anda dapat mengujinya. Anda dapat melakukan ini dengan membuat pipeline baru atau mengedit yang sudah ada.

catatan

Jika jenis tindakan Anda adalah tindakan kategori sumber, build, atau deploy, Anda dapat menambahkannya dengan membuat pipeline. Jika tipe tindakan Anda ada dalam kategori pengujian, Anda harus menambahkannya dengan mengedit pipeline yang ada.

Untuk menambahkan tipe tindakan ke pipeline yang ada dari CodePipeline konsol
  1. Masuk ke AWS Management Console dan buka CodePipeline konsol di http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Dalam daftar pipeline, pilih pipeline tempat Anda ingin menambahkan tipe tindakan.

  3. Pada halaman tampilan ringkasan pipeline, pilih Edit.

  4. Pilih untuk mengedit panggung. Pada tahap di mana Anda ingin menambahkan tipe tindakan Anda, pilih Tambahkan grup tindakan. Halaman Edit tindakan ditampilkan.

  5. Pada halaman Edit tindakan, dalam nama Tindakan, masukkan nama untuk tindakan tersebut. Ini adalah nama yang ditampilkan untuk panggung di pipeline Anda.

  6. Di Penyedia tindakan, pilih jenis tindakan Anda dari daftar.

    Perhatikan bahwa nilai dalam daftar didasarkan pada yang provider ditentukan dalam file definisi tipe tindakan.

  7. Di artefak Input, masukkan nama artefak dalam format ini:

    Artifactname::FileName

    Perhatikan bahwa jumlah minimum dan maksimum yang diizinkan ditentukan berdasarkan yang inputArtifactDetails ditentukan dalam file definisi tipe tindakan.

  8. Pilih Connect to<Action_Name>.

    Jendela browser terbuka dan terhubung ke situs web yang telah Anda buat untuk jenis tindakan Anda.

  9. Masuk ke situs web Anda sebagai pelanggan dan selesaikan langkah-langkah yang diambil pelanggan untuk menggunakan jenis tindakan Anda. Langkah-langkah Anda akan bervariasi tergantung pada kategori tindakan, situs web, dan konfigurasi Anda, tetapi biasanya mencakup tindakan penyelesaian yang mengembalikan pelanggan ke halaman tindakan Edit.

  10. Di halaman CodePipeline Edit tindakan, bidang konfigurasi tambahan untuk tampilan tindakan. Bidang yang ditampilkan adalah properti konfigurasi yang Anda tentukan dalam file definisi tindakan. Masukkan informasi di bidang yang disesuaikan untuk jenis tindakan Anda.

    Misalnya, jika file definisi tindakan menetapkan properti bernamaHost, maka bidang dengan label Host ditampilkan di halaman Edit tindakan untuk tindakan Anda.

  11. Dalam artefak Output, masukkan nama artefak dalam format ini:

    Artifactname::FileName

    Perhatikan bahwa jumlah minimum dan maksimum yang diizinkan ditentukan berdasarkan yang outputArtifactDetails ditentukan dalam file definisi tipe tindakan.

  12. Pilih Selesai untuk kembali ke halaman detail pipeline.

    catatan

    Pelanggan Anda secara opsional dapat menggunakan CLI untuk menambahkan tipe tindakan ke pipeline mereka.

  13. Untuk menguji tindakan Anda, lakukan perubahan ke sumber yang ditentukan dalam tahap sumber pipeline atau ikuti langkah-langkah dalam Memulai Pipeline secara Manual.

Untuk membuat pipeline dengan tipe tindakan Anda, ikuti langkah-langkahnya Buat pipeline di CodePipeline dan pilih jenis tindakan Anda dari tahapan sebanyak yang akan Anda uji.

Melihat tipe tindakan

Anda dapat menggunakan CLI untuk melihat tipe tindakan Anda. Gunakan get-action-type perintah untuk melihat jenis tindakan yang telah dibuat menggunakan model integrasi.

Untuk melihat tipe tindakan
  1. Buat file JSON input dan beri nama filefile.json. Tambahkan ID tipe tindakan Anda dalam format JSON seperti yang ditunjukkan pada contoh berikut.

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. Di jendela terminal atau di baris perintah, jalankan get-action-type perintah.

    aws codepipeline get-action-type --cli-input-json file://file.json

    Perintah ini mengembalikan output definisi tindakan untuk tipe tindakan. Contoh ini menunjukkan tipe tindakan yang dibuat dengan model integrasi Lambda.

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

Memperbarui jenis tindakan

Anda dapat menggunakan CLI untuk mengedit jenis tindakan yang dibuat dengan model integrasi.

Untuk jenis tindakan publik, Anda tidak dapat memperbarui pemilik, Anda tidak dapat mengubah properti opsional ke required, dan Anda hanya dapat menambahkan properti opsional baru.

  1. Gunakan get-action-type perintah untuk mendapatkan struktur untuk tipe tindakan Anda. Salin strukturnya.

  2. Buat file JSON input dan beri nama. action.json Tempelkan struktur tipe tindakan yang Anda salin pada langkah sebelumnya ke dalamnya. Perbarui parameter apa pun yang ingin Anda ubah. Anda juga dapat menambahkan parameter opsional.

    Untuk informasi selengkapnya tentang parameter untuk file input, lihat deskripsi file definisi tindakan diLangkah 2: Buat file definisi tipe tindakan.

    Contoh berikut menunjukkan cara memperbarui contoh jenis tindakan yang dibuat dengan model integrasi Lambda. Contoh ini membuat perubahan berikut:

    • Mengubah provider nama menjadiTestProvider1.

    • Tambahkan batas waktu kerja 900 detik.

    • Menambahkan properti konfigurasi tindakan bernama Host yang ditampilkan ke pelanggan menggunakan tindakan.

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. Di terminal atau baris perintah, jalankan update-action-type perintah

    aws codepipeline update-action-type --cli-input-json file://action.json

    Perintah ini mengembalikan output tipe tindakan agar sesuai dengan parameter yang diperbarui.