Superblocks Platform Giải Pháp CI/CD Cho Smart Contract
Bài đăng này đã không được cập nhật trong 4 năm
Hiện nay công cụ để phát triển smart contract ethereum phổ biến được nhiều developers sử dụng đó chính là truffle. Thì hôm nay mình xin giới thiệu đến mọi người một nền tảng nữa chuyên được sử cho việc CI/CD (auto test/auto deploy) đó chính là nền tảng superblocks
Thì Superblocks là một nền tảng chuyên cung cấp giải pháp auto testing và auto deploy cho các dự án sử dụng smartcontract Ethereum. Nó tạo ra một quy tình an toàn và tự động hỗ trợ cả môi trường development đến môi trường production. Nền tảng này bao gồm 3 tính năng chính:
- Continuous Integration [beta]: Một hành động khuyến khích các developer nên thường xuyên commit code của mình vào branch master. Thay vì việc xây dựng độc lập và cuối cùng mới ghép chúng vào cuối của chu trình phát triển. Trong Superblocks thì bạn có thể test code của smart contract trên bất kỳ commit nào trong dự án.
- Release Management [in development]: Giúp deploy smartcontrat một cách an toàn trong môi trường private, testnet hoặc mainnet với việc sử dụng các wallet tích hợp được vào trình duyệt ví dụ như các wallet extension. Việc thao tác trong Superblocks sẽ giúp hạn chế việc để lộ các private keys trong quá trình sử dụng.
- Monitoring [planned]: Là phần hiển thị các thông tin phân tích, biểu đồ, thiết lập cảnh báo và log lại các sự kiện giúp dễ dàng tracking tình trạng tất cả các smartcontract trong nhiều dự án cùng một lúc.
Ethereum Studio (IDE web cho smart contracts)
Đây là một IDE khá hay mà mọi người có thể tham khảo nó ngoải Remix. Nó hỗ trợ tạo project, deploy trên máy ảo của nó và mô phỏng môi tường browser. Cách sử dụng cũng rất đơn giản đầu tiên sau khi truy cập trang nó sẽ yêu cầu chúng ta connect với metamask sau đó là hỏi muốn create project theo mẫu như thế nào
Ở đây mình sẽ chọn và demo với template HelloWorld
Project thì đã được config để kết nối với một UI chúng ta sẽ chỉ cần test nữa thôi. Trong phần deploy chúng ra có thể chọn config để thêm tham số khi khởi tạo
Sau đó chọn deploy và đợi cho công việc deploy thành công là mình có thể test được
Lúc này trong phân Interact ta cũng có thể test giống như bên remix nhưng ở đây mình sẽ có thể xem luôn kết quả trên giao diện
Cấu trúc thư mục của project sau khi đã Compile sẽ như sau và các hướng dẫn chi tiết đã có trong file README
Nút Share bên góc trái có thể giúp mọi người chia sẻ code và nhúng vào đâu đó
Và cũng có thể tải project về dạng zip nha
Getting started
Trên là một chút giới thiệu qua về Ethereum Studio phần tiếp theo này chúng ta sẽ đi vào cách sử dụng của Superblocks
Sign Up to Superblocks
Đầu tiền cần Sign up tải khoản tại: https://superblocks.com/d/login
Tiếp đến sẽ là bước xác thực cấp quyền
Ngay khi đăng ký và xác thực thành công nó sẽ gợi ý bạn tạo Organization
Bây giờ chúng ta sẽ tạo project
Set up cho việc build project, do đã connect với github nên chúng ta sẽ chỉ cần chọn Repo mong muốn
Tiếp đến là chọn mẫu cho file YAML ở đây mình chọn kiểu của truffle
Create xong project
Run build
Setting cho organization
Superblocks thì được cấu trúc xung quanh khái niệm organization. Mỗi organization sẽ bao gồm một hoặc nhiều project (repo với smart contract) và cũng cho phép nhiều người tham gia một organization. Điều này giúp người dùng có thể bao quát được nhiều project và quản lý luôn những người được tham ra vào origanization. Trong phần setting bạn có thể thực hiện những tác vụ sau:
- General Settings: Thiết lập các thông tin chung của organization
- Projects: Tạo một project mới hoặc bộ lọc cho các project hiện có.
- Workspaces: Tạo một workspace mới hoặc bộ lọc cho workspace đã tồn tại
- Members: Có thể Invite hoặc remove người khỏi organization, Manage role truy cập
Role-based access control
Trong phần member này có thể invite với 2 role đó là member và owner:
- Member: Có khả năng tạo project mới, xem những ai tham gia vào organization, xem và quản lý các bản builds.
- Owner: Sẽ có quyền gồm tất cả các quyền của member và bao gồm thêm đầy đủ các quyền administrative access. Administrators thì có thể sửa đổi quyền truy cập của những người khác, invite hoặc remove member, delete các project và delete toàn bộ organization
Pipelines, Jobs và Stages
Pipelines thì được xác định bởi một nhóm các Jobs, sẽ được thực hiện theo một cách tuần tự, không tuần tự hoặc có thể xác định theo một chương trình (Stages). Một Pipeline trong Superblocks thì được mô tả bằng một configuration có name là superblocks.yaml
. Khi một repository được kết nối với project, Superblocks sẽ đảm nhận việc thiết lập và chạy các pipeline mới. Pipelines sẽ phản hồi lại với các event được kích hoạt do các tương tác được thực hiện trong repository đã được connected.
Màn hình Pipelines sẽ hiển thị tất các các actions thực hiện bằng Superblocks. Mỗi pipeline entry thì được mô tả như sau:
- Status: Status hiện tại của pipeline cac giá trị hiển thỉ của các status này sẽ là :
created
,pending
,running
,success
,failed
,canceled
,skipped
vàmanual
- Pipeline: Sẽ được định danh duy nhất
- Branch: Thuộc branch nào
- Commit: References với commit cuối cùng (HEAD) của branch đó
- Time and date: Tổng thời gian trôi qua từ khi pipeline được bắt đầu
Job đại diện cho một đơn vị nhỏ nhất trong một Pipeline. Nó thì là một đơn vị thực thi ví dụ: automated, testing, compiling và distribution. Vì jobs
là một phần của pipeline nên nó sẽ được định nghĩa trong file cấu hình. Tương tự như pipeline thì jobs cũng sẽ được hiện thỉ như sau:
- Status: status hiện tại của job thể hiện qua các giá trị:
created
,pending
,running
,success
,failed
,canceled
,skipped
, vàmanual
- Job: Được định danh duy nhất
- Commit: References với commit cuối cùng(HEAD)
- Pipeline: Xác định xem nó thuộc về pipeline nào
- Stage: Là giai đoạn mà job liên quan
- Name: Đề cập đến job name mà được mô tả trong file config
- Time and date: Tổng thời gian thực hiện kể từ khi job được bắt đầu
Stages giống như phần nhóm một hoặc nhiều jobs
vào thành một giai đoạn nào đó và đặt tên cho nó. Stages thì có thể được sử dụng để đánh nhãn, tổ chức và sắp xếp các jobs thành một chuỗi các công việc phụ thuộc vào nhau. Một stage thì có thể chứa nhiều jobs
và chúng được chạy song song.
Giới thiệu về Configuration
Thì phần này chính là phần ta định nghĩa file superblocks.yaml
. Nếu bạn nào đã từng dùng docker thì phần này khá giống với việc định nghĩa Dockerfile
Một configuration file sẽ có dạng như thế này
version: 1
jobs:
hello:
image: alpine
script:
- echo Hello world!
Multiple jobs
Có thể định nghĩ Multiple jobs bằng cách định nghĩa từng job một
version: 1
jobs:
compile:
image: node
script:
- npm install truffle
- npm install
- npx truffle compile
test:
image: node
script:
- npm install truffle
- npm install
- npx truffle test
Stages
Thì để định nghĩa các công việc được hoàn thành đúng tuần tự thì chúng ta sẽ sử dụng đến Stages. Như ở đây mình sẽ định nghĩa các jobs trước sau đó mình sẽ định nghĩa stages xem job nào được chạy trước job nào được chạy sau
version: 1
jobs:
compile:
image: node
script:
- npm install truffle
- npm install
- npx truffle compile
test:
image: node
script:
- npm install truffle
- npm install
- npx truffle test
stages:
- custom_sequence:
jobs:
- compile
- test
Ngoài ra thì cũng có thể định nghĩa job luôn trong chính stage
[...]
stages:
- compile:
jobs:
- compile
- test:
jobs:
- test
Ví dụ một cấu hình file superblocks.yaml
Truffle
version: 1
jobs:
compile:
image: node
script:
- npm install truffle
- npm install
- npx truffle compile
test:
image: node
script:
- npm install truffle
- npm install
- npx truffle test
stages:
- pipeline:
jobs:
- compile
- test
Embark
version: 1
jobs:
build:
image: node
script:
- yarn add --dev ganache-cli embark
- yarn install
- npx embark build
test:
image: node
script:
- yarn add --dev ganache-cli embark
- yarn install
- npx embark test
stages:
- pipeline:
jobs:
- build
- test
Buidler
version: 1
jobs:
compile:
image: node
script:
- npm install @nomiclabs/buidler @nomiclabs/buidler-truffle5 @nomiclabs/buidler-web3 web3
- npm install
- npx buidler compile
test:
image: node
script:
- npm install @nomiclabs/buidler @nomiclabs/buidler-truffle5 @nomiclabs/buidler-web3 web3
- npm install
- npx buidler test
stages:
- pipeline:
jobs:
- compile
- test
Để có thể hiểu rõ hơn về các config này các bạn có thể truy cập tại đây để đọc chi tiết hơn: here
Kết luận
Bài viết với nội dung giới thiệu về nền tảng Superblocks nên mình sẽ không đi lan man nữa. Trong bài viết tiếp theo mình sẽ hướng dẫn cách deploy một project sử dụng thằng superblock này. Cảm ơn và hẹn gặp lại các bạn trong các bài viết tiếp theo.
Nguồn: https://superblocks.com/docs
All rights reserved