Command line utility helps to develop components for NEAR Blockchain Operating System by allowing developers to use standard developer tools like their best code editor and standard tools for source code version control, and then deploy their components to SocialDB in one command.
Currently, only two groups of commands are implemented:
components - Working with components (Download, Deploy, etc.)storage-management - Storage management: deposit, withdrawal, balance reviewdeploy allows you to upload/publish components from your local ./src folder to near.social account.download allows you to download the existing components from any near.social account to the local ./src folder.view-balance allows you to view the storage balance for an account.deposit allows you to make a storage deposit for the account.withdraw allows you to make a withdraw a deposit from storage for an account ID.More commands are still on the way, see the issues tracker and propose more features there.
The release page includes precompiled binaries for Linux, macOS and Windows.
With Rust's package manager cargo, you can install bos via:
cargo install --git https://github.com/FroVolod/bos-cli-rs
This repo contains a reusable workflow which you can directly leverage from your component repository
Prepare access key that will be used for components deployment.
It is recommended to use a dedicated function-call-only access key, so you need to:
1.1. Add a new access key to your account. Here is near CLI command to do that:
bash
near account add-key "ACCOUNT_ID" grant-function-call-access --allowance '1 NEAR' --receiver-account-id social.near --method-names 'set' autogenerate-new-keypair print-to-terminal network-config mainnet
1.2. Grant write permission to the key (replace PUBLIC_KEY with the one you added to the account on the previous step, and ACCOUNT_ID with the account id where you want to deploy BOS components):
bash
near contract call-function as-transaction social.near grant_write_permission json-args '{"public_key": "PUBLIC_KEY", "keys": ["ACCOUNT_ID/widget"]}' prepaid-gas '100.000 TeraGas' attached-deposit '1 NEAR' sign-as "ACCOUNT_ID" network-config mainnet
Note: the attached deposit is going to be used to cover the storage costs associated with the data you store on BOS, 1 NEAR is enough to store 100kb of data (components code, metadata, etc).
SIGNER_PRIVATE_KEY with the private key in ed25519:<private_key> format (if you followed (1.1), it is be printed in your terminal)Create a file at .github/workflows/deploy-mainnet.yml in your component repo with the following contents.
See the workflow definition for explanations of the inputs
yml
name: Deploy Components to Mainnet
on:
push:
branches: [main]
jobs:
deploy-mainnet:
uses: FroVolod/bos-cli-rs/.github/workflows/deploy-mainnet.yml@main
with:
deploy-account-address: <FILL>
signer-account-address: <FILL>
signer-public-key: <FILL>
secrets:
SIGNER_PRIVATE_KEY: ${{ secrets.SIGNER_PRIVATE_KEY }}
Commit and push the workflow
main branch, updated components in src will be deployed!Copy the contents of .github/workflows/deploy-mainnet.yml to your repo as a starting point