72 lines
1.4 KiB
Markdown
72 lines
1.4 KiB
Markdown
# Hero Runner
|
|
|
|
Executes heroscripts using the Hero CLI tool.
|
|
|
|
## Overview
|
|
|
|
The Hero runner pipes job payloads directly to `hero run -s` via stdin, making it ideal for executing Hero automation tasks and heroscripts.
|
|
|
|
## Features
|
|
|
|
- **Heroscript Execution**: Direct stdin piping to `hero run -s`
|
|
- **No Temp Files**: Secure execution without filesystem artifacts
|
|
- **Environment Variables**: Full environment variable support
|
|
- **Timeout Support**: Respects job timeout settings
|
|
- **Signature Verification**: Cryptographic job verification
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Start the runner
|
|
herorunner my-hero-runner
|
|
|
|
# With custom Redis
|
|
herorunner my-hero-runner --redis-url redis://custom:6379
|
|
```
|
|
|
|
## Job Payload
|
|
|
|
The payload should contain the heroscript content:
|
|
|
|
```heroscript
|
|
!!git.list
|
|
print("Repositories listed")
|
|
!!docker.ps
|
|
```
|
|
|
|
## Examples
|
|
|
|
### Simple Print
|
|
```heroscript
|
|
print("Hello from heroscript!")
|
|
```
|
|
|
|
### Hero Actions
|
|
```heroscript
|
|
!!git.list
|
|
!!docker.start name:"myapp"
|
|
```
|
|
|
|
### With Environment Variables
|
|
```json
|
|
{
|
|
"payload": "print(env.MY_VAR)",
|
|
"env_vars": {
|
|
"MY_VAR": "Hello World"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Requirements
|
|
|
|
- `hero` CLI must be installed and in PATH
|
|
- Redis server accessible
|
|
- Valid job signatures
|
|
|
|
## Error Handling
|
|
|
|
- **Hero CLI Not Found**: Returns error if `hero` command unavailable
|
|
- **Timeout**: Kills process if timeout exceeded
|
|
- **Non-zero Exit**: Returns error with hero CLI output
|
|
- **Invalid Signature**: Rejects job before execution
|