zoukankan      html  css  js  c++  java
  • Gitlab CI-1.Gitlab部署

    参考文档:

    1. GitLab Documentation:https://docs.gitlab.com/ce/
    2. Installation and Configuration using omnibus package:https://docs.gitlab.com/omnibus/README.html#installation-and-configuration-using-omnibus-package
    3. Configuration of your jobs with .gitlab-ci.yml:https://docs.gitlab.com/ce/ci/yaml/README.html
    4. Gitlab Community Edition 镜像:https://mirrors.tuna.tsinghua.edu.cn/help/gitlab-ce/
    5. Gitlab Runner:https://docs.gitlab.com/runner/
    6. GitLab Continuous Integration:https://docs.gitlab.com/ce/ci/
    7. 基于OpenSSL自建CA和颁发SSL证书:http://seanlook.com/2015/01/18/openssl-self-sign-ca/

    一.环境

    1. 环境规划

    Hostname

    IP

    Service

    Remark

    gitlab

    172.30.200.55

    gitlab 11.1.2

    ps:disable selinux; remove firewalld, instead of iptables; configure ntp; aliyun repo; update openssl and so on.

    gitlab-runner

    172.30.200.56

    gitlab-runner 11.1.0

    docker 1.12.6

    2. 设置iptables

    # gitlab通过nginx对外提供portal服务,提前打开默认的tcp80与443端口;
    # gitlan-runner主机的iptables可暂不处理
    [root@gitlab ~]# vim /etc/sysconfig/iptables
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
    
    [root@gitlab ~]# service iptables restart

    3. 自签名CA证书

    基于https通信,验证环境采用自签名的ca证书,以下操作在ca服务器上操作。

    1)配置openssl.cnf

    # 主要设置部分默认选项,生成csr请求文件时可避免收工输入;
    # 涉及[ req_distinguished_name ] section,修改/新增部分用红色字体标识
    [root@gitlab ~]# vim /etc/pki/tls/openssl.cnf
    [ req_distinguished_name ]
    countryName                     = Country Name (2 letter code)
    countryName_default             = CN
    countryName_min                 = 2
    countryName_max                 = 2
    
    stateOrProvinceName             = State or Province Name (full name)
    stateOrProvinceName_default     = Sichuan
    
    localityName                    = Locality Name (eg, city)
    localityName_default            = Chengdu
    
    0.organizationName              = Organization Name (eg, company)
    0.organizationName_default      = Netonline
    
    # we can do this but it is not needed normally :-)
    #1.organizationName             = Second Organization Name (eg, company)
    #1.organizationName_default     = World Wide Web Pty Ltd
    
    organizationalUnitName          = Organizational Unit Name (eg, section)
    organizationalUnitName_default  = Cloud-Team
    
    commonName                      = Common Name (eg, your name or your server's hostname)
    commonName_max                  = 64
    # 新增,可对*.netonline.com进行签名;default为不设置,可对所有域名签名
    commonName_default              = *.netonline.com
    
    emailAddress                    = Email Address
    emailAddress_max                = 64
    
    # SET-ex3                       = SET extension number

    2)创建初始文件

    # 对服务器证书进行签名时需要初始文件;
    # 默认需要创建在/etc/pki/CA/目录下
    [root@gitlab ~]# touch /etc/pki/CA/index.txt /etc/pki/CA/serial
    [root@gitlab ~]# echo "01" >> /etc/pki/CA/serial

    3)自签名根证书

    生成根秘钥

    # CA根秘钥,.key文件(或xx-key.pem)
    [root@gitlab ~]# openssl genrsa -out /etc/pki/CA/private/ca.key 2048

    生成根证书请求文件

    # CA根证书请求,.csr文件;
    # 在openssl.cnf中已有默认配置,一路回车即可,这里暂不设置email与证书请求密码
    [root@gitlab ~]# openssl req -new -key /etc/pki/CA/private/ca.key -out /etc/pki/CA/private/ca.csr

    生成根证书

    # CA根证书,.crt文件(或xx-crt.pem);
    # -days 3650:设置根证书有效时间,单位:day
    # 生成根证书与根证书请求文件可合并执行,如:openssl req -new -x509 -key /path/to/ca.key -out /path/to/ca.crt
    [root@gitlab ~]# openssl req -x509 -days 3650 -in /etc/pki/CA/private/ca.csr -key /etc/pki/CA/private/ca.key -out /etc/pki/CA/private/ca.crt

    本地客户端导入根证书

    (1). 自签名的根证书需要导入至本地客户端(firefox 57.0.2):工具-->选项-->隐私与安全-->证书-->查看证书-->证书机构-->导入,如下:

    (2). 导入生成的自签名根证书,如下:

    (3). 信任根证书认证机构(选项后期可调整,这里先全选),如下:

    (4). 自签名的根证书安装完成后,可查看(根据"Organization Name"排序),如下:

    4)服务器证书

    服务器证书秘钥

    # server端秘钥(.key或.pem)与证书需要放置在web服务器特性位置,这里暂放在/root/ssl/目录
    [root@gitlab ~]# mkdir -p /root/ssl
    [root@gitlab ~]# openssl genrsa -out /root/ssl/gitlab.netonline.com.key 2048

    服务器证书请求文件

    # Common Name:匹配web服务器的ip/domain/hostname等,因CA根证书已经确定了后缀,这里后缀需要保持一致
    [root@gitlab ~]# openssl req -new -key /root/ssl/gitlab.netonline.com.key -out /root/ssl/gitlab.netonline.com.csr

    服务器证书

    # 采用CA根证书签名,生成server端证书(.crt或.pem);
    # 签署证书时会校验/etc/pki/tls/openssl.cnf文件中[ policy_match ]定义的匹配项,如有强制匹配或必填项不符合要求,会有相应报错
    [root@gitlab ~]# openssl ca -in /root/ssl/gitlab.netonline.com.csr -out /root/ssl/gitlab.netonline.com.crt -cert /etc/pki/CA/private/ca.crt -keyfile /etc/pki/CA/private/ca.key

    二.Gitlab

    1. 安装gitlab-ce

    1)安装gitlab-repo

    # 使用国内镜像源,安装gitlab-ce版本
    [root@gitlab ~]# vim /etc/yum.repos.d/gitlab-ce.repo
    [gitlab-ce]
    name=Gitlab CE Repository
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
    gpgcheck=0
    enabled=1

    2)安装gitlab-ce

    [root@gitlab ~]# yum makecache
    [root@gitlab ~]# yum install gitlab-ce -y

    2. 配置gitlab.rb

    # 以下只列出配置文件的修改部分(附参数所在行数)
    [root@gitlab ~]# vim /etc/gitlab/gitlab.rb
    # gitlab默认不采用https
    13 external_url 'https://gitlab.netonline.com'
    
    # 默认情况下,启用https后,服务器不在监听tcp80端口
    903 nginx['redirect_http_to_https'] = true
    
    # 如果采用https,默认从/etc/gitlab/ssl/目录下加载服务器证书与秘钥;
    # 注意将生成服务器证书与秘钥复制或移动到相应目录;
    # 后期如果只是变更证书,但gitlab.rb文件未变更,命令”gitlab-ctl reconfigure”对已启动的gitlab-nginx服务无效,可采用命令”gitlab-ctl hup nginx”使gitlab-nginx重载证书
    915 nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.netonline.com.crt"
    916 nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.netonline.com.key"

    3. 移动服务器证书与秘钥文件

    [root@gitlab ~]# mkdir -p /etc/gitlab/ssl
    [root@gitlab ~]# cp /root/ssl/gitlab.netonline.com.crt /etc/gitlab/ssl/
    [root@gitlab ~]# cp /root/ssl/gitlab.netonline.com.key /etc/gitlab/ssl/

    4. 启动gitlab

    # 通过yum一键安装的gitlab,gitlab.rb配置完成后,通过命令”gitlab-ctl reconfigure”,各组件按既定组合方式完成配置并启动服务
    [root@gitlab ~]# gitlab-ctl reconfigure

    # 监听端口
    [root@gitlab ~]# netstat -tunlp

    5. 访问gitlab

    通过本地客户端访问gitlab web服务(提前绑定hosts):https://gitlab.netonline.com

    (1). 首次登陆,账号root,密码重新配置;

    (2). 网站已被自签名的ca证书机构验证,网址前端显示为安全连接;

    (3). 使用root账号与刚确定的密码登陆gitlab首页,如下:

    6. 建立repository

    流程同github,以下做简单演示。

    1)设置ssh keys

    生成ssh keys

    # 在本地生成ssh keys;
    # -C: -C comment,可选项,这里采用gitlab默认地址(账号-->Settings-->emails);
    # 生成的id_rsa与id_rsa.pub默认在~/.ssh目录
    [root@gitlab-runner ~]# ssh-keygen -t rsa -C admin@example.com

    设置ssh keys

    登陆gitlab,账号-->Settings-->SSH Keys,在"Key"对话框中粘帖~/.ssh/id_rsa.pub的内容,"Add key"即可(title部分自动补全),如下:

    2)建立repository

    同github,登陆gitlab首页,点击"Create a proiect",填写"Project name",设置"Visibility Level","Initialize repository with a README"项可选,点击"Create project"即可,如下:

    3)连接远程repository

    # 建立本地repository目录
    [root@gitlab-runner ~]# mkdir -p ~/gitlab
    [root@gitlab-runner ~]# cd ~/gitlab/
    
    # 必须在本地repository目录中初始化,初始化后再目录中生成.git目录,跟踪管理版本信息等
    [root@gitlab-runner gitlab]# git init
    
    # 配置全局访问参数,默认配置的全局参数在~/.gitconfig文件中记录
    [root@gitlab-runner gitlab]# git config --global user.email "admin@example.com"
    [root@gitlab-runner gitlab]# git config --global user.name "root"
    
    # 关联远程repository(关联不同于连接),注意:关联并非连接
    # origin是默认的远程repository名字;
    # 远程repository地址从gitlab的具体project页获取
    [root@gitlab-runner gitlab]# git remote add origin git@gitlab.netonline.com:root/gitlab.git
    
    # 版本合并,远程本地master分支版本归一
    [root@gitlab-runner gitlab]# git pull git@gitlab.netonline.com:root/gitlab.git master
  • 相关阅读:
    夺命雷公狗---微信开发22----微信客户端下载多媒体文件
    夺命雷公狗---微信开发21----通过程序进行下载多媒体文件
    夺命雷公狗---微信开发20----编写程序进行上传多媒体文件
    夺命雷公狗---微信开发19----使用网页调试工具调试该接口进行文件的上传与下载
    夺命雷公狗---微信开发18----删除自定义菜单
    夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK
    夺命雷公狗---微信开发16----自定义菜单的查询
    夺命雷公狗---微信开发15----编写进行创建自定义菜单
    夺命雷公狗---微信开发14----用网页调试工具调试自定义菜单接口
    夺命雷公狗---微信开发13----获取access_token
  • 原文地址:https://www.cnblogs.com/netonline/p/9794707.html
Copyright © 2011-2022 走看看