Note: An account and project is required for the following section. If you haven't created an account or project yet, visit the following page to learn how:
{% content-ref url="creating-an-account-and-project.md" %} creating-an-account-and-project.md {% endcontent-ref %}
The Valist CLI allows you to easily publish, download, and install releases from the command line! It's a great way to easily work with releases without navigating through a frontend. You can also use it to integrate your existing CI/CD workflows.
The Valist CLI supports all of the core publishing functionality of Valist, including:
- Secure key management with keytar
- Publishing releases, for example
valist publish example-account/go-binary/0.0.1 dist/*
- Downloading releases, for example
valist download example-account/go-binary
- Gasless meta-transactions powered by OpenGSN
The Valist CLI
To install the CLI, you will need Node.js v16+ installed.
npm i -g @valist/cli
Note: An account and project is required for the following section. If you haven't created an account or project yet, visit the following page to learn how:
{% content-ref url="creating-an-account-and-project.md" %} creating-an-account-and-project.md {% endcontent-ref %}
Generating a fresh key (recommended, most secure method)
The most recommended configuration is to generate a fresh key in the CLI, then add that address to the designated account or project you wish to publish to.
To generate a new key and store it directly into your secure keystore, run the following:
valist keygen
This will print out an address like so:
Next, you will need to add this key to your desired project or account members to give it access to publish. Navigate to your project or account settings in the web dashboard, and add the key like so, and hit enter
-- this will trigger a transaction to add the account to the project:
{% hint style="warning" %} This step is required before the CLI can publish under the account or project. {% endhint %}
Importing a Key (easiest, less secure)
The Valist CLI also supports importing the following key formats:
- Private Key Hex string
- Encrypted JSON Keystore (MyCrypto, Geth, etc)
- Mnemonic phrase
To import your key into your secure keystore, run the following:
valist import
This will prompt you to import the key into your system's secure credential storage. You will then be able to use this key for publishing.
{% hint style="info" %} Your key is only accessible by you -- this simply copies your key into your system's native secure keystore. {% endhint %}
Publishing a Release with the CLI is very simple. You simply need to give it the account/project/tag
path to publish, and the set of files to include in the Release.
The format is the following:
valist publish <username>/<project>/<version> <folder>
An example of this looks like this:
valist publish acme-co/go-binary/0.0.1 dist
This will upload the files to IPFS, and trigger the publish. Meta-transactions are enabled by default, so you won't need to spend any gas.
Example Valist Publish uploading a Go binary
This is a flexible and simple way to publish in any environment that supports Node.js!
Feel free to publish your static website's build folder, a Unity project build folder, binaries, you name it! (Just make sure, it's just your build folder! 😜)
You can configure the CLI to support advanced behaviors, like cross-platform builds by creating a valist.yml
file in the root of your project.
The valist.yml
file looks like the following:
account: acme-co
project: multi-platform
release: 0.1.3
path: dist
install:
name: hello-go
darwin_amd64: hello-darwin-amd64
darwin_arm64: hello-darwin-arm64
linux_amd64: hello-linux-amd64
windows_amd64: hello-windows-amd64
The account
, project
, release
, and path
variables are all the same, however, an additional install
field is available to enable mapping native static binaries to their designated platforms.
{% hint style="info" %} The following platform/architecture combinations are supported:
- darwin_amd64
- darwin_arm64
- linux_amd64
- linux_arm64
- windows_amd64 {% endhint %}
Downloading a Release with the CLI is just as easy.
Simply provide the release path, and it will download a .tar
bundle containing the Release:
valist download acme-co/go-binary/0.0.1
If you don't specify a tag, the CLI will automatically download the latest Release:
valist download acme-co/go-binary
Voila! This will fetch the Release metadata and the corresponding artifacts from IPFS into your working directory.