Docke部署gitlab中文版及Runner踩坑實(shí)錄


一、Gitlab中文版安裝

在搭建過(guò)程中遇到了很多問(wèn)題,比較突出的三個(gè)問(wèn)題是:

a.docker下載鏡像緩慢戈钢,每次需要大概幾個(gè)小時(shí);

b.docker下載完成之后是尔,運(yùn)行鏡像服務(wù)器死機(jī)殉了;

c.docker安裝并成功運(yùn)行g(shù)itlab容器之后,訪問(wèn)gitlab發(fā)現(xiàn)一直出現(xiàn)502錯(cuò)誤嗜历。

gitlab中文版是基于 GitLab 官方社區(qū)版 Docker 鏡像制作的中文 Docker 鏡像宣渗, 漢化補(bǔ)丁來(lái)自網(wǎng)友 larryli (8.8.5之前)抖所, 后續(xù)由網(wǎng)友 xhang 維護(hù)。

1 拉取gitlab docker鏡像

docker pull gitlab/gitlab-ce:latest

2 配置變量

GITLAB_HOME=`pwd`/data/gitlab

3 啟動(dòng)容器

docker run -d --hostname gitlab --publish 8443:443 --publish 8089:80 --publish 2223:22 --name gitlab --restart always --volume $GITLAB_HOME/config:/etc/gitlab --volume $GITLAB_HOME/logs:/var/log/gitlab --volume $GITLAB_HOME/data:/var/opt/gitlab beginor/gitlab-ce:11.3.0-ce.0

4 配置郵箱

gitlab_rails['smtp_enable'] = true

gitlab_rails['smtp_address'] = "smtp.163.com"

gitlab_rails['smtp_port'] = 25gitlab_rails['smtp_user_name'] = "xxxx@163.com"gitlab_rails['smtp_password'] = "xxxxpassword"

gitlab_rails['smtp_domain'] = "163.com"

gitlab_rails['smtp_authentication'] = "login"

gitlab_rails['smtp_enable_starttls_auto'] = false

gitlab_rails['smtp_openssl_verify_mode'] = "peer"

gitlab_rails['gitlab_email_from'] = "xxxx@163.com"

user["git_user_email"] = "xxxx@163.com"

4?配置外部訪問(wèn)URL

external_url "http://10.103.240.36:8080"? //如果配置了端口需要變更gitlab端口號(hào)以及docker映射端口號(hào)

5 重啟docker gitlab

docker restart gitlab

注意點(diǎn):http的端口修改后一定要將docker映射端口改掉痕囱,否則會(huì)訪問(wèn)不了田轧!

二、gitlab-runner安裝

1鞍恢、獲取鏡像

執(zhí)行以下命令傻粘,獲取gitlab-runner 鏡像

docker pull gitlab/gitlab-runner

2、配置變量

GITLAB_RUNNER_HOME=`pwd`/data/gitlab-runner

3帮掉、啟動(dòng)runner

sudo docker run -d --name gitlab-runner --restart always -v $GITLAB_RUNNER_HOME/config:/etc/gitlab-runner -v $GITLAB_RUNNER_HOME/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

4弦悉、注冊(cè)runner

docker exec -it gitlab-runner gitlab-ci-multi-runner register

按照提示填寫(xiě)相關(guān)信息

Please enter the gitlab-ci coordinator URL:

# gitlab的url, 如:http://gitlab.chain.cn

Please enter the gitlab-ci token for this runner:

# gitlab->你的項(xiàng)目->settings -> CI/CD ->Runners settings

Please enter the gitlab-ci description for this runner:

# 示例:demo

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

# 示例:demo?

Whether to run untagged builds [true/false]:

# true

Please enter the executor: docker, parallels, shell, kubernetes, docker-ssh, ssh, virtualbox, docker+machine, docker-ssh+machine:

# docker

Please enter the default Docker image (e.g. ruby:2.1):

# golang:1.9.4


token

成功后,可以看到gitlab->你的項(xiàng)目->settings -> CI/CD ->Runners settings 頁(yè)面下面有以下內(nèi)容:


5蟆炊、定義Runner規(guī)則

在gitlab項(xiàng)目根目錄創(chuàng)建.gitlab-ci.yml文件稽莉,填寫(xiě)runner規(guī)則,具體語(yǔ)法課參考官方文檔:https://docs.gitlab.com/ee/ci/yaml/

6涩搓、go集成命令

下面介紹幾個(gè)golang常見(jiàn)的集成命令

a.包列表

正如在官方文檔中所描述的那樣污秆,go項(xiàng)目是包的集合。下面介紹的大多數(shù)工具都將使用這些包昧甘,因此我們需要的第一個(gè)命令是列出包的方法良拼。我們可以用go list子命令來(lái)完成

go list ./...

請(qǐng)注意,如果我們要避免將我們的工具應(yīng)用于外部資源充边,并將其限制在我們的代碼中庸推。 那么我們需要去除vendor 目錄,命令如下:

go list ./... | grep -v /vendor/

b.單元測(cè)試

這些是您可以在代碼中運(yùn)行的最常見(jiàn)的測(cè)試浇冰。每個(gè).go文件需要一個(gè)能支持單元測(cè)試的_test.go文件贬媒。可以使用以下命令運(yùn)行所有包的測(cè)試:

go test -short $(go list ./... | grep -v /vendor/)

c.數(shù)據(jù)競(jìng)爭(zhēng)

這通常是一個(gè)難以逃避解決的問(wèn)題肘习,go工具默認(rèn)具有(但只能在linux / amd64掖蛤、freebsd / amd64、darwin / amd64和windows / amd64上使用)

go test -race -short $(go list . /…| grep - v /vendor/)

d.代碼覆蓋

這是評(píng)估代碼的質(zhì)量的必備工具井厌,并能顯示哪部分代碼進(jìn)行了單元測(cè)試,哪部分沒(méi)有致讥。

要計(jì)算代碼覆蓋率仅仆,需要運(yùn)行以下腳本:

PKG_LIST=$(go list ./... | grep -v /vendor/)

for package in ${PKG_LIST};do

????go test -covermode=count -coverprofile "cover/${package##*/}.cov" "$package" ;

done

tail -q -n +2 cover/*.cov >> cover/coverage.cov

go tool cover -func=cover/coverage.cov

如果我們想要獲得HTML格式的覆蓋率報(bào)告,我們需要添加以下命令:

go tool cover -html=cover/coverage.cov -o coverage.html

e.構(gòu)建

最后一旦代碼經(jīng)過(guò)了完全測(cè)試垢袱,我們要對(duì)代碼進(jìn)行編譯墓拜,從而構(gòu)建可以執(zhí)行的二進(jìn)制文件。

go build .

Makefile

如果我們不想在.gitlab-ci.yml文件中寫(xiě)的太復(fù)雜请契,那么我們可以把持續(xù)集成環(huán)境中使用的所有工具咳榜,全部打包在Makefile中夏醉,并用統(tǒng)一的方式調(diào)用它們。

這樣的話涌韩,.gitlab-ci.yml文件就會(huì)更加簡(jiǎn)潔了畔柔。當(dāng)然了,Makefile同樣也可以調(diào)用*.sh腳本文件


配置實(shí)例

.gitlab-ci.yml

image: golang:1.9.4

stages:

- test

- build

before_script:

- mkdir -p /go/src/192.168.1.100/tommy /go/src/_/builds

- cp -r $CI_PROJECT_DIR /go/src/ 192.168.1.100 /tommy/demo

- ln -s /go/src/ 192.168.1.100 /tommy /go/src/_/builds/tommy?

unit_tests:

stage: test

script:

- make test

tags:

- demo

race_detector:

stage: test

script:

- make race

code_coverage:

stage: test

script:

- make

coverage code_coverage_report:

stage: test

script:

- make coverhtml

only:

- master

build:

stage: build

script:

- go build .

tags:

- demo

Makefile

PROJECT_NAME := "demo"

PKG := "192.168.1.100/tommy/$(PROJECT_NAME)"

PKG_LIST := $(shell go list ./... | grep -v /vendor/)

GO_FILES := $(shell find . -name '*.go' | grep -v /vendor/ | grep -v _test.go)

test: ## Run unittests

@go test -v ${PKG_LIST}

race: ## Run data race detector

@go test -race -short ${PKG_LIST}

coverage: ## Generate global code coverage report

./scripts/coverage.sh;

coverhtml: ## Generate global code coverage report in HTML

./scripts/coverage.sh html;

coverage.sh

#!/bin/bash

#

# Code coverage generation

COVERAGE_DIR="${COVERAGE_DIR:-coverage}"

PKG_LIST=$(go list ./... | grep -v /vendor/)

# Create the coverage files directory

mkdir -p "$COVERAGE_DIR";

# Create a coverage file

for each package for package in ${PKG_LIST}; do

go test -covermode=count -coverprofile "${COVERAGE_DIR}/${package##*/}.cov" "$package" ;

done ;

# Merge the coverage profile files

echo 'mode: count' > "${COVERAGE_DIR}"/coverage.cov ;

tail -q -n +2 "${COVERAGE_DIR}"/*.cov >> "${COVERAGE_DIR}"/coverage.cov ;

# Display the global code coverage

go tool cover -func="${COVERAGE_DIR}"/coverage.cov ;

# If needed, generate HTML report

if [ "$1" == "html" ];then

go tool cover -html="${COVERAGE_DIR}"/coverage.cov -o coverage.html ;

fi

# Remove the coverage files directory

rm -rf "$COVERAGE_DIR";

至此臣樱,配置結(jié)束靶擦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雇毫,隨后出現(xiàn)的幾起案子玄捕,更是在濱河造成了極大的恐慌,老刑警劉巖棚放,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枚粘,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡飘蚯,警方通過(guò)查閱死者的電腦和手機(jī)馍迄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)孝冒,“玉大人柬姚,你說(shuō)我怎么就攤上這事∽校” “怎么了量承?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)穴店。 經(jīng)常有香客問(wèn)我撕捍,道長(zhǎng),這世上最難降的妖魔是什么泣洞? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任忧风,我火速辦了婚禮,結(jié)果婚禮上球凰,老公的妹妹穿的比我還像新娘狮腿。我一直安慰自己,他們只是感情好呕诉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布缘厢。 她就那樣靜靜地躺著,像睡著了一般甩挫。 火紅的嫁衣襯著肌膚如雪贴硫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音英遭,去河邊找鬼间护。 笑死,一個(gè)胖子當(dāng)著我的面吹牛挖诸,可吹牛的內(nèi)容都是我干的汁尺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼税灌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼均函!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起菱涤,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苞也,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后粘秆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體如迟,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年攻走,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殷勘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡昔搂,死狀恐怖玲销,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摘符,我是刑警寧澤贤斜,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站逛裤,受9級(jí)特大地震影響瘩绒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜带族,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一锁荔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝙砌,春花似錦阳堕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至祠饺,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汁政,已是汗流浹背道偷。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工缀旁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勺鸦。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓并巍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親换途。 傳聞我的和親對(duì)象是個(gè)殘疾皇子懊渡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容