conductor

CI task system
git clone git://git.finwo.net/app/conductor
Log | Files | Refs | README | LICENSE

.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