# 20200826 Adding a platform to Mantle ## What does adding a new platform to mantle give us? Adding a new platform to mantle means we can automate uploading images that we build into that platform and also automate executing our test suite on that platform. ## General steps for adding a new platform to mantle Adding a new platform to mantle can depend a lot on the platform being added. Generally it will consist of the following steps: - Vendor golang library for platform - under https://github.com/coreos/coreos-assembler/tree/master/mantle/vendor - Add low-level support code to platform/api - https://github.com/coreos/coreos-assembler/tree/master/mantle/platform/api - Add any test code for low-level code to cmd/ore - https://github.com/coreos/coreos-assembler/tree/master/mantle/cmd/ore - Add high-level API to platform/machine - platform/machine has a lot of boilerplate, so copying an existing platform is a good start - https://github.com/coreos/coreos-assembler/tree/master/mantle/platform/machine - Plumb options from high-level API into cmd/kola/options.go - https://github.com/coreos/coreos-assembler/blob/master/mantle/cmd/kola/options.go ## Previous examples of adding a platform NOTE: The mantle code base was migrated into github.com/coreos/coreos-assembler so code work needs to be done there. Links to PRs from the old github.com/coreos/mantle repo exist below, but are there for reference. The last two platforms that were added are Aliyun and Azure. Use these for inspiration: - Aliyun - https://github.com/coreos/mantle/pull/1066 - Azure - https://github.com/coreos/mantle/pull/771