class BuildIdeRepoAction extends AbstractAction {

	@Override
	public boolean run() {
		List<String> tags = getTags();
		
		if(tags.isEmpty()) {
			logger.info("git 仓库中没有标注 tag");
		} else {
			tags.forEach(tag -> GitUtils.getVersionFromRefName(tag).ifPresentOrElse(version -> buildTag(tag, version), () -> ignoreBuild(tag)));
		}
		
		// 因为此处是必须要构建 master 分支，且只构建 master 分支，所以不需要再从外部传入 branches
		// 因为 master 分支存的是最新代码，所以即使在 package/master 已存在构建版，也要重新构建
		// TODO: 优化，存储 master 分支对应的 commit 标识，如果 commit 标识没有变化，则不要重新发布
		// 构建 master 分支
		// 因为最后 build 的是 master 分支，自然要切换回 master 分支，所以不再单独处理，如果此逻辑有变化，则切记最后要切换回 master 分支
		if(buildMaster) {
			buildMaster();
		}
		
		ensureCheckoutMaster();
		
		return success;
	}

	public  BuildIdeRepoAction(ExecutionContext context);

}