资讯专栏INFORMATION COLUMN

使用drone和gogs搭建自己的CI/CD系统

inapt / 904人阅读

摘要:域名和应用记得一样接着我们创建一个管理员用户,然后其他的都默认,点击立即安装完成。初始化成功之后我们可以在里边创建一个仓库,然后登陆。比如配置文件需要的密钥,用户名和密码,一些环境变量都可以在设置,构建状态徽章可以在你的项目文件加上去。

drone是一个基于容器的本地持续交付平台,和Jenkins是差不多的,然后配合轻量级的gogs来作为git管理,都是基于golang开发的很符合我的需求,我们来把它们结合作为一个完整的CI、CD平台。

首先我们要先安装docker,上次的篇幅我们已经说过了我就不赘述了。

需要的东西有:linux,docker,docker-compose,drone,gogs,git等。

安装gogs和drone

配合荣锋亮大哥的yml文件和docker-compose我们可以很容易安装他们:

version: "3"
services:
  drone-server:
    image: drone/drone:latest
    ports:
      - "8080:80"
      - 8843:443
      - 9000
    volumes:
      - ./drone:/var/lib/drone/
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_OPEN=true
      - DRONE_SERVER_HOST=drone-server
      - DRONE_DEBUG=true
      - DRONE_GIT_ALWAYS_AUTH=false
      - DRONE_GOGS=true
      - DRONE_GOGS_SKIP_VERIFY=false
      - DRONE_GOGS_SERVER=http://gogs:3000
      - DRONE_PROVIDER=gogs
      - DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite
      - DRONE_DATABASE_DRIVER=sqlite3
      - DRONE_SERVER_PROTO=http
      - DRONE_RPC_SECRET=ALQU2M0KdptXUdTPKcEw
      - DRONE_SECRET=ALQU2M0KdptXUdTPKcEw
  gogs:
    image: gogs/gogs:latest
    ports:
      - "10022:22"
      - "3000:3000"
    volumes:
      - ./data/gogs:/data
    depends_on:
      - mysql
  mysql:
    image: mysql:5.7.16
    volumes:
      - ./gogs/mysql:/var/lib/mysql
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 3308:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: pass
      MYSQL_DATABASE: gogs
      MYSQL_USER: gogs
      MYSQL_PASSWORD: pass
      TZ: Asia/Shanghai
  drone-agent:
    image: drone/agent:latest
    depends_on:
      - drone-server
    environment:
      - DRONE_RPC_SERVER=http://drone-server
      - DRONE_RPC_SECRET=ALQU2M0KdptXUdTPKcEw
      - DRONE_DEBUG=true
      - DOCKER_HOST=tcp://docker-bind:2375
      - DRONE_SERVER=drone-server:9000
      - DRONE_SECRET=ALQU2M0KdptXUdTPKcEw
      - DRONE_MAX_PROCS=5
  docker-bind:
     image: docker:dind
     privileged: true
    #  command: --storage-driver=overlay

我们创建一个存放docker-compose.yml文件的目录比如就叫gogs,然后我们把这些yml保存成docker-compose.yml,然后执行docker-compose来安装:

$ docker-compose up -d

配合yml文件,我们就安装好了drone-server和drone-agent还有gogs,然后我们用浏览器打开http://localhost:3000/来进入gogs并初始化它。

域名和应用URL记得一样接着我们创建一个管理员用户,然后其他的都默认,点击立即安装完成。

初始化成功之后我们可以在gogs里边创建一个仓库,然后登陆drone。

drone

打开浏览器输入http://localhost/直接进入drone,密码是gogs的你的刚刚的账户和密码。

我们会看到一个刚刚创建的仓库,激活它!

激活之后,我们回到gogs那边,仓库的设置里边的webhook应该已经配置好了

我们可以测试web hook,如果没有问题的话,应该会提示成功。

上传源码

测试没有问题之后,我们初始化我们的代码文件夹为git仓库,然后push到gogos上边

然后为你的仓库加上.drone.yml配置文件,drone-server会自动读取这个文件进行CI、CD操作等。以下这个是我们的示例文件

kind: pipeline
name: demo

steps:
  - name: build
    image: golang:1.11.4
    commands:
      - pwd
      - go version
      - go build .
      - go test demo/util

  #  - name: frontend
  #    image: node:6
  #    commands:
  #      - npm install
  #      - npm test

  - name: publish
    image: plugins/docker:latest
    settings:
      username:
        from_secret: docker_username
      password:
        from_secret: docker_password
      repo: example/demo
      tags: latest

  - name: deploy
    image: appleboy/drone-ssh
    pull: true
    settings:
      host: example.me
      user: root
      key:
        from_secret: deploy_key
      script:
        - cd /data
        - mkdir app/
        - cd /data/app
        - docker rmi -f example/demo
        - echo "login docker"
        - echo "login success, pulling..."
        - docker pull example/demo:latest
        - echo "image running"
        - docker run -p 8088:8088 -d example/demo
        - echo "run success"

我们首先进行简单的golang build和test操作然后根据Dockerfile文件把我们的程序构建成docker镜像,接着上传到docker hub中,然后通过drone-ssh插件部署这个镜像。

开始构建

有了配置文件之后,推送代码我们就可以去drone查看构建进度:

drone的设置

在进入drone的时候,选择一个项目我们可以进行一些必要的设置,比如配置secrets,定时任务和徽章等等。

比如配置文件需要的密钥,用户名和密码,一些环境变量都可以在secrets设置,构建状态徽章可以在你的项目README.md文件加上去。

项目加上徽章:

示例代码,本文完。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27743.html

相关文章

  • 基于droneCI/CD,对接kubernetes,见证灵活与自由,CI/CD对接kubernet

    摘要:所以我们选一个仓库仓库比较多,我这里选用,都行,根据需求自行选择访问端口,然后就没有然后了功能没有那么强大,不过占用资源少,速度快,我们稳定运行了几年了。 kubernetes集群三步安装 CI 概述 用一个可描述的配置定义整个工作流 程序员是很懒的动物,所以想各种办法解决重复劳动的问题,如果你的工作流中还在重复一些事,那么可能就得想想如何优化了 持续集成就是可以帮助我们解决重复的代码...

    iOS122 评论0 收藏0
  • k8s与CICD--drone简介部署

    摘要:是的最佳实践部署编写文件的部署及其简单,采用的方式,类似于。具体如下此处需要注意的是在处的。登录配置项目此处输入的用户名和密码是的。支持和两个数据库。新的配置文件如下仔细查看关于的文档,需要我们手动创建数据库。其中有和相关的。 前言 整个基于k8s的pass平台,关键的一部分就是CICD。CICD又是devops的关键部分。之前主流的工具是Jenkins。今天主要介绍的是drone。...

    fxp 评论0 收藏0
  • k8s与CICD--drone简介部署

    摘要:是的最佳实践部署编写文件的部署及其简单,采用的方式,类似于。具体如下此处需要注意的是在处的。登录配置项目此处输入的用户名和密码是的。支持和两个数据库。新的配置文件如下仔细查看关于的文档,需要我们手动创建数据库。其中有和相关的。 前言 整个基于k8s的pass平台,关键的一部分就是CICD。CICD又是devops的关键部分。之前主流的工具是Jenkins。今天主要介绍的是drone。...

    qujian 评论0 收藏0
  • Docker + Drone CI/CD 实践

    摘要:原文链接测试环境生产环境腾讯云容器服务官方网站安装请使用或升级到最新版本。注意版本的不同。与或集成请参考官方文档的配置。之后使用以下命令启动即可安装详情请参考使用与类似,项目中包含即可使用。本站介绍的使用方法请查看这里示例 原文链接:http://www.khs1994.com/ci/dro... 测试环境:macOS + Drone + Gogs + Docker Registry ...

    HelKyle 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<