Skip to content

ci: automate IntentCall pub.dev publishing#3

Merged
Arenukvern merged 3 commits into
mainfrom
codex/auto-publish-intentcall-packages
Jun 22, 2026
Merged

ci: automate IntentCall pub.dev publishing#3
Arenukvern merged 3 commits into
mainfrom
codex/auto-publish-intentcall-packages

Conversation

@Arenukvern

@Arenukvern Arenukvern commented Jun 22, 2026

Copy link
Copy Markdown
Owner

Summary

  • add manifest-driven Release Please for the linked IntentCall package train, including intentcall_session
  • add tag-triggered pub.dev publishing for intentcall_*-v* component tags
  • add a repo-native publish-tag command, just targets, tests, and publishing docs

Stacking

This branch was created from chore/adopt-steward-governance and should stack on PR #2: #2. If PR #2 changes before merge, rebase this branch on the updated PR #2 head.

Validation

  • steward doctor --json
  • steward actions list --json
  • steward action inspect intentcall.validate --json
  • steward action inspect intentcall.adapter-contract-test --json
  • steward probe --json --profile quick
  • steward benchmark --scenario intentcall.adapter-contract --json
  • dart analyze . (exits 0; reports one existing info-level lint in packages/intentcall_schema/lib/src/agent_result_envelope.dart)
  • dart test tool/intentcall
  • just test
  • just publish-tag-dry-run intentcall_session-v0.1.0
  • just publish-dry-run-ignore-warnings

Required setup before automatic publishing works

  • Configure RELEASE_PLEASE_TOKEN; relying on GITHUB_TOKEN may create tags without triggering downstream publish workflows.
  • Create/protect the GitHub Actions environment pub.dev.
  • Enable pub.dev automated publishing for every intentcall_* package with tag pattern <package>-v{{version}} and environment pub.dev.
  • No long-lived pub.dev token is required in GitHub Actions; publishing uses OIDC.

No actual publish was run.

Summary by CodeRabbit

  • New Features

    • Automated package release and publishing workflow is now active via Release Please and GitHub Actions.
  • Documentation

    • Added comprehensive release and publish runbook documentation.
    • Added runnable session example with step-by-step usage guide.
    • Clarified that the Gemma adapter package is example-only and excluded from pub.dev publishing.
  • Chores

    • Configured automated release and publishing workflows for supported packages.

@docs-page

docs-page Bot commented Jun 22, 2026

Copy link
Copy Markdown

To preview the documentation for this pull request, visit the following URL:

docs.page/arenukvern/intentcall~3

Documentation is deployed and generated using docs.page

@coderabbitai

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fdb56675-9f98-46c7-80ac-f2fc24f54630

📥 Commits

Reviewing files that changed from the base of the PR and between 495b419 and 142b84e.

📒 Files selected for processing (16)
  • .github/workflows/pub_publish.yml
  • .github/workflows/release-please.yml
  • .release-please-manifest.json
  • PUBLISHING.md
  • docs/DX_FAQ.mdx
  • justfile
  • packages/intentcall_gemma/CHANGELOG.md
  • packages/intentcall_gemma/README.md
  • packages/intentcall_gemma/pubspec.yaml
  • packages/intentcall_session/CHANGELOG.md
  • packages/intentcall_session/README.md
  • packages/intentcall_session/example/session_example.dart
  • packages/intentcall_session/pubspec.yaml
  • release-please-config.json
  • tool/intentcall/bin/intentcall.dart
  • tool/intentcall/test/publish_preflight_test.dart

📝 Walkthrough

Walkthrough

Introduces automated release tooling: a release-please GitHub Actions workflow with linked-version config, a publish-tag CLI subcommand with preflight checks and pub.dev polling, a tag-triggered pub_publish workflow, intentcall_gemma marked publish_to: none and removed from the publish train, a new intentcall_session runnable example, and updated documentation.

Changes

Release Automation Pipeline

Layer / File(s) Summary
Release-please config, manifest, and workflow
release-please-config.json, .release-please-manifest.json, .github/workflows/release-please.yml
Adds grouped release config with linked-versions plugin, populates the manifest with 0.1.0 for all intentcall_* packages, and introduces the release-please workflow triggered on main pushes.
publish-tag CLI command and PackageRelease type
tool/intentcall/bin/intentcall.dart, tool/intentcall/test/publish_preflight_test.dart
Adds the PackageRelease data class, tag parsing, semver validation, static preflight checks, same-train dependency waiting, pub.dev polling, CLI argument parsing and dispatcher for publish-tag, and removes intentcall_gemma from publishOrder. Tests cover tag parsing and same-train dependency detection.
pub_publish GitHub Actions workflow and just targets
.github/workflows/pub_publish.yml, justfile
Adds the tag-triggered publish workflow (OIDC, intentcall_*-v* pattern, conditional execution on push) and two just targets (publish-tag-dry-run, publish-tag-execute) for local and CI use.
intentcall_gemma exclusion from publish train
packages/intentcall_gemma/pubspec.yaml, packages/intentcall_gemma/CHANGELOG.md, packages/intentcall_gemma/README.md
Adds publish_to: none to pubspec.yaml, updates description, adds a changelog bullet, and expands the README to explain the package's example-only workspace role.
intentcall_session runnable example
packages/intentcall_session/example/session_example.dart, packages/intentcall_session/pubspec.yaml, packages/intentcall_session/CHANGELOG.md, packages/intentcall_session/README.md
Adds session_example.dart demonstrating registry setup, session start, tool invocation, snapshot diffing, and an ExampleConnector implementation. Updates README with an example pointer and "Run the example" section; updates CHANGELOG and pubspec description.
Documentation
PUBLISHING.md, docs/DX_FAQ.mdx
Documents the automated release flow, GitHub/pub.dev configuration requirements (token, OIDC, environment, tag patterns), tag-based publish commands, and explicit intentcall_gemma exclusion notes.

Sequence Diagram(s)

sequenceDiagram
  rect rgba(173, 216, 230, 0.5)
    note over Developer,pub.dev: Automated Release Train
    Developer->>main: Push conventional commits
    main->>release-please-action: Trigger release-please.yml
    release-please-action->>Release PR: Open/update grouped PR (linked versions)
    Developer->>Release PR: Merge
    Release PR->>Component Tags: Generate intentcall_*-v* tags
  end

  rect rgba(144, 238, 144, 0.5)
    note over Component Tags,pub.dev: Tag-triggered Publish
    Component Tags->>pub_publish.yml: Trigger on tag push
    pub_publish.yml->>intentcall CLI: dart pub get + release preflight
    intentcall CLI->>pub.dev API: packageHasVersion (skip-existing check)
    pub_publish.yml->>intentcall CLI: publish-tag --execute
    intentcall CLI->>pub.dev API: poll waitForReleaseDependencies
    pub.dev API-->>intentcall CLI: dependencies live
    intentcall CLI->>pub.dev API: dart pub publish --force (OIDC)
    intentcall CLI->>pub.dev API: waitForPubVersion poll
    pub.dev API-->>intentcall CLI: version confirmed live
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Poem

🐇 Hop, hop, a tag is born!
Release Please cuts the PR corn,
publish-tag polls the pub.dev skies,
Gemma steps aside — how wise!
The session example shows the way,
the bunny ships a fine release today. 🚀

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/auto-publish-intentcall-packages

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Arenukvern

Copy link
Copy Markdown
Owner Author

Automatic publishing setup status

Completed via pub.dev admin + GitHub API:

  • Enabled pub.dev GitHub Actions automated publishing for existing packages:
    • intentcall_schema -> intentcall_schema-v{{version}}
    • intentcall_core -> intentcall_core-v{{version}}
    • intentcall_mcp -> intentcall_mcp-v{{version}}
    • intentcall_webmcp -> intentcall_webmcp-v{{version}}
    • intentcall_apple -> intentcall_apple-v{{version}}
    • intentcall_android -> intentcall_android-v{{version}}
    • intentcall_codegen -> intentcall_codegen-v{{version}}
    • intentcall_platform -> intentcall_platform-v{{version}}
    • intentcall_testing -> intentcall_testing-v{{version}}
  • Required GitHub Actions environment pub.dev is created for Arenukvern/intentcall.

Still blocked before fully automatic publishing can cover the whole train:

  • intentcall_session and intentcall_gemma do not exist on pub.dev yet. Pub.dev only supports automated publishing for existing packages, so each needs one initial manual publish before its automated publishing setting can be enabled.
  • RELEASE_PLEASE_TOKEN still needs to be configured as a repo secret. I did not copy the local GitHub CLI token into that secret.

No package publish was run.

@Arenukvern

Copy link
Copy Markdown
Owner Author

intentcall_session first publish complete

Completed:

  • Prepared packages/intentcall_session for pub.dev with a polished pubspec description, README guidance, changelog note, and runnable example/session_example.dart.
  • Published intentcall_session 0.1.0 to pub.dev.
  • Enabled pub.dev GitHub Actions automated publishing for intentcall_session with:
    • repository: Arenukvern/intentcall
    • tag pattern: intentcall_session-v{{version}}
    • push events enabled
    • required environment: pub.dev

Validation before publish:

  • dart analyze packages/intentcall_session
  • dart run packages/intentcall_session/example/session_example.dart
  • dart pub publish --dry-run -C packages/intentcall_session
  • dart analyze . (exits 0; existing info lint remains in intentcall_schema)
  • just test
  • steward probe --json --profile quick
  • steward benchmark --scenario intentcall.adapter-contract --json

Remaining package outside this request: intentcall_gemma still does not exist on pub.dev, so its automated publishing cannot be enabled until its first manual publish.

@Arenukvern Arenukvern marked this pull request as ready for review June 22, 2026 23:12
@Arenukvern Arenukvern merged commit 9d64424 into main Jun 22, 2026
1 of 2 checks passed
@Arenukvern Arenukvern deleted the codex/auto-publish-intentcall-packages branch June 22, 2026 23:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant