##################################################
1. gitlab 关闭账号注册
    root用户登陆                        
    Admin Area ==> settings ==> Sign-up restrictions ==> Sign-up enabled 选项关闭选择    

##################################################
2. gitlab  ssh key 连接设置,及ci/cd (jenkins 配置clone 代码)
        
1. 源主机:
    ssh-keygen -t rsa -C "email@example.com"
    
    生成 id_rsa,id_rsa.pub
    
2. 拷贝内容id_rsa.pub  内容到 gitlab ==> 用户==> Settings ==> SSH Keys 进行设置

##  主机上clone  代码操作设置
3. 如果 id_rsa,id_rsa.pub  文件不是标准的文件
    需要在源主机新建config 文件
    [root@sa01 .ssh]# cat config
    # gitlab
    Host gitlab.opsinfo.cn
         HostName gitlab.opsinfo.cn
         PreferredAuthentications publickey
         IdentityFile ~/.ssh/id_rsa_git
        
##   ci/cd (jenkins) 上设置认证
4.     登陆jenkins,添加认证 ==>  Credentials  ==>
    Add Credentials  ==> 选择 SSH Username with private key ==> Private Key(选择 Enter directly)     
    ==> 复制id_rsa 中的内容
        
##################################################
3 gitlab 支持 ldap 配置
 
   文件 /etc/gitlab/gitlab.rb
    gitlab_rails['ldap_enabled'] = true
    gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
       main: # 'main' is the GitLab 'provider ID' of this LDAP server
         label: 'Ldap Auth'
         host: '127.0.0.1'
         port: 389
         uid: 'uid'
         bind_dn: 'cd=admin,dc=opsinfo,dc=cn'
         password: '123456'
         encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
         verify_certificates: true
         active_directory: true
         allow_username_or_email_login: false
         lowercase_usernames: false
         block_auto_created_users: false
         base: 'dc=opsinfo,dc=cn'
         user_filter: ''
         ## EE only
         group_base: 'ou=Groups,dc=opsinfo,dc=cn'
         admin_group: ''
         sync_ssh_keys: false

     EOS        

#########################################        
2 Gitlab操作手册
2.1 Gitlab权限管理

Gitlab用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

    Guest:可以创建issue、发表评论,不能读写版本库
    Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
    Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限
    Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
    Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

Gitlab中的组和项目有三种访问权限:Private、Internal、Public

    Private:只有组成员才能看到
    Internal:只要登录的用户就能看到
    Public:所有人都能看到

开源项目和组设置的是Internal