Contoh: Memodifikasi taskdef Amazon ECS - Amazon CodeCatalyst

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

Contoh: Memodifikasi taskdef Amazon ECS

Berikut ini adalah contoh alur kerja lengkap yang menyertakan tindakan definisi tugas Render Amazon ECS, bersama dengan tindakan build dan deploy. Tujuan alur kerja adalah untuk membangun dan menerapkan image Docker ke dalam cluster Amazon ECS Anda. Alur kerja terdiri dari blok bangunan berikut yang berjalan secara berurutan:

  • Pemicu - Pemicu ini memulai alur kerja yang dijalankan secara otomatis saat Anda mendorong perubahan ke repositori sumber Anda. Untuk informasi lebih lanjut tentang menggunakan pemicu, lihat Memulai alur kerja berjalan secara otomatis menggunakan pemicu.

  • Tindakan build (BuildDocker) — Pada pemicu, aksi membangun image Docker menggunakan Dockerfile, memberi tag dengan ID komit, dan mendorong gambar ke Amazon ECR. Untuk informasi selengkapnya tentang tindakan build, lihatMembangun dengan alur kerja.

  • Tindakan definisi tugas Amazon ECS Render (RenderTaskDef) — Setelah menyelesaikan tindakan build, tindakan ini memperbarui yang ada di taskdef.json root repositori sumber Anda dengan nilai image bidang yang menyertakan ID komit yang benar. Ini menyimpan file yang diperbarui dengan nama file baru (task-definition-random-string.json) dan kemudian membuat artefak keluaran yang berisi file ini. Tindakan render juga menghasilkan variabel yang disebut task-definition dan menyetelnya ke nama file definisi tugas baru. Artefak dan variabel akan digunakan tindakan penyebaran, yang berikutnya.

  • Tindakan Deploy to Amazon ECS (DeployToECS) — Setelah menyelesaikan tindakan definisi tugas Render Amazon ECS, aksi Deploy to Amazon ECS mencari artefak keluaran yang dihasilkan oleh tindakan render TaskDefArtifact (), menemukan task-definition-random-string.json file di dalamnya, dan mendaftarkannya dengan layanan Amazon ECS Anda. Layanan Amazon ECS kemudian mengikuti petunjuk dalam task-definition-random-string.json file untuk menjalankan tugas Amazon ECS—dan container image Docker terkait—di dalam cluster Amazon ECS Anda.

Name: codecatalyst-ecs-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildDocker: Identifier: aws/build@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-build-role Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-east-2.amazonaws.com #build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG RenderTaskDef: DependsOn: - BuildDocker Identifier: aws/ecs-render-task-definition@v1 Inputs: Variables: - Name: REPOSITORY_URI Value: 111122223333.dkr.ecr.us-east-2.amazonaws.com/codecatalyst-ecs-image-repo - Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: task-definition: taskdef.json container-definition-name: codecatalyst-ecs-container image: $REPOSITORY_URI:$IMAGE_TAG # The output artifact contains the updated task definition file. # The new file is prefixed with 'task-definition'. # The output variable is set to the name of the updated task definition file. Outputs: Artifacts: - Name: TaskDefArtifact Files: - "task-definition*" Variables: - task-definition DeployToECS: Identifier: aws/ecs-deploy@v1 Environment: Name: codecatalyst-ecs-environment Connections: - Name: codecatalyst-account-connection Role: codecatalyst-ecs-deploy-role #Input artifact contains the updated task definition file. Inputs: Sources: [] Artifacts: - TaskDefArtifact Configuration: region: us-east-2 cluster: codecatalyst-ecs-cluster service: codecatalyst-ecs-service task-definition: ${RenderTaskDef.task-definition}