gitlab-1

简单总结部署gitlab docker 的流程(针对ubuntu 16.04)

一 准备

1. 安装 docker

2. 安装gitlab-ce

docker run -d --privileged -p 443:443 -p 80:80 --name gitlab --restart always -v /root/gitlab/config:/etc/gitlab -v /root/gitlab/logs:/var/log/gitlab -v /root/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

挂载目录可以修改

3 安装gitlab-runner

docker run -d --name gitlab-runner --add-host gitlab.test.com:192.168.1.129 --restart always -v /root/gitlab/runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

等下register时候需要填写ce的url,需要域名解析,可以使用

1)  --add-host reg.gc.com:192.168.1.129 (域名:ip格式,这里我使用了主机Ip,因为我测试机器只部署了这个程序,你可以改用容器ip)

2)  --link gitlab:gitlab.test.com

3) 使用自定义network

二 环境

1. vi /root/gitlab/config/gitlab.rb

修改 external_url 成 "http://gitlab.test.com"

2.  docker exec -it $(docker ps |grep runner| awk '{print $1}') /bin/bash

gitlab-runner register --locked=false --docker-extra-hosts=gitlab.test.com:192.168.1.129

如果是add-host方式的话,需要添加 --docker-extra-hosts=gitlab.test.com:192.168.1.129,否则不需要


1)出现Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

输出gitlab的url,域名写你关联的(如gitlab.test.com)

2)出现 Please enter the gitlab-ci token for this runner

去gitlab 页面查看runner的token

3)出现Please enter the gitlab-ci description for this runner

runner 的名字

4)出现Please enter the gitlab-ci tags for this runner (comma separated):

输入 runner过滤用的tag,.gitlab-ci.yml用这个来选择runner

5)出现 Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

这里我选择了docker

6)  出现Please enter the Docker image (eg. ruby:2.1):

选择你需要的镜像(如golang:latest)

三 简单测试

访问http://localhost:80,修改root的账号密码后,创建一个project,比如叫test

git clone 下来

添加一个叫test.go

package main

import "fmt"

func main() {

fmt.Println("hello world")

}

添加一个叫.gitlab-ci.yml

before_script:

  - export GO_PROJECT_NAMESPACE="$GOPATH/src/gitexample.com/$CI_PROJECT_NAMESPACE"

  - echo $GO_PROJECT_NAMESPACE

  - mkdir -p $GO_PROJECT_NAMESPACE

  - ln -sf $(pwd) $GO_PROJECT_NAMESPACE

  - export GO_PROJECT_PATH="$GO_PROJECT_NAMESPACE/$CI_PROJECT_NAME"

  - echo $GO_PROJECT_PATH

  - cd $GO_PROJECT_PATH

stages:

  - build

build:

  stage: build

  tags:

    - runnertest

  script:

    - go build

上面的runnertest就是之前填入的runner tag

git add test.go .gitlab-ci.yml

git commit -m 'test'

git push

后就可以看到job 在running,进去可以看到详细的执行日志,

四 总结

1 遇到问题

1) ce和runner以及runner 启动的容器的互联问题

解决办法如上

2) gitlab-runner register后runner状态locked

--locked=false 

3) 触发pipeline 后,状态stuck ,提示找不到runner

需要在yml里面的每一个stage指定对应的runner的tag,否则stage会使pipeline stuck

2 对于docker pull很慢,可以搭建个镜像仓库,比如harbor或者官方的registry

你可能感兴趣的:(gitlab-1)