ci: separating ci and build logic