Run sequential containerized workloads on the same volume using tools from each container along the way.
Sequence is, first and foremost, a library for running sequential containerized workloads on the same volume to produce some result. To achieve this, it builds upon some existing technologies:
- Borrow GitHub Action's Workflow syntax and expand upon it (e.g. by allowing each step to designate what image it should run inside). This should allow Sequence to utilize useful GitHub Actions, which are GitHub repositories which can be concisely referenced to execute complicated tasks (e.g. downloading and installing Go)
- Use a pluggable container
Runtime
whose default implementation is Docker to run each containerized task. - Take advantage of Concourse Resources to additionally expand the functionality of what a single step can do
Sequence aims to have tools built from this library to unify the development and continuous integration (CI) experiences:
-
sqnctl
CLI to run workflows against local changes before pushing them to be executed by CI -
sqncd
RPC daemon that can be connected to remotely to run workloads
make
is required - version 3.81 is testedgolang
is required - version 1.18.x or above is required for genericsdocker
is required - version 20.10.x is testedbuf
is required if modifying proto - version 1.4.x is testedupx
is required for compressingsqnc-shim
on generateprotoc
is required if modifying proto - version 3.19.x is testedprotoc-gen-go
- version 1.26.x is tested- (hopefully) temporarily,
protoc-gen-sqnc-go
The latter two of these can be installed by:
make tools
Create a .env
that looks like .env.example
but with a real GitHub token, and:
make test # go test ./...
Format .go
code.
make fmt # go fmt ./...
make lint # golangci-lint run
Generate .go
code from .proto
code.
make generate # buf generate .