Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add @microsoft/api-extractor to detect public API changes #1962

Merged
merged 13 commits into from
Apr 20, 2020

Conversation

stevengum
Copy link
Member

@stevengum stevengum commented Mar 30, 2020

Fixes #1903

Partial fix, api-extractor has not been enabled for botframework-connector, adaptive-expressions, and botbuilder-lg.

Description

Using @microsoft/api-extractor enables us to easily identify public API changes and avoid breaking changes.

Developers should now use use build:rollup to generate a source-controlled Markdown file that contains the public API of a package for a human friendly experience in reviewing API changes.

Changing the public API and running build:rollup should result in updates to the package's .api.md file.

Example: a developer changes the constructor for TestAdapter in botbuilder-core.

When they run build:rollup, it should result in botbuilder-core/etc/botbuilder-core.api.md being changed.
These changes should be committed before the PR is submitted for review, otherwise the CI will fail.

For an example PR that fails the API-Check, see #1963.


Specific Changes

  • update .gitattributes to support JSON with comments
  • update .gitignore to ignore temp/ and dist/ folders
  • add "@microsoft/api-extractor": "^7.7.10" as a dependency for all libraries.
  • add two npm scripts to supported libraries:
    • "build:rollup" - clears current lib/, rebuilds and then runs api-extractor
      • Run by developers before committing changes
      • api-extractor run --verbose --local creates a new <package-name>.api.md in etc/ which is checked into source control
      • <package-name>.api.md contains the public APIs and is used to highlight any breaking changes
    • "test:compat" - executes api-extractor run --verbose
      • Run by CI machines
      • If this task fails, the changes contains public API changes and the updates from build:rollup committed and added to the PR

Testing

Created a ADO Pipeline to call lerna run test:compat which fails on public API changes without a checked-in <package-name>.api.md file.

@coveralls
Copy link

coveralls commented Mar 30, 2020

Pull Request Test Coverage Report for Build 122038

  • 20 of 20 (100.0%) changed or added relevant lines in 2 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 67.333%

Totals Coverage Status
Change from base Build 121972: 0.0%
Covered Lines: 10343
Relevant Lines: 14537

💛 - Coveralls

@stevengum
Copy link
Member Author

@BruceHaley as FYI.

The ADO pipeline that specifically checks the public APIs is BotBuilder-JS-API-Check. (Build #116581)

@stevengum stevengum changed the title Add @microsoft/api-extractor to prevent breaking changes Add @microsoft/api-extractor to better prevent breaking changes Mar 31, 2020
@stevengum stevengum changed the title Add @microsoft/api-extractor to better prevent breaking changes Add @microsoft/api-extractor to detect public API changes Mar 31, 2020
Copy link
Contributor

@Stevenic Stevenic left a comment

Choose a reason for hiding this comment

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

:shipit:

@Stevenic Stevenic merged commit 57ad046 into master Apr 20, 2020
@cleemullins cleemullins deleted the api-extractor branch August 11, 2020 22:26
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.

Use @microsoft/api-extractor
3 participants