群晖DS218+部署GitLab

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 家里的群晖用来装上GitLab,可以保存代码,也可以执行GitLab CI

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

起因是懒

最近开始折腾GitLab的CI功能,就打算在家部署一个GitLab,通常做法是打开电脑,启动GitLab,用完再关闭电脑,总觉得这些操作挺麻烦(您想骂我懒么?您骂得对.....)

群晖解决烦恼

  1. 家里有台群晖DS218+,从不关机,为全家提供稳定的图片和视频服务,之前已在上面部署了maven私服、MySQL,运行得很稳定,今天就把GitLab也部署在上面吧,今后可以随时想用就用,算得上懒人救星了。
  2. 下图是DS218+刚买来的样子,两块NAS硬盘,一直在稳定服务:
    在这里插入图片描述
  3. 下图是网购的内存条,现在一共2+8=10G内存,内存充足才是敢折腾的底气:
    在这里插入图片描述

    前文链接

    之前折腾群晖的记录:
  4. 群晖DS218+部署mysql
  5. 群晖DS218+部署kafka
  6. 群晖DS218+做maven私服(nexus3)
  7. K8S使用群晖DS218+的NFS
  8. 群晖DS218+部署Harbor(1.10.3)

    思路

    其实操作很简单:GitLab的部署是基于docker-compose的,群晖已带有docker-compose了,按照官方的部署指南操作即可,以下几处是要注意的地方:
  9. 部署操作需要管理员权限,所以不在网页上操作了,而是SSH登录后台进行操作;
  10. GitLab最好是用域名访问,如果用IP就意味着文件访问地址中带有IP,一旦IP变了,原有的文件访问地址就无效了

    环境信息

  11. 群晖系统:DSM 6.2.2-24922 Update 4
  12. GitLab:Community Edition 13.0.6

    配置host

    GitLab中的文件都有访问地址,用GitLab服务器的IP作为这个地址显然是不合适的(如果GitLab服务器的IP变了这个文件的访问地址就无效了),所以以下两点需要满足:
  13. 为GitLab服务器准备域名,这里就是给群晖的IP地址准备域名:gitlab.synology.com
  14. 确保群晖自己能通过域名访问到GitLab
  15. 确保所有访问者都能通过域名访问到GitLab
  16. 一般是修改访问者的hosts文件来达到域名访问的目标,我这里为了省事儿,是在路由器里配置的:192.168.50.43 gitlab.synology.com

    允许SSH登录

    先要设置允许SSH后台登录:
  17. 如下图红框的操作:
    在这里插入图片描述
  18. 如下图,勾选启用SSH功能,端口就用22:
    在这里插入图片描述
  19. 现在用SSH终端即可登录群晖了,我这里是在windows电脑上用Xshell6登录的,您可以选用任意SSH终端工具,账号密码就是能登录群晖的账号密码,如下图,登录后,就可以使用日常的linux命令了:
    在这里插入图片描述
  20. 注意上图的红框,登录账号的home目录是/var/services/homes/zq2599

    部署

  21. 创建docker-compose.yml文件,内容如下(大多数内容可以直接使用,需要修改的地方稍后会说):
version: '2.3'

services:
  redis:
    restart: always
    image: redis:5.0.9
    command:
    - --loglevel warning
    volumes:
    - redis-data:/var/lib/redis:Z

  postgresql:
    restart: always
    image: sameersbn/postgresql:11-20200524
    volumes:
    - postgresql-data:/var/lib/postgresql:Z
    environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
    - DB_EXTENSION=pg_trgm

  gitlab:
    restart: always
    image: sameersbn/gitlab:13.0.6
    depends_on:
    - redis
    - postgresql
    ports:
    - "10080:80"
    - "10022:22"
    volumes:
    - gitlab-data:/home/git/data:Z
    healthcheck:
      test: ["CMD", "/usr/local/sbin/healthcheck"]
      interval: 5m
      timeout: 10s
      retries: 3
      start_period: 5m
    environment:
    - DEBUG=false

    - DB_ADAPTER=postgresql
    - DB_HOST=postgresql
    - DB_PORT=5432
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production

    - REDIS_HOST=redis
    - REDIS_PORT=6379

    - TZ=Asia/Kolkata
    - GITLAB_TIMEZONE=Kolkata

    - GITLAB_HTTPS=false
    - SSL_SELF_SIGNED=false

    - GITLAB_HOST=gitlab.synology.com
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_RELATIVE_URL_ROOT=
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alphanumeric-string
    - GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alphanumeric-string

    - GITLAB_ROOT_PASSWORD=
    - GITLAB_ROOT_EMAIL=

    - GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
    - GITLAB_NOTIFY_PUSHER=false

    - GITLAB_EMAIL=notifications@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_INCOMING_EMAIL_ADDRESS=reply@example.com

    - GITLAB_BACKUP_SCHEDULE=daily
    - GITLAB_BACKUP_TIME=01:00

    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login

    - IMAP_ENABLED=false
    - IMAP_HOST=imap.gmail.com
    - IMAP_PORT=993
    - IMAP_USER=mailer@example.com
    - IMAP_PASS=password
    - IMAP_SSL=true
    - IMAP_STARTTLS=false

    - OAUTH_ENABLED=false
    - OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
    - OAUTH_ALLOW_SSO=
    - OAUTH_BLOCK_AUTO_CREATED_USERS=true
    - OAUTH_AUTO_LINK_LDAP_USER=false
    - OAUTH_AUTO_LINK_SAML_USER=false
    - OAUTH_EXTERNAL_PROVIDERS=

    - OAUTH_CAS3_LABEL=cas3
    - OAUTH_CAS3_SERVER=
    - OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
    - OAUTH_CAS3_LOGIN_URL=/cas/login
    - OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
    - OAUTH_CAS3_LOGOUT_URL=/cas/logout

    - OAUTH_GOOGLE_API_KEY=
    - OAUTH_GOOGLE_APP_SECRET=
    - OAUTH_GOOGLE_RESTRICT_DOMAIN=

    - OAUTH_FACEBOOK_API_KEY=
    - OAUTH_FACEBOOK_APP_SECRET=

    - OAUTH_TWITTER_API_KEY=
    - OAUTH_TWITTER_APP_SECRET=

    - OAUTH_GITHUB_API_KEY=
    - OAUTH_GITHUB_APP_SECRET=
    - OAUTH_GITHUB_URL=
    - OAUTH_GITHUB_VERIFY_SSL=

    - OAUTH_GITLAB_API_KEY=
    - OAUTH_GITLAB_APP_SECRET=

    - OAUTH_BITBUCKET_API_KEY=
    - OAUTH_BITBUCKET_APP_SECRET=

    - OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
    - OAUTH_SAML_IDP_CERT_FINGERPRINT=
    - OAUTH_SAML_IDP_SSO_TARGET_URL=
    - OAUTH_SAML_ISSUER=
    - OAUTH_SAML_LABEL="Our SAML Provider"
    - OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
    - OAUTH_SAML_GROUPS_ATTRIBUTE=
    - OAUTH_SAML_EXTERNAL_GROUPS=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
    - OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=

    - OAUTH_CROWD_SERVER_URL=
    - OAUTH_CROWD_APP_NAME=
    - OAUTH_CROWD_APP_PASSWORD=

    - OAUTH_AUTH0_CLIENT_ID=
    - OAUTH_AUTH0_CLIENT_SECRET=
    - OAUTH_AUTH0_DOMAIN=
    - OAUTH_AUTH0_SCOPE=

    - OAUTH_AZURE_API_KEY=
    - OAUTH_AZURE_API_SECRET=
    - OAUTH_AZURE_TENANT_ID=

volumes:
  redis-data:
  postgresql-data:
  gitlab-data:
  1. 上述配置中,有四处地方需要您修改;
  • 第一处:gitlab.ports,这里用宿主机的10080端口映射容器的http端口,宿主机的10022端口映射容器的ssh端口
  • 第二处:gitlab.environment.GITLAB_PORT,要和前面映射的10080端口一致,这样GitLab上的文件url中会带有10080端口,确保在网页上可以正常访问文件
  • 第三处:gitlab.environment.GITLAB_SSH_PORT,要和前面映射的10022端口一致,这样GitLab上给出的仓库地址中会带有10022,您在客户端使用git clone命令时才连接GitLab成功
  • 第四处:gitlab.environment.GITLAB_HOST,配置成前面准备好的host:gitlab.synology.com
  • 其他参数我这里暂时无需修改,请您自己酌情调整,参考文档:https://github.com/sameersbn/docker-gitlab
  1. 再次确认群晖上的域名是可以访问的(192.168.50.43是群晖的IP地址):
    在这里插入图片描述
  2. 执行命令sudo docker-compose up -d,完成GitLab的部署和启动;
  3. 等待启动成功,群晖的硬件性能一般,我这里大约等待10分钟左右(期间网页访问会出现502错误,等启动成功后就好了);
  4. 启动成功后,访问地址http://gitlab.synology.com:10080,会提示设置root账号的密码:
    在这里插入图片描述
  5. 设置好密码后,就可以用root账号登录了:
    在这里插入图片描述
  6. 如下图,请另外注册一个账号,在后面的实际操作中用到,我这边注册账号是zq2599,邮箱zq2599@gmail.com
    在这里插入图片描述

    验证:创建项目

  7. 用新建账号登录,点击Create a project
    在这里插入图片描述
  8. 新建仓库的信息如下:
    在这里插入图片描述
  9. 在新仓库的页面,下图红框中是该仓库的地址,请记下来,稍后用到:
    在这里插入图片描述

    验证:提交代码

  10. 找一台电脑来验证提交代码,我这里找了个CentOS7服务器;
  11. 安装git:yum install -y git
  12. 创建ssh key,执行ssh-keygen -t rsa -C "zq2599@gmail.com",然后一路回车:
    在这里插入图片描述
  13. 账号和邮箱做全局配置,执行如下命令:

    git config --global user.name "zq2599" \
    && git config --global user.email zq2599@gmail.com
    
  14. 将文件~/.ssh/id_rsa.pub的内容完整复制到如下位置:
    在这里插入图片描述

  15. 回到客户端机器上,克隆项目试试:

    git clone ssh://git@gitlab.synology.com:10022/zq2599/test001.git
    
  16. 如下图,代码下载成功:
    在这里插入图片描述

  17. 再来试试修改内容能否成功提交,操作命令如下图所示:
    在这里插入图片描述
  18. 再去网站上看看,内容已经成功提交:
    在这里插入图片描述
    至此,群晖服务器上已成功安装了GitLab,接下来可以愉快的折腾GitLab CI了;

欢迎关注阿里云开发者社区:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

相关文章
|
2月前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
6月前
|
JavaScript Java 应用服务中间件
用白薅来的gitlab自带的gitlab-runner部署一个vue项目
用白薅来的gitlab自带的gitlab-runner部署一个vue项目
167 2
|
2月前
|
运维 Linux 开发工具
第22篇 如何部署gitLab进行开发版本控制
第22篇 如何部署gitLab进行开发版本控制
|
4月前
|
jenkins 持续交付 数据安全/隐私保护
GitLab——如何快速部署GitLab仓库
GitLab——如何快速部署GitLab仓库
41 0
|
6月前
|
运维 Serverless 开发工具
函数计算产品使用问题之通过GitLab仓库来部署代码,该如何配置GitLab仓库
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
无缝构建与部署:GitLab CI/CD首秀的实战攻略
无缝构建与部署:GitLab CI/CD首秀的实战攻略
227 0
无缝构建与部署:GitLab CI/CD首秀的实战攻略
|
6月前
|
Docker 容器
docker 部署gitlab
docker 部署gitlab
103 0
|
7月前
|
Linux Go iOS开发
GitLab Runner全解析:深入了解构建、测试和部署的关键执行者
GitLab Runner全解析:深入了解构建、测试和部署的关键执行者
1401 0
GitLab Runner全解析:深入了解构建、测试和部署的关键执行者
|
存储 持续交付 开发工具
使用docker-compose私有化部署 GitLab
在软件开发和协作过程中,版本控制是至关重要的一环。GitLab 是一个功能强大的开源平台,提供了完整的代码管理功能,包括版本控制、问题跟踪以及持续集成等。
655 2
使用docker-compose私有化部署 GitLab
|
Linux 开发工具 git
淘东电商项目(07) -GitLab简介以及Docker部署
淘东电商项目(07) -GitLab简介以及Docker部署
104 0

相关实验场景

更多