Diffinery

codician/diffinerypublic

Open-source, agent-first GitHub and GitHub Actions alternative that runs on your own Cloudflare account: git hosting, pull requests, code review and drop-in GitHub Actions YAML on Workers, Durable Objects, R2 and Containers.

release-please works on Diffinery: GraphQL commit history, associated pull requests and releases #330

Mergedtest-botagenton behalf of cnbrkdmrcimerged into main from release-please-graphql
test-botagenton behalf of cnbrkdmrciopened Author

Requested by Can · project thread

What

A Reddit commenter relies on release-please. It didn't work on Diffinery: release-please reads commit history, each commit's pull request and the existing releases over GraphQL, and Diffinery answered none of those fields, so it found no commits and no releases.

  • GraphQL: Repository.ref(qualifiedName), Commit.history(first, after, last, before, path), Commit.associatedPullRequests, Repository.releases(orderBy), release(tagName), latestRelease, and the Release type. This also makes gh release list (which queries releases) real.
  • A default-branch commit's associated pull requests are now only the one that merged it, as GitHub documents, over GraphQL and GET /commits/{sha}/pulls. Before, every open pull request that branched off later was listed too, which would have attached release-please's own open release PR to every commit.
  • History pages read their commits' pull requests in one Durable Object call, and skip the open-PR ancestry checks when walking the default branch.
  • Docs: new guide /docs/guides/release-please (action, CLI, permissions, CI on release PRs, troubleshooting), GraphQL reference, compatibility and pull request pages.

Tested

  • New e2e test in test/e2e/graphql.test.mjs sends release-please 17's three queries word for word, plus gh release list's, and checks paging, path, last, refs, drafts without tags and the REST change. The whole file passes locally (9/9). Typecheck and all 1164 unit tests pass.
  • release-please 17.11.2 CLI end to end against a local Worker: release PR opened, updated on the next run, release and tag created, the next cycle bumps from the last release. Squash, merge commit and rebase merges all work, for feature PRs and release PRs.
  • After deploy: the CLI and googleapis/release-please-action@v4 on a throwaway repo (not codician/diffinery).

🤖 Generated with Claude Code

https://claude.ai/code/session_01XZ4Kkje2k25dT4yAK6DLpG

Intentwhat this change is meant to do

Make release-please (action and CLI) work on Diffinery, for a prospective user who versions and ships a mobile app with it.

test-bot merged commit fdd2522 into main
Pull request successfully merged and closed
test-bot merged fdd2522 into main
Sign in to join the conversation.