This Github Action creates and destroys instances, and associated DNS records, on the Vultr cloud service.
The latest major version of this action uses a dedicated node client called vultr-node to interact with the Vultr API.
It includes a fix to the teardown of DNS records, which was previously unreliable.
There are some breaking changes in terms of the inputs required (e.g. improved naming consistency, operating system submitted by name rather than ID).
A constant defining the operating systems currently supported by this action can be found in src/common.ts. You can get a full list of Vultr OS options from the CLI with the command vultr-cli os list. Please open a PR if you want to use this action to spin up an OS not included there.
Install dependencies with pnpm install.
The action's source lives in src/, but GitHub runs the bundled output at dist/index.js — not the TypeScript source. Any change to src/ (or to a dependency) only takes effect once the bundle is rebuilt.
This action is not published to npm. Consumers reference it directly by git tag (e.g. theopensystemslab/vultr-action@v3.0), so publishing = tagging a commit and cutting a GitHub release.
Note that all existing tags are pinned, exact versions (v2.3, v2.3.1, …) - there is no floating major tag (v2), so consumers must opt in to a new version by bumping the tag they reference. Nothing upgrades automatically.
-
Make your changes on a branch and rebuild the bundle:
pnpm run build
-
Bump the
versionfield inpackage.jsonto match the release you intend to cut. -
Commit everything — including
dist/— and merge tomain. -
Create the release from the GitHub web UI — this is the simplest route, as it creates the tag and the release together:
- Go to the repo's Releases page and click Draft a new release.
- Under Choose a tag, type the new version (e.g.
v3.0) and select Create new tag on publish, targetingmain. - Give it a title (e.g.
v3.0) and a short description of the change. - Click Publish release.
Use semantic versioning. Bump the major version for anything that could break a consumer's pipeline — including the Node runtime version in action.yml (using: "node24"), since a consumer's runner may not support the new runtime.