Skip to content

build(config): add EasyBuild.ShipIt for changelog automation - #443

Merged
halcwb merged 2 commits into
informedica:masterfrom
7sharp9:build/234-adopt-easybuild-shipit
Aug 11, 2026
Merged

build(config): add EasyBuild.ShipIt for changelog automation#443
halcwb merged 2 commits into
informedica:masterfrom
7sharp9:build/234-adopt-easybuild-shipit

Conversation

@7sharp9

@7sharp9 7sharp9 commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Registers easybuild.shipit 3.0.1 as a dotnet tool and adds the front matter ShipIt needs to CHANGELOG.md, pinning last_commit_released to current HEAD so it only picks up commits from here now, this leaves the hand-written history alone.

Testing this against our repo found a bug: ShipIt's front-matter regex only matches a literal LF delimiter, and this repo checks CHANGELOG.md out as CRLF (core.autocrlf=true). The regex misses the front matter instead of erroring, so ShipIt falls back to scanning the entire git history and crashes on the first old merge commit it hits. I forced LF on CHANGELOG.md via .gitattributes so this in not affected by a contributor's local autocrlf setting.

Also documents the local dry-run in DEVELOPMENT.md. This is not wired into CI yet and doesn't touch Directory.Build.props, these are both incremental follow-ups as per ADR-0021's implementation plan.

Refs #234

Registers easybuild.shipit 3.0.1 as a dotnet tool and adds the front matter ShipIt needs to CHANGELOG.md,
pinning last_commit_released to current HEAD so it only picks up commits from here now, this leaves the hand-written history alone.

Testing this against our repo found a bug: ShipIt's front-matter regex only matches a literal LF delimiter,
and this repo checks CHANGELOG.md out as CRLF (core.autocrlf=true). The regex misses the front matter instead
of erroring, so ShipIt falls back to scanning the entire git history and crashes on the first old merge commit it hits.
I forced LF on CHANGELOG.md via .gitattributes so this in not affected by a contributor's local autocrlf setting.

Also documents the local dry-run in DEVELOPMENT.md.
This is not wired into CI yet and doesn't touch Directory.Build.props, these are both incremental follow-ups
as per ADR-0021's implementation plan.

Refs informedica#234
Copilot AI lite review requested due to automatic review settings August 11, 2026 10:28
@greptile-apps

greptile-apps Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR registers EasyBuild.ShipIt 3.0.1, initializes its changelog metadata, and enforces LF checkout for the parser-sensitive changelog file. It also documents the local dry-run workflow while leaving CI and MSBuild version propagation to follow-up work.

  • Adds ShipIt to the repository-local .NET tool manifest.
  • Adds the initial ShipIt front matter and release-history boundary to CHANGELOG.md.
  • Forces CHANGELOG.md to LF through .gitattributes.
  • Documents local changelog previews and the currently deferred automation.

Confidence Score: 4/5

The PR appears safe to merge, with a non-blocking documentation issue affecting contributors who attempt the preview from a feature branch.

The tool registration, changelog boundary, and LF enforcement are internally consistent; only the documented preview workflow needs clarification or adjustment because its branch restriction rejects ordinary feature-branch checkouts.

Files Needing Attention: DEVELOPMENT.md

Important Files Changed

Filename Overview
.config/dotnet-tools.json Registers the pinned EasyBuild.ShipIt tool and its shipit command without an identified manifest defect.
.gitattributes Forces CHANGELOG.md to LF so ShipIt's delimiter-sensitive front-matter parser receives the expected line endings.
CHANGELOG.md Adds valid ShipIt front matter with the base commit as the initial released-history boundary.
DEVELOPMENT.md Documents the local dry-run workflow, but the command fails from feature branches without explaining that master must be checked out first.

Reviews (1): Last reviewed commit: "build(config): add EasyBuild.ShipIt for ..." | Re-trigger Greptile

Comment thread DEVELOPMENT.md

```bash
dotnet tool restore
dotnet shipit --dry-run --allow-branch master

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Preview command rejects feature branches

The documented command restricts ShipIt to master, so contributors running the preview from a normal feature-branch checkout receive a branch-not-allowed error instead of changelog output. State that the command must run from master, or adjust the preview command to permit the current branch.

Knowledge Base Used: Build and Versioning

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds local configuration for EasyBuild.ShipIt to support future changelog/version automation per ADR-0021, while keeping existing hand-written changelog history intact and addressing a CRLF/LF parsing issue on Windows.

Changes:

  • Registers easybuild.shipit as a local dotnet tool (.config/dotnet-tools.json).
  • Adds ShipIt YAML front matter to CHANGELOG.md, pinning last_commit_released to the introduction commit.
  • Forces LF line endings for CHANGELOG.md via .gitattributes and documents a local dry-run workflow in DEVELOPMENT.md.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
DEVELOPMENT.md Documents how to run ShipIt locally (dry-run) and links to ADR-0021.
CHANGELOG.md Adds ShipIt YAML front matter configuration at the top of the changelog.
.gitattributes Forces LF EOL for CHANGELOG.md to avoid ShipIt front-matter parsing issues under CRLF.
.config/dotnet-tools.json Registers easybuild.shipit 3.0.1 as a local dotnet tool command.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread CHANGELOG.md
---
# EasyBuild.ShipIt configuration (https://github.com/easybuild-org/EasyBuild.ShipIt#configuration).
# last_commit_released is pinned to the commit this front matter was introduced on, so ShipIt only
# considers commits from here forward. Hand-written history above this is left alone.
Comment thread DEVELOPMENT.md
Comment on lines +100 to +102
As of this PR, ShipIt is installed and configured but **not** wired into the CI, it also does not
update `Directory.Build.props`, these are both a follow-up PR per ADR-0021's implementation plan.
In the meantime, we can preview locally what it would generate:
@halcwb
halcwb merged commit 1da9264 into informedica:master Aug 11, 2026
4 of 7 checks passed
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.

3 participants