首页 > PHP资讯 > Python培训 > GitLab 7.12:SAML、Merge Request Approvers和.gitlab-ci.yml

GitLab 7.12:SAML、Merge Request Approvers和.gitlab-ci.yml

Python培训
  GitLab,是一个利用Ruby on Rails开发的开源应用程序,实现自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。

  它拥有与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)身份来提供一个用户认证机制。

  参见如何设置SAML集成的文档。

  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。优点被列出在公告中,但主要的是:

  既然构建脚本是由版本控制的,更多人可以看到它且提出修改建议;

  较旧的和较新的分支都可以正确地构建,因为他们能够包含一个不同的构建文件;

  Forks自动获得一个正确的构建脚本,当他们向上合并获得更新时;

  在没有破坏其他分支的情况下,你可以在你的分支中尝试CI构建设置;

  上面的事情不可能用类似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模块,但是我们最终还是自己编译了,所以我们可以提供:

  定制化的部署jobs;

  能够在Metal、VM和Docker images运行jobs;

  能够每次在同一个台机器上运行(例如性能测试);

  能够运行在特殊的架构上(例如一个Raspberry Pi 2);

  能够运行在特殊地方或特定证书的机器上;

  支持简单和浅显的YAML文件的语法;

  命名jobs,实现轻易地辨别。

  因为这些,“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。

  当使用Omnibus 程序包时,更新行为要用‘secret_token’设置。

  如果你针对在 /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问题跟踪器汇总提交问题。(文章来自欣才PHP培训http://www.thinksite.cn/)

本文由欣才IT学院整理发布,未经许可,禁止转载。