# Towards Continuous Deployment for Blockchain
## 1 Introduction  
The primary principle of the Agile Manifesto underlines the importance of early and continuous delivery of software that meets the customer needs [1]. Abbreviations have been provided for the following notions: Continuous integration (CI), continuous delivery (CD), and continuous deployment (CDT). The first practice involves that software is integrated continuously during development. The practice encompasses automation of software builds and testing. The backbone of a CI is version control. The most popular GitHub service ensures the distributed version control of source code using Git. The new or changed code is incorporated into a build and checked by automated tests. Automation of testing ensures checking that the application works correctly in case new commit is merged with the release branch. The CD approach goes even further in software development automation. It aims to enable on-demand software release. CD employs a set of stages, including the acceptance tests and release process. Automated acceptance tests and the release process allow on deployment of application under development on demand. [PERSON] and [PERSON] [2] present a comprehensive description of the continuous delivery process. They have defined the notion of the deployment pipeline as an automated process of tasks, which is responsible for producing a release. CD practice requires specific governance to act properly, i.e., infrastructure, data, and configuration management. The CDT approach elevates automation on an even higher level. It automatically deploys every release to users' acceptance tests environments or even a production one. CDT is a push-based practice. Conversely, CD approach is a pull-based one. Figure 1 presents loop of steps in continuous integration and continuous delivery approaches. The loop makes a complete CDT approach. The author has observed increasing interest in continuous approaches. [PERSON] et al. [3] have found the following important topics: Reducing build and test time, automation of tests, raising the scalability of deployment pipelines, and elevating the deployment process reliability. They have also enumerated essential elements in implementing continuous approaches. They have underlined suitable infrastructure, testing, highly skilled programmers, and a proven design process. [PERSON] and [PERSON] [4] show actions to overcome challenges in implementing continuous practices. They use custom images for building agents to handle micro-service dependencies. They also apply orchestration to manage resources in order to keep infrastructure costs low. Keeping build and release times short requires employing an orchestrator, such as Kubernetes (K8s), to handle scaling. Recently, IEEE Standard for DevOps has been approved and published [5]. The standard provides requirements and guidance on the implementation of DevOps to define, control, and improve software life cycle processes. It applies within an organization or a project for building and deploying software reliably. The efficiency of the continuous integration process has been improved by [PERSON] et al. [6] through identifying commits that can be skipped. The proposed prototype tool works with _Git_ repositories. Continuous integration and delivery tools have been analyzed by [PERSON] et al. [7] in the view of test case prioritization. They have analyzed the following environments: BuildBot, GoCD, Integrity, Jenkins, and Travis CI. For this work, GoCD and Jenkins were considered. Both are open-source, written in Java, and integrate well with both K8s and GitHub. However, Jenkins offers better support for continuous integration. These environments do not provide ready-made functions for blockchain. However, they offer an application programming interface (API) and thus the possibility of extending their functionality. A newly published paper by [PERSON] et al. [8] touches on continuous delivery practice. They have analyzed the structure of DevOps teams and communication between them. So, the subject seems to be timely.