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

栏目: 数据库 · 发布时间: 5年前

内容简介:drone是一个基于容器的本地持续交付平台,和Jenkins是差不多的,然后配合轻量级的gogs来作为git管理,都是基于golang开发的很符合我的需求,我们来把它们结合作为一个完整的CI、CD平台。首先我们要先安装docker,上次的篇幅我们已经说过了我就不赘述了。需要的东西有:linux,docker,docker-compose,drone,gogs,git等。

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并初始化它。

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

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

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

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

drone

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

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

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

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

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

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

上传源码

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

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

然后为你的仓库加上 .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和gogs搭建自己的CI/CD系统

drone的设置

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

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

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

项目加上徽章:

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

示例代码 ,本文完。


以上所述就是小编给大家介绍的《使用drone和gogs搭建自己的CI/CD系统》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

免费:商业的未来

免费:商业的未来

Chris Anderson / 中信出版集团 / 2015-10-1 / 35.40

《免费》,这是一个商业模式不断被颠覆、被改写的时代。一种商业模式既可以统摄未来市场,也可以挤垮当前市场——在我们这个现代经济社会里,这并不是一件不可能的事情。“免费”就是这样的一种商业模式,它代表了互联网时代的商业未来。 “免费”商业模式是一种建立在以电脑字节为基础上的经济学,而非过去建立在物理原子基础上的经济学。在原子经济中,随着时间的推移,我们周围的物品都在逐渐升值。但是在字节经济的网络......一起来看看 《免费:商业的未来》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具