In which I implement a CI server by following The Simple Haskell Handbook.
- 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