Valist Docs
Searchโ€ฆ
๐Ÿงฉ
GitHub Action
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:

Valist GitHub Action

Valist provides an extremely easy to integrate GitHub Action that enables you to publish anything, including websites, binaries, Electron apps, Android apps, Docker images, or anything else that you're building in your existing CI/CD pipeline!
It can be found in the GitHub Marketplace below:
Valist Action - GitHub Marketplace
GitHub
Here's what it looks like to publish a release to Valist using the Valist GitHub Action:
name: Valist Publish
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: valist-io/valist-github-[email protected]
with:
private-key: ${{ secrets.PRIVATE_KEY }}
account: example-acount
project: example-project
release: ${{ github.ref_name }} # this can be whatever tag you wish to use
path: build
Here's an example run of a React app being published:
Super easy!

Configuring the workflow file

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:
There are several values that you will need to update to get your project publishing correctly.

Setting up the GitHub Action's Private Key

First, you will need to setup the private-key variable.
  • The private-key field maps to your GitHub Repository secret that contains a key with permission on the Valist Project. We strongly recommend this is a fresh key that only has access to the corresponding Valist Project, and that you don't use an Account-level admin key here.
To generate a fresh key, you can use any Ethereum wallet that can export private keys. We also have a helper script that makes it even easier here:
npx @valist/keygen eth
This will securely generate and output a private key and a public address that you can use to configure your Valist GitHub Action.
Copy this private key, and add it as a GitHub Repository Secret called VALIST_SIGNER:
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, click on Members and add the key -- this will trigger a transaction to add the account to the project:
This step is required before the CLI can publish under the account or project.
This will give the key access to the project and enable the GitHub Action to publish to the project!

Configuring the account, project, path, and release version

Next, fill out the rest of the values and match them to your Valist Account and Project:
  • The account field maps to your Valist Account
  • The project field maps to the Valist Project you wish to publish to
Then, you will need to configure the Release's build path, and the version to tag it with.
Each release is immutable and unique, so make sure this is a version tag that matches your workflow.
  • The release field maps to the version/tag you wish to release. You can use SemVer, or some other release versioning system you wish.
Finally, you will need to point the Action at the build path. Make sure this is your build output, or "dist" folder.
  • The path field is the folder you wish to release.

Advanced Configuration (Cross-Platform Releases)

You can also configure cross-platform releases with the install field, similarly to the CLI.
install-name: 'hello'
install-darwin-amd64: hello-darwin-amd64
install-darwin-arm64: hello-darwin-arm64
install-linux-amd64: hello-linux-amd64
install-windows-amd64: hello-windows-amd64
This will map each binary to its designated platform, enabling the Valist tooling to install the correct version on the correct platforms.
The following platform/architecture combinations are supported:
  • install-darwin-amd64
  • install-darwin-arm64
  • install-linux-amd64
  • install-linux-arm64
  • install-windows-amd64
For a set of examples, check out these repositories below:
valist-publish-gha-example/publish.yml at main ยท awantoch/valist-publish-gha-example
GitHub
Simple Valist Publish with Timestamp as the Release Name
berty/valist.yml at master ยท berty/berty
GitHub
Berty Messenger publishing cross-platform builds from their GitHub Releases
example-projects/nextjs-project.yml at main ยท valist-io/example-projects
GitHub
Next.js project built and published with the Valist GHA
example-projects/multi-platform.yml at main ยท valist-io/example-projects
GitHub
Multi-platform Go binary (Mac, Windows, Linux)
Want to add your example to these docs? Please feel free to open a PR or contact us at [email protected] ๐Ÿ˜„
The Valist Action is built to be modular, and compatible with your existing pipeline. There are many ways to configure it! Take a look at the following pages for more examples of how to use it:
Copy link
Outline
Valist GitHub Action
Configuring the workflow file