安装Gitlab(via dockerimage),实现Auto Pipeline

准备机器,信息如下:

root@server:~# hostnamectl
   Static hostname: server.local
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 7b0c392aff5f742bb78a87e65b929466
           Boot ID: bef54cfd95454cbc92e14b5091745b67
    Virtualization: vmware
  Operating System: Ubuntu 16.04.5 LTS
            Kernel: Linux 4.4.0-134-generic
      Architecture: x86-64

更改ssh server端口,避免与gitlab ssh端口冲突

root@server:~# vim /etc/ssh/sshd_config
...(省略)
# What ports, IPs and protocols we listen for
Port 2222
...(省略)

重启sshd服务变更端口生效

root@server:~# systemctl restart sshd.service

设置从客户端ssh免密到server

#确保通过名称server.local访问到服务器
gitadmin@DESKTOP-PCPO8BK:~$ sudo vim /etc/hosts
192.168.193.200 server.local

#更改ssh客户端连接ssh服务器的默认关口
gitadmin@DESKTOP-PCPO8BK:~$ vim .ssh/config
Host server.local
    Port 2222

#生成密钥,-C 备注关联用户
gitadmin@DESKTOP-PCPO8BK:~$ ssh-keygen -C "simon.zhu@xxxx.com"

#copy公钥到服务器
gitadmin@DESKTOP-PCPO8BK:~$ ssh-copy-id root@server.local

#测试免密连接
gitadmin@DESKTOP-PCPO8BK:~$ ssh root@server.local
Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-134-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

38 packages can be updated.
28 updates are security updates.

New release '18.04.1 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


Last login: Sat Oct 27 13:00:15 2018 from 192.168.193.1
root@server:~#

在服务器安装Docker
在服务器安装Docker Compose
给服务配置大内存,尽量使用内存,提高性能

以下安装MTA(smtp服务器),为Gitlab准备邮件通知功能

apt install -y postfix
#将docker的ip(一般以172开头)设置为可信网络,以便smtp服务器接收gitlab发出的投递请求
root@server:~# vim /etc/postfix/main.cf
mynetworks = 172.0.0.0/8 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
root@server:~# systemctl restart postfix.service

运行Gitlab Runner

root@runner1:~/runner# vim docker-compose.yml
version: '3.7'
services:
  runner:
    image: gitlab/gitlab-runner:alpine-v11.4.2
    restart: always
    extra_hosts:
      - "server.local:192.168.193.200"
    environment:
      - RUNNER_NAME=Docker Executor (Docker in Docker)
    volumes:
      - /srv/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
root@runner1:~/runner# docker-compose up -d

启动Gitlab

root@server:~# mkdir -p ci
root@server:~# cd ci/
root@server:~/ci# vim gitlab.yml
version: '3.7'
services:
  web:
    image: 'gitlab/gitlab-ce:11.4.0-ce.0'
    restart: always
    hostname: 'server.local'
    extra_hosts:
      #邮件通知服务器地址
      - "smtp.server:192.168.193.200"
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.193.200'
        gitlab_rails['smtp_enable'] = true;
        gitlab_rails['smtp_address'] = 'smtp.server';
        gitlab_rails['smtp_port'] = 25;
        gitlab_rails['smtp_domain'] = 'server.local';
        gitlab_rails['smtp_tls'] = false;
        gitlab_rails['smtp_openssl_verify_mode'] = 'none'
        gitlab_rails['smtp_enable_starttls_auto'] = false
        gitlab_rails['smtp_ssl'] = false
        gitlab_rails['smtp_force_ssl'] = false
        gitlab_rails['ldap_enabled'] = true
        gitlab_rails['ldap_servers'] = YAML.load <<-EOS
        main:
          label: 'ldap.mycom.com'
          host: 'ldap'
          port: 389
          uid: 'uid'
          encryption: 'plain'
          bind_dn: 'cn=admin,dc=mycom,dc=com'
          password: '1'
          active_directory: false
          allow_username_or_email_login: true
          lowercase_usernames: true
          base: 'cn=admin,dc=mycom,dc=com'
          user_filter: ''
        EOS
    ports:
      - '80:80'
      - '443:443'
      - '22:22'
    volumes:
      - './gitlab/config:/etc/gitlab'
      - './gitlab/logs:/var/log/gitlab'
      - './gitlab/data:/var/opt/gitlab'

#启动Gitlab
root@server:~/ci# docker-compose -f gitlab.yml up -d

增加ldap方式的Gitlab认证授权,启动ldap服务

root@server:~/ci# vim ldap.yml
version: '3.7'

services:
  ldap:
    image: "osixia/openldap:1.2.2"
    restart: always
    environment:
      LDAP_ORGANISATION: mycom
      LDAP_DOMAIN: mycom.com
      LDAP_BASE_DN: mycom.com
      LDAP_ADMIN_PASSWORD: "admin"
      LDAP_OPENLDAP_UID: 0
      LDAP_OPENLDAP_GID: 0
      LDAP_TLS: "false"
      LDAP_CONFIG_PASSWORD: "admin"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ./ldap/database:/var/lib/ldap
      - ./ldap/conf:/etc/ldap/slapd.d
    expose:
      - "389"
#    network_mode: "host"
#    ports:
#      - 389:389

  phpldapadmin:
    image: "osixia/phpldapadmin:0.7.2"
    restart: always
    environment:
      PHPLDAPADMIN_HTTPS: "false"
      PHPLDAPADMIN_LDAP_HOSTS: "ldap"
    volumes:
      - /etc/localtime:/etc/localtime:ro
#    network_mode: "host"
    ports:
#      - 6443:443
      - 6080:80

#启动ldap服务
root@server:~/ci# docker-compose -f ldap.yml up -d

在ldap服务添加用户


Login DN:cn=admin,dc=mycom,dc=com;Passwords:admin

image.png

用在ldap中添加的用户登陆GItlab


用邮箱和密码登陆

image.png

启动Runner
准备另一台机器,软件环境与上面Server相同(即安装好Docker和Docker Compose)

root@runner1:~# hostnamectl
   Static hostname: runner1.local
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 7b0c392aff5f742bb78a87e65b929466
           Boot ID: 11957514ccc14a59ae62789bb4a311fb
    Virtualization: vmware
  Operating System: Ubuntu 16.04.5 LTS
            Kernel: Linux 4.4.0-134-generic
      Architecture: x86-64
root@runner1:~# mkdir -p runner/
root@runner1:~# cd runner/
root@runner1:~/runner# vim docker-compose.yml
version: '3.7'
services:
  runner:
    image: gitlab/gitlab-runner:alpine-v11.4.2
    restart: always
    extra_hosts:
      - "server.local:192.168.193.200"
#      - "gitlab.mycom.com:192.168.193.200"
    environment:
      - RUNNER_NAME=Docker Executor (Docker in Docker)
    volumes:
      - /srv/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
root@runner1:~/runner# docker-compose up -d

注册Runner
(token需要GItlab的root用户通过Standard登陆查看)


image.png
root@runner1:~/runner# docker exec -it runner_runner_1 bash
bash-4.4# gitlab-runner register -n \
>   --url http://server.local/ \
>   --registration-token Qmx8nyxdCypHLpzyH5eH \
>   --executor docker \
>   --description "My Docker Runner(dind executor)" \
>   --docker-image "docker:stable" \
>   --docker-privileged
Runtime platform                                    arch=amd64 os=linux pid=17 revision=cf91d5e1 version=11.4.2
Running in system-mode.

Registering runner... succeeded                     runner=Qmx8nyxd
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

通过Gitlab查看注册的Runner


image.png

登陆Gitlab,注册ssh公钥,创建项目,并克隆到本地,创建.gitlab-ci.yml

gitadmin@DESKTOP-PCPO8BK:~/pj1$ vim .gitlab-ci.yml

push到Gitlab,Gitlab自动运行pipeline(编译,测试,打包,发布)

image.png

后续打算继续如下实验
1,通过redmine提出功能需求
2,基于主分支,创建开发分支,完成开发,静态代码分析,测试
3,创建merge request到master
4,确认merge request通过,自动关闭redmine的issue

待完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269