Skip to content

Add ABI validation to the CircleCI tasks #241

@holodorum

Description

@holodorum

It would be useful to have a check in the CI that validates that we don't accidentally update the public API. One way to do that would be by using binary compatibility validation from the Gradle plugin (see).

I've made a start with it here: holodorum@18e62ac. However, it updates the targets depending on the platform the abi is created from. So for example for my Mac the header of the API Dump is:

// Klib ABI Dump
// Targets: [js, macosArm64.nativeKson]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true`

However, running it in circleCI gives:

// Klib ABI Dump
// Targets: [js, macosArm64.nativeKson]
// Rendering settings:
// - Signature version: 2
// - Show manifest properties: true
// - Show declarations: true`

Which will resolve in a failing test since the ABI has changed:

  <<<ABI has changed>>>
  --- /home/circleci/repo/kson-lib/api/kson-lib.klib.api
  +++ /home/circleci/repo/kson-lib/build/kotlin/abi-legacy/kson-lib.klib.api
  @@ -1,5 +1,5 @@
   // Klib ABI Dump
  -// Targets: [js, macosArm64.nativeKson]
  +// Targets: [js, linuxX64.nativeKson]
   // Rendering settings:
   // - Signature version: 2
   // - Show manifest properties: true

I can think of a few workarounds, but don't think it's worth writing too much custom code or spending a lot of time on it for now. Hopefully someone knows a straightforward way to configure this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions