Linux下GitLab如何集成
导读:Linux下GitLab集成实践指南 一 集成总览与选型 身份与单点登录:优先使用LDAP/AD统一账号;如需企业级SSO,可用Kerberos(仅GitLab EE)。 交付与自动化:使用内置CI/CD,在Linux上注册GitLab...
Linux下GitLab集成实践指南
一 集成总览与选型
- 身份与单点登录:优先使用LDAP/AD统一账号;如需企业级SSO,可用Kerberos(仅GitLab EE)。
- 交付与自动化:使用内置CI/CD,在Linux上注册GitLab Runner(支持裸机、Docker、Kubernetes)。
- 生态联动:通过Webhooks与API对接JIRA、Slack、Harbor等;也可与Jenkins协同。
- 运行形态:选择Linux包(Omnibus)、Docker或**Kubernetes(Helm)**部署,按规模与运维偏好决定。
二 身份与单点登录集成
-
LDAP/AD集成(Omnibus示例)
- 编辑配置文件:/etc/gitlab/gitlab.rb
gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_servers'] = YAML.load < < -'EOS' main: label: 'LDAP' host: 'ldap.example.com' port: 389 uid: 'sAMAccountName' bind_dn: 'CN=ldapuser,OU=IT,OU=People,DC=example,DC=com' password: 'yourpassword' encryption: 'plain' # 或 start_tls / tls base: 'OU=People,DC=example,DC=com' user_filter: 'memberOf=CN=gitlabuser,OU=Groups,OU=People,DC=example,DC=com' allow_username_or_email_login: true lowercase_usernames: true block_auto_created_users: false EOS- 使配置生效:sudo gitlab-ctl reconfigure
- 连通性与账号校验:ldapsearch 测试;GitLab内执行:sudo gitlab-rake gitlab:ldap:check
- 登录验证:Web登录选择LDAP方式。
-
Kerberos集成(仅EE)
- 准备服务主体与keytab:创建HTTP/gitlab.example.com@EXAMPLE.COM,导出为**/etc/http.keytab**,权限设为git:600。
- Omnibus配置:
gitlab_rails['omniauth_allow_single_sign_on'] = ['kerberos'] gitlab_rails['kerberos_enabled'] = true gitlab_rails['kerberos_keytab'] = "/etc/http.keytab" # 如需兼容老版本Git的HTTP协商,启用专用端口 gitlab_rails['kerberos_use_dedicated_port'] = true gitlab_rails['kerberos_port'] = 8443 gitlab_rails['kerberos_https'] = true- 重启:sudo gitlab-ctl reconfigure
- 客户端使用:git remote set-url origin https://gitlab.example.com:8443/group/project.git
- 重要限制:GitLab CI/CD默认不与启用Kerberos的实例协作,除非使用上述专用端口方式。
三 CI/CD与Runner集成
- Runner部署与注册
- Linux包安装Runner(示例):
- Debian/Ubuntu:curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-runner
- RHEL/CentOS:curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash sudo yum install gitlab-runner
- 注册到项目/群组/实例:gitlab-runner register(填写GitLab地址与Registration Token)
- 在项目中放置**.gitlab-ci.yml**定义流程(示例):
stages: - build - test - deploy build: stage: build script: - mvn clean package test: stage: test script: - mvn test deploy: stage: deploy script: - scp target/*.jar user@server:/opt/app only: - master- 如需在Kubernetes中弹性伸缩Runner,可使用Kubernetes Executor与Helm部署。
- Linux包安装Runner(示例):
四 生态联动与API
- Webhooks:在项目Settings → Webhooks配置事件回调(如push、merge request),对接JIRA、Slack、Harbor等实现自动流转与通知。
- API:使用Personal Access Token或OAuth2调用GitLab API进行用户、项目、Runner、流水线等的自动化管理。
- 与Jenkins协同:可用GitLab作为代码源,通过Webhook触发Jenkins Job,实现混合流水线。
五 部署形态与网络要点
- Docker运行要点
- 数据持久化:设置环境变量GITLAB_HOME(如**/srv/gitlab**),映射config/logs/data卷。
- 端口发布:常规为80/443/22;启用Kerberos时需额外发布8443:8443。
- 启动示例:
export GITLAB_HOME=/srv/gitlab sudo docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 --publish 8443:8443 \ --name gitlab \ --restart always \ --volume $GITLAB_HOME/config:/etc/gitlab \ --volume $GITLAB_HOME/logs:/var/log/gitlab \ --volume $GITLAB_HOME/data:/var/opt/gitlab \ --shm-size 256m \ registry.gitlab.cn/omnibus/gitlab-jh:latest
- 常用运维命令
- 重新配置:sudo gitlab-ctl reconfigure
- 启停与状态:sudo gitlab-ctl start|stop|status
- 日志排查:sudo gitlab-ctl tail
- 防火墙:例如firewalld放行https(或对应端口)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux下GitLab如何集成
本文地址: https://pptw.com/jishu/768891.html
