{"id":16020078,"url":"https://github.com/observeroftime/abi-compatibility-action","last_synced_at":"2025-10-21T18:30:57.371Z","repository":{"id":238545168,"uuid":"796786559","full_name":"ObserverOfTime/abi-compatibility-action","owner":"ObserverOfTime","description":"ABI compatibility action","archived":true,"fork":false,"pushed_at":"2024-05-06T17:44:22.000Z","size":230,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-18T08:43:14.311Z","etag":null,"topics":["abi-compatibility","actions"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ObserverOfTime.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-06T16:18:08.000Z","updated_at":"2024-05-09T08:43:27.000Z","dependencies_parsed_at":"2024-05-06T17:50:30.476Z","dependency_job_id":null,"html_url":"https://github.com/ObserverOfTime/abi-compatibility-action","commit_stats":null,"previous_names":["observeroftime/abi-compliance-action"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObserverOfTime%2Fabi-compatibility-action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObserverOfTime%2Fabi-compatibility-action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObserverOfTime%2Fabi-compatibility-action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ObserverOfTime%2Fabi-compatibility-action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ObserverOfTime","download_url":"https://codeload.github.com/ObserverOfTime/abi-compatibility-action/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":237525197,"owners_count":19324271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abi-compatibility","actions"],"created_at":"2024-10-08T17:22:03.141Z","updated_at":"2025-10-21T18:30:52.007Z","avatar_url":"https://github.com/ObserverOfTime.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ABI compatibility action\n\nThis repository contains three actions that can be\nused to check the backward compatibility of an ABI.\n\n## Usage\n\nSee the `action.yml` files for details.\n\n### Example workflow\n\nThis is a more complicated version of the workflow used in [tree-sitter].\n\n```yaml\nname: Check ABI changes\n\non:\n  push:\n    branches: [master]\n    paths:\n      - lib/src/**\n      - lib/include/**\n  pull_request_target:\n    branches: [master]\n    paths:\n      - lib/src/**\n      - lib/include/**\n\nconcurrency:\n  group: ${{github.workflow}}-${{github.ref}}\n  cancel-in-progress: true\n\nenv:\n  OLD_SHA: ${{github.event.pull_request.base.sha || github.event.before}}\n  NEW_SHA: ${{github.event.pull_request.head.sha || github.event.after}}\n\njobs:\n  dump:\n    name: Dump ${{matrix.version}} ABI data\n    runs-on: ubuntu-latest\n    strategy:\n      fail-fast: true\n      matrix:\n        version: [old, new]\n        include:\n          - { version: old, ref: \"${{env.OLD_SHA}}\" }\n          - { version: new, ref: \"${{env.NEW_SHA}}\" }\n    steps:\n      - name: Checkout ${{matrix.version}} commit\n        uses: actions/checkout@v4\n        with:\n          ref: ${{matrix.ref}}\n          sparse-checkout: |\n            lib/src/\n            lib/include/\n      - name: Compile library\n        run: make libtree-sitter.so\n        env:\n          CFLAGS: -Og -g -fno-omit-frame-pointer\n      - name: Run ABI dumper\n        id: abi-dumper\n        uses: ObserverOfTime/abi-compatibility-action/dump@v1\n        with:\n          library: libtree-sitter.so\n          version: ${{matrix.ref}}\n          args: -public-headers lib/include\n      - name: Upload dump artifact\n        uses: actions/upload-artifact@v4\n        with:\n          name: abi-dump-${{matrix.version}}\n          path: ${{steps.abi-dumper.outputs.dump}}\n          retention-days: 1\n\n  check:\n    name: Check ABI compatibility\n    runs-on: ubuntu-latest\n    needs: [dump]\n    outputs:\n      report: ${{steps.process.outputs.report}}\n    steps:\n      - name: Download dump artifacts\n        uses: actions/download-artifact@v4\n        with:\n          pattern: abi-dump-*\n      - name: Run ABI compliance checker\n        id: abicc\n        uses: ObserverOfTime/abi-compatibility-action/check@v1\n        continue-on-error: true\n        with:\n          old-dump: abi-dump-old/ABI.dump\n          new-dump: abi-dump-new/ABI.dump\n          old-version: ${{env.OLD_SHA}}\n          new-version: ${{env.NEW_SHA}}\n          args: -check-private-abi\n      - name: Post-process HTML report\n        id: process\n        uses: ObserverOfTime/abi-compatibility-action/process@v1\n        with:\n          report: ${{steps.abicc.outputs.report}}\n\n  comment-pr:\n    name: Comment on PR\n    runs-on: ubuntu-latest\n    if: github.event_name != 'push'\n    needs: [check]\n    permissions:\n      pull-requests: write\n    steps:\n      - name: Find comment\n        id: find-comment\n        uses: peter-evans/find-comment@v3\n        with:\n          issue-number: ${{github.event.pull_request.number}}\n          comment-author: github-actions[bot]\n          body-includes: ABI compatibility report\n      - name: Create or update comment\n        uses: peter-evans/create-or-update-comment@v4\n        with:\n          comment-id: ${{steps.find-comment.outputs.comment-id}}\n          issue-number: ${{github.event.pull_request.number}}\n          body: ${{needs.check.outputs.report}}\n          edit-mode: replace\n\n  comment-push:\n    name: Comment on commit\n    runs-on: ubuntu-latest\n    if: github.event_name == 'push'\n    needs: [check]\n    steps:\n      - name: Create commit comment\n        uses: peter-evans/commit-comment@v3\n        with:\n          body: ${{needs.check.outputs.report}}\n```\n\n[tree-sitter]: https://github.com/tree-sitter/tree-sitter\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobserveroftime%2Fabi-compatibility-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobserveroftime%2Fabi-compatibility-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobserveroftime%2Fabi-compatibility-action/lists"}