ci framwork