setup-v-action
Version:
GitHub action for setting up a V (Vlang) build environment by downloading and unpacking the V compiler or building it from sources.
143 lines (86 loc) • 4.13 kB
Markdown
# Setup V (Vlang) Build
[ ](https://www.npmjs.com/package/setup-v-action)
GitHub action for setting up a V build environment by downloading and unpacking the V compiler or building it from sources.
* Simple syntax with defaults according to the best performance and practices.
* Convenient version specification - `master`, `weekly`, `latest`, `X.Y.Z`, `<commit hash>`.
* Downloading an unpacking pre-built binaries is preferred to building from sources.
* An already unpacked or built version is cached to speed up the build pipeline.
* Automatic installation of module dependencies from `v.mod`.
* GitHub workflow token is used by default.
## Usage
Install V from the latest release:
```yml
- uses: prantlf/setup-v-action@v4
```
Test against multiple versions of V using the matrix strategy:
```yml
jobs:
test:
strategy:
matrix:
v-version: ["latest", "weekly", "master"]
steps:
- uses: actions/checkout@v7
- uses: prantlf/setup-v-action@v4
with:
version: ${{ matrix.v-version }}
- run: v test .
```
If you want to install module dependencies from `v.mod` automatically, run this action after checking out the sources.
## Inputs
The following parameters can be specified using the `with` object:
### version
Type: `String`<br>
Default: `latest`
One of the following values is supported:
* `master` - built from the most recent commit to the `master` branch
* `weekly` - downloaded from the most recent weekly release (default)
* `latest` - downloaded from the most recent (semantic) version release
* `vX.Y.Z` or `X.Y.Z` - downloaded from a specific (semantic) version release
* `<commit hash>` - built from a specific commit
The initial default - `weekly` was changed to `latest`. V stopped releasing the regular weekly releases after 0.5. The versioned releases became more recent tha the development releases.
### use-cache
Type: `Boolean`<br>
Default: `true`
Set to `false` to ignore the cache and always perform the full installation, either by downloading and unpacking a binary, or by downloading sources and building. The default is `true`.
### force-build
Type: `Boolean`<br>
Default: `false`
Set to `true` to always build V from sources, even if the binary archive is available. The default is `false`.
### install-dependencies
Type: `Boolean`<br>
Default: `true`
Set to `false` to prevent module dependencies from `v.mod` from being installed automatically. The default is `true`.
### global-dependencies
Type: `Boolean`<br>
Default: `true`
Set to `false` to install module dependencies from `v.mod` to `./modules` instead of to `~/.vmodules`.
### modules-dir
Type: `String`<br>
Default: `src/modules` or `modules`
Set the directory for the locally installed dependencies. It is `src/modules` if `src` exists, otherwise `modules`.
### token
Type: `String`<br>
Default: `${{ github.token }}`
Authorization token to inspect releases and commits in the `vlang/v` repository. Either a GitHub personal access token or the GitHub workflow token. If not provided, the environment variable `GITHUB_TOKEN` will be used as a fallback. And if even that is not set, the GitHub workflow token from the action-execution context will be used as default.
## Outputs
The following parameters can be accessed by the `github` context:
### version
Type: `String`<br>
The actually installed version of V, as returned by `v -V`, for example: `V 0.3.4 046dd54`.
### bin-path
Type: `String`<br>
The complete path to the directory with the V compiler.
### v-bin-path
Type: `String`<br>
The complete path to the V compiler executable.
### used-cache
Type: `Boolean`<br>
A boolean value indicating if the installation succeeded from the cache.
### was-built
Type: `Boolean`<br>
A boolean value indicating if the V compiler was built from sources.
## License
Copyright (C) 2023-2026 Ferdinand Prantl
Licensed under the [MIT License].
[MIT License]: http://en.wikipedia.org/wiki/MIT_License