🚀 Build and Publish Serverless Functions with GitHub Actions

Hey :waving_hand:

I figured this deserved its own thread.

As part of the latest Juno release, I’m excited to share that developers can now build and publish serverless functions directly from GitHub Actions - without giving up control or needing a DevOps degree to make it work!

Since we’re on an ICP-dedicated forum, let me put it this way:

You can now build and publish canisters from GitHub Actions without storing a controller in GitHub or writing a hundred-line YAML file.

And the cherry on top?

Everything is handled through the CLI. So if you prefer local development or don’t want to use GitHub runners, that’s totally fine. No lock-in. No enforced reliance on Web2 infrastructure, that is not the spirit.

Here’s what it looks like in action:

name: Publish Serverless Functions

on:
  workflow_dispatch:
  push:
    branches: [main]

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

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

      - name: Install Dependencies
        run: npm ci

      - name: Build
        uses: junobuild/juno-action@full
        with:
          args: functions build

      - name: Publish
        uses: junobuild/juno-action@full
        with:
          args: functions publish --no-apply
        env:
          JUNO_TOKEN: ${{ secrets.JUNO_TOKEN }}

Enjoy—and as always, feedback welcome!

Announcement blog post :backhand_index_pointing_right: https://juno.build/blog/serverless-functions-github-actions

4 Likes

I can confirm that it works perfectly — a great addition to the already impressive Juno platform!:rocket::clap:

1 Like