流程结构


提交代码至gitlab仓库,drone自动同步gitlab项目,使用gitlab中的.drone.yaml文件执行,使用gitlab中的dockerfile构建镜像,推送至仓库。

服务器

服务器电脑vmware安装的虚拟主机
cpu:2核
内存:4G
IP:192.168.137.128
域名:raisehands.cn
域名用的是阿里云个人免费域名 解析到内网的虚拟机192.168.137.128

[root@localhost ~]# uname -r
3.10.0-1160.el7.x86_64
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

初始设置

#临时不重启关闭selinux 重启失效
setenforce 0
#关闭防火墙
systemctl stop firewalld

docker 安装配置

  • 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置stable镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 从高到低列出ce 稳定版本
yum list docker-ce.x86_64  --showduplicates | sort -r
  • 安装
#安装指定版本
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
# 例如:
yum install docker-ce-18.09.9 docker-ce-cli-18.09.9 containerd.io#安装最新版本
yum -y install docker-ce
  • 启动
systemctl start docker
systemctl enable docker
  • 配置docker优化
tee  /etc/docker/daemon.json << EOF
{
"graph":"/data/docker",
"oom-score-adjust": -1000,      #设置守护程序的oom_score_adj(默认值为-500)
"log-driver": "json-file",      #容器日志的默认驱动程序(默认为“ json-file”)
"log-opts": {"max-size": "100m","max-file": "3"
},
"max-concurrent-downloads": 10,  #设置每个请求的最大并发下载量(默认为3)
"max-concurrent-uploads": 10,    #设置每次推送的最大同时上传数(默认为5)
"registry-mirrors": ["https://5biptv7a.mirror.aliyuncs.com"], #镜像加速地址
"insecure-registries" : ["0.0.0.0/0"],                        #任意仓库能访问
"storage-driver": "overlay2",    #要使用的存储驱动程序
"storage-opts": [
"overlay2.override_kernel_check=true" #存储驱动程序选项
]
}
EOF

gitlab 安装配置

  • 安装 防止端口冲突使用 8443 8080 端口
docker pull gitlab/gitlab-ce  #下载gitlab 稳定版本
#运行 将配置文件,数据日志等外挂方便查看修改 --hostname 宿主机IP
docker run -itd  \
--hostname 192.168.137.128 \
-p 8443:443 \
-p 8080:80 \
-p 1022:22 \
-v /heme/gitlab/config:/etc/gitlab \
-v /heme/gitlab/logs:/var/log/gitlab \
-v /heme/gitlab/data:/var/opt/gitlab \
-e TZ=Asia/Shanghai \
--name gitlab \
--restart always \
--privileged=true \
gitlab/gitlab-cedocker exec -it gitlab bashvi /etc/gitlab/gitlab.rb
external_url = 'http://192.168.137.128:8080'
gitlab_rails['gitlab_ssh_host'] = '192.168.137.128'
gitlab_rails['gitlab_shell_ssh_port'] = 1022vi /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
production: &base## 1. GitLab app settings# ==========================## GitLab settingsgitlab:## Web server settings (note: host is the FQDN, do not include http://)host: 192.168.137.128port: 8080https: falsessh_host: 192.168.137.128ssh_port: 1022gitlab-ctl reconfigure  #让修改后的配置生效
gitlab-ctl restart      #重启gitlabexit  #推出容器
  • 访问测试
    http://raisehands.cn:8080/ root/qwer1234

第一次设置root登录密码密码至少8位数,出现如下界面就基本上部署成功了,并且登陆
设置密码

登陆界面


创建用户


给用户设置密码

部署Harbor

  • 安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #下载二进制文件 如果需要安装其他版本的话,请修改上面命令中的版本号。chmod +x /usr/local/bin/docker-compose  #给予执行权限docker-compose --version   #查看版本
  • harbor安装方式
    安装分为在线安装和离线安装两种方式,我这里选择的是在线安装。
wget -P /home/harbor/     https://github.com/vmware/harbor/releases/download/v1.2.0/harbor-online-installer-v1.2.0.tgz
cd /home/harbor/
tar zxf harbor-online-installer-v1.2.0.tgz#修改配置文件
vim /home/harbor/harbor/harbor.cfg
hostname = raisehands.cn #harbor域名或IP
ui_url_protocol = http #默认使用的protocol
db_password = root123 #harbor数据库ROOT用户链接的密码
max_job_workers = 3
self_registration = off #不允许注册用户
customize_crt = on
project_creation_restriction = adminonly #设置只有管理员可以创建项目
harbor_admin_password = Harbor12345 #admin用户登录密码Harbor12345#执行安装脚本
/home/harbor/harbor/install.sh#Harbor 的日常运维管理是通过docker-compose来完成的,Harbor本身有多个服务进程,都放在docker容器之中运行,我们可以通过docker-compose ps命令查看
#启动Harbor
docker-compose start
#停止Harbor
docker-comose stop
#重启Harbor
docker-compose restart
  • 访问测试
    使用你的域名或者IP直接访问Harbor,Harbor默认使用的是80端口 admin/Harbor12345

部署Drone

1 配置gitlba获取
DRONE_GITLAB_CLIENT_ID
DRONE_GITLAB_CLIENT_SECRET
登录gitlab并配置gitlab外部认证 Url为drone访问地址:http://raisehands.cn:8081/login,按自身部署drone环境修改Url。

  • drone安装

DRONE_GITLAB_SERVER gitlab地址

DRONE_GITLAB_CLIENT_ID 上面生成的ID

DRONE_GITLAB_CLIENT_SECRET 上面生成的SECRET

DRONE_SERVER_HOST 需要和 gitlab中配置的 drone的Url访问地址一致:http://raisehands.cn:8081/login

docker run -itd \-v /var/run/docker.sock:/var/run/docker.sock \-v /home/drone:/data \-e DRONE_LOGS_DEBUG=true \-e DRONE_GIT_ALWAYS_AUTH=false \-e DRONE_GITLAB_SERVER=http://raisehands.cn:8080 \-e DRONE_GITLAB_CLIENT_ID=da0ff940fb1e9e250e3b9243ac354f38a997c1e483811cf36a828bacb12b2fd9 \-e DRONE_GITLAB_CLIENT_SECRET=2924584c59cbcd72c8afbccc5e9e229cc9f08c7208502287f35e82bba7706d21 \-e DRONE_RPC_SECRET=12345678 \-e DRONE_RUNNER_CAPACITY=3 \-e DRONE_SERVER_HOST=raisehands.cn:8081 \-e DRONE_SERVER_PROTO=http \-e DRONE_TLS_AUTOCERT=false \-p 8081:80 \-p 9443:443 \--restart=always \--detach=true \--name=drone_server \drone/drone:1

启动 runner

docker run -d \-v /var/run/docker.sock:/var/run/docker.sock \-e DRONE_RPC_PROTO=http \-e DRONE_RPC_HOST=raisehands.cn:8081 \-e DRONE_RPC_SECRET=12345678 \-e DRONE_RUNNER_CAPACITY=2 \-e DRONE_RUNNER_NAME=${HOSTNAME} \-p 3000:3000 \--restart always \--name runner \drone/drone-runner-docker:1
  • 访问测试

http://raisehands.cn:8081/ 此时已经把gitlab默认的项目推送过来了

搭建CI

  • 在gitlab中新增的项目redis,同步至drone

  • 在gitlab 项目中 创建.drone.yml文件,此文件作用是按文件内容将任务传送至drone应用,进行CI动作。
kind: pipeline
type: kubernetes
name: default
steps:
- name: redisimage: banzaicloud/drone-kanikosettings: repo: raisehands.cn/commom-reids/redis   #项目仓库地址/镜像名tags: v1                                #标签名      dron会自动调用dockerfile 生产镜像并且推送contest: ./                          #dockerfile文件所在目录  表示当前目录下cache: falseusername:from_secret: docker_username         #harbor登陆账号password:from_secret: docker_password         #harbor登陆密码
  • 在gitlab 项目中 创建dockerfile 文件 会被.drone.yml调用
FROM redis:latest
COPY redis.conf /home/redis.conf
  • 在gitlab 项目中 创建redis.conf 文件 会被dockerfile调用
  • 回到drone 页面 配置 harbor账号密码,为key value类型

  • 可以看到已经正在构建,拉镜像,点击进去可以 看到具体日志
    修改gitlab中redis代码,可以再次出发build,下面我就不截图了 内存完全不够,一直报错内存溢出

    所有容器截图

总结:买不起服务器,实属无奈使用vmware创建的2核4G

1.千万不要像我一样 只用一台2核4G,内存完全不够,至少用2核8G测试

2.所有服务在一台服务器上,端口冲突,且gitlab不好休要 要进容器去改,重启不然 配置会失效,被初始化

3.gitlab还有个坑 Gitlab 10.6 版本以后为了安全,不允许向本地网络发送Webhook请求。
导致我全部部署在同一台服务器上 drone 无法拉去 gitlab文件
解决方法:
Admin area->settings->Network->OutBound Request,点击Expand
勾选上Allow requests to the local network from hooks and services ,其他勾全部去掉,保存

4 如果harbor是http,一定要修改 docker配置文件加上 “insecure-registries” : [“0.0.0.0/0”], 不然默认https 你就传不了

5全是docker部署的,记得出问题报错 用docker logs --tail=100 -f 容器名 看报错哦

加油sicc 20210517

gitlab+drone+harbor之CI自动化流程相关推荐

  1. Linux——k8s、Jenkins、Gitlab、Harbor实现CI/CD

    CI/CD 一.环境搭建: 主机 IP 服务 master 192.168.1.40 K8s.Harbor node1 192.168.1.41 K8s Jenkins 192.168.1.42 je ...

  2. gitlab ci 自动化部署_lt;为什么准备使用GitLab做CICD流水线?/gt;

    本文是<GitLabCI实践>教程基础部分内容,讲述为什么要使用GitLabCICD功能,点击上面图片获取免费公开课报名链接,欢迎报名学习! 传统的应用开发发布模式 开发团队在开发环境中完 ...

  3. kubernetes的DevOps业务(一):Jenkins,GitLab,Harbor,Tekton,GitOps

    文章目录 CI/CD JenKins 安装 插入一个问题解决(没遇到这个问题的直接跳过) 架构 配置 测试 Gitlab 一个奇怪的现象 Git 部署配置git git本地仓库使用 对比各个区域文件内 ...

  4. 【项目自动发布】基于Docker/单节点Rancher/GitLab搭建简易的CI/CD流水线(备忘+补充完善)

    前言 最近面试好像也经常问到一个问题: 你们项目是怎么发布的 传统的Java项目都是本地打包成 jar包 或者 war包, 上传到服务器, 然后通过shell脚本的方式启动的 要求我们具备一定的she ...

  5. 一个简单CI/CD流程的思考

    因为公司有两地研发团队,在统一CI/CD上难度不亚于两家公司合并后的新流程建立,并非不可攻克,简单描述下心得. 首先,代码管理使用gerrit -> 因其强大的 codereview 功能被选中 ...

  6. Python-接口自动化流程(pytest)

    一.实现方法 python+requests+pytest框架来实现 二.接口自动化流程 确定业务范围,哪些业务功能的接口可以做自动化 一般来说,比较稳定的业务适合来做接口自动化 确定自动化测试框架 ...

  7. 艺赛旗RPA开发金蝶ERP自动化流程的技巧

    前言 最近在开发金蝶EAS(ERP)系统的自动化流程,使用的艺赛旗版本为20.5,以下是多日来对金蝶系统的开发经验总结,希望对各位有用. 一.注入Java插件方法 安装了设计器20.5的版本后发现无法 ...

  8. iOS CI自动化构建:FastLane+企业重签+上传fir+jenkins

    最近成功搭建了fastlane自动化构建流程,做下记录. fastlane 是用 Ruby 语言编写的一个命令行工具. fastlane 提供了一百多个 Action,它们是 iOS 项目开发中所有自 ...

  9. 什么是营销自动化工具?简单的营销自动化流程如何设计?

    作为营销人,日常工作中有大量重复&琐碎的日常工作,比如社群发消息通知.多个社交媒体平台管理.营销策划方案中几个项目管理表的同步.营销日报数据管理.广告数据分析等等场景.营销自动化的意思,就是借 ...

最新文章

  1. Python模块与类
  2. 【VMware vSAN 6.6】5.1.基于存储策略的管理:vSAN硬件服务器解决方案
  3. BeautifulSoup总结
  4. Linux 内核获取、初次编译、源码目录分析
  5. Nginx+Lua+Redis 对请求进行限制
  6. vue个人博客项目部署上线
  7. python爬虫框架
  8. 模糊综合评价在matlab上的实现
  9. 2020 JUSTCTF F@k3 0ff1c@l REVERSE WP
  10. 从价值出发,技术管理痛点的正解
  11. 影响世界的100条管理名言
  12. 常数e怎么用计算机,自然常数e:原来是这么来的
  13. Tomcat启动缓慢 Creation of SecureRandom instance for ... 花费时间过长的解决方法
  14. 年末了,是该总结一波了,冲鸭2021
  15. 田野调查手记·浮山摩崖石刻(十三)
  16. AlexNet论文翻译(中英文对照版)-ImageNet Classification with Deep Convolutional Neural Networks
  17. 新浪张俊林:大语言模型的涌现能力——现象与解释
  18. 用Python爬取知乎上关于程序员的神回复
  19. 华为认证的网络工程师证好考吗,含金量高吗 ?
  20. IC芯片设计项目管理007:公共IP对项目的加成

热门文章

  1. 解决微信小程序自定义tabbar跳转页面图标闪动问题
  2. Java缓存知识汇总
  3. 【JZOJ1758】过河
  4. WebAssembly 与 Kubernetes双剑合璧
  5. 如何获得你的准确位置及iphon手机应用定位不准确原因分析
  6. 【洛谷】P1830 轰炸III 题解 代码+详解
  7. 互联网日报 | 微博热搜榜被暂停更新一周;陆正耀辞任神州租车董事会主席;教育部严格国际学生申请资格...
  8. 长铗、孔剑平、何斌等17位大咖齐聚,一部区块链创业者的“燃点”
  9. 看看 NF_HOOK 宏
  10. oracle buys,Aconex - Logiciel de contrôle des projets de construction | Oracle France