Full Testbed Workflow
This guide will teach you how to create an end-to-end testbed deployment using the Chassy Console and GitHub
The workflow we build will take the following structure:
Execute a GitHub Actions job to build our application and upload as a Package using the Chassy Upload Action.
Find Package in the Chassy Index and bring into the Workflow context.
Create a Release containing our Package.
Deploy this Release to our Testbed Machine.
GitHub Workflow Configuration
Our package takes the form of a ZIP archive containing a binary and a configuration file. With this in mind, our GitHub action will use the configurations below:
- name: Upload package to Chassy Index
uses: chassyflow/[email protected]
with:
name: "compute-with-config"
architecture: "AMD64"
os: "ubuntu"
os_version: "20.04"
version: "0.0.1"
type: "ARCHIVE"
path: "bundle.zip"
entrypoint: |-
./launcher.sh
All code and configuration can be found within our cargo-workspace-example repository. The GitHub Actions workflow can be found in the workflows directory.
Bundle Contents
compute
binary written in Rust that performs lengthy computations based on either a config file or environment variables
web
binary written in Rust that spins up a web server on port 8080
compute.toml
TOML configuration file for the compute binary
launcher.sh
A shell script that will run a specified binary and pass any arguments through.
Chassy Workflow Configuration
We will now create a Chassy Workflow. Let's first create a step to run the GitHub Actions workflow described in the previous section.
Dispatch GitHub Actions Workflow

This is a Run CI Job step configured to run a GitHub Actions workflow. We can specify the GitHub Workflow simply by using the workflow file name or by using the actual workflow ID obtainable through the GitHub API. We must specify the name of the repository, the name of the organization, and the name of the ref.
Find Uploaded Bundle

Next we create a Find Package step, bringing in the imported Package by providing the package name, type, and status.
Create Release

Then create a Release including the Package we just imported. In our example, we invoke the package three times, each time with different arguments. In the first invocation, we provide compute compute.toml
which tells the launcher script to run the compute binary and pass the compute.toml argument.
Deploy Archive Package

We then deploy our package to a specified machine within one of our fleets. If you need additional configurations such as environment variables, you can define these within the advanced options.
Save and Run Workflow
On the top right of the workflow graph, select Create workflow. This will save the new workflow and you can click on each individual step and see the configurations. Click on Run workflow to push it into action.
Conclusion
Running this workflow will dispatch your GitHub Actions workflow and deploy the uploaded artifact to your testbed. In our example, we deploy a Rust application as part of a ZIP archive including a configuration file.
Last updated