gitlab runner安装
https://docs.gitlab.com/runner/install/linux-repository.html#deb-based-distributions
yum安装
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
#配置yum源
yum install gitlab-runner -y
#安装
docker安装
未整理
docker安装gitlab,gitlabrunner实现CICD笔记 搭建gitlab服务 执行命令: 拉取gitlab的docker镜像 docker pull gitlab/gitlab-ce 运行gitlab服务容器 docker run -d -p 45672:443 -p 45673:45673 -p 45674:22 --restart always --name gitlab -v /install/gitlab/etc:/etc/gitlab -v /install/gitlab/log:/var/log/gitlab -v /install/gitlab/data:/var/opt/gitlab --privileged=true gitlab/gitlab-ce:latest 命令详细解释: docker run -d #表示后台运行 (所有docker容器基本必须加的参数) --name gitlab #表示该容器的名称,必须是唯一·的值,不能重复,可以用它他来代替容器id,更容易记忆,就类似于域名和IP的关系,用它可以代替容器ID删除,或者停止容器服务
--restart always #能够使我们在重启docker时,自动启动相关容器 (所有docker容器基本必须加的参数)
-p 45673:45673 #用宿主机的45673端口映射容器内部服务的45673端口(gitlab的http默认访问端口是80但是80端口会显示成clone的但其实和我们不符合,所以先让容器启动,启动不成功不管,先让容器产生配置文件,改了默认配置的80改成45673就可以启动成功了),相当于访问45672就等于访问443端口的服务(gitlab容器服务默认启动的就是80端口,我们访问web,并且通过http方式下载代码的也用的这个服务,下面两个443和22其实是需要用ssh方式下载代码才会用到,所以这次不用管吗,但是必须要映射上)
-p 45672:443 #用宿主机的45672端口映射容器内部服务的443端口,相当于访问45672就等于访问443端口的服务(有可能一个容器中有多个服务端口需要映射,所以可以有多个p,比如gitlab里面就有3个端口需要映射,容器内部的端口不会和宿主机的端口有冲突,因为容器是独立的)
-p 45674:22 #用宿主机的45674端口映射容器内部服务的22端口,相当于访问45672就等于访问443端口的服务(和上面443相同)
-v /install/gitlab/etc:/etc/gitlab #挂在容器的配置文件目录到宿主机某个目录(挂在容器目录到宿主机目录,也可以理解为将宿主机的目录映射成容器内部的某个目录,目的在于数据持久化和便于我们修改配置文件,以后将容器删除掉,在启动容器的时候只要也用同样的宿主机目录挂载,只要文件不删除,那么以前的容器使用的过的数据都不会改变的,而且我们在宿主机修改文件可以用vm或者xftp到本地来修改,但是容器内部修改很麻烦,不支持vim这种非自带的命令 ,如果不挂载删除容器在启动一个就没以前的数据了,又得重零配置一遍,:冒号左边是宿主机的目录,右边是容器内部的目录,容器哪些目录需要挂载,只要牵涉到启动容器以后需要改配置和数据存储的都要挂载,还有个要理解的点是,重启docker的某个容器服务,实际上就是先要停止当前服务的容器,然后再删除当前服务容器,然后在获取最新的镜像重启服务)
-v /install/gitlab/log:/var/log/gitlab #挂载容器内部的日志目录,方便我们跟踪日志发现问题(描述和上面一样) -v /install/gitlab/data:/var/opt/gitlab #挂载容器内部的数据目录,我们下次把容器删除了再重启一个,只要挂在还是这个宿主机的目录,那么以前的提交的代码就一样的会保存,和数据库容器一样,我只要不删除数据挂在目录,下次删掉容器在重启一个,数据也还在,就是变相持久化(描述和上面一样) --privileged=true #权限 ,给容器赋予最高权限 (所有docker容器基本必须加的参数,会减少很多不必要的权限错误) gitlab/gitlab-ce:latest # 指定镜像的版本 格式:仓库地址/镜像项名称:镜像版本号 latest表示最新的版本号 (所有docker容器基本必须加的参数)
注意事项: clone的仓库url的前面是随机数并非标准ip:端口的形式的问题修改方式 : 先不不急着验证启动是否成功,因为我们再开始容器映射的时候映射的是容器的45673端口,所以我们先去改配置文件中的80改成45673端口在来验证
因为我们已经把gitlab服务所需要的配置文件目录都挂载在了宿主机的/install/gitlab/目录下面,那么只需要对应的去修改gitlab.rb , gitlab.yml ,
修改方式有多种: 1.可以找到对应目录的文件用xftp下载到本地进行修改再传上去 2.还可以直接在宿主机利用vi命令去修改 3.还可以直接linux的替换命令 sed直接替换(前面两种都需要人为介入修改,自动化程度不高,建议直接用sed,这样可以交给脚本完成) 将gitlab.rb中的 external_url \'GENERATED_EXTERNAL_URL\' 替换成 external_url \'http://你自己的宿主机IP:45673\'
sed -i s,# external_url \'GENERATED_EXTERNAL_URL\',external_url \'http://你自己的宿主机IP:45673\',g /install/gitlab/etc/gitlab.rb
# 将/gitlab.yml中的 13行整行换成 前面4个缩进空格(因为是yml文件,必须手动输入空格,不然默认整行替换没有缩进,文件内容格式不对)的后面是host: 你自己的宿主机IP
sed -i 13c \\ \\ \\ \\ host: 你自己的宿主机IP /install/gitlab/data/gitlab-rails/etc/gitlab.yml
# 修改gitlab容器内部web界面服务默认端口80为45673,将/gitlab.yml中的 14行整行换成 前面4个缩进空格(前面4个缩进空格(因为是yml文件,必须手动输入空格,不然默认整行替换没有缩进,文件内容格式不对))的后面是port: 45673
sed -i 14c \\ \\ \\ \\ port: 45673 /install/gitlab/data/gitlab-rails/etc/gitlab.yml
然后重启gitlab服务容器(和第一次启动一样,gitlab比较大所以需要多等几分钟)
docker restart gitlab
然后用root+初始密码登录==>查看有个默认的Monitoring项目仓库==>看他的clone的地址的IP和端口是否和你浏览器输入的一致(如果是域名就看域名是否一致即可)
验证gitlab是否搭建成功 gitlab容器启动完成以后,至少得等待个3分钟左右以上,然后访问http://你自己的宿主机IP:45673 ,如果什么都没有,那就再耐心等待几分钟,如果访问出现502了,那也就说明服务启动正常的但是还没启动完,还需要再耐心等待2分钟左右,再刷新URL知道出现下面界面,当然服务器配置很好,也有可能等个3分钟就能直接访问到该页面,所以验证gitlab是否正常启动的标准就是是否出现登录页面
root管理员初始密码查看 gitlab的默认管理账号是root,但是初始密码需要根据进入gitlab的容器以后输入命令查看进入gitlab容器的命令行
docker exec -it gitlab bash
查看密码
grep \'Password:\' /etc/gitlab/initial_root_password
出现一个password的后面就是你的root的初始登录密码
退出容器,回到宿主机
exit
以上3个步骤还有个更简单的执行方式,就是下面,把bsh换成要执行的命令,就直接在宿主机就可以查看了,不需要进入在退出容器(这种操作同样也可以在其他容器使用,凡是需要进入容器执行命令在退出容器的操作,都可以用这种方式代替)
sudo docker exec -it gitlab grep \'Password:\' /etc/gitlab/initial_root_password
修改root账号的初始面的方法 进入gitlab以后,先及时修改root账号的密码,然后重新登录
右上角头像=>Edit Profile=>左侧菜单栏 Password=>依次输入旧密码,新密码,确认新密码=>Save Password=>重新登录即可
gitlabCI配置文件点击查看
搭建gitlab-runner服务 执行命令: 拉取gitlab-runner的docker镜像 docker pull gitlab/gitlab-runner
运行gitlab-runner的容器服务 docker run -d --name gitlab-runner --restart always --privileged=true -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -v /install/gitlab-runner/config:/etc/gitlab-runner -v /etc/sysconfig/docker:/etc/sysconfig/docker -v /usr/bin/docker-current:/usr/bin/docker-current gitlab/gitlab-runner:latest
修改挂载在宿主机的配置文件,依次执行下面三条命令 sed -i \'s!/cache!/cache,/var/run/docker.sock:/var/run/docker.sock,/usr/local/repos/gradle:/usr/local/repos/gradle,/etc/sysconfig/docker:/etc/sysconfig/docker,/usr/bin/docker-current:/usr/bin/docker-current,/usr/bin/docker:/usr/bin/docker!g\' /install/gitlab-runner/config/config.toml
sed -i \'s,privileged = false,privileged = true,g\' /install/gitlab-runner/config/config.toml
重启gitlab-runner容器,让最新配置生效
docker restart gitlab-runner
注册gitlab-runner执行器到gitlab 获取gitlab仓库CICD的token以及注册URL 新建一个仓库点进去==>左侧菜单Settings==>CICD==>Runners==>复制Register the runner with this URL下面的url==>复制And this registration token
注册gitlab-runner容器到gitlab 执行命令:
docker exec -it gitlab-runner gitlab-runner register
然后按照上面命令给出的提示依次输入,每次输入完成回车到下一项:
注册URL(上一步获取的)==>注册token(上一步获取的)==>run-desc(命名可以随意)==>run tags(命名可以随意,可以编写ci配置文件会用上) ==>run main(命名可以随意)==>docker(必选docker构建容器)==>alpine:latest(必输docker的版本)
检验执行器是否注册成功:
回到之前查看token的那个gitlab页面,刷新一下 在token下面会有一个 Available specific runners ,并且前面的图标是绿色的代表注册成功
搭建私有化registry镜像仓库服务 私有化镜像仓库和docker安装的时候自带的镜像库的区别: 私有化镜像仓库可以给网络相同的任一服务器上面的docker服务提供镜像下载服务,而docker自带的镜像库就是只能给当前服务器上面的docker服务提供镜像依赖
执行命令: 拉取registry镜像 docker pull registry:latest
运行registry容器服务 docker run -d -v /install/registry:/var/lib/registry -e REGISTRY_STORAGE_DELETE_ENABLED=true -p 5000:5000 --restart=always --name docker-registry registry:latest
命令行curl验证是否搭建成功 curl -X GET http://localhost:5000/v2/_catalog
出现{repositories:[]},空数组就说明安装成功了,只是现在还没有上传镜像所以还是空数组
runner安装教程
https://blog.csdn.net/u013595395/article/details/129286534
https://docs.gitlab.com/runner/install/linux-repository.html#deb-based-distributions
类型
shared 共享 整个平台可用
group 项目组
specific 项目
状态
locaed锁定
paused暂停
访问admin页面 http://192.168.2.32/admin 然后点击cicd