如果你和你的团队正在处理像Git或Subversion这样的工具,你可能需要一个管理层,在那里你能够以一种舒适的方式管理用户访问和仓库,因为源码控制管理系统(SCM)并没有带来这种功能的开箱。
也许你已经熟悉了流行的管理解决方案,如GitHub、GitBlit或GitLab。它们成功的主要原因是其巨大的功能。当然,如果你打算用Jenkins这样的自动化服务器创建自己的构建和部署管道,你也需要托管自己的仓库管理器。
尽管GitLab和其他解决方案的使用很好,但也有一点苦涩的味道。
- 管理是非常复杂的,需要一定的经验。
- 要使这些程序有良好的性能,对硬件资源的最低要求也不低。
为了克服所有这些障碍,我将在工具制造商的天空上介绍一颗新星SCM-Manager。快速、紧凑、可扩展和简单,是我用来描述它的主要属性。
入门:安装
让我们快速看一下安装有多简单。为了快速见效,你可以使用官方的Docker容器。只需要一个简短的命令。
docker run --name scm –restart=always \
-p 8080 -p 2222 \
-v /home/<user>/scmManager:/var/lib/scm \
scmmanager/scm-manager:2.22.0
首先,我们在SCM-Manager图像2.22.0的基础上创建一个名为scm的容器。然后,我们告诉这个容器在主机操作系统重启时总是重新启动。同时,我们打开2222和8080端口,使服务可以被访问。最后一步是在容器内挂载一个目录,所有的配置数据和资源库都存储在这里。之后,你可以打开浏览器,输入localhost:8080,在这里你可以通过创建初始管理账户完成安装。在这个表格中,你需要从命令行粘贴启动令牌,如图2所示。在你提交了初始化表格后,你会被重定向到登录。这就是全部,不到5分钟就完成了。
对于完整的脚本化的未触及的安装,也有一种方法可以通过使用系统属性scm.initalPassword绕过初始化表单。这将创建一个名为scmadmin的用户,并给出密码。
在旧版本的SCM-Manager中,默认的登录账户是scmadmin,密码是scmadmin。这种老方法相当有用,但如果管理员在安装后没有禁用这个账户,就会有很高的安全风险。这个安全改进是自2.21版本以来的新内容。
在我们一起发现更多关于管理的信息之前,让我们先来了解一下关于SCM-Manager的一些一般细节。SCM-Manager在MIT许可下是开源的。这允许商业使用。代码可以在GitHub上找到。该项目开始于研究工作。从第二版开始,Cloudogu公司获得了代码库的所有权并管理未来的发展。这种结构允许为公司提供专业的企业支持。另一个不错的细节是,SCM-Manager是在德国开发的。
插件
使用SCM-Manager最令人兴奋的细节之一是,有一个简单的可能性,即用插件来扩展最小的安装,以增加更多有用的功能。但是要小心,因为安装的插件越多,SCM-Manager需要分配的资源就越多。每个开发团队都有不同的优先级和必要性,为此,我总是喜欢根据自己的需要定制应用程序。
插件安装部分可以通过管理选项卡到达。如果你不能看到这个条目,你就没有管理权限。在右侧的菜单中,你可以找到插件这个条目。插件菜单分为两个部分:已安装和可用。为了更好地了解情况,插件是按类别组织的,如管理、授权或工作流。每个插件的简短描述都非常精确,让人对它们的作用有一个好印象。
一些预装的插件,如源代码管理类别中支持的仓库类型Git、Subversion和Mercurial,不能被卸载。
我最喜欢的一些插件位于授权部分:
- 路径写入保护,分支写入保护
- Tag保护
这些功能对Build-和Configuration Manager来说是最方便的。使用方法也和安装一样简单。让我们来看看它是如何工作的,有什么必要。
权限
想象一下,你的团队正在处理一个Java/Maven项目。也许有一条规则,只允许选定的人修改pom.xml构建逻辑的内容。这可以通过路径写保护插件来实现。安装完毕后,导航到代码库,选择右侧菜单中的设置条目。然后点击选项Path Permissions并激活该复选框。
正如你在图4中看到的,我创建了一个规则,只有用户Elmar Dott能够修改pom.xml。相反的权限是排除(拒绝)该用户。如果文件或路径表达式不存在,规则就不能被创建。另一个重要的细节是,这个权限涵盖所有现有的分支。为了便于管理,现有的用户可以被组织成组。
以同样的方式,你能够保护分支不受不必要的改变。当你的团队使用大规模分支或git-flow分支模型时,你可能需要这个选项。另外,个人开发者分支可能只有拥有该分支的开发者的写入权限,或者运行CI/CD管道的发布分支只有配置管理团队成员的权限。
让我们继续前进到另一个有趣的功能,即审查插件。这个插件可以为你的存储库实现拉动请求。安装审查插件后,在你的仓库的菜单中会出现一个新的项目点,它被称为pull requests。
Pull Requests
另一方面,pull requests是一个非常强大的工作流程。在我的职业生涯中,我经常看到对拉动请求的误用,这导致了生产力的急剧下降。出于这个原因,我想更深入地了解这个话题。
最初,拉动请求是为开放源码项目设计的,以确保代码质量。这种范式的另一个名字是独裁者工作流程[5]。每个开发者都向仓库提交他的修改,仓库所有者决定哪个修订版将被集成到代码库中。
如果你把你的项目源托管在GitHub上,陌生人就不能直接在你的项目中合作,他们首先要把仓库分叉到自己的GitHub空间。在他们向这个分叉的仓库提交一些修订后,他们可以向原始仓库创建一个拉动请求。作为版本库的所有者,你现在可以决定是否接受拉动请求。
SCM工具IBM Synergy在20年前也有类似的策略。使用起来太复杂了,所以很多公司决定转向其他解决方案。这些天来,看起来历史正在重演。
我对使用pull requests持怀疑态度的原因是非常务实的。我经常在项目中观察到,经理并不信任开发者。然后他决定实施pull requests的工作流程,让首席开发者或架构师接受pull requests。这些人通常太忙了,无法真正检查每个拉动请求的所有细节。因此,他们的解决方案是简单地将每个拉动请求合并到代码库中,并检查CI管道是否仍然有效。这样一来,拉动请求就成了浪费时间的事情。
还有一种方法,即拉动请求可以真正提高项目的代码质量:如果它们被用作代码审查工具。
特点总结
SourceCode Management
SCM-Manager comes out of the box with support for Git, Mercurial and Subversion. All three types can be managed the same way over one interface.
Easy Installation
SCM-Manager can be easily installed on the platform of your choice. We are trying to make the installation on every platform as easy as possible.
Plugins
We provide a variety of useful plugins from a wide range of categories out of the box which can be expanded individually.
Extensible
SCM-Manager can be easily extended with its simple plugin api.
REST API
We provide you a rich Level 3 RESTful WebService for every function of SCM-Manager. This makes it easy to integrate with your internal processes.
Authentication
SCM-Manager comes with a very flexible authentication mechanism. You can configure the mechanism that fits your needs or use the embedded one.
Authorization
SCM-Manager provides a fine grained authorization model. Give users or groups of users exactly the permissions they need.
Simple Configuration
SCM-Manager is completely configurable from its Web-Interface. There is no need to hack configuration files.
No Dependencies
No web servers, databases or caches are required. SCM-Manager is very lightweight and does not force you to install a ton of infrastructure components.
User Interface
SCM-Manager comes with a nice looking rich user interface, which provides you with a smooth user experience.
OpenSource
SCM-Manager is free and licensed under the MIT OpenSource license.
Summary
如果你敢于希望在DevOps世界中过上更简单的生活,也许你的愿望成真了。SCM-Manager可能是你最好的朋友。这个应用程序提供了很多我在这里简单描述的功能,但还有更多的高级功能,我甚至没有在这个简短的介绍中提到。有可能创建脚本并通过SCM-Manager的API执行它们。此外,还有一个用于Jenkins自动化服务器的插件。其他基础设施工具,如Jira、Timescale或Prometheus指标收集,都与SCM-Manager集成。
我希望通过这篇小文章,我能够吊起你对这个令人兴奋的工具的胃口,我希望你喜欢尝试它。
参考
[1] https://www.scm-manager.org
[2] https://hub.docker.com/r/scmmanager/scm-manager
[3] https://www.scm-manager.org/download/
[4] https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests
[5] https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows
今天先到这儿,希望对云原生,技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管管,团队建设 有参考作用 , 您可能感兴趣的文章:
领导人怎样带领好团队
构建创业公司突击小团队
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变
如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。