Variabel - AWS CodePipeline

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

Variabel

Bagian ini hanya referensi. Untuk informasi tentang membuat variabel, lihatBekerja dengan variabel.

Variabel memungkinkan Anda mengonfigurasi tindakan pipeline dengan nilai yang ditentukan pada saat eksekusi pipeline atau eksekusi tindakan.

Beberapa penyedia tindakan menghasilkan serangkaian variabel yang ditentukan. Anda memilih dari kunci variabel default untuk penyedia tindakan tersebut, seperti ID komit.

penting

Saat melewati parameter rahasia, jangan masukkan nilai secara langsung. Nilai tersebut diberikan sebagai teks biasa dan karena itu dapat dibaca. Untuk alasan keamanan, jangan gunakan plaintext dengan rahasia. Kami sangat menyarankan Anda menggunakan AWS Secrets Manager untuk menyimpan rahasia.

Untuk melihat step-by-step contoh penggunaan variabel:

Batas Variabel

Untuk informasi batas, lihatKuota di AWS CodePipeline.

catatan

Saat Anda memasukkan sintaks variabel di bidang konfigurasi tindakan, jangan melebihi batas 1000 karakter untuk bidang konfigurasi. Kesalahan validasi dikembalikan ketika batas ini terlampaui.

Konsep

Bagian ini mencantumkan istilah dan konsep utama yang terkait dengan variabel dan ruang nama.

Variabel

Variabel adalah pasangan nilai kunci yang dapat digunakan untuk mengonfigurasi tindakan secara dinamis di pipeline Anda. Saat ini ada tiga cara variabel-variabel ini tersedia:

  • Ada satu set variabel yang secara implisit tersedia pada awal setiap eksekusi pipeline. Set ini saat ini termasukPipelineExecutionId, ID dari eksekusi pipeline saat ini.

  • Variabel pada tingkat pipa didefinisikan ketika pipa dibuat dan diselesaikan pada waktu proses pipa.

    Anda menentukan variabel tingkat pipeline saat pipeline dibuat, dan Anda dapat memberikan nilai pada saat eksekusi pipeline.

  • Ada jenis tindakan yang menghasilkan set variabel ketika mereka dieksekusi. Anda dapat melihat variabel yang dihasilkan oleh tindakan dengan memeriksa outputVariables bidang yang merupakan bagian dari ListActionExecutionsAPI. Untuk daftar nama kunci yang tersedia menurut penyedia tindakan, lihatVariabel tersedia untuk tindakan pipeline. Untuk melihat variabel mana yang dihasilkan setiap jenis tindakan, lihat CodePipeline Referensi struktur aksi.

Untuk mereferensikan variabel-variabel ini dalam konfigurasi tindakan Anda, Anda harus menggunakan sintaks referensi variabel dengan namespace yang benar.

Untuk contoh alur kerja variabel, lihatMengkonfigurasi variabel .

Namespace

Untuk memastikan bahwa variabel dapat direferensikan secara unik, mereka harus ditetapkan ke namespace. Setelah Anda memiliki satu set variabel yang ditetapkan ke namespace, mereka dapat direferensikan dalam konfigurasi tindakan dengan menggunakan namespace dan kunci variabel dengan sintaks berikut:

#{namespace.variable_key}

Ada tiga jenis ruang nama di mana variabel dapat ditetapkan:

  • Namespace cadangan codepipeline

    Ini adalah namespace yang ditetapkan ke kumpulan variabel implisit yang tersedia di awal setiap eksekusi pipeline. Namespace ini adalah codepipeline. Contoh referensi variabel:

    #{codepipeline.PipelineExecutionId}
  • Variabel namespace pada tingkat pipeline

    Ini adalah namespace yang ditugaskan ke variabel di tingkat pipeline. Namespace untuk semua variabel di tingkat pipeline adalah. variables Contoh referensi variabel:

    #{variables.variable_name}
  • Tindakan yang ditetapkan namespace

    Ini adalah namespace yang Anda tetapkan untuk tindakan. Semua variabel yang dihasilkan oleh aksi berada di bawah namespace ini. Untuk membuat variabel yang dihasilkan oleh tindakan tersedia untuk digunakan dalam konfigurasi tindakan hilir, Anda harus mengonfigurasi tindakan produksi dengan namespace. Ruang nama harus unik di seluruh definisi pipeline dan tidak dapat bertentangan dengan nama artefak apa pun. Berikut adalah contoh referensi variabel untuk tindakan yang dikonfigurasi dengan namespace dari. SourceVariables

    #{SourceVariables.VersionId}

Gunakan kasus untuk variabel

Berikut ini adalah beberapa kasus penggunaan yang paling umum untuk variabel di tingkat pipeline, membantu Anda menentukan bagaimana Anda dapat menggunakan variabel untuk kebutuhan spesifik Anda.

  • Variabel pada tingkat pipeline adalah untuk CodePipeline pelanggan yang ingin menggunakan pipeline yang sama setiap kali dengan variasi kecil dalam input ke konfigurasi tindakan. Setiap pengembang yang memulai pipeline menambahkan nilai variabel di UI saat pipeline dimulai. Dengan konfigurasi ini, Anda meneruskan parameter untuk eksekusi itu saja.

  • Dengan variabel tingkat pipa, Anda dapat meneruskan input dinamis ke tindakan dalam pipeline. Anda dapat memigrasikan pipeline berparameter ke CodePipeline tanpa harus mempertahankan versi berbeda dari pipeline yang sama, atau membuat pipeline yang kompleks.

  • Anda dapat menggunakan variabel tingkat pipeline untuk meneruskan parameter input yang memungkinkan Anda menggunakan kembali pipeline dengan setiap eksekusi, seperti saat Anda ingin menentukan versi mana yang ingin Anda terapkan ke lingkungan produksi, sehingga Anda tidak perlu menduplikasi pipeline.

  • Anda dapat menggunakan satu pipeline untuk menyebarkan sumber daya ke beberapa lingkungan build dan deployment. Misalnya, untuk pipeline dengan CodeCommit repositori, penerapan dari cabang tertentu dan lingkungan penyebaran target dapat dilakukan dengan CodeBuild dan CodeDeploy parameter diteruskan pada tingkat pipa.

Mengkonfigurasi variabel

Anda dapat mengonfigurasi variabel di tingkat pipa atau tingkat tindakan dalam struktur pipa.

Mengkonfigurasi variabel di tingkat pipa

Anda dapat menambahkan satu atau lebih variabel di tingkat pipa. Anda dapat mereferensikan nilai ini dalam konfigurasi CodePipeline tindakan. Anda dapat menambahkan nama variabel, nilai default, dan deskripsi saat membuat pipeline. Variabel diselesaikan pada saat eksekusi.

catatan

Jika nilai default tidak didefinisikan untuk variabel pada tingkat pipa, variabel dianggap sebagai diperlukan. Anda harus menentukan penggantian untuk semua variabel yang diperlukan saat Anda memulai pipeline, jika tidak, eksekusi pipeline akan gagal dengan kesalahan validasi.

Anda menyediakan variabel pada tingkat pipeline menggunakan atribut variabel dalam struktur pipa. Dalam contoh berikut, variabel Variable1 memiliki nilaiValue1.

"variables": [ { "name": "Variable1", "defaultValue": "Value1", "description": "description" } ]

Untuk contoh dalam struktur pipa JSON, lihatBuat pipeline di CodePipeline.

Untuk tutorial dengan variabel tingkat pipa yang dilewatkan pada saat eksekusi pipeline, lihat. Tutorial: Gunakan variabel tingkat pipa

Perhatikan bahwa menggunakan variabel tingkat pipa dalam segala jenis tindakan Sumber tidak didukung.

catatan

Jika variables namespace sudah digunakan dalam beberapa tindakan dalam pipeline, Anda harus memperbarui definisi tindakan dan memilih namespace lain untuk tindakan yang bertentangan.

Mengkonfigurasi variabel pada tingkat tindakan

Anda mengonfigurasi tindakan untuk menghasilkan variabel dengan mendeklarasikan namespace untuk tindakan tersebut. Tindakan harus sudah menjadi salah satu penyedia tindakan yang menghasilkan variabel. Jika tidak, variabel yang tersedia adalah variabel tingkat pipa.

Anda mendeklarasikan namespace baik dengan:

  • Pada halaman Edit tindakan konsol, masukkan namespace di Namespace Variable.

  • Memasukkan namespace di bidang namespace parameter dalam struktur pipa JSON.

Dalam contoh ini, Anda menambahkan namespace parameter ke tindakan CodeCommit sumber dengan namaSourceVariables. Ini mengonfigurasi tindakan untuk menghasilkan variabel yang tersedia untuk penyedia tindakan tersebut, sepertiCommitId.

{ "name": "Source", "actions": [ { "outputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Source", "namespace": "SourceVariables", "configuration": { "RepositoryName": "MyRepo", "BranchName": "mainline", "PollForSourceChanges": "false" }, "inputArtifacts": [], "region": "us-west-2", "actionTypeId": { "provider": "CodeCommit", "category": "Source", "version": "1", "owner": "AWS" }, "runOrder": 1 } ] },

Selanjutnya, Anda mengonfigurasi tindakan hilir untuk menggunakan variabel yang dihasilkan oleh tindakan sebelumnya. Anda melakukan ini dengan:

  • Pada halaman Edit tindakan konsol, masukkan sintaks variabel (untuk tindakan hilir) di bidang konfigurasi tindakan.

  • Memasukkan sintaks variabel (untuk tindakan hilir) di bidang konfigurasi tindakan dalam struktur pipa JSON

Dalam contoh ini, bidang konfigurasi tindakan build menunjukkan variabel lingkungan yang diperbarui pada eksekusi tindakan. Contoh menentukan namespace dan variabel untuk eksekusi ID dengan dan namespace #{codepipeline.PipelineExecutionId} dan variabel untuk komit ID dengan. #{SourceVariables.CommitId}

{ "name": "Build", "actions": [ { "outputArtifacts": [ { "name": "BuildArtifact" } ], "name": "Build", "configuration": { "EnvironmentVariables": "[{\"name\":\"Release_ID\",\"value\":\"#{codepipeline.PipelineExecutionId}\",\"type\":\"PLAINTEXT\"},{\"name\":\"Commit_ID\",\"value\":\"#{SourceVariables.CommitId}\",\"type\":\"PLAINTEXT\"}]", "ProjectName": "env-var-test" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "region": "us-west-2", "actionTypeId": { "provider": "CodeBuild", "category": "Build", "version": "1", "owner": "AWS" }, "runOrder": 1 } ] },

Resolusi variabel

Setiap kali tindakan dijalankan sebagai bagian dari eksekusi pipeline, variabel yang dihasilkannya tersedia untuk digunakan dalam tindakan apa pun yang dijamin terjadi setelah tindakan produksi. Untuk menggunakan variabel-variabel ini dalam tindakan konsumsi, Anda dapat menambahkannya ke konfigurasi tindakan konsumsi menggunakan sintaks yang ditunjukkan pada contoh sebelumnya. Sebelum melakukan tindakan yang memakan, CodePipeline menyelesaikan semua referensi variabel yang ada dalam konfigurasi sebelum memulai eksekusi tindakan.


        Contoh: Variabel untuk beberapa tindakan

Aturan untuk variabel

Aturan berikut membantu Anda dengan konfigurasi variabel:

  • Anda menentukan namespace dan variabel untuk tindakan melalui properti tindakan baru atau dengan mengedit tindakan.

  • Saat Anda menggunakan panduan pembuatan pipeline, konsol akan menghasilkan namespace untuk setiap tindakan yang dibuat dengan wizard.

  • Jika namespace tidak ditentukan, variabel yang dihasilkan oleh tindakan itu tidak dapat direferensikan dalam konfigurasi tindakan apa pun.

  • Untuk referensi variabel yang dihasilkan oleh suatu tindakan, tindakan referensi harus terjadi setelah tindakan yang menghasilkan variabel. Ini berarti berada di tahap selanjutnya dari tindakan yang menghasilkan variabel, atau pada tahap yang sama tetapi pada urutan lari yang lebih tinggi.

Variabel tersedia untuk tindakan pipeline

Penyedia tindakan menentukan variabel mana yang dapat dihasilkan oleh tindakan.

Untuk step-by-step prosedur untuk mengelola variabel, lihatBekerja dengan variabel.

Tindakan dengan kunci variabel yang ditentukan

Tidak seperti namespace yang dapat Anda pilih, tindakan berikut menggunakan kunci variabel yang tidak dapat diedit. Misalnya, untuk penyedia tindakan Amazon S3, hanya kunci VersionId variabel ETag dan yang tersedia.

Setiap eksekusi juga memiliki satu set variabel pipeline CodePipeline yang dihasilkan yang berisi data tentang eksekusi, seperti ID rilis pipeline. Variabel-variabel ini dapat dikonsumsi oleh tindakan apa pun dalam pipeline.

CodePipelinevariabel ID eksekusi

CodePipelinevariabel ID eksekusi
Penyedia Kunci variabel Nilai contoh Contoh sintaks variabel
codepipeline PipelineExecutionId 8abc75f0-fbf8-4f4c-bfcontoh #{codepipeline.PipelineExecutionId}

Variabel keluaran tindakan Amazon ECR

Variabel Amazon ECR
Kunci variabel Nilai contoh Contoh sintaks variabel
ImageDigest SHA256: contoh1122334455 #{SourceVariables.ImageDigest}
ImageTag terbaru #{SourceVariables.ImageTag}
ImageURI 11111Example.dkr. ecr.us-west-2.amazonaws.com /ecs-repo:latest #{SourceVariables.ImageURI}
RegistryId CONTOH12233 #{SourceVariables.RegistryId}
RepositoryName my-image-repo #{SourceVariables.RepositoryName}

AWS CloudFormation StackSets variabel keluaran aksi

AWS CloudFormation StackSets variabel
Kunci variabel Nilai contoh Contoh sintaks variabel
OperationId 11111111-2bbb-111-2bbb-11111contoh #{DeployVariables.OperationId}
StackSetId set tumpukan saya:1111aaaa-1111-2222-2bbb-11111contoh #{DeployVariables.StackSetId}

CodeCommit variabel keluaran aksi

CodeCommit variabel
Kunci variabel Nilai contoh Contoh sintaks variabel
AuthorDate 2019-10-29T 03:32:21 Z #{SourceVariables.AuthorDate}
BranchName Pengembangan #{SourceVariables.BranchName}
CommitId

contoh01f91b31

#{SourceVariables.CommitId}
CommitMessage Memperbaiki bug (ukuran maksimum 100 KB) #{SourceVariables.CommitMessage}
CommitterDate 2019-10-29T 03:32:21 Z #{SourceVariables.CommitterDate}
RepositoryName myCodeCommitRepo #{SourceVariables.RepositoryName}

CodeStarSourceConnection variabel keluaran aksi

CodeStarSourceConnectionvariabel (Bitbucket Cloud, GitHub, GitHub Enterprise Repository, dan .com) GitLab
Kunci variabel Nilai contoh Contoh sintaks variabel
AuthorDate 2019-10-29T 03:32:21 Z #{SourceVariables.AuthorDate}
BranchName Pengembangan #{SourceVariables.BranchName}
CommitId

contoh01f91b31

#{SourceVariables.CommitId}
CommitMessage Memperbaiki bug (ukuran maksimum 100 KB) #{SourceVariables.CommitMessage}
ConnectionArn arn:aws:codestar-connections:region: account-id:connection/connection-id #{SourceVariables.ConnectionArn}
FullRepositoryName nama pengguna/ GitHubRepo #{SourceVariables.FullRepositoryName}

GitHub variabel keluaran tindakan (versi GitHub tindakan 1)

GitHub variabel (versi GitHub tindakan 1)
Kunci variabel Nilai contoh Contoh sintaks variabel
AuthorDate 2019-10-29T 03:32:21 Z #{SourceVariables.AuthorDate}
BranchName utama #{SourceVariables.BranchName}
CommitId

contoh01f91b31

#{SourceVariables.CommitId}
CommitMessage

Memperbaiki bug (ukuran maksimum 100 KB)

#{SourceVariables.CommitMessage}
CommitterDate 2019-10-29T 03:32:21 Z #{SourceVariables.CommitterDate}
CommitUrl #{SourceVariables.CommitUrl}
RepositoryName myGitHubRepo #{SourceVariables.RepositoryName}

Variabel keluaran aksi S3

Variabel S3
Kunci variabel Nilai contoh Contoh sintaks variabel
ETag contoh28be1c3 #{SourceVariables.ETag}
VersionId ContohTa_IUQCV #{SourceVariables.VersionId}

Tindakan dengan kunci variabel yang dikonfigurasi pengguna

Untuk CodeBuild, AWS CloudFormation, dan tindakan Lambda, kunci variabel dikonfigurasi oleh pengguna.

CloudFormation variabel keluaran aksi

AWS CloudFormation variabel
Kunci variabel Contoh sintaks variabel

Untuk AWS CloudFormation tindakan, variabel dihasilkan dari nilai apa pun yang ditunjuk di Outputs bagian template tumpukan. Perhatikan bahwa satu-satunya mode CloudFormation tindakan yang menghasilkan output adalah mode yang menghasilkan atau memperbarui tumpukan, seperti pembuatan tumpukan, pembaruan tumpukan, dan eksekusi set perubahan. Mode tindakan terkait yang menghasilkan variabel adalah:

  • CREATE_UPDATE

  • CHANGE_SET_EXECUTE

  • CHANGE_SET_REPLACE

  • REPLACE_ON_FAILURE

Untuk informasi selengkapnya tentang mode aksi ini, lihatAWS CloudFormation. Untuk tutorial yang menunjukkan cara membuat pipeline dengan tindakan AWS CloudFormation penerapan dalam pipeline yang menggunakan variabel AWS CloudFormation keluaran, lihatTutorial: Buat pipeline yang menggunakan variabel dari AWS CloudFormation tindakan penerapan.
#{DeployVariables.StackName}

CodeBuild variabel keluaran aksi

CodeBuild variabel
Kunci variabel Contoh sintaks variabel

Untuk CodeBuild tindakan, variabel dihasilkan dari nilai yang dihasilkan oleh variabel lingkungan yang diekspor. Siapkan variabel CodeBuild lingkungan dengan mengedit CodeBuild tindakan Anda di CodePipeline atau dengan menambahkan variabel lingkungan ke spesifikasi build.

Tambahkan instruksi ke spesifikasi CodeBuild build Anda untuk menambahkan variabel lingkungan di bawah bagian variabel yang diekspor. Lihat env/exported-variable di Panduan Pengguna.AWS CodeBuild

#{BuildVariables.EnvVar}

Variabel keluaran aksi Lambda

Variabel Lambda
Kunci variabel Contoh sintaks variabel
Tindakan Lambda akan menghasilkan sebagai variabel semua pasangan nilai kunci yang disertakan dalam outputVariables bagian permintaan API. PutJobSuccessResult

Untuk tutorial dengan tindakan Lambda yang menggunakan variabel dari tindakan upstream (CodeCommit) dan menghasilkan variabel keluaran, lihat. Tutorial: Menggunakan variabel dengan Lambda memanggil tindakan

#{TestVariables.testRunId}