Fix knightly pipeline
This PR is the combination of !23 (closed) !27 (closed) !28 (closed). Since the three PR is kind of in a circular dependency and hard to integrate and debug. So I create this new PR to make it easier.
This PR is the combination of !23 (closed) !27 (closed) !28 (closed). Since the three PR is kind of in a circular dependency and hard to integrate and debug. So I create this new PR to make it easier.