docker+gitlab+gitlab-runner部署详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

docker+gitlab+gitlab-runner部署详解
环境
服务端:centos7
客户端:window
在centos7上部署docker+gitlab+gitlab-runner,win10利⽤ssh连接,开发⼈员只需提交代码,就可以进⾏项⽬⽂件上传,打包镜像,发布运⾏测试
⼀、centos7上安装docker和docker-compose
安装docker:
1、Docker 要求 CentOS 系统的内核版本⾼于 3.10 ,查看本页⾯的前提条件来验证你的CentOS 版本是否⽀持 Docker 。

通过uname -r命令查看你当前的内核版本
$ uname -r
2、使⽤root权限登录 Centos。

确保 yum 包更新到最新。

$ sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker docker-common docker-selinux docker-engine
4、安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
$ sudo yum-config-manager --add-repo https:///linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
$ yum list docker-ce --showduplicates | sort -r
7、安装docker
$ sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这⾥安装的是最新稳定版17.12.0$ sudo yum install <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce
如果错误:
问题: package docker-ce-3:19.03.8-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed解决:https:///suanmiaoup/p/12772140.html输⼊:yum install -y https:///docker-ce/linux/centos/7/x
8、启动并加⼊开机启动
$ sudo systemctl start docker
$ sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表⽰docker安装启动都成功了)
$ docker version
10、建议更换docker的镜像源:
1.修改或创建daemon.json⽂件:vi /etc/docker/daemon.json
将以下配置写⼊到⽂件中,保存并退出(不会操作的百度下vi命令吧):
{
"registry-mirrors": [""]
}
2.重启docker:systemctl restart docker
安装docker-compose:
1、Run this command to download the latest version of Docker Compose:
sudo curl -L "https:///docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 2、Apply executable permissions to the binary:
sudo chmod +x /usr/local/bin/docker-compose
⼆、拉取gitlab中⽂版镜像
1、利⽤xshell+xftp在centos7中创建存储⽇志、配置、数据的⽂件夹
⽂件夹结构如下:
gitlab
-config
-logs
-data
docker-compose.yml
2、利⽤docker-compose.yml启动
version: '3'
services:
gitlab:
image: 'twang2218/gitlab-ce-zh:11.1.4'
restart: unless-stopped
hostname: ''
container_name: gitlab
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url '/'
registry_external_url 'https://'
gitlab_rails['gitlab_shell_ssh_port'] = 1022
gitlab_rails['time_zone'] = 'Asia/Shanghai'
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = ""
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "xxxx@"
# 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@'
ports:
- '80:80'
- '443:443'
- '1022:22'
volumes:
- ./data:/var/opt/gitlab
- ./config:/etc/gitlab
- ./logs:/var/log/gitlab
如果你的服务器有域名,将上⾯的替换为实际域名。

实验时,也可以直接修改/etc/hosts⽅便测试。

⽐如:127.0.0.1
3、cd到gitlab⽬录下执⾏docker-compose up -d启动,稍作等待。

4、启动完毕后打开浏览器访问
5、SSH 连接GitLab
⾸先我们需要得到⼀个SSH Key,输⼊
cat ~/.ssh/id_rsa.pub
如果出现 ssh-rsa打头的字符,说明本地已经有了SSH Key那我们可以直接拿来⽤,如果没有则需要我们⾃⼰创建⼀个SSH Key。

6、创建SSH Key
输⼊以下命令创建⼀个SSH Key。

ssh-keygen -t rsa -C "your.email@" -b 4096
完成之后可以再输⼊上⾯的cat命令或者pbcopy直接复制⽣成的ssh key。

pbcopy < ~/.ssh/id_rsa.pub
在GitLab中账号-》设置中找到 SSH Keys中添加这个Key即可。

7、SSH 连接 1022 端⼝
正常情况下你已经可以通过git命令来连接我们部署的gitlab,但这⾥不⼀样的是我们把容器的 22端⼝映射到了 host的 1022上,我们需要指定端⼝来进连接。

ssh -p 1022 git@
同时还需要更改GitLab的配置⽂件中的 ssh端⼝(如果上⾯配置过就不⽤了),否则GitLab中为我们⽣成的项⽬连接地址会连接不上。

/gitlab/config/gitlab.rb gitlab_rails['gitlab_shell_ssh_port'] = 1022
更改完ssh端⼝之后重启gitlab容器,之后我们的项⽬ ssh连接址会变为:
ssh://git@:1022/test/projectname.git
到这⾥我们已经完成了GitLab的部署。

三、拉取gitlab-runner镜像
1、利⽤xshell+xftp在centos7中创建存储⽇志、配置、数据的⽂件夹
⽂件夹结构如下:
gitlab-runner
-config
docker-compose.yml
2、利⽤docker-compose.yml启动
version: '3'
services:
runner:
image: 'gitlab/gitlab-runner:v11.4.2'
container_name: gitlab-runner
restart: always
networks:
- gitlab_default
volumes:
- ./config:/etc/gitlab-runner
- /var/run/docker.sock:/var/run/docker.sock
networks:
gitlab_default:
external: true
其中gitlab_default为上⾯gitlab的⽹络
注意:gitlab-runner的版本要和gitlab尽量对应不然会出现连不上gitlab
3、cd到gitlab⽬录下执⾏docker-compose up -d启动
四、配置gitlab-runner连上gitlab
1、注册gitlab-runner
docker exec -it gitlab-runner gitlab-runner register
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 = [":192.168.1.157"] #如果在执⾏上⾯步骤中碰到连接不上gitlab,是因为gitlab-runner在docker内部解析不了,通过添加配置这个可以解决问题
tls_verify = false
image = "docker:stable" #这⾥之所以这样是因为基于这个镜像它包含了docker等⼯具,可以在gitlab-runner执⾏的.gitlab-ci.yml中有docker指令时⽽⽆需再安装docker 参考地址:https:///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运⾏时会⾃动加载该配置⽂件
五、提交项⽬代码完成CI/CD
1、在项⽬根⽬录下添加.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
2、在win10上通过git提交代码
cd到项⽬根⽬录,如果有安装git的话可以直接在根⽬录下打开git bash 执⾏,如果没有安装打开powershell也⾏
git init #如果还没有初始化
git add . #把项⽬都添加进去
git commit -m "init" 提交到git
git remote add origin git@:1022/root/test.git #注意端⼝为1022 这个是上⾯运⾏gitlab是指定的,执⾏⼀次就⾏了
git push -u origin master #推送到服务器gitlab上
到此这篇关于docker+gitlab+gitlab-runner部署详解的⽂章就介绍到这了,更多相关docker gitlab gitlab-runner部署内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

相关文档
最新文档