This GitHub Action for Juno enables arbitrary actions with the command-line client.
The action supports two authentication methods:
Authenticate automatically using GitHub's OpenID Connect tokens. No secrets required!
Requirements:
- Add
id-token: writepermission to your workflow - Configure your Satellite to support automation
Example configuration:
import { defineConfig } from "@junobuild/config";
export default defineConfig({
satellite: {
ids: {
development: "<DEV_SATELLITE_ID>",
production: "<PROD_SATELLITE_ID>"
},
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:
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 deployUse a manually generated token from Juno's console. Prefer an access key with "Read-write" permission rather than administrator.
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 }}PROJECT_PATH- Optional. The path to the folder containingjuno.config.ts|js|jsonif it doesn't exist at the root of your repository. e.g../my-app.
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.
MIT © David Dal Busco