.conductor.yml (2484B)
1 # The pipeline conductor runs on itself. 2 # 3 # The suite is split in two because most of it needs nothing but node, 4 # while the parts that exercise object storage and OIDC start real 5 # containers and so need a worker offering the docker feature. Setting 6 # CONDUCTOR_TEST_NO_DOCKER skips those rather than failing them, which 7 # keeps the fast job honest about what it did and did not check. 8 9 version: 1 10 visibility: public 11 12 defaults: 13 image: node:24-alpine 14 timeout: 15m 15 16 tasks: 17 # Style rules that are cheap to break and cheap to check: ASCII only, 18 # no CRLF, no trailing whitespace. 19 style: 20 script: 21 - apk add --no-cache git 22 - npm install --no-audit --no-fund 23 - node --test test/ascii.test.js 24 25 # Everything that runs without a docker socket. 26 test: 27 script: 28 - apk add --no-cache git 29 - npm install --no-audit --no-fund 30 - npm test 31 env: 32 CONDUCTOR_TEST_NO_DOCKER: '1' 33 34 # The same suite with the container-backed tests switched on, so the S3 35 # and OIDC paths are exercised against real servers rather than skipped. 36 integration: 37 requires: [docker] 38 script: 39 - apk add --no-cache git 40 - npm install --no-audit --no-fund 41 - npm test 42 43 # Both images have to build before anything claims a release is possible. 44 # Host architecture only, since this runs on every branch and the point 45 # is to catch a broken Dockerfile early rather than to ship anything. 46 images: 47 needs: [style, test] 48 requires: [docker] 49 image: docker:28-cli 50 script: 51 - docker build -f deploy/Dockerfile -t conductor:$CONDUCTOR_SHA . 52 - docker build -f deploy/Dockerfile.worker -t conductor-worker:$CONDUCTOR_SHA . 53 54 # The whole stack, built from the images and exercised with a real 55 # pipeline. Catches what unit tests cannot: that the thing people 56 # actually deploy starts, registers a worker and runs a job. 57 smoke: 58 needs: [images] 59 requires: [docker] 60 image: docker:28-cli 61 script: 62 - apk add --no-cache git openssl curl 63 - ./deploy/smoke.sh 64 65 # Pushes to Docker Hub. Restricted to main and release tags for now; 66 # publish.sh handles any branch, so widening this rule is all it takes to 67 # publish a branch under its own tag. curl is for the readme sync. 68 publish: 69 needs: [smoke, integration] 70 requires: [docker] 71 image: docker:28-cli 72 only: 73 refs: [refs/heads/main, 'refs/tags/v*'] 74 script: 75 - apk add --no-cache curl 76 - ./deploy/publish.sh