首页 > 其他分享 >gitlab 部署与钉钉集成

gitlab 部署与钉钉集成

时间:2022-11-16 13:35:43浏览次数:69  
标签:集成 部署 gitlab smtp rails omniauth docker email

gitlab 部署与钉钉集成

gitlab 部署

此处展示 docker 部署 gitlab

docker run \
    --hostname 192.168.49.1 \ # 192.168.49.1 为自己局域网的 ip
    --publish 7001:443 --publish 80:80 --publish 7003:22 \ # 注意这里的映射的端口
    --name gitlab --restart always \ # 容器名称, 以及容器退出策略
    --volume ~/code/docker-yml/gitlab/config:/etc/gitlab \ # 配置文件相关映射
    --volume ~/code/docker-yml/gitlab/logs:/var/log/gitlab \ # log 文件相关映射
    --volume ~/code/docker-yml/gitlab/data:/var/opt/gitlab \ # 数据文件映射
    docker.io/gitlab/gitlab-ce:latest 

需要注意的是, gitlab 的访问端口 80 在这里映射成为 80 端口. 原因在于 钉钉 sso 登录回跳到 gitlab 的时候会忽略端口号, 造成的结果就是使用 http 默认的 80 端口, 这里为了演示方便直接映射到本机的 80 端口, 实际在生产中可以借助 nginx 来实现 端口转发.

gitlab22 端口映射到了本地的 7003 端口, 22 端口默认就是 ssh 相关操作的端口, ssh 是进行 git 仓库操作的一种方式, 这样配置在实际上的 git 操作上需要做额外的 端口配置. 下面是一个 实例配置 以供参考:

// ssh [email protected] -p 7003
Host 192.168.49.1
    HostName 192.168.49.1
    Port    7003
    User git
    ProxyCommand nc -v -x 127.0.0.1:7891 %h %p

钉钉集成

这里主要讨论 钉钉 作为 idp, gitlab 作为 sp 来实现 sso. 以及使用 钉钉 的群机器人来作为 webhook 的接受者在群组中展示 gitlab 推送的信息.

sso

钉钉以及 gitlab 相关配置

  1. 进入 钉钉开放平台

进入开放平台

  1. 点击 开发者后台

点击开发者后台

  1. 登录之后选择对应的 企业 或者 组织

选择目标组织

  1. 上方 应用开发, 选择 企业内部开发

企业内部开发

  1. 点击 创建应用, 补充相关信息之后, 点击 确认创建

创建应用

  1. 点击 应用与功能, 点击 登录与共享

登录与共享

  1. 补充回调域名 http://<ip或者域名>:<无效的端口号>/users/auth/dingtalk/callback, 点击 添加

补充回调域名

  1. 选择 基础信息, 点击下面的 应用信息, 获取该应用的 AppKeyAppSecret

获取 key 和 secret

note: 如果你想控制使用该应用的用户或者组权限, 可以在应用 基础信息 下的 权限管理 进行相关操作.

  1. 进入 docker 容器中, 或者停止容器(这里展示使用 vscode 插件进入 gitlab 容器 attach vscode 并进入 etc/config), 编辑 config 映射的相关文件 gitlab.rb, 找到 OmniAuth Settings 进行如下配置

进入 docker 容器

### OmniAuth Settings
###! Docs: https://docs.gitlab.com/ee/integration/omniauth.html
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml','dingtalk']
# gitlab_rails['omniauth_sync_email_from_provider'] = 'saml'
gitlab_rails['omniauth_sync_profile_from_provider'] = []
# gitlab_rails['omniauth_sync_profile_attributes'] = ['email']
gitlab_rails['omniauth_auto_sign_in_with_provider'] = nil
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_ldap_user'] = true
gitlab_rails['omniauth_auto_link_saml_user'] = true
# gitlab_rails['omniauth_auto_link_user'] = ['saml']
gitlab_rails['omniauth_external_providers'] = ['dingtalk']
gitlab_rails['omniauth_allow_bypass_two_factor'] = []
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "dingtalk",
    "app_id" => "APP_ID", # -> 应用的 AppKey
    "app_secret" => "APP_SECRET", # -> 应用的 AppSecret
    # "args" => { "access_type" => "offline", "approval_prompt" => "" }
  }
]
  1. 在进行完 sso 相关配置之后, 进行 mail 的相关配置, 找到 GitLab email server settings
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com" # 你自己的 smtp_address
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]" # 你自己的 smtp_user_name
gitlab_rails['smtp_password'] = "password" # 你自己的 smtp_password
gitlab_rails['smtp_domain'] = "smtp.qiye.aliyun.com" # 你自己的 smtp_domain
gitlab_rails['smtp_authentication'] = "login"
# gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_pool'] = false

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
# gitlab_rails['smtp_openssl_verify_mode'] = 'none'

# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

### Email Settings

gitlab_rails['gitlab_email_enabled'] = true

##! If your SMTP server does not like the default 'From: [email protected]'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '[email protected]' # -> 你自己的 gitlab_email_from
gitlab_rails['gitlab_email_display_name'] = 'Example' # -> 你自己的 gitlab_email_display_name

这里展示的是 smtps 的相关配置而且不是 smtp_enable_starttls_auto, 更多相关信息请看 参考 相关内容

  1. 进行 smtp server 的校验, 以及生效更改的配置
gitlab-rails console
# from 你的测试邮箱  # to 填写的 gitlab_email_from
ActionMailer::Base.mail(from: "[email protected]", to: @receiver, subject: @subject, body: "Test").deliver
# succuse
# 输入 exit 退出 gitlab-rails console

成功之后, 使配置生效

gitlab-ctl reconfigure

测试

  1. 登录 gitlab

notes: root 账户临时密码存放位置在 /etc/gitlab/initial_root_password

登录 gitlab

  1. 扫码登录

登录

  1. 第一次登录会强制绑定 email, 输入你的 email, 在 mail 中确认信息

点击确认

  1. 至此钉钉验证结束

思考:

  • 我们并没有在 gitlab 中配置钉钉图标, 为什么会在登录页中出现正确的图标?
  • OmniAuth 为我们作了什么?
  • 你了解 OmniAuth 吗?

群机器人

  1. 钉钉 中选择一个将要推送 gitlab 通知的群, 并确保你有创建机器人的权限

群机器人

  1. 选择 gitlab, 点击 添加

图 14

  1. 取名字, 点击 完成

完成

  1. 保存 webhook 信息, 点击 完成

图 16

  1. 管理员 身份进入 gitlab, 点击 admin

gitlab 管理员

  1. webhook 填写到 url 中, 选中 相关事件, 最后点击 add system hook

add hook

  1. 测试, 创建对应仓库推送相关代码, 观察是否有机器人发送对应的消息

测试

  1. 至此, 完成全部流程

参考

标签:集成,部署,gitlab,smtp,rails,omniauth,docker,email
From: https://www.cnblogs.com/shubuzuo/p/16895566.html

相关文章

  • NTMFS4C810NAT3G场效应管30V NCH,DEC1515H-D0-I/Z2集成电路TQFP
    产品参数1、型号:DEC1515H-D0-I/Z2封装:TQFP128批次:新年份2、型号:NTMFS4C810NAT3GFET类型:N通道技术:MOSFET(金属氧化物)漏源电压(Vdss):30V25°C时电流-连续漏极(Id):8.2A(Ta......
  • jmeter分布式部署
    一、应用场景当性能测试过程中需要模拟的负载太高,一台测试机无法模拟,需要多台测试机一起来模拟从而达到要求的负载量,这就叫做分布式二、原理分布式测试时一般由一台控......
  • 模型的预处理操作应该部署在哪里?
    前言这两天在做一个事情:使用NVIDIATriton将训练好的文本分类模型BERT+TextCNN部署到服务器上。部署模型的过程中,发现模型的输入预处理操作,可以部署到客户端上,也可......
  • Almalinux安装部署kubesphere容器云平台
    一、介绍AlmaLinux是一个开源的、社区驱动的项目,旨在填补CentOS稳定版本消亡所留下的空白。AlmaLinux是RHEL8的一个1:1二进制兼容的分支,它是由有丰富经验的CloudLinuxOS......
  • 实施部署(锐捷云桌面篇)
    大家好,我是小杜,打工人“快乐”的学习的一天又开始了!感觉自己是一个“无情”的学习机器,设备的学习,公司流程的学习。不过师傅一直在夸我学得很快,会很快出师的。怎么会有......
  • MyEclipse技术全面解析——集成WebSphere IDE插件
    MyEclipse拥有WebSphere开发以及工程师想要和需要的额外功能,如果您的企业需要WebSphere,请使用MyEclipse作为开发的补充,这是一款多用途的WebSphereIDE,它为WebSphere开发提......
  • 三分钟梳理TDengine安装部署的逻辑
      ​小T导读:TDengine,是涛思数据面对高速增长的物联网大数据市场和技术挑战推出的创新性的大数据处理产品,除却读写性能、存储压缩能力强大之外,还有安装简单、操作难......
  • Confluent.Kafka Kafka部署安装及简单使用
    Kafka部署安装及简单使用 一、环境准备1、jdk8+2、zookeeper 3、kafka说明:在kafka较新版本中已经集成了zookeeper,所以不用单独安装zookeeper,只需要在kafka文件......
  • K8s部署owncloud
    目录owncloudhelminitowncloudhelpdebugconfigowncloudhttps://hub.kubeapps.com/charts/bitnami/owncloudhelminitownclouddockerpulldocker.io/bitnami/ow......
  • Kubernetes部署ldap
    目录docldapinitpvldapinituse查看状态dochttps://hub.kubeapps.com/charts/geek-cookbook/openldapldap389tcp636tcpinitpvkubectlapply-f/free_cicd......