歡迎訪問我的GitHub
https://github.com/zq2599/blog_demos
內(nèi)容:所有原創(chuàng)文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;
起因是懶
最近開始折騰GitLab的CI功能,就打算在家部署一個GitLab,通常做法是打開電腦,啟動GitLab,用完再關(guān)閉電腦,總覺得這些操作挺麻煩(您想罵我懶么?您罵得對.....)
群暉解決煩惱
- 家里有臺群暉DS218+,從不關(guān)機,為全家提供穩(wěn)定的圖片和視頻服務(wù),之前已在上面部署了maven私服、MySQL,運行得很穩(wěn)定,今天就把GitLab也部署在上面吧,今后可以隨時想用就用,算得上懶人救星了。
- 下圖是DS218+剛買來的樣子,兩塊NAS硬盤,一直在穩(wěn)定服務(wù):

- 下圖是網(wǎng)購的內(nèi)存條,現(xiàn)在一共2+8=10G內(nèi)存,內(nèi)存充足才是敢折騰的底氣:

前文鏈接
之前折騰群暉的記錄:
思路
其實操作很簡單:GitLab的部署是基于docker-compose的,群暉已帶有docker-compose了,按照官方的部署指南操作即可,以下幾處是要注意的地方:
- 部署操作需要管理員權(quán)限,所以不在網(wǎng)頁上操作了,而是SSH登錄后臺進行操作;
- GitLab最好是用域名訪問,如果用IP就意味著文件訪問地址中帶有IP,一旦IP變了,原有的文件訪問地址就無效了
環(huán)境信息
- 群暉系統(tǒng):DSM 6.2.2-24922 Update 4
- GitLab:Community Edition 13.0.6
配置host
GitLab中的文件都有訪問地址,用GitLab服務(wù)器的IP作為這個地址顯然是不合適的(如果GitLab服務(wù)器的IP變了這個文件的訪問地址就無效了),所以以下兩點需要滿足:
- 為GitLab服務(wù)器準備域名,這里就是給群暉的IP地址準備域名:<font color="blue">gitlab.synology.com</font>
- 確保群暉自己能通過域名訪問到GitLab
- 確保所有訪問者都能通過域名訪問到GitLab
- 一般是修改訪問者的hosts文件來達到域名訪問的目標,我這里為了省事兒,是在路由器里配置的:<font color="blue">192.168.50.43 gitlab.synology.com</font>
允許SSH登錄
先要設(shè)置允許SSH后臺登錄:
- 如下圖紅框的操作:

- 如下圖,勾選啟用SSH功能,端口就用22:

- 現(xiàn)在用SSH終端即可登錄群暉了,我這里是在windows電腦上用Xshell6登錄的,您可以選用任意SSH終端工具,賬號密碼就是能登錄群暉的賬號密碼,如下圖,登錄后,就可以使用日常的linux命令了:

- 注意上圖的紅框,登錄賬號的home目錄是<font color="red">/var/services/homes/zq2599</font>
部署
- 創(chuàng)建<font color="blue">docker-compose.yml</font>文件,內(nèi)容如下(大多數(shù)內(nèi)容可以直接使用,需要修改的地方稍后會說):
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:
- 上述配置中,有四處地方需要您修改;
- 第一處:gitlab.ports,這里用宿主機的10080端口映射容器的http端口,宿主機的10022端口映射容器的ssh端口
- 第二處:gitlab.environment.GITLAB_PORT,要和前面映射的10080端口一致,這樣GitLab上的文件url中會帶有10080端口,確保在網(wǎng)頁上可以正常訪問文件
- 第三處:gitlab.environment.GITLAB_SSH_PORT,要和前面映射的10022端口一致,這樣GitLab上給出的倉庫地址中會帶有10022,您在客戶端使用git clone命令時才連接GitLab成功
- 第四處:gitlab.environment.GITLAB_HOST,配置成前面準備好的host:gitlab.synology.com
- 其他參數(shù)我這里暫時無需修改,請您自己酌情調(diào)整,參考文檔:https://github.com/sameersbn/docker-gitlab
- 再次確認群暉上的域名是可以訪問的(192.168.50.43是群暉的IP地址):

執(zhí)行命令<font color="blue">sudo docker-compose up -d</font>,完成GitLab的部署和啟動;
等待啟動成功,群暉的硬件性能一般,我這里大約等待10分鐘左右(期間網(wǎng)頁訪問會出現(xiàn)502錯誤,等啟動成功后就好了);
啟動成功后,訪問地址<font color="blue">http://gitlab.synology.com:10080</font>,會提示設(shè)置root賬號的密碼:

- 設(shè)置好密碼后,就可以用root賬號登錄了:

- 如下圖,請另外注冊一個賬號,在后面的實際操作中用到,我這邊注冊賬號是zq2599,郵箱zq2599@gmail.com

驗證:創(chuàng)建項目
- 用新建賬號登錄,點擊<font color="blue">Create a project</font>:

- 新建倉庫的信息如下:

- 在新倉庫的頁面,下圖紅框中是該倉庫的地址,請記下來,稍后用到:

驗證:提交代碼
- 找一臺電腦來驗證提交代碼,我這里找了個CentOS7服務(wù)器;
- 安裝git:yum install -y git
- 創(chuàng)建ssh key,執(zhí)行ssh-keygen -t rsa -C "zq2599@gmail.com",然后一路回車:

- 賬號和郵箱做全局配置,執(zhí)行如下命令:
git config --global user.name "zq2599" \
&& git config --global user.email zq2599@gmail.com
- 將文件~/.ssh/id_rsa.pub的內(nèi)容完整復制到如下位置:

- 回到客戶端機器上,克隆項目試試:
git clone ssh://git@gitlab.synology.com:10022/zq2599/test001.git
- 如下圖,代碼下載成功:

- 再來試試修改內(nèi)容能否成功提交,操作命令如下圖所示:

- 再去網(wǎng)站上看看,內(nèi)容已經(jīng)成功提交:

至此,群暉服務(wù)器上已成功安裝了GitLab,接下來可以愉快的折騰GitLab CI了;
你不孤單,欣宸原創(chuàng)一路相伴
歡迎關(guān)注公眾號:程序員欣宸
微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos