基于Gitlab搭建版本控制平台

做为程序员,你一定使用过GitHub / Gitee等开源代码仓库。

对于公司而言,直接将代码上传到开源仓库,对所有用户公开,会面临诸多问题:

  • 泄露商业机密

  • 安全漏洞泄露

  • 被抄袭、盗版

因此,在公司内自建一套私有的代码仓库,是十分必要的。

本节,我们将基于Gitlab,搭建私有的版本控制系统。

运行

我们使用Docker版本启动,脚本如下:

  1. #!/bin/bash
  2. NAME="gitlab"
  3. PUID="1000"
  4. PGID="1000"
  5. VOLUME="$HOME/docker_data/gitlab"
  6. mkdir -p $VOLUME/{data,logs,config}
  7. docker ps -q -a --filter "name=$NAME" | xargs -I {} docker rm -f {}
  8. docker run \
  9. --hostname $NAME \
  10. --name $NAME \
  11. --volume "$VOLUME/config":/etc/gitlab \
  12. --volume "$VOLUME/logs":/var/log/gitlab \
  13. --volume "$VOLUME/data":/var/opt/gitlab \
  14. --env PUID=$PUID \
  15. --env PGID=$PGID \
  16. -p 8888:80 \
  17. -p 10022:22 \
  18. --detach \
  19. --restart always \
  20. gitlab/gitlab-ce:14.1.8-ce.0

解释一下:

  • 上述开放了两个端口,8888和22

  • gitlab的配置放置于3个不同的位置,我们分别设置了Volume

  • 由于该镜像内置了多个进程,启动时间会比较久

启动后,我们首先查看初始管理员密码,在config/initial_root_password文件中,只会保留24小时:

  1. # WARNING: This value is valid only in the following conditions
  2. # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
  3. # 2. Password hasn't been changed manually, either via UI or via command line.
  4. #
  5. # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
  6. Password: Sgh1UigBM6ht5ApoW1z2N4JOLHFoivK/EwpQwZ1PylI=
  7. # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

配置

首先,修改conf/gitlab.rb,修改host,这里可以命名为实际的IP和端口:

  1. external_url 'http://10.1.172.136:8888'

下一步,修改conf/gitlab.rb,添加ldap配置:

  1. gitlab_rails['ldap_enabled'] = true
  2. gitlab_rails['prevent_ldap_sign_in'] = false
  3. gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
  4. main:
  5. label: 'LDAP'
  6. host: '10.1.172.136'
  7. port: 389
  8. uid: 'cn'
  9. bind_dn: 'cn=readonly,dc=coder4,dc=com'
  10. password: 'readonly123'
  11. encryption: 'plain' # "start_tls" or "simple_tls" or "plain"
  12. verify_certificates: false
  13. smartcard_auth: false
  14. active_directory: false
  15. allow_username_or_email_login: false
  16. lowercase_usernames: false
  17. block_auto_created_users: false
  18. base: 'ou=rd,dc=coder4,dc=com'
  19. user_filter: ''
  20. attributes:
  21. username: ['cn']
  22. email: ['mail']
  23. name: cn
  24. ## EE only
  25. group_base: ''
  26. admin_group: ''
  27. sync_ssh_keys: false
  28. EOS

上面的配置信息,与我们在LDAP中的设置的信息维持一致,请根据需要自行修改。

重新应用配置,并重启:

  1. docker exec -it gitlab /bin/bash
  2. ./bin/gitlab-ctl reconfigure

f

重启后,我们使用LDAP中配置的zhangsan / 123456进行登录,成功!

搭建Gitlab只是起点,你还应熟悉基本用法、开发模式,推荐如下文章: