[dm-devel] [PATCH 2/3] multipath-tools: add github workflow to save and check ABI

mwilck at suse.com mwilck at suse.com
Fri Nov 12 21:05:50 UTC 2021


From: Martin Wilck <mwilck at suse.com>

This adds a workflow that saves the ABI of libmultipath and the
other libraries, and optionally tests it against a known-good state,
which is taken from the configurable ABI_BRANCH. If the ABI differs,
the workflow fails, and the abidiff output is saved in GH actions
as artifact "abi-test".

To configure the reference branch, set the repository secret ABI_BRANCH to the
name of the branch that contains the ABI reference. The default is "master".

Signed-off-by: Martin Wilck <mwilck at suse.com>
---
 .github/workflows/abi.yaml | 54 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 .github/workflows/abi.yaml

diff --git a/.github/workflows/abi.yaml b/.github/workflows/abi.yaml
new file mode 100644
index 0000000..53f10d4
--- /dev/null
+++ b/.github/workflows/abi.yaml
@@ -0,0 +1,54 @@
+name: check-abi
+on:
+  - push
+  - pull_request
+env:
+  ABI_BRANCH: ${{ secrets.ABI_BRANCH }}
+
+jobs:
+  save-and-test-ABI:
+    runs-on: ubuntu-20.04
+    steps:
+      - name: set ABI branch
+        if: ${{ env.ABI_BRANCH == '' }}
+        run: echo "ABI_BRANCH=master" >> $GITHUB_ENV
+      - name: checkout
+        uses: actions/checkout at v2
+      - name: get reference ABI
+        id: reference
+        continue-on-error: true
+        uses: dawidd6/action-download-artifact at v2
+        with:
+          workflow: abi.yaml
+          branch: ${{ env.ABI_BRANCH }}
+          name: abi
+          path: reference-abi
+      - name: update
+        run: sudo apt-get update
+      - name: dependencies
+        run: >
+          sudo apt-get install --yes gcc
+          gcc make pkg-config abigail-tools
+          libdevmapper-dev libreadline-dev libaio-dev libsystemd-dev
+          libudev-dev libjson-c-dev liburcu-dev libcmocka-dev
+      - name: create ABI
+        run: make -O -j$(grep -c ^processor /proc/cpuinfo) abi.tar.gz
+      - name: save ABI
+        uses: actions/upload-artifact at v1
+        with:
+          name: abi
+          path: abi
+      - name: compare ABI against reference
+        id: compare
+        continue-on-error: true
+        if: ${{ steps.reference.outcome == 'success' }}
+        run: make abi-test
+      - name: save differences
+        if: ${{ steps.compare.outcome == 'failure' }}
+        uses: actions/upload-artifact at v1
+        with:
+          name: abi-test
+          path: abi-test
+      - name: fail
+        if: ${{ steps.compare.outcome == 'failure' }}
+        run: false
-- 
2.33.1





More information about the dm-devel mailing list