【CI】Docker-compose快速搭建Gitee+Drone CI流水线

一、部署docker和docker-compose

https://www.runoob.com/docker/centos-docker-install.html
https://docs.docker.com/engine/install/centos/

二、Gitee账号创建第三方应用授权

注意服务端口,若未在80端口,需要单独写明

三、部署Drone CI

首先需要将对外服务端口在防火墙放行,若使用云平台则还需要把对应端口加入到网络安全组

# 查询端口是否开放
firewall-cmd --query-port=8080/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp

#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

Drone CI通过容器部署特别方便,docker-compose.yml配置参考drone-server和drone-runner-docker官方配置:

version: '3'
services:
  drone-server:
    restart: always  ## 容器自动重启
    image: drone/drone:2
    container_name: drone-server-cloudnative
    networks:  ## 使用自定义网络,也可以不写
      - drone-net-cloudnative
    ports:
      - "9901:80"  ## 映射到宿主机的端口
    volumes:
      - ./data:/var/lib/drone:rw
    environment:
      - DRONE_GITEE_CLIENT_ID=exxxx  ## gitee中生成的CLIENT ID
      - DRONE_GITEE_CLIENT_SECRET=cxxxx  ## gitee中生成的SECRET
      - DRONE_SERVER_HOST=ip:9901  ## 端口需要和映射至宿主机的一致
      - DRONE_SERVER_PROTO=http 
      - DRONE_RPC_SECRET=c64bab058885900124d31250b6780307  ## openssl rand -hex 16 自动生成
      - DRONE_USER_CREATE=username:xxxx,admin:true  ## gitee中的用户名
      - TZ=Asia/Shanghai
      #- DRONE_LOGS_DEBUG=true  ## 日志调试开关
      #- DRONE_LOGS_TRACE=true  ## 日志调试开关
      - DRONE_LOGS_TEXT=true
      - DRONE_LOGS_PRETTY=true
      - DRONE_LOGS_COLOR=true
  drone-runner-docker:
    restart: always  ## 容器自动重启
    image: drone/drone-runner-docker:1
    container_name: drone-runner-docker-cloudnative
    networks:
      - drone-net-cloudnative
    ports:
      - "9902:3000"  ## 映射到宿主机的端口,用于提供web页面,显示任务执行情况,可不映射
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=drone-server-cloudnative
      - DRONE_RPC_SECRET=c64bab058885900124d31250b6780307  ## 与server服务中保持一致
      - DRONE_RUNNER_NAME=docker-worker
      - DRONE_RUNNER_CAPACITY=2
      - TZ=Asia/Shanghai 
      - DRONE_DEBUG=true
      #- DRONE_LOGS_DEBUG=true
      #- DRONE_LOGS_TRACE=true
      #- DRONE_UI_USERNAME=admin   ## runner的web页面用户信息
      #- DRONE_UI_PASSWORD=password 
    depends_on:
      - drone-server

networks:   ## 可以不自定义
  drone-net-cloudnative:
    driver: bridge

运行后观察会发现时区配置未生效,是因为alpine镜像中没有Asia/Shanghai时区文件,需要进入到容器后,安装一下时区文件包,

sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories ## 使用国内仓库镜像
apk add --no-cache tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \  ## 若添加TZ参数,则可不执行
    && echo "Asia/Shanghai" > /etc/timezone \   ## 若添加TZ参数,则可不执行
    &&rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache ## 清除缓存

四、初始化项目

访问Drone CI服务,自动跳转到Gitee授权,登录后,激活对应项目,编写drone.yml即可
参考:https://docs.drone.io/pipeline/docker/overview/

五、注意事项

drone/drone镜像最好选择最新的版本,旧版本对gitee的支持不完整,建议是2.12之后的版本。

你可能感兴趣的:(Linux,Env,Docker,docker,ci,运维)