novemberkilo / mirage-ci

Ocurrent-based CI for MirageOS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mirage CI

This CI is a set of ocurrent pipelines testing various things for the Mirage project.

In src/pipelines/, there are two kind of pipelines:

By default, two testing workflows are implemented:

co-dependent PRs mirage-ci will detect if PRs submitted to these repositories mention each other. In that case, they will be tested together.

Running

You need an ocluster submission token and a git server on which monorepo can be pushed. For the central CI, obtain a Github personal access token with the repo:status authorisation and save it in a file.

Then use:

dune exec -- mirage-ci \
    --ocluster-cap <OCLUSTER_SUBMISSION_TOKEN_FILE> \
    --github-token-file <GITHUB_TOKEN_FILE> \
    --git-http-remote https://github.com/XXX/mirage-ci-monorepo.git \
    --git-ssh-host github.com \
    --git-ssh-repo XXX/mirage-ci-monorepo.git \
    --privkey ~/.ssh/key \
    --pubkey ~/.ssh/key.pub \
    --test-monorepos \
    --test-mirage-4

Deploying

The live branch will automatically be deployed to ci.mirage.io.

To (re)-configure the live-deployer, log on ci.mirage.io and run:

$ git clone -b live https://github.com/ocurrent/mirage-ci.git
$ cd mirage-ci
$ docker build . -t mirage-ci
$ docker service create \
  --name infra_mirage-ci \
  -p 8082:8080 \
  -e CI_PROFILE=production \
  --mount type=bind,ro,source=/home/camel/.ssh,destination=/ssh \
  --mount type=bind,ro,source=/home/camel/mirage-ci/cap,destination=/cap \
  --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock \
  --mount type=volume,source=mirage-ci,destination=/var/lib/ocurrent \
  mirage-ci \
  --ocluster-cap /cap/mirage-ci.cap \
  --github-token-file /cap/github_mirage \
  --git-ssh-host ci.mirage.io \
  --git-ssh-repo mirage-ci/mirage-monorepo.git \
  --git-ssh-port 10022 \
  --git-http-remote=https://ci.mirage.io/git/mirage-ci/mirage-ci-monorepo.git \
  --privkey /ssh/git \
  --pubkey /ssh/git.pub \
  --test-mirage-4 mirage,skeleton,dev,overlay \
  --test-mirage-3 mirage,skeleton,dev,overlay \
  --test-monorepos \
  --self-deploy

Local testing

It is possible to test the pipeline locally, but it will still clone the repositories from GitHub. To do so:

dune exec -- mirage-ci-local --test-mirage-3 --test-mirage-4

PR testing

To enable status reporting for commits, make sure you have the proper authorisation on mirage repositories, then add the selected repositories where commit status should be reported. For instance, --test-mirage-4 mirage,skeleton,dev,overlay will update the status of all the watched repositories.

About

Ocurrent-based CI for MirageOS


Languages

Language:OCaml 98.1%Language:Dockerfile 1.6%Language:Shell 0.1%Language:Cap'n Proto 0.1%Language:Makefile 0.0%Language:Standard ML 0.0%