distro.conductor.yml (1768B)
1 # A source distribution building signed packages for two architectures. 2 # 3 # This is the shape the conductor was extracted from. Two details matter: 4 # 5 # Each package job waits only for the build of its own architecture, 6 # because the dependency shares the arch dimension. The aarch64 packages 7 # do not sit behind the x86_64 build. 8 # 9 # Signing happens on the worker. The worker holds the key and advertises 10 # the sign-key feature; the job asks for it by name. The conductor never 11 # sees the key, which is what makes it safe to accept build capacity from 12 # someone else's hardware. 13 # 14 # The package list is written out rather than discovered, since the pipeline 15 # is data and the conductor does not run repository code to build the graph. 16 17 version: 1 18 19 defaults: 20 image: debian:bookworm-slim 21 timeout: 2h 22 23 tasks: 24 check: 25 timeout: 10m 26 script: 27 - ./mk/deps.sh check 28 29 toolchain: 30 arch: [x86_64, aarch64] 31 script: 32 - ./mk/bootstrap-host.sh --check 33 - ./mk/sysroot.sh --arch $ARCH 34 artifacts: 35 paths: ['build/sysroot-$ARCH.tar.zst'] 36 expire: 7d 37 38 package: 39 needs: [toolchain] 40 arch: [x86_64, aarch64] 41 matrix: 42 pkg: [musl, busybox, glibc, grub, tinyssh, base-files] 43 requires: [sign-key] 44 script: 45 - ./mk/build.sh $MATRIX_PKG $ARCH 46 artifacts: 47 paths: ['build/repo/$ARCH/$MATRIX_PKG-*.apk'] 48 49 image: 50 needs: [package] 51 arch: [x86_64, aarch64] 52 script: 53 - ./mk/rootfs.sh $ARCH 54 - ./mk/make-img.sh $ARCH 55 artifacts: 56 paths: ['build/images/*-$ARCH.img'] 57 58 publish: 59 # No arch of its own, so this waits for every image and every package. 60 needs: [image, check] 61 requires: [publish-key] 62 script: 63 - ./mk/repo-index.sh 64 - ./mk/publish.sh