docker+gitlab+gitlab-runner部署

环境

服务端:centos7html

客户端:windowlinux

在centos7上部署docker+gitlab+gitlab-runner,win10利用ssh链接,开发人员只需提交代码,就能够进行项目文件上传,打包镜像,发布运行测试git

1、centos7上安装docker和docker-compose

安装docker:github

一、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。docker

经过 uname -r 命令查看你当前的内核版本shell

 $ uname -r

二、使用 root 权限登陆 Centos。确保 yum 包更新到最新。json

$ sudo yum update

三、卸载旧版本(若是安装过旧版本的话)centos

$ sudo yum remove docker  docker-common docker-selinux docker-engine

四、安装须要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的api

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

五、设置yum源浏览器

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 

六、能够查看全部仓库中全部docker版本,并选择特定版本安装

$ yum list docker-ce --showduplicates | sort -r

七、安装docker

$ sudo yum install docker-ce  #因为repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

 

八、启动并加入开机启动

$ sudo systemctl start docker
$ sudo systemctl enable docker

九、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

$ docker version

十、建议更换docker的镜像源:

 

1.修改或建立daemon.json文件:vi /etc/docker/daemon.json
 
将如下配置写入到文件中,保存并退出(不会操做的百度下vi命令吧):
 
{
 
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
 
}
 
2.重启docker:systemctl restart docker

 安装docker-compose:

参考官网:https://docs.docker.com/compose/install/#install-compose

一、Run this command to download the latest version of Docker Compose:

sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

二、Apply executable permissions to the binary:

sudo chmod +x /usr/local/bin/docker-compose

2、拉取gitlab中文版镜像

 地址:https://hub.docker.com/r/twang2218/gitlab-ce-zh

一、利用xshell+xftp在centos7中建立存储日志、配置、数据的文件夹

  文件夹结构以下:

gitlab
    -config
    -logs
    -data
docker-compose.yml

 

二、利用docker-compose.yml启动
version: '3'
services:
    gitlab:
      image: 'twang2218/gitlab-ce-zh:11.1.4'
      restart: unless-stopped
      hostname: 'gitlab.domain.com'
      container_name: gitlab
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://gitlab.domain.com/'
          registry_external_url 'https://gitlab.domain.com'
          gitlab_rails['gitlab_shell_ssh_port'] = 1022
          gitlab_rails['time_zone'] = 'Asia/Shanghai'
          # gitlab_rails['smtp_enable'] = true
          # gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
          # gitlab_rails['smtp_port'] = 465
          # gitlab_rails['smtp_user_name'] = "xxxx@xx.com"
          # gitlab_rails['smtp_password'] = "password"
          # gitlab_rails['smtp_authentication'] = "login"
          # gitlab_rails['smtp_enable_starttls_auto'] = true
          # gitlab_rails['smtp_tls'] = true
          # gitlab_rails['gitlab_email_from'] = 'xxxx@xx.com'
      ports:
        - '80:80'
        - '443:443'
        - '1022:22'
      volumes:
        - ./data:/var/opt/gitlab
        - ./config:/etc/gitlab
        - ./logs:/var/log/gitlab

 

 

若是你的服务器有域名,将上面的 gitlab.domain.com 替换为实际域名。

实验时,也能够直接修改 /etc/hosts 方便测试。好比:

127.0.0.1   gitlab.example.com

三、cd到gitlab目录下执行docker-compose up -d启动,稍做等待。。

四、启动完毕后打开浏览器访问gitlab.domain.com

 

五、SSH 链接GitLab

首先咱们须要获得一个SSH Key,输入

 
cat ~/.ssh/id_rsa.pub
 

若是出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那咱们能够直接拿来用,若是没有则须要咱们本身建立一个SSH Key。

 

 

 

六、建立SSH Key

 

输入如下命令建立一个SSH Key。

 
ssh-keygen -t rsa -C "your.email@example.com" -b 4096
 

完成以后能够再输入 上面的cat命令 或者pbcopy直接复制生成的ssh key。

 
pbcopy < ~/.ssh/id_rsa.pub
 

在GitLab中帐号-》设置中找到 SSH Keys中添加这个Key便可。

 

 

 

七、SSH 链接 1022 端口

正常状况下你已经能够经过git命令来链接咱们部署的gitlab,但这里不同的是咱们把容器的 22端口映射到了 host的 1022上,咱们须要指定端口来进链接。

ssh -p 1022 git@gitlab.domain.com

同时还须要更改GitLab的配置文件中的 ssh端口(若是上面配置过就不用了),不然GitLab中为咱们生成的项目链接地址会链接不上。/gitlab/config/gitlab.rb

gitlab_rails['gitlab_shell_ssh_port'] = 1022

更改完ssh端口以后重启gitlab容器,以后咱们的项目 ssh链接址会变为:

ssh://git@gitlab.domain.com:1022/test/projectname.git

到这里咱们已经完成了GitLab的部署。

3、拉取gitlab-runner镜像

地址:https://hub.docker.com/r/gitlab/gitlab-runner

一、利用xshell+xftp在centos7中建立存储日志、配置、数据的文件夹

  文件夹结构以下:

gitlab-runner
    -config docker-compose.yml

 

二、利用docker-compose.yml启动
 1 version: '3'
 2 services:
 3     runner:
 4       image: 'gitlab/gitlab-runner:v11.4.2'
 5       container_name: gitlab-runner
 6       restart: always 
 7       networks:
 8         - gitlab_default
 9       volumes: 
10         - ./config:/etc/gitlab-runner
11         - /var/run/docker.sock:/var/run/docker.sock
12 networks:
13   gitlab_default:
14     external: true

其中gitlab_default为上面gitlab的网络

注意:gitlab-runner的版本要和gitlab尽可能对应否则会出现连不上gitlab

三、cd到gitlab目录下执行docker-compose up -d启动

4、配置gitlab-runner连上gitlab

一、注册gitlab-runner

docker exec -it gitlab-runner gitlab-runner register

2. 咱们会输入 http://gitlab.domain.com或http://ip:port 也就是咱们安装在本地的GitLab

3. Please enter the gitlab-ci token for this runner 要求输入 gitlab-ci token

在项目的 管理区域->runners中能够找到(这里注册的是share类型runner)

 

4. 输入描述,如:test

5. 输入tag(留空也能够,以后能够进行编辑 )

6. 选择当遇到没有打标签的提交时是否会执行,咱们选 true

7. 是否锁定此runner 到当前项目, 咱们选 false

8. 选一个执行者 executor

这一步比较重要 (ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell)

咱们选docker

9. 选择默认使用的镜像: docker:stable

在注册完以后,咱们能够在GitLab获取gitlab-ci token 的页面看到咱们刚刚注册的这个 runner

同时能够在gitlab-runner/config下能够看到生成一个config.toml的文件,文件内容以下:

concurrent = 1
check_interval = 0

[[runners]]
  name = "test"
  url = "http://192.168.1.157/"
  token = "69c0ff735a76c0bb3cce977a361661"#这个token是gitlab-runner根据第三步骤的token生成的
  executor = "docker"
  [runners.docker]
    extra_hosts = ["gitlab.domain.com:192.168.1.157"] #若是在执行上面步骤中碰到链接不上gitlab,是由于gitlab-runner在docker内部解析不了gitlab.domain.com,经过添加配置这个能够解决问题
    tls_verify = false
    image = "docker:stable" #这里之因此这样是由于基于这个镜像它包含了docker等工具,能够在gitlab-runner执行的.gitlab-ci.yml中有docker指令时而无需再安装docker 参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
    privileged = false #使用docker-in-docker时一般为true
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0
   [runners.cache]

或者直接先配置好,gitlab-runner运行时会自动加载该配置文件

参考地址:https://docs.gitlab.com/ee/ci/docker/using_docker_build.html

 

5、提交项目代码完成CI/CD

一、在项目根目录下添加.gitlab-ci.yml,提交项目代码后会自动运行该文件打包项目

image: docker:stable

image:
  name: docker/compose:1.23.2 # update tag to whatever version you want to use. 这个是由于我下面脚本用到docker-compose
  entrypoint: ["/bin/sh", "-c"]

before_script:
  - docker version
  - docker-compose version
  
build:
  script: #下面脚本根据本身状况写
    - COMPOSE_HTTP_TIMEOUT=200 docker-compose -f docker-compose-efk.yml up -d   #这是由于个人项目已经用docker-compose编排好了
    - COMPOSE_HTTP_TIMEOUT=200 docker-compose up -d --build --force-recreate

 

二、在win10上经过git提交代码


cd到项目根目录,若是有安装git的话能够直接在根目录下打开git bash 执行,若是没有安装打开powershell也行

git init #若是尚未初始化
git add . #把项目都添加进去
git commit -m "init" 提交到git
git remote add origin git@gitlab.domain.com:1022/root/test.git #注意端口为1022 这个是上面运行gitlab是指定的,执行一次就好了
git push -u origin master #推送到服务器gitlab上
相关文章
相关标签/搜索