Superblocks Platform Giải Pháp CI/CD Cho Smart Contract


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 đó

                                                                                                          Edit Project

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, skippedmanual
  • 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