Create a Builder
Conveniently build a Builder project through Packer with almost no need to modify the code.
This article will use the Leo
smart contract as an example to introduce how to create a Builder
.
To comply with the Buildpacks specification, creating a Builder
requires you to write a builder.toml
file listing the names of multiple other buildpack
s.
Relationship between Builder, Meta-Buildpack, and Buildpack
To better understand the hierarchical relationship between builder
, meta-buildpack
, and buildpack
, let's continue to analyze with the example of Leo
.
• At the builder
level, we refer to leo-builder
, which only contains meta-buildpack
.
• Meta-buildpack
is a more comprehensive concept, which includes multiple underlying packages and a procfile
. Taking Leo
as an example, it covers leo-dist buildpack
and procfile buildpack
.
• Buildpack
constitutes the lowest level implementation of the entire architecture, distributed across multiple repositories. Taking leo-dist buildpack
as an example, they respectively include the implementation of business logic, which are basically functions that all chains need to implement, such as wallet initialization, fetch devnet faucet, contract compilation, contract deployment, and other important operations. These operations often require a significant amount of time to complete, reflecting the understanding and familiarity with smart contracts and blockchain knowledge.
Overall Process
Here are the steps to initialize a Builder
:
-
Create a
Builder
configuration file namedconfig.toml
. -
In the
config.toml
file, specify the dependencies of theMeta Buildpack
you wish to combine, for example:
[[dependencies]]
repo = "amp-buildpacks/leo"
version = "0.1.7"
-
Use the
Packer CLI
tool to initialize yourBuilder
project. -
Run the official
pack builder
command to build yourBuilder
.
Initializing the Project
1. Directly create the project and corresponding folders
packer init -t builder -c config.toml leo-builder
2. Use in an empty folder
First, go into an empty folder, then run:
cd leo-builder
packer init -t builder -c config.toml
3. Force overwrite an existing project
If you wish to overwrite an existing project, you can use the following command:
packer init -t builder -f -c config.toml leo-builder
Please note that using the
-f
option will forcefully overwrite the existing project and all its contents. Before performing this operation, make sure you have fully backed up the project to prevent any unexpected issues.
This will complete the creation of the
leo-builder
project.
Check the project file tree, and you will find the following related files have been automatically created:
> tree .github .
.github
├── release-drafter.yml
└── workflows
├── pb-update-draft-release.yml
└── push-image.yml
.
├── LICENSE
├── README.md
├── builder.toml
└── scripts
└── smoke.sh