/quad-ci

In which I follow The Simple Haskell Handbook implementing a CI server.

Primary LanguageHaskell

Quad-CI

In which I implement a CI server by following The Simple Haskell Handbook.

Progress

  • Part I:
    • Exploring the Domain
    • All about the State Machine
    • Talking to Docker
    • Building JSON values
    • Parsing JSON
    • Starting a Container
    • Services and Dependency injection
    • Setting up tests
    • Running Builds
    • Getting tests to fail
    • Waiting for containers to exit
    • Intermission: Docker module refactoring
    • Getting the Container status from the Docker API
    • Running real commands
    • Sharing data between steps
    • Testing the shared workspace
    • Collecting logs: another State Machine
    • Testing Log collection
    • Pulling images
    • Parsing pipelines as yaml
  • Part II:
    • Building the imperative shell
    • Server and Agents
    • Building the Agent
    • Testing Server and Agents
    • Storing Builds in memory with STM
    • Sending updates from Agents back to the Server
    • Triggering builds throught webhooks
    • Implementing the webhook endpoint
    • Building the API for the web UI
    • Fetching logs for a step
    • Listing all builds
    • Storing Commit information
    • Adding a CLI
    • Putting it all together