1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
name: compile and unit test on foreign arch
on:
push:
branches:
- master
- queue
- tip
- 'stable-*'
paths:
- '.github/workflows/foreign.yaml'
- '**.h'
- '**.c'
- '**Makefile*'
- '**.mk'
pull_request:
branches:
- master
- queue
- 'stable-*'
paths:
- '.github/workflows/foreign.yaml'
- '**.h'
- '**.c'
- '**Makefile*'
- '**.mk'
jobs:
cross-build:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
container: ghcr.io/mwilck/multipath-cross-debian_cross-${{ matrix.os }}-${{ matrix.arch }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: build
run: make -j -Orecurse test-progs.tar
- name: upload binary archive
uses: actions/upload-artifact@v4
with:
name: cross-${{ matrix.os }}-${{ matrix.arch }}
path: test-progs.tar
overwrite: true
test:
runs-on: ubuntu-22.04
needs: cross-build
strategy:
fail-fast: false
matrix:
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
steps:
- name: set container arch
run: echo CONTAINER_ARCH="${{ matrix.arch }}" >> $GITHUB_ENV
if: ${{ matrix.arch != 'armhf' }}
- name: set container arch
run: echo CONTAINER_ARCH="arm/v7" >> $GITHUB_ENV
if: ${{ matrix.arch == 'armhf' }}
- name: download binary archive
uses: actions/download-artifact@v4
with:
name: cross-${{ matrix.os }}-${{ matrix.arch }}
- name: unpack binary archive
run: tar xfv test-progs.tar
- name: enable foreign arch
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: run tests
uses: mosteo-actions/docker-run@v1
with:
image: ghcr.io/mwilck/multipath-run-debian-${{ matrix.os }}
guest-dir: /__w/multipath-tools/multipath-tools
host-dir: ${{ github.workspace }}
command: -C tests
params: >
--workdir /__w/multipath-tools/multipath-tools
--platform linux/${{ env.CONTAINER_ARCH }}
pull-params: "--platform linux/${{ env.CONTAINER_ARCH }}"
root-test:
runs-on: ubuntu-22.04
needs: cross-build
strategy:
fail-fast: false
matrix:
os: [bullseye, bookworm, trixie, sid]
arch: [ppc64le, arm64, s390x]
exclude:
- os: bullseye
arch: ppc64le
- os: bullseye
arch: s390x
steps:
- name: mpath
run: sudo modprobe dm_multipath
- name: brd
run: sudo modprobe brd rd_nr=1 rd_size=65536
- name: set container arch
run: echo CONTAINER_ARCH="${{ matrix.arch }}" >> $GITHUB_ENV
if: ${{ matrix.arch != 'armhf' }}
- name: set container arch
run: echo CONTAINER_ARCH="arm/v7" >> $GITHUB_ENV
if: ${{ matrix.arch == 'armhf' }}
- name: download binary archive
uses: actions/download-artifact@v4
with:
name: cross-${{ matrix.os }}-${{ matrix.arch }}
- name: unpack binary archive
run: tar xfv test-progs.tar
- name: enable foreign arch
uses: docker/setup-qemu-action@v2
with:
image: tonistiigi/binfmt:latest
- name: run tests
uses: mosteo-actions/docker-run@v1
with:
image: ghcr.io/mwilck/multipath-run-debian-${{ matrix.os }}
guest-dir: /__w/multipath-tools/multipath-tools
host-dir: ${{ github.workspace }}
command: -C tests dmevents.out
params: >
--workdir /__w/multipath-tools/multipath-tools
--platform linux/${{ env.CONTAINER_ARCH }}
--privileged
-v /dev/ram0:/dev/ram0 -e DIO_TEST_DEV=/dev/ram0
pull-params: "--platform linux/${{ env.CONTAINER_ARCH }}"
id: root-test
continue-on-error: true
- name: show root test output
run: for o in tests/*.out; do echo "===== $o ====="; cat "$o"; done
- name: fail
run: /bin/false
if: ${{ steps.root-test.outcome == 'failure' }}
|