摘要:最近研究了一下,尝试将和集合在一起,做服务官方是有说明文档,支持的,见的安装文档我个人安装过程中碰了一些坑,在这里记下安装过程。第二步的结果看到正常运行,的服务就初步搭建起来了。至此,,部署安装的步骤就完成了。
最近研究了一下drone,尝试将drone1.0和gitea集合在一起,做CI服务;drone官方是有说明文档,支持gitea的,见drone server的安装文档;我个人安装过程中碰了一些坑,在这里记下安装过程。
先上docker-compose.yml文件:
version: "3.6" services: mysql: image: mysql:${MYSQL_VERSION} container_name: mysql ports: - "${MYSQL_HOST_PORT}:3306" volumes: - ${MYSQL_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro - ${MYSQL_DATA_DIR}:/var/lib/mysql/:rw restart: always networks: - default environment: MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}" TZ: Asia/Shanghai gitea: image: gitea/gitea:latest container_name: gitea environment: TZ: Asia/Shanghai volumes: - /var/lib/gitea:/data restart: always networks: - default ports: - "10022:22" - "10080:3000" drone-server: image: drone/drone:latest container_name: drone-server ports: - "8080:80" - "8000:8000" - "9000:9000" volumes: - /var/run/docker.sock:/var/run/docker.sock - /dnmp/drone/:/var/lib/drone/:rw restart: always environment: - DRONE_GITEA_SERVER=http://192.168.88.190:10080 #- DRONE_GITEA_SERVER=http://127.0.0.1:10080 - DRONE_GIT_ALWAYS_AUTH=false - DRONE_RUNNER_CAPACITY=2 - DRONE_SERVER_HOST=192.168.88.190 - DRONE_SERVER_PROTO=http - DRONE_RPC_SECRET=9c3921e3e748aff725d2e16ef31fbc42 - DRONE_TLS_AUTOCERT=false - DRONE_LOGS_DEBUG=true - TZ=Asia/Shanghai restart: always networks: - default drone-agent: image: drone/agent:latest container_name: drone-agent command: agent restart: always depends_on: - drone-server volumes: - /var/run/docker.sock:/var/run/docker.sock environment: #- DRONE_RPC_SERVER=http://192.168.88.190:9000 - DRONE_RPC_SERVER=drone-server:9000 - DRONE_RPC_SECRET=9c3921e3e748aff725d2e16ef31fbc42 - DRONE_RUNNER_CAPACITY=2 - DRONE_RUNNER_NAME=192.168.88.190 - DRONE_LOGS_DEBUG=true - TZ=Asia/Shanghai restart: always #detach: true networks: - default networks: default:
我的环境是本地虚拟机centos7,上面IP地址是虚拟机的ip地址。
因为gitea是采用mysql数据库,所以要启动一个msyql的容器服务;通过命令docker-compose -f docker-compose.yml build命令先将镜像构建,其实都是用官方的镜像,构建这一步是很快的,只是做一个检查;
然后docker-compose -f docker-compose.yml up -d 将容器运行起来,通过docker ps -a可以查看到容器的状态:
status这一栏都是正常的,表明服务就可以使用了。
先要配置gitea,通过http://192.168.88.190:10080/进入gitea的web页面,点击登录后,就会出现安装向导,填写信息,点击安装,等几分钟就ok了。安装的细节稍微要注意填写的地址和端口,容器内部要填写3000,对外开放的是10080。记住设置的管理员账号和密码,后面drone登录时也要用到。
然后通过http://192.168.88.190:8080/进入drone的web页面,如下:
输入刚才在gitea设置的管理员账号和密码,就可以登录成功,就能看到如下页面:
刚开始repositories是空的,点击右上方的sync按钮,等一分钟就会自动同步gitea项目过来;同步过来的gitea仓库,默认状态是没开启的。可以点击setting页面,进入设置,如下:
填写配置文件名字,默认是.drone.yml。点击save,就会开启。点击save的时候,drone会将配置信息同步给你的gitea,gitea项目那边会响应,然后配置一个webhook,这里有个坑,后面再讲。
顺利的话,你在gitea项目添加.drone.yal后,就会触发构建,我在gitea仓库test下建的.drone.yml文件:
workspace: base: /go path: src/web_api pipeline: build: image: golang environment: TZ: Asia/Shanghai commands: - pwd - go env - date - go version - go build - ls -a
提交gitea后,查看drone的状态:
第一步是clone代码,第二步是build,因为我的.drone.yml超级简单,没有后面的步骤,只是测试用的。第二步build的结果:
看到正常运行,drone+gitea的服务就初步搭建起来了。后面通过在.drone.yml添加内容和服务,就能达到快速CI/CD的效果。
顺便记录一下踩的坑,刚开始我按照drone集成gitea的安装文档,将docker-compose.yml文件写好,运行docker-compose -f docker-compose.yml up -d 将容器运行起来,通过docker ps -a看到drone-server容器怎样都起不来,docker logs drone-server也看不出报错。
在网上找到drone+gitea的贴子,大部分都是drone0.8版本,鉴于此,我将drone的latest改为0.8,安装0.8版本的配置,重新运行,竟然跑起来了。跑起来后,我就摸索drone的配置和服务,后面发现1.0版本有一些配置跟0.8不一样,官方有说明,但不明显。见:
1.0版本跑不起来的配置,是因为drone-server的服务,80端口没对外开放,据我目前的了解,1.0版本默认是开放80端口,我当时按照0.8版本的端口,配置了"8000:8000"和"9000:9000",就差80端口,所以服务一直不正常。
这里也会涉及到gitea的webhook,上面说的在drone将gitea设置为开启状态时,这两者会交互的,我们看下gitea的webhook:
drone关联gitea项目时,就会有添加这个,但是端口不是8080,默认是80,就是没有端口的,类似:
http://192.168.88.190/hook?secret=TzY9LahcXEiQ8eoBDvqPYaw2VN5dJGG2
点击修改,加上前面设置的端口8080,点击保存,然后test 一下webhook,就能看到效果。
至此,drone1.0+gitea,docker部署安装的步骤就完成了。
drone更多细节,还有待继续研究。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27705.html
摘要:如果还没有搭建好可以使用的,请先移步到这篇文章进行搭建使用自动部署服务一搭建篇目标通过实现推送代码后自动部署基于的服务准备工作获取示例项目或者直接复制以下文件内容获取示例项目项目文件页面文件镜像文件部署文件部署脚本文件页面文件项目很简单, 如果还没有搭建好可以使用 Docker 的 Jenkins,请先移步到这篇文章进行搭建 使用 Jenkins 自动部署 Docker 服务(一、Je...
摘要:下面我想介绍另一种学习思路,自顶向下的学习。是通过虚拟机创建集群,支持多种虚拟机,我这里用的。对内或对外暴露服务。和的控制器,通过配置的规则来管理。三个主要的命令行程序用了启动集群。需要在所以节点上运行,处理集群内部通讯,类似。 之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持...
摘要:下面我想介绍另一种学习思路,自顶向下的学习。是通过虚拟机创建集群,支持多种虚拟机,我这里用的。对内或对外暴露服务。和的控制器,通过配置的规则来管理。三个主要的命令行程序用了启动集群。需要在所以节点上运行,处理集群内部通讯,类似。 之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持...
摘要:下面我想介绍另一种学习思路,自顶向下的学习。是通过虚拟机创建集群,支持多种虚拟机,我这里用的。对内或对外暴露服务。和的控制器,通过配置的规则来管理。三个主要的命令行程序用了启动集群。需要在所以节点上运行,处理集群内部通讯,类似。 之前就玩过docker,但是一直不知道怎么把容器运用到生产上。构建一个docker镜像,把他run起来很简单;难的是容器的部署(CICD),容器的网络,数据持...
摘要:但此功能目前并不直接可用相关也已经创建。根源在于参数的获取实现上。省略输出可以看到,这个名称可以在这个中重复使用了。比如省略输出支持将推送至镜像仓库中简而言之就是使用镜像仓库同时存储镜像和不过这个功能我暂时还没验证。 经过了长时间的开发,Helm 3 终于在今天发布了第一个 alpha 版本。本文将简单介绍 Helm 3 新特性。 移除 Tiller Helm 2 是 C/S 架构,主...
阅读 3866·2021-11-22 13:54
阅读 2649·2021-09-30 09:48
阅读 2335·2021-09-28 09:36
阅读 3084·2021-09-22 15:26
阅读 1313·2019-08-30 15:55
阅读 2483·2019-08-30 15:54
阅读 1399·2019-08-30 14:17
阅读 2321·2019-08-28 18:25