上一篇文章里已经介绍了如何安装Drone,下面我们来看下如何使用。还是基于gogs作为git仓储。

首先打开server对应的地址,进入登录页面,输入在启动server时配置的管理员账号(对应的就是gogs里的账户,当然可以使用其他账号,但是有些操作必须管理员才可以)进行登录,可以进入到系统中。

点击右上角的同步按钮,同步git库,同步完后,下面就会列出目前gogs里所有的git库,通过顶部搜索框也可以搜索要操作的项目,找到项目后,点击项目后面对应的激活按钮,如下图:

然后点击下面按钮进行激活配置:

一般保持默认,直接点save按钮即可。

激活后,Drone就会激活gogs的webhook,监听代码变化,当有代码发生变动时,就会触发Drone的pipeline。

下面就来看下pipleline的配置方法,我们以一个maven工程为例,实现把一个maven工程进行自动编译,然后打包成容器镜像,并推送到私有容器仓储里。

1,首先建立一个maven工程,里面添加自己的测试代码。

2,在项目的根目录下创建.drone.yml文件,这是配置pipeline的文件,drone工作都是靠它来说明的。

3,文件结构如下:

kind: pipeline
name: default
steps:
*****

 steps里配置的就是整个pipeline每一步的具体操作,我们实例第一步是要把项目进行编译,配置方法如下:

steps:
- name: build
image: maven:3.6.2-jdk-8
commands:
- mvn clean package
when:
branch: master
event: [ push ]

 

name:当前步骤的名字

image:该步骤依赖的容器镜像的名字

commands:在当前容器执行的指令

when:当前步骤触发的条件,这里设置的是当master分支发生push操作时

通过这一步骤就可以执行我们平时做的mvn打包指令,当执行发生错误时,pipeline就会被终止(任何一个步骤发生错误,都会终止后续的操作)

第二步是要进行镜像生成并推送到镜像仓储里,具体配置如下:

steps:
- name: build
image: maven:3.6.2-jdk-8
commands:
- mvn clean package
volumes:
- name: mavenrep
path: /root/.m2
when:
branch: master
event: [ push ]
- name: docker
image: plugins/docker
settings:
username: 仓储登录用户
password: 密码
registry: 仓储服务地址
insecure: true是否是不安全仓储,一般来说http协议的地址要设置为true
repo: 仓储路径
tags: latest
build_args:
- JAR_FILE: *.jar
when:
branch: master
event: [ push ]

第12行之后是针对第二步的配置,对应参数按照自己的需要进行修改即可。

特别说明下是image: plugin/docker,这是drone里的plugin,插件也是以容器方式存在的,settings是针对当前插件需要参数的配置。

http://plugins.drone.io/这个地址下是目前drone里支持的插件(里面有一个wechat插件,可以实现微信的通知)。

到此一个pipeline就配置完了,因为我们需要打包docker镜像,所以还需要创建一个Dockerfile文件,内容如下:

FROM openjdk:8
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT [ "sh", "-c", "java -jar /app.jar" ]

 这个dockerfile非常简单,就是把第一步生成的jar包打包进镜像中并通过java指令启动。关键是里面的JAR_FILE 参数,这是通过上面配置的build_args传递进来的。另外就是镜像仓储,可以使用harbor配置私有仓储,然后配置上正确的账户信息即可。

容器时代的持续交付工具---Drone:Drone使用的更多相关文章

  1. 容器时代的持续交付工具---Drone:Drone介绍与安装

    Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ...

  2. 持续交付工具ThoughtWorks Go部署step by step

    持续交付工具ThoughtWorks Go部署step by step http://blogs.360.cn/360cloud/2014/05/13/%E6%8C%81%E7%BB%AD%E4%BA ...

  3. 持续集成和持续交付工具-jenkins

    jenkins说明 jenkins是一款由Java编写的开源的持续集成工具,它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM ...

  4. [持续交付实践] 开篇:持续集成&持续交付综述

    前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...

  5. 利用Spinnaker创建持续交付流水线

    在Pivotal Container Service (PKS)上部署软件的方法多种多样,本文重点介绍如何使用Spinnaker在PKS(或任何Kubernetes群集)上进行持续交付. Pivota ...

  6. Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践

    2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...

  7. 基于Jenkins的持续交付方案

    简介 Jenkins是开源的自动化编译.测试.部署的Web应用程序一个持续性交付应用 Jenkins的优势 1.Jenkins在国内的开发者中认可度较高,很多创业公司的自建持续交付系统的选择大部分都是 ...

  8. 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD

    什么是CI/CD 持续集成(Continous Intergration,CI)是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每 ...

  9. CODING DevOps 系列第一课:基于开源工具链打造持续交付平台

    当下软件发展趋势 当今 IT 行业发展中比较流行的几个技术,首先是微服务化,将原有的一个系统拆分成多个,意味着有多个系统需要构建.测试.部署和运维. 第二个是敏捷开发模式,需求粒度更细化,要求一个可独 ...

随机推荐

  1. 再论i++ ++i

    #include <stdio.h> int main(void) { char acData[5] ={'A','B','C','D','E'}; char *pcData = NULL ...

  2. 4、Spring Boot 2.x 自动配置原理

    1.4 Spring Boot 自动配置原理 简介 spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate ...

  3. wait系列

    转自 http://blog.csdn.net/todd911/article/details/15028511 1.wait函数和waitpid函数 当一个进程正常或异常终止时,内核就向其父进程发送 ...

  4. LOJ6436. 「PKUSC2018」神仙的游戏 [NTT]

    传送门 思路 首先通过各种手玩/找规律/严谨证明,发现当\(n-i\)为border当且仅当对于任意\(k\in[0,i)\),模\(i\)余\(k\)的位置没有同时出现0和1. 换句话说,拿出任意一 ...

  5. 修改history记录数

    在linux系统下.history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history, 但只保留1000条命令(这个是由默认的shell ...

  6. 代码审计-Typecho反序列化getshell

    0x01 漏洞代码 install.php: <?php $config = unserialize(base64_decode(Typecho_Cookie::get('__typecho_c ...

  7. Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤

    Kinect v1 (Microsoft Kinect for Windows v1 )彩色和深度图像对的采集步骤 一.在ubuntu下尝试 1. 在虚拟机VWware Workstation 12. ...

  8. js返回函数, 函数名后带多个括号的用法及join()的注意事项

    内容 题目描述 输入 输出 题目描述 实现函数 functionFunction,调用之后满足如下条件: 1.返回值为一个函数 f 2.调用返回的函数 f,返回值为按照调用顺序的参数拼接,拼接字符为英 ...

  9. Vue于React特性对比(四)

    新开了一个vue的项目,从vue单页面框架搭建到单点登录接入都是自己负责搞的.然后准备将这套东西迁移到react上.然后有了这篇文章. 1,reactjs分环境打包明显要比vue更为麻烦 vue修改的 ...

  10. ffmpeg+nginx搭建直播服务器

    Nginx与Nginx-rtmp-module搭建RTMP视频直播和点播服务器 https://zhuanlan.zhihu.com/p/28009037 FFmpeg总结(十三)用ffmpeg基于n ...