EOS is a platform for decentralized applications (DAPPs) created as an alternative to Ethereum. It beats Ethereum when it comes to transaction cost or efficiency of operation. One of its main advantages, however, is the possibility to update smart contracts.
All non-trivial software is subject to bugs, even with the most rigorous of formal verification. The platform must be robust enough to fix bugs when they inevitably occur.
– EOSIO whitepaper
Employing this kind of approach made it one of the very first DAPPs platforms that allows for Agile Development of applications, which is based on a continuous process and automation.
Continuous delivery for EOSIO
Building, testing, version management and deployment — all this stuff requires extra time and effort that could well be invested into actual coding. With Buddy, however, you can easily streamline those activities down to one simple process:
This is called Continuous Delivery: a process that allows developers to produce valid builds ready to be published to the Mainnet on a single push to a branch.
In Buddy you can create advanced pipelines for each branch in your repo:
In this guide, we are breaking it down to a simple list of how-to steps to show you how easy it is to implement even the most advanced DevOps strategies with Buddy.
Step 1: Build and test EOSIO smart contract on every push
The first step is connecting Buddy with your repository. Buddy supports all popular Git hosting providers, including GitHub, Bitbucket and Gitlab. You can also use your own private server, or host code directly on Buddy.
Once the project is added, you can create a pipeline that will be executed on every push to the repo:
Buddy will ask you to add the first action to the newly created pipeline. Select the EOSIO build action from the Blockchain section and enter the commands that will build your smart contract:
Buddy will instantly run a local NODEOS on which you can deploy and test your smart contract. In the Services tab you can define which version of NODEOS should be run and which plugins will be enabled.
In order to deploy to your local nodeos you just need to enter deploy and test commands in the action’s scripts:
If your tests require additional installations/dependencies in the test environment, you can install them in the Environment Customization tab:
When ready, click Add this action to finish configuration.
Congratulations! From now on, Buddy will automatically build and test your EOSIO smart contract on every push to the Staging branch.
Once you build your application with Buddy, you can view the generated artifacts (Wast/ABI) in the pipeline’s FIlesystem:
Step 2: Deploy EOSIO Smart Contract to Testnet
When we finish testing our smart contract locally, we usually deploy it to Testnet, where we can run integration tests and share it with beta testers.
Buddy offers a dedicated deployment acton for EOSIO smart contracts which allows you to deploy the previously built contract. In the action you need to enter Nodeos URL and authorization data:
Step 3: Send notification about new version
Buddy lets you send notifications of various kinds after the deployment: from email, to SMS, to Slack and Discord messages. In our case we’ll send a Discord notification:
On top of the above you can define a special notification that will be sent only when something goes wrong. For example: send an email to the person that triggered the execution.
Congratulations! You have just configured your first Delivery Pipeline for EOSIO DAPPs
Build and deliver whole application
Usually, smart contracts are responsible for fragments critical to the application that for security reasons should be safely stored in the blockchain. Buddy also allows you to build & test other parts of your app: it supports PHP / Java / Node.js and many others programming languages and frameworks. Integrations with AWS, Google Cloud, Azure and many others will help you easily deploy your applications:
Last but not least, Buddy supports Docker containers and Kubernetes Clusters:
Here you can see how real companies use Buddy to automate their projects: