|
33 | 33 | matrix: |
34 | 34 | name: [zlib-ng] |
35 | 35 | os_id: [debian, ubuntu] |
36 | | - os_codename: [bullseye, bookworm, focal, jammy, mantic] |
| 36 | + os_codename: [bullseye, bookworm, focal, jammy, noble] |
37 | 37 | arch: [amd64, armhf, arm64] |
38 | 38 | zlib_compat: ["", "-D ZLIB_COMPAT=ON"] |
39 | 39 | include: |
|
49 | 49 | - os_id: debian |
50 | 50 | os_codename: jammy |
51 | 51 | - os_id: debian |
52 | | - os_codename: mantic |
| 52 | + os_codename: noble |
53 | 53 | - os_id: ubuntu |
54 | 54 | os_codename: bullseye |
55 | 55 | - os_id: ubuntu |
|
77 | 77 | - name: Host - upgrade |
78 | 78 | run: sudo apt-get -y upgrade |
79 | 79 |
|
| 80 | + # No action or other method to bootstrap binfmt-support and qemu-user-static on the host runner |
| 81 | + - name: Host - set up qemu-user-static binfmt-support |
| 82 | + run: sudo apt install libpipeline1 qemu-user-static binfmt-support |
| 83 | + |
| 84 | + # Why are we doing it like this and not using a container setup? That's how you're supposed to do it, right? |
| 85 | + # qemu-user-static and binfmt-support are not part of the runner images https://github.com/actions/runner-images?tab=readme-ov-file#available-images |
| 86 | + # We would need to modify the runner to install these before the container starts. Which you cannot do as there is no way to bootstrap the host. |
| 87 | + # So we install them on the host then create/pull a custom docker image that we use to build the multiarch targets. |
| 88 | + # We are always on the host runner but can use any docker image we need with the access the qemu emulation when required. |
| 89 | + # |
| 90 | + # We are using these pre configured toolchain images that allows me to remove 50% of the code/time from this action. |
| 91 | + # |
| 92 | + # https://github.com/userdocs/dcb/blob/main/Dockerfile |
| 93 | + # |
| 94 | + # The image does not run as root and has password-less sudo. There are two users username:1000 /home/username and github:1001 /home/github |
| 95 | + # In the action it runs as 1001 /home/github and files should be available to the host. For local use, you might need -u 1000 |
| 96 | + |
80 | 97 | - name: Host - Create docker multiarch ${{ matrix.arch }} container |
81 | 98 | run: docker run --name multiarch -it -d -u 1001 -v ${{ github.workspace }}:/home/github ghcr.io/userdocs/dcb:${{ matrix.os_id }}-${{ matrix.os_codename }}-${{ matrix.arch }} |
82 | 99 |
|
@@ -192,7 +209,7 @@ jobs: |
192 | 209 | replacesArtifacts: true |
193 | 210 | tag: "${{ env.zlib_ng_version }}" |
194 | 211 | name: "${{ matrix.name }} ${{ env.zlib_ng_version }}" |
195 | | - body: "${{ matrix.name }} built from github master on amd64 arm64 armhf for Debian Bullseye Bookworm and Ubuntu Focal Jammy Mantic" |
| 212 | + body: "${{ matrix.name }} built from github master on amd64 arm64 armhf for Debian Bullseye Bookworm and Ubuntu Focal Jammy Noble" |
196 | 213 | allowUpdates: true |
197 | 214 |
|
198 | 215 | rerun-on-failure: |
|
0 commit comments