v0.0.69
Summary
This release brings two major additions to the GitHub integration and a set of general improvements.
Automation
This release shifts the recommended approach for allowing GitHub Actions to deploy your frontend or publish serverless functions by removing the need to store a JUNO_TOKEN in your GitHub secrets.
The new method uses OpenID Connect (OIDC) to establish a relationship between GitHub and your Satellite, so each workflow run gets short-lived credentials (access keys) automatically.
No tokens to rotate, no secrets to manage, and therefore more secure.
In addition, a new Deployments screen in the Console UI lets you specify which repositories are authorized to deploy and provides an overview of past deployments.
The same configuration can of course also be applied using the CLI which has also been upgraded to support this new feature.
Authentication
This release also adds support for GitHub authentication, letting you add GitHub sign-in to your application.
Note that unlike other authentication methods, this requires deploying and running a self-hosted API.
Various Improvements
On top of that, several improvements come with this release. While not yet available in the Console, this includes support for access keys with expiration times (applicable to the Submitter and Editor roles, but not Admin), which was developed for the new automation flow (for security reasons).
Overview
| Module | Version | Breaking changes |
|---|---|---|
| Console | v0.4.1 | ️ |
| Observatory | v0.5.1 | ️ |
| Satellite | v0.2.0 | ⚠️️ |
| Sputnik | v0.2.0 | ⚠️️ ️ |
[!NOTE] Satellite and Sputnik are tagged as "breaking changes" but contain no fundamental API changes. Their versions were primarily bumped for traceability reasons only.
| Crates | Version | Breaking changes |
|---|---|---|
junobuild-auth | 0.3.1 | ⚠️ |
junobuild-cdn | 0.6.0 | ⚠️ |
junobuild-collections | 0.4.0 | ⚠️ |
junobuild-satellite | 0.5.0 | ⚠️ |
junobuild-shared | 0.7.0 | ⚠️️ |
junobuild-storage | 0.6.0 | ⚠️️️ |
| Library | Version | Breaking changes |
|---|---|---|
@junobuild/admin | v4.1.0 | ⚠️ |
@junobuild/analytics | v0.2.11 | |
@junobuild/auth | v4.0.0 | ⚠️ |
@junobuild/cdn | v2.3.0 | |
@junobuild/cli-tools | v0.10.2 | |
@junobuild/config | v2.11.0 | |
@junobuild/config-loader | v0.4.8 | |
@junobuild/core | v5.2.0 | ⚠️ |
@junobuild/core-standalone | v5.2.0 | ⚠️ |
@junobuild/did-tools | v0.3.9 | |
@junobuild/errors | v0.2.3 | |
@junobuild/functions | v0.5.6 | |
@junobuild/ic-client | v8.0.0 | ️ |
@junobuild/storage | v2.3.0 | |
@junobuild/utils | v0.2.6 |
| CLI | Version | Breaking changes |
|---|---|---|
@junobuild/cli | v0.13.12 |
| Plugins | Version | Breaking changes |
|---|---|---|
@junobuild/vite-plugin | v4.7.0 | |
@junobuild/nextjs-plugin | v4.7.0 |
| Docker | Version | Breaking changes |
|---|---|---|
@junobuild/skylab | v0.5.2 | |
@junobuild/satellite | v0.5.2 | |
@junobuild/console | v0.5.2 |
| GitHub Action | Version | Breaking changes |
|---|---|---|
junobuild/juno-action | v0.6.3 |
Serverless Functions
You can upgrade your Rust Serverless Functions using the following crates:
[dependencies]
candid = "0.10.20"
ic-cdk = "0.19.0"
ic-cdk-macros = "0.19.0"
serde = "1.0.225"
serde_cbor = "0.11.2"
junobuild-satellite = "0.5.0"
junobuild-macros = "0.2.0"
junobuild-utils = "0.2.0"
What's Changed
- feat(storage): support HEAD requests by @peterpeterparker in https://github.com/junobuild/juno/pull/2564
- feat(shared): optional controller kind by @peterpeterparker in https://github.com/junobuild/juno/pull/2566
- feat(frontend): access key type display and kind emulator by @peterpeterparker in https://github.com/junobuild/juno/pull/2567
- feat(shared)!: rename is_controller to is_valid_controller by @peterpeterparker in https://github.com/junobuild/juno/pull/2569
- test(shared): controllers with cargo mock by @peterpeterparker in https://github.com/junobuild/juno/pull/2570
- refactor(satellite): rename guard is_controller with valid keyword by @peterpeterparker in https://github.com/junobuild/juno/pull/2571
- feat(shared): ephemeral access keys - assertion on expires_at by @peterpeterparker in https://github.com/junobuild/juno/pull/2572
- feat(core): assert set controller expires_at by @peterpeterparker in https://github.com/junobuild/juno/pull/2573
- feat(shared)!: limit access keys submit and editors to 20 by @peterpeterparker in https://github.com/junobuild/juno/pull/2574
- feat(auth): rename assert_custom by @peterpeterparker in https://github.com/junobuild/juno/pull/2575
- refactor(auth)!: rename set_config into set_authentication_config by @peterpeterparker in https://github.com/junobuild/juno/pull/2576
- feat(frontend): remove Internet Identity for local dev by @peterpeterparker in https://github.com/junobuild/juno/pull/2577
- test(e2e): remove Internet Identity by @peterpeterparker in https://github.com/junobuild/juno/pull/2578
- feat(frontend): animated welcome test by @peterpeterparker in https://github.com/junobuild/juno/pull/2579
- feat(frontend): use user name for greetings by @peterpeterparker in https://github.com/junobuild/juno/pull/2580
- feat(frontend): derive provider data by @peterpeterparker in https://github.com/junobuild/juno/pull/2581
- feat(frontend): hide sign-in methods not dev for skylab by @peterpeterparker in https://github.com/junobuild/juno/pull/2582
- refactor(frontend): split animated text loader by @peterpeterparker in https://github.com/junobuild/juno/pull/2583
- feat(auth): delegate nonce check to openid implementation by @peterpeterparker in https://github.com/junobuild/juno/pull/2584
- feat(auth): add GitHub Actions to the OpenId provider list by @peterpeterparker in https://github.com/junobuild/juno/pull/2585
- feat(observatory): fetch github actions openid certificate by @peterpeterparker in https://github.com/junobuild/juno/pull/2586
- feat(auth,satellite): automation configuration by @peterpeterparker in https://github.com/junobuild/juno/pull/2588
- feat(auth): use a standardized trait to read nonce instead of passing function by @peterpeterparker in https://github.com/junobuild/juno/pull/2589
- feat(auth): authenticate automation by @peterpeterparker in https://github.com/junobuild/juno/pull/2539
- build(backend): Update Rust version by @github-actions[bot] in https://github.com/junobuild/juno/pull/2590
- feat(satellite): del_controller_self to remove automation key by @peterpeterparker in https://github.com/junobuild/juno/pull/2591
- feat(auth): use refs instead of branches in automation config by @peterpeterparker in https://github.com/junobuild/juno/pull/2592
- feat(satellite): more workflow metadata by @peterpeterparker in https://github.com/junobuild/juno/pull/2593
- refactor(frontend): move auth config services to satellite by @peterpeterparker in https://github.com/junobuild/juno/pull/2595
- feat(frontend): init new "Deployments" page by @peterpeterparker in https://github.com/junobuild/juno/pull/2594
- feat(frontend): create automation config by @peterpeterparker in https://github.com/junobuild/juno/pull/2596
- feat(frontend): provider github actions snippet on automation configuration by @peterpeterparker in https://github.com/junobuild/juno/pull/2597
- feat(frontend): github user details by @peterpeterparker in https://github.com/junobuild/juno/pull/2598
- refactor(frontend): extract reusable list docs service by @peterpeterparker in https://github.com/junobuild/juno/pull/2600
- feat(frontend): extract reusable list context by @peterpeterparker in https://github.com/junobuild/juno/pull/2602
- feat(frontend): list workflows by @peterpeterparker in https://github.com/junobuild/juno/pull/2599
- refactor(frontend): re-group components into structured topics by @peterpeterparker in https://github.com/junobuild/juno/pull/2603
- fix(frontend): link to home by @peterpeterparker in https://github.com/junobuild/juno/pull/2605
- feat(frontend): satellite config loader by @peterpeterparker in https://github.com/junobuild/juno/pull/2604
- feat(frontend): use derived automation config by @peterpeterparker in https://github.com/junobuild/juno/pull/2606
- feat(frontend): use global satellite config in hosting by @peterpeterparker in https://github.com/junobuild/juno/pull/2607
- feat(frontend): use global satellite config in authentication by @peterpeterparker in https://github.com/junobuild/juno/pull/2608
- refactor(frontend): extract duration constants by @peterpeterparker in https://github.com/junobuild/juno/pull/2611
- feat(frontend): automation keys config by @peterpeterparker in https://github.com/junobuild/juno/pull/2610
- feat(frontend): configure automation repositories by @peterpeterparker in https://github.com/junobuild/juno/pull/2612
- feat(frontend): Confirmation component to Svelte v5 callbacks by @peterpeterparker in https://github.com/junobuild/juno/pull/2613
- refactor(frontend): rename SignInOpenIdProvider to OpenIdAuthProvider by @peterpeterparker in https://github.com/junobuild/juno/pull/2615
- feat(frontend): GitHub authentication configuration by @peterpeterparker in https://github.com/junobuild/juno/pull/2614
- feat(frontend): config automation disabled in skylab by @peterpeterparker in https://github.com/junobuild/juno/pull/2616
- build(frontend): use released Juno JS libs by @peterpeterparker in https://github.com/junobuild/juno/pull/2618
- chore(release): set crates version for v69 by @peterpeterparker in https://github.com/junobuild/juno/pull/2619
- chore(crates): clippy by @peterpeterparker in https://github.com/junobuild/juno/pull/2621
- chore(release): set module (console, satellite and sputnik) versions by @peterpeterparker in https://github.com/junobuild/juno/pull/2620
- chore(release): publish auth and satellite crates by @peterpeterparker in https://github.com/junobuild/juno/pull/2623
- feat(frontend): list workflows key and custom ordering by @peterpeterparker in https://github.com/junobuild/juno/pull/2622
Full Changelog: https://github.com/junobuild/juno/compare/v0.0.68...v0.0.69