7 comments

[ 5.3 ms ] story [ 40.3 ms ] thread
Why does air-gapped environment require rolling your own CI/CD solution? Plenty of examples of air-gapped Jenkins and/or Argo Workflows. Was this just an educational exercise?
(comment deleted)
> We need to:

> Build a dependency graph (which jobs need which other jobs)

> Execute jobs in topological order (respecting dependencies)

For what it’s worth, Python has graphlib.TopologicalSorter in the standard library that can do this, including grouping tasks that can be run in parallel:

https://docs.python.org/3/library/graphlib.html

One of the best real "batteries" added in recent years.
Why use Docker as a build job execution engine? It seems terribly unsuited for this.
> terribly unsuited

Care to elaborate? If you already deploy in docker then wouldn't this be nice?

I like the iterative approach that you took with the post and codebase. It really takes the reader on a journey with you and helps understand the decision points and process of software development, it's so important compared to just showing a final polished solution, after all, we're all trying to replicate the software development process, not the product.