它拥有与GitHub类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
GitLab进入了新的里程碑——GitLab 7.12正式到来。以下为官方发布日志摘译:
这次的发布带来了大量的新特性和修复,主要是面向Community Edition (CE)、Enterprise Edition (EE)和Continuous Integration (CI)。在CE和EE中,GitLab开始支持使用SAML身份验证,这一点曾被广泛要求,我们也非常高兴CERN参与了贡献。在GitLab Enterprise Edition中,你可以邀请多个人来批准某个合并请求。在GitLab CI中,我们推出了.gitlab-ci.yml
文件,使得更容易管理job 脚本。
这个月的MVP很好选择,他是来自CERN的Alexandre Lossent,Alexandre 贡献了他们写的SAML代码。我们很高兴有这个贡献,以及确信你会受用。感谢Alexandre!
SAML 支持
由于得到Alexandre的贡献,GitLab现在可以成为一个SAML 2.0 Service Provider。这使得GitLab 以SAML 2.0 Identity Provider(IdP,如Microsoft Active Directory Federation Services)身份来提供一个用户认证机制。
Web Hook评论
现在有了一个新的可用的Web Hook,它将连接所有的评论。你可以用它来增加额外的自动化和集成至GitLab。例如,当有人评论一个合并请求时,你可以把它连接至内部的系统,或者你可以根据评论内容运行一个特定的构建。
更好的Web Editor性能
每一个GitLab新版本都比过去的更快,但这个版本中,我们做了一些其他的工作。简而言之,不再是通过克隆一个空的仓库至一个临时的位置来执行Web界面代码更改,在那儿提交,然后Push更新回至空的仓库,而是我们现在可以直接提交更改至空仓库。这显著提高了Web Editor的性能。
UI更新
每个月我们都尝试和调整我们的UI,让它变得更好、更美观和更加直观,这个月依然这么做了。
我们已经迁移你的个人资料页,将它链接到底部左下角,以及更新各个UI部分的外观。
Merge Request Approvers(仅支持EE版本)
如果你想确保你最喜爱项目在合并请求前可以有超过一个人的review,在新版本中,你就可以配置一个最低Merge Request批准的数值。
Git Hook来检查Maximum File Size(仅支持EE版本)
我们增加了一个新的Git Hook,允许你限制即将提交的大文件。你可以很简单地设置一个门槛,GitLab 将会阻止所有包含太大文件的Git pushes。
LDAP Group Sync改进(仅支持EE版本)
我们在GitLab EE上改进了LDAP Group同步。当同步时它会检查更多的特殊属性,防止因为同步而删除最后组里的owner。
.gitlab-ci.yml
文件替代jobs(CI)
在5月6日,我们用存储在代码仓库中的.gitlab-ci.yml
文件替换GitLab CI jobs。优点被列出在公告中,但主要的是:
上面的事情不可能用类似Jenkins脚本实现,因为它与整个项目相关联。
它是如何工作
GitLab发送web-hook和.gitlab-ci.yml
内容至CI Coordinator,基于YAML文件来创建builds。反过来,这些builds通过Runners来执行。
这里是一个YAML文件例子:
before_script: - gem install bundler - bundle install - bundle exec rake db:create rspec: script: "rake spec" tags: - ruby - postgres only: - branches spinach: script: "rake spinach" tags: - ruby - mysql except: - tags staging: script: "cap deploy staging" type: deploy tags: - capistrano - debian except: - stable production: script: - cap deploy production - cap notify type: deploy tags: - capistrano - debian only: - master - /^deploy-.*$/
我们包含了一个Lint工具来检查你的语法。它现在可以在每一个 GitLab CI中获得,通过url /lint的方式。如果你在push 你的代码后 .gitlab-ci.yml
出现问题,你将能够在提交页中看到错误。
before_script
部分将在每一个job前被执行。你可以通过添加type: deploy
从而实现定义一个部署job。每个job包含的参数,例如script
(shell script)、tags
(只有运行这个tag/tags才允许选择这个构建),以及only
或except
参数来定义允许运行构建的分支名称。only
部分优先于 “except”。参见:Configuration of your builds with .gitlab-ci.yml
新版本的灵感来自已经使用YAML文件的Travis CI和Circle CI的工作。首先,我们考虑使用开源的Travis CI模块,但是我们最终还是自己编译了,所以我们可以提供:
因为这些,“one image per architecture and that’s it”不再成立。当你能够tag runners和jobs,这让你在分配一个job给指定的runner时拥有更多的自由。我们希望新版本具有着Jenkins的自由和Travis CI的用户友好。
迁移
当升级到GitLab 7.12,你的CI job脚本将被自动转变成一个示例.gitlab-ci.yml
文件,你可以在GitLab CI项目页查看和下载。
在push引发一个构建后,GitLab会从仓库的根发送.gitlab-ci.yml
文件。如果不存在, GitLab CI 将利用已生成的示例脚本。这意味着你的项目没有更新好。然而,我们建议你尽快添加.gitlab-ci.yml
文件至你的仓库的根。
你应该添加.gitlab-ci.yml
文件至你项目的所有分支中,特别是正进行接受提交中的Git pushes。
BETA: Secret Variables for runner(CI)
我们增加了一个GitLab CI的新功能,允许你面向runners设置私密变量。Secret Variables将通过runner来设置至环境中,且可从构建日志中隐藏。使用它们的密钥、secret keys或者其他任何东西。确保你的runner版本为0.4或更高版本。
目前,此功能处于测试阶段。添加至GitLab CI 7.12 的Secrets被存储在他的SQL数据中,并没有加密。我们将在7.13中进行加密。
其他变化:
此版本有太多的改进,包括安全补丁,所有更新请参见更新日志。
升级要点
此版本仅是微小的迁移,如果你目前使用GitLab 7.11 CE或EE,你直接可以在线升级7.12。
如果你针对在 /etc/gitlab/gitlab.rb
中的 gitlab_rails['secret_token']
、gitlab_shell['secret_token']
或 gitlab_ci['secret_token']
设置一个自定义的值,那么请仔细检查在 gitlab.rb
中的是否值匹配/etc/gitlab/gitlab-secrets.json
中的值。如果一些值不匹配,从gitlab-secrets.json
复制值到此前升级至GitLab 7.12的 gitlab.rb
。
在7.12之前,你在 gitlab.rb
中任何的 secret_token
值实际上是忽略了支持所有的gitlab-secrets.json
。
在大多数的GitLab Omnibus安装中,‘secret_token’仅在gitlab-secrets.json
中设置,并且不需要任何的操作。
这个变化仅适用于GitLab Omnibus程序包。从源头的安装不受影响。
当运行gitlab-ctl reconfigure
omnibus-gitlab 时,需要决定系统是否使用SysV初始化、Upstart 或Systemd,再安装gitlab-runsvdir
服务。
在这个版本之前,这个决定是通过观察该平台,操作系统版本和系统默认的初始化是什么来实现。
这是不可靠的,由于omnibus-gitlab被安装在多个OS代码上,导致处理这个变得复杂和易于出错。
从这个版本开始,这样的做法已经被替换了,检测是通过查询OS初始化系统来完成的。基于这个响应gitlab-runsvdir
服务已经被安装了。
如果你偶然遇到一些如omnibus-gitlab README中描述的问题,请尝试使用一些变通方案,并在omnibus-gitlab问题跟踪器汇总提交问题。
继Logjam漏洞,我们更新了推荐的SSL加密套件。详情参加:GitLab.com and Logjam
安装
如果你正创建一个新的GitLab安装请参见GitLab下载页。
更新
Enterprise Edition
上面提到的仅支持EE的特性,如 LDAP group支持也可以在GitLab Enterprise Edition中找到。完整列表参见:GitLab EE