An open API service indexing awesome lists of open source software.

https://github.com/junobuild/juno-action

GitHub Action for interacting with Juno
https://github.com/junobuild/juno-action

github github-actions juno

Last synced: about 2 months ago
JSON representation

GitHub Action for interacting with Juno

Awesome Lists containing this project

README

          

# Juno Action

This GitHub Action for [Juno] enables arbitrary actions with the [command-line client](https://github.com/junobuild/cli).

## Authentication

The action supports two authentication methods:

### 1. GitHub OIDC (Recommended)

Authenticate automatically using GitHub's OpenID Connect tokens. No secrets required!

**Requirements:**

- Add `id-token: write` permission to your workflow
- Configure your Satellite to support automation

**Example configuration:**

```typescript
import { defineConfig } from "@junobuild/config";

export default defineConfig({
satellite: {
ids: {
development: "",
production: ""
},
automation: {
github: {
repositories: [
{
owner: "your-org", // or user name, e.g. peterpeterparker
name: "your-repo",
refs: [] // Optional: restrict to specific refs, e.g. ["refs/heads/main"]
}
]
}
}
}
});
```

**Workflow example:**

```yaml
name: Deploy to Juno

on:
workflow_dispatch:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest

permissions:
id-token: write # Required for GitHub OIDC
contents: read

steps:
- name: Check out the repo
uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24
registry-url: "https://registry.npmjs.org"

- name: Install Dependencies
run: npm ci

- name: Deploy to Juno
uses: junobuild/juno-action
with:
args: hosting deploy
```

### 2. Token Authentication (Legacy)

Use a manually generated token from Juno's console. Prefer an access key with "Read-write" permission rather than administrator.

```yaml
name: Deploy to Juno

on:
workflow_dispatch:
push:
branches: [main]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4

- uses: actions/setup-node@v4
with:
node-version: 24
registry-url: "https://registry.npmjs.org"

- name: Install Dependencies
run: npm ci

- name: Deploy to Juno
uses: junobuild/juno-action
with:
args: hosting deploy
env:
JUNO_TOKEN: ${{ secrets.JUNO_TOKEN }}
```

## Configuration

- `PROJECT_PATH` - **Optional**. The path to the folder containing `juno.config.ts|js|json` if it doesn't exist at the root of your repository. e.g. `./my-app`.

## Available Action Versions

You can choose from several action variants depending on your needs:

| Version tag | Description |
|----------------------|---------------------------------------------------------------------|
| `@main` or no tag | Defaults to the **slim** image |
| `@slim` | Explicitly use the **slim** image |
| `@full` | Use the **full** image |
| `@vX.Y.Z` | Specific version tag for **slim** |
| `@vX.Y.Z-slim` | Versioned **slim** image |
| `@vX.Y.Z-full` | Versioned **full** image |

The **slim** image does not include the Rust toolchain or tools required to build serverless functions. It is smaller in size and suitable for most CLI use cases.

The **full** image includes the Rust toolchain and all necessary tools for building serverless functions, resulting in a larger image size.

## License

MIT © [David Dal Busco](mailto:david.dalbusco@outlook.com)

[juno]: https://juno.build