Skip to content

heiybb/gogs-drone-docker

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

前言

CI / CD( 持续集成 / 持续部署 )方案是DevOps中不可或缺的流程之一,最近也了解了部分的相关的解决方案,最终选择了Drone + Gogs基于docker容器环境来构建CI / CD,本文将分享下如何构建此平台以及如何快速地使用到项目开发中。

应该会有一个疑问?我为什么不选择主流的GitLab + Jenkins 两个最佳搭档来构建呢?

  • GitLab是使用Ruby编写的,Jenkins更是了不起,使用Java来编写的,项目整体比较膨大,同时它们对硬件、CPU等开销比较高
  • DroneGogs皆是使用Go语言来编写构建,在整体的语言性能与内存开销算是有一定的优势,同时Drone支持GithubGitLabGogs以及Bitbucket,这点很不错!反手就是一个赞?

GitLab + Jenkins该组合还是一个不错的选择,我并没有反对,为何呢?GitLab是一个非常成熟的git工具之一,同时Jenkins也是非常成熟的CICD组件,功能非常强大。 但是我还是要站在正义的一边,选择Drone + Gogs。O(∩_∩)O哈哈~

说明

drone升级使用1.0.0-rc6版本,此版本并非稳定版本,推荐使用1版本甚至是0.8.6更稳定的版本。1.0后的版本较之前而言,配置更加灵活、优化版本,同时界面也变化了。drone

环境

使用的前提,必须符合以下条件

  • 系统安装了Docker,同时要安装了Docker编排工具docker-compose
  • 主流的x64位系统,LinuxMacWindow
  • 安装了git版本控制工具

安装

安装非常简单,拉取docker-compose.yml编排文件,基于Docker环境自动构建即可! 同步至github | 戳戳戳

git clone https://github.com/alicfeng/gogs-drone-docker.git
cd gogs-drone-docker && docker-compose up -d

执行docker ps来看下容器的运行情况 alicfeng - docker ps

对应的配置文件可以根据项目的需求自由灵活改变,同时像我这样强迫症的人,我不喜欢使用IP来进行访问请求的以及http协议访问,我会使用nginx代理。不详细说了

至此,我们已经完成了平台的构建工作了。我们来欣赏下干杯 Gogs Drone

有两个地方需要注意:

  • Drone登录的账号需要在Gogs设置为管理员,他俩兄弟的账密是互通的
  • Gogs的仓库会自动同步到Drone上,此时,需要在Drone开启钩子才能正常运行

使用

好了,是时候来体验两把了,这里需要有一个前提了,O(∩_∩)O哈哈~,你需要了解它是如何运行的,根据什么来自动化构建的 每当分支的代码更新的时候,Gogs会动过钩子同步通知Drone,而Drone收到通知之后会发生一系列动作

  • 通过git插件clone分支代码到容器里面

  • 测试

  • 编译代码,构建可执行文件

  • 将项目和运行环境打包成镜像,发布到Registry

  • 部署至生产环境

  • 发送邮件等通知信息,这里还有很多插件,比如微信、钉钉、电报等

    构建的剧本是通过.drone.yml文件编排的,基于Docker镜像进行构建,很nice~下面简单体验下Laravel项目的即可!githublaravelvue等前后端编排的yml文件。

pipeline:
  build:
    image: motecshine/laravelphp71
    commands:
    - mv $(pwd)/.env.dev $(pwd)/.env
    - composer config repo.packagist composer https://packagist.phpcomposer.com
    - composer install --no-scripts --no-dev
    # others

drone

drone

价值源于技术,技术源于分享

About

For the better CI as well as CD using gogs and drone base on Docker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dockerfile 100.0%