Description
Proposal:
The setup, build, test, and s3-push functionality that's wrapped up in the single script build.py
should be broken out into jobs in CircleCI config.
Current behavior:
Currently, the build
job in circle config runs test.sh
, which builds a docker container, and then uses that container to run build.py
, which goes on to perform all CI duties in one fell swoop.
Downsides to this approach
- nested containerization is unnecessary
- rebuilding the docker container inside circle wastes cycles and money
- multiple steps being encapsulated in the python script means that the CI pipeline it represents is not re-entrant
- using a procedural script to do CI is counterproductive to having configuration as code, and defeats the purpose of using Circle
- the python script is based on deprecated python 2
Desired behavior:
The various setup, build, test, and deliver functionality defined in the test and build scripts should be broken out into circleCI config.
Alternatives considered:
The other alternative would be sticking with the status quo.
Use case:
The use case is optimizing the maintainability of the CI process for this repo. See the downsides I've listed above for reasons in support of moving away from the way things are currently done.