code: func New(config types.Config, embededStorage bool) (*Calcium, error) {
  	// set store
  	store, err := etcdv3.New(config, embededStorage)
  	if err != nil {
  		return nil, err
  	}
  
  	// set scheduler
  	scheduler, err := complexscheduler.New(config)
  	if err != nil {
  		return nil, err
  	}
  
  	// set scm
  	var scm source.Source
  	scmtype := strings.ToLower(config.Git.SCMType)
  	switch scmtype {
  	case cluster.Gitlab:
  		scm = gitlab.New(config)
  	case cluster.Github:
  		scm = github.New(config)
  	default:
  		log.Warn("[Calcium] SCM not set, build API disable")
  	}
  
  	return &Calcium{store: store, config: config, scheduler: scheduler, source: scm}, nil
  }
docs: // New returns a new cluster config