A Vessel is the "unit of work" in Shipyard, or an individual script that has been designed and built to accomplish a very specific job. Just like the real world equivalent, Vessels can be built for any purpose and come in any size, shape, or speed.
Vessels are run in independent docker containers, so underlying code, environment variables, and packages of one cannot affect another.
Every Vessel is either built with code or with a Blueprint that contains the design specifications that determine what that Vessel will do. New Vessels get built through the process of building a Fleet. The options required for creating a New Vessel differ based on the creation method that you select.
A Project Vessel is a Vessel that has been previously built in a Fleet but is now disconnected from any Fleet. You can turn any existing Vessel into a Project Vessel by removing it from a Fleet and saving the Fleet. Project Vessels are an easy way to move a Vessel from one Fleet to another or to store the contents of a Fleet for later.
Building a Vessel with code allows you to write and run scripts from scratch with no changes to your existing code or additional configuration files. The code is executed on Shipyard's cloud infrastructure in isolation.
When building a Vessel with code, your script should return an exit code of 0 to indicate a successful run. Any other exit code indicates failure.
Additionally, your script should stop its work if it receives a SIGTERM (15) signal.
- Arguments (Optional)
- Environment Variables (Optional)
- Code Packages (Optional)
- System Packages (Optional)
- Notifications (Optional)
- Guardrails (Optional)
With a Blueprint
Building a Vessel with a Blueprint allows you to run scripts without needing to touch code. Instead, you're only required to fill out a few key form inputs. This user input then gets passed to a script in the backend.
- A Vessel can only be tied to one Blueprint, one Project, and one Organization.
- A Vessel's Blueprint or Code type cannot be changed once it is built.
- A Vessel's Project cannot be changed once it is built.
- A Project Vessel is not version controlled.
- A Fleet Vessel is version controlled. A Vessel's previous configuration within a Fleet is viewable in the Fleet's Version Control tab.