|
3 | 3 |
|
4 | 4 | [](https://elide.dev) |
5 | 5 | [](https://github.com/elide-dev/setup-elide/actions) |
6 | | -[](https://codecov.io/gh/elide-dev/setup-elide) |
| 6 | +[](https://codecov.io/gh/elide-dev/setup-elide) |
7 | 7 | [](.github/CODE_OF_CONDUCT.md) |
8 | 8 |
|
9 | | -This repository provides a [GitHub Action][0] to setup the [Elide][1] runtime within your workflows. |
| 9 | +This repository provides a [GitHub Action][0] to install the [Elide][1] runtime within your workflows. |
10 | 10 |
|
11 | | -## Usage |
| 11 | +## Quick Start |
12 | 12 |
|
13 | | -**Install the latest Elide version and add it to the `PATH`** |
14 | 13 | ```yaml |
15 | | - - name: "Setup: Elide" |
16 | | - uses: elide-dev/setup-elide@v2 |
| 14 | +- name: "Setup: Elide" |
| 15 | + uses: elide-dev/setup-elide@v4 |
17 | 16 | ``` |
18 | 17 |
|
19 | | -**Install a specific Elide version and add it to the `PATH`** |
| 18 | +This installs the latest nightly build of Elide and adds it to the `PATH`. |
| 19 | + |
| 20 | +## Usage Examples |
| 21 | + |
| 22 | +**Install a specific version** |
| 23 | +```yaml |
| 24 | +- name: "Setup: Elide" |
| 25 | + uses: elide-dev/setup-elide@v4 |
| 26 | + with: |
| 27 | + version: 1.0.0 |
| 28 | + channel: release |
| 29 | +``` |
| 30 | + |
| 31 | +**Install via apt on Debian/Ubuntu** |
| 32 | +```yaml |
| 33 | +- name: "Setup: Elide" |
| 34 | + uses: elide-dev/setup-elide@v4 |
| 35 | + with: |
| 36 | + installer: apt |
| 37 | +``` |
| 38 | + |
| 39 | +**Install via shell script (uses GitHub Releases for faster downloads in GHA)** |
| 40 | +```yaml |
| 41 | +- name: "Setup: Elide" |
| 42 | + uses: elide-dev/setup-elide@v4 |
| 43 | + with: |
| 44 | + installer: shell |
| 45 | +``` |
| 46 | + |
| 47 | +**Install via PKG on macOS** |
| 48 | +```yaml |
| 49 | +- name: "Setup: Elide" |
| 50 | + uses: elide-dev/setup-elide@v4 |
| 51 | + with: |
| 52 | + installer: pkg |
| 53 | +``` |
| 54 | + |
| 55 | +**Install without adding to PATH** |
20 | 56 | ```yaml |
21 | | - - name: "Setup: Elide" |
22 | | - uses: elide-dev/setup-elide@v2 |
23 | | - with: |
24 | | - version: 1.0.0-beta1 # any tag from the `elide-dev/releases` repo; omit for latest |
| 57 | +- name: "Setup: Elide" |
| 58 | + uses: elide-dev/setup-elide@v4 |
| 59 | + with: |
| 60 | + export_path: false |
25 | 61 | ``` |
26 | 62 |
|
27 | | -**Install Elide but don't add it to the `PATH`** |
| 63 | +**Use outputs in subsequent steps** |
28 | 64 | ```yaml |
29 | | - - name: "Setup: Elide" |
30 | | - uses: elide-dev/setup-elide@v2 |
31 | | - with: |
32 | | - export_path: false |
| 65 | +- name: "Setup: Elide" |
| 66 | + id: setup-elide |
| 67 | + uses: elide-dev/setup-elide@v4 |
| 68 | +
|
| 69 | +- name: "Check" |
| 70 | + run: | |
| 71 | + echo "Installed: ${{ steps.setup-elide.outputs.version }}" |
| 72 | + echo "Path: ${{ steps.setup-elide.outputs.path }}" |
| 73 | + echo "Cached: ${{ steps.setup-elide.outputs.cached }}" |
| 74 | + echo "Installer: ${{ steps.setup-elide.outputs.installer }}" |
33 | 75 | ``` |
34 | 76 |
|
35 | | -## Options |
| 77 | +## Inputs |
36 | 78 |
|
37 | | -The full suite of available options are below. |
| 79 | +| Input | Type | Default | Description | |
| 80 | +|---|---|---|---| |
| 81 | +| `version` | `string` | `latest` | Version to install, or `latest` for the newest release | |
| 82 | +| `channel` | `string` | `nightly` | Release channel: `nightly`, `preview`, or `release` | |
| 83 | +| `installer` | `string` | `archive` | Installation method (see [Installers](#installers) below) | |
| 84 | +| `os` | `string` | _(auto)_ | Target OS override | |
| 85 | +| `arch` | `string` | _(auto)_ | Target architecture override | |
| 86 | +| `install_path` | `string` | _(conventional)_ | Custom install directory | |
| 87 | +| `force` | `boolean` | `false` | Force installation even if Elide is already installed | |
| 88 | +| `export_path` | `boolean` | `true` | Add Elide to the `PATH` | |
| 89 | +| `no_cache` | `boolean` | `false` | Disable the GitHub Actions tool cache | |
| 90 | +| `telemetry` | `boolean` | `true` | Enable anonymous error telemetry ([details](#telemetry)) | |
| 91 | +| `token` | `string` | `${{ github.token }}` | GitHub token for API requests | |
| 92 | +| `custom_url` | `string` | | Custom download URL (overrides all other download logic) | |
| 93 | +| `version_tag` | `string` | | Version tag to use with a custom download URL | |
38 | 94 |
|
39 | | -| Option | Type | Default | Description | |
40 | | -| ------------- | ------------ | ------------------------- | -------------------------------------------- | |
41 | | -| `version` | `string` | `latest` | Version to install; defaults to `latest` | |
42 | | -| `os` | `string` | (Current) | OS to target; defaults to current platform | |
43 | | -| `arch` | `string` | (Current) | Arch to target; defaults to current platform | |
44 | | -| `force` | `boolean` | `false` | Force installation over existing binary | |
45 | | -| `prewarm` | `boolean` | `true` | Warm up the runtime after installing | |
46 | | -| `token` | `string` | `${{ env.GITHUB_TOKEN }}` | GitHub token to use for fetching assets | |
47 | | -| `export_path` | `boolean` | `true` | Whether to install Elide onto the `PATH` | |
| 95 | +## Outputs |
48 | 96 |
|
49 | | -**Options for `os`** (support varies) |
50 | | -- `darwin`, `mac`, `macos` |
51 | | -- `windows`, `win32` |
52 | | -- `linux` |
| 97 | +| Output | Description | |
| 98 | +|---|---| |
| 99 | +| `path` | Path to the installed Elide binary | |
| 100 | +| `version` | Installed version string | |
| 101 | +| `cached` | `true` if the installation was served from the tool cache | |
| 102 | +| `installer` | The effective installer method that was used | |
53 | 103 |
|
54 | | -**Options for `arch`** (support varies) |
55 | | -- `amd64`, `x64`, `x86_64` |
56 | | -- `arm64`, `aarch64` |
| 104 | +## Installers |
57 | 105 |
|
58 | | -**Full configuration sample with defaults** |
| 106 | +The `installer` input controls how Elide is installed. The default (`archive`) downloads a prebuilt archive from the Elide CDN and caches it using the GitHub Actions tool cache. |
| 107 | + |
| 108 | +| Installer | Platforms | Description | |
| 109 | +|---|---|---| |
| 110 | +| `archive` | All | Download and extract a `.tgz`/`.txz`/`.zip` archive (default) | |
| 111 | +| `shell` | All | Run the official install script (`install.sh` or `install.ps1`) | |
| 112 | +| `apt` | Linux (Debian/Ubuntu) | Install via the Elide apt repository | |
| 113 | +| `rpm` | Linux (RHEL/Fedora) | Install via `.rpm` package | |
| 114 | +| `pkg` | macOS | Install via `.pkg` installer | |
| 115 | +| `msi` | Windows | Install via `.msi` installer | |
| 116 | + |
| 117 | +If you choose an installer that doesn't match your platform (e.g., `msi` on Linux), the action will warn and fall back to `archive`. |
| 118 | + |
| 119 | +## Supported Platforms |
| 120 | + |
| 121 | +| Platform | Architectures | |
| 122 | +|---|---| |
| 123 | +| Linux | `amd64`, `aarch64` | |
| 124 | +| macOS | `amd64`, `aarch64` | |
| 125 | +| Windows | `amd64` | |
| 126 | + |
| 127 | +**OS aliases:** `darwin`, `mac`, `macos`, `windows`, `win`, `win32`, `linux` |
| 128 | +**Arch aliases:** `amd64`, `x64`, `x86_64`, `aarch64`, `arm64` |
| 129 | + |
| 130 | +## Caching |
| 131 | + |
| 132 | +The `archive` installer uses the [GitHub Actions tool cache][4] to avoid re-downloading on subsequent runs. Cache keys are scoped by version and architecture. Set `no_cache: true` to disable caching. |
| 133 | + |
| 134 | +## Telemetry |
| 135 | + |
| 136 | +This action sends anonymous error telemetry to help the Elide team detect and fix issues at scale. **No secrets, tokens, environment variables, or personally identifiable information are ever transmitted.** Only the error message (scrubbed of sensitive values), stack trace, and action configuration (installer, os, arch, channel, version) are sent. |
| 137 | + |
| 138 | +To opt out: |
59 | 139 | ```yaml |
60 | | - - name: "Setup: Elide" |
61 | | - uses: elide-dev/setup-elide@v1 |
62 | | - with: |
63 | | - version: latest |
64 | | - os: linux |
65 | | - arch: amd64 |
66 | | - force: false |
67 | | - prewarm: true |
68 | | - export_path: true |
| 140 | +- uses: elide-dev/setup-elide@v4 |
| 141 | + with: |
| 142 | + telemetry: false |
69 | 143 | ``` |
70 | 144 |
|
71 | | -> [!IMPORTANT] |
72 | | -> Elide supports Linux on amd64 and macOS on amd64/aarch64 at this time. Windows and Linux/aarch64 support are forthcoming. |
| 145 | +## GitHub Integration |
| 146 | + |
| 147 | +This action uses GitHub Actions features to provide a polished CI experience: |
| 148 | + |
| 149 | +- **Grouped log output** -- Installation phases are wrapped in collapsible log groups |
| 150 | +- **Job summary** -- A summary table is written to the Actions Summary tab showing version, platform, installer, timing, and cache status |
| 151 | +- **Annotations** -- Errors and warnings appear as titled annotations in the Actions UI |
| 152 | +- **Rich outputs** -- Downstream steps can branch on `cached`, `installer`, `version`, and `path` |
73 | 153 |
|
74 | 154 | ## What is Elide? |
75 | 155 |
|
76 | | -Elide is a new runtime and framework designed for the polyglot era. Mix and match languages including JavaScript, Python, Ruby, and JVM, with the ability to share objects between them. It's fast: Elide can execute Python at up to 3x the speed of CPython, Ruby at up to 22x vs. CRuby, and JavaScript at up to 75x the speed of Node. Elide already beats Node, Deno, and Bun under benchmark. |
| 156 | +Elide is a new runtime and framework designed for the polyglot era. Mix and match languages including JavaScript, Python, Ruby, and JVM, with the ability to share objects between them. It's fast: Elide can execute Python at up to 3x the speed of CPython, Ruby at up to 22x vs. CRuby, and JavaScript at up to 75x the speed of Node. |
77 | 157 |
|
78 | 158 | - **Visit [elide.dev][1]**, our website, which runs on Elide |
79 | 159 | - **Watch the [launch video][2]** for demos, benchmarks, and a full feature tour |
80 | 160 | - **Join the devs on [Discord][3]**, we are always open to new ideas and feedback |
81 | 161 |
|
| 162 | +## License |
| 163 | + |
| 164 | +[MIT](.github/LICENSE) |
| 165 | + |
82 | 166 | [0]: https://github.com/features/actions |
83 | 167 | [1]: https://elide.dev |
84 | 168 | [2]: https://www.youtube.com/watch?v=Txl9ryfbCw4 |
85 | 169 | [3]: https://elide.dev/discord |
| 170 | +[4]: https://github.com/actions/toolkit/tree/main/packages/tool-cache |
0 commit comments