how to build [ci skip]