gitlab/gitlab-runner离线环境部署


gitlab/gitlab-runner离线环境部署

背景

实际开发中会用到很大持续集成的框架,目前和代码托管平台一起使用的,使用到比较多的情况是

github + Travis CI

gitlab + gitlab CI

如果使用github,一般开源的项目,可以使用,而且使用的比较广泛;使用gitlab的好处是,可以在自己本地搭建gilab以及对于的ci服务,这样对于公司来说更加安全,保密性更好。

名词解释

gitlab: 代码托管平台。有对于网站,也有安装好环境的docker image

gitlab-runner: 其实就是ci服务的载体,比如我上传更新了代码,这时候需要ci开始工作,可能是去编译,也可能是ssh连接过去运行,而编译运行的环境,其实就是gitlab-runner`提供的。

环境搭建

都使用docker进行搭建,提前docker pull好镜像,这里主要是两个

  • gitlab-ce
  • gitlab-runner

镜像可以在docker hub上搜,也可以在阿里云开发者里面的镜像库里面获取。

具体命令以及步骤

启动

docker run -it -d --name=gitlab -v /home/wkang/code:/Code -p 8035:22 -p 8082:8082 -p 8083:80 --privilegd=true gitlab/gitlab-ce:12.4.1-ce.0 /assets/wrapper bash

这里需要注意,别忘记添加启动脚本启动命令/assets/wrapper

修改

# 进入 docker
docker exec -it gitlab bash
vim /etc/gitlab/gitlab.rb
# 修改内容
external_url 'http://10.1.1.205:8082'
# 搜索 GitLab Sidekiq 新增
sidekiq['concurrency'] = 15

# postgresql['log_line_prefix'] = "%a"
postgresql['max_worker_processes'] = 4
# postgresql['max_worker_processes'] = 8

# 取消注释,修改端口和上面配置的一致
### Advanced settings
# unicorn['listen'] = 'localhost'
unicorn['port'] = 8082

配置更新

gitlab-ctl reconfigure
gitlab-ctl restart

使用

这里有个坑,如果按上面的设置,理论上应该使用http://10.1.1.205:8082进行访问,然后设置默认的root密码即可,但是一直没有成功,提示邮箱为空,使用我这里端口就使用8083,因为启动使用映射到了80端口,而如果不对gitlab进行设置的化,默认都是80端口。

第一次访问,提示要求设置root账号的密码,我这里随便设置,就设置成12345678

如果忘记了管理员密码,可以到后台进行设置

cd /opt/gitlab/bin && gitlab-rails console production
u=User.where(id:1).first
u.password=`12345678`
u.password_confirmation=`12345678`
u.save!
exit

一般使用时候,不直接用管理员账号,所以重现注册一个新的账号wkang,密码也为12345678

到这里,其实以及在本地搭建好了代码托管服务了,如果只需要使用代码托管,现在就可以使用了。

创建项目仓库

在上面搭建好的服务上,直接访问http://{ip}:8083,登录之前注册的账号,就可以创建项目仓库了。步骤流程就和普通的git仓库创建一样,填入项目名,以及对于的描述信息。

一般会添加README.md/.gitlab-ci.yml/.gitinore等文件,分别用来描述说,执行自动持续集成脚本,忽略上次的一些文件等。

其中,在gitlab上,.gitlab-ci.yml配置完上传后,会提升是否正确。

重点:脚本编写规则可以学习下。

配置gitlab-runner

我们的本地环境,如果也想支持ci功能,即有代码提交到git上,就能自动触发编译测试,达到验证和持续集成的目的,那么本地就必须安装gitlab-runner环境。

可以在和gitlab-ce在同一台服务器,也可以不同,一般会选择搭建在不同的服务器上,因为gitlab-runner是编译运行测试的环境,会比较耗费系统资源。

安装

启动gitlab-runner的环境,其中/var/run/docker/sock是固定的,这个是通过暴露的docker.sock文件接管容器。另外不要加bash,会报错。

docker run -d --name gitlab-runner --restart always -v /home/wkang/test/gitlab/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-rnner:v12.4.1

其中,/home/wkang/test/gitlab/gitlab-runner/configdocker外的主机环境下建立的目录,主要是为了保存配置信息,这样即使docker容器挂掉了,配置数据还在。

注册

安装好以后,还是用不了的,这个才仅仅是提供一个基础的环境。需要进行注册,注册以后,gitlab上才会出现runner 列表。注册之前,需要在gitlab上得到url和密钥

  1. 进入自己的项目仓库,然后点击右侧的Settings, 选择CI/CD,点击RunnersExpand按钮,在出现的页面中有如下页面就是需要的信息。

    Set up a specific Runner manually
    1. Instal Gitlab Runner
    2. Specify the following URL during the Runner setup: http://10.1.1.205:8083/
    3. Use the following registration token during setup: LUsa7tcYtpGBGzJ-EjU
    4.Start the Runner!
  2. 进入gitlab-runnerdocker交互模式

    docker exec -it gitlab-runner bash

    输入命令,按提示和说明一步步填写

    gitlab-runner register

    也可以使用一条命令完成注册

    gitlab-runner register \
      --non-interactive \
      --url "http://10.1.1.205:8083/" \
      --registration-token "LUsa7tcYt5pGBGzJ-EjU" \
      --executor "docker" \
      --docker-image alpine:latest \
      --description "docker-runner" \
      --tag-list "docker, aws" \
      --run-untagged= "true" \
      --locked="false" \
      --access-level="not_protected"

    注册完成后,有些信息可以在gitlab的界面上修改,比如tag-list/description等。

    注:这里的tag-list要注意,如果要想使用这个runner, 在.gitlab-ci.yml文件中,必须要有tags标签,且名字为列表中的,否则无法使用;另外executor表示执行的方式,如果使用ssh 就可以在不同的设备上运行测试代码了。

  3. 查看本地注册情况

    可以在gitlab界面上Setting/CI/CD/Runners查看,注册情况,也可以直接运行

    gitlab-runner list
    
    # 如果没有运行,可以手动启动下
    gitlab-runner start
    
    # 如果有多个Runner,可以使用下面的命令,一起启动多个
    gitlab-ci-multi-runner run

完整使用例子

待补充,可以把hexo自动部署这个当例子。


文章作者: Wang Kang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wang Kang !
评论
 上一篇
2020年总结 2020年总结
2020年度总结前言一直希望自己能做到每年写一篇总结,不为别的,时光如梭,一年年的重复,一步步的成长,希望可以留点足迹下来;拖了很多年了,今天得空刚好写写2020年的总结; 2020年对世界上所有人而言,都会是印象深刻的一年,春节前夕新冠肺
2021-01-16
下一篇 
Pycharm远程调试配置 Pycharm远程调试配置
Pycharm远程调试配置背景使用Pycharm来作为python开发的IDE是很好的选择,使用起来特别方便。但是 在windows上python有时候环境搭建笔记麻烦,当然我们可以选择直接安装anaconda,然后需要使用到什么库,我们就
2020-02-22
  目录