上一篇文章里已经介绍了如何安装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配置私有仓储,然后配置上正确的账户信息即可。

最新文章

  1. Linux C编程学习之开发工具3---多文件项目管理、Makefile、一个通用的Makefile
  2. linux---------------centos6.4安装完了以后敲ifconfig,没有局域网ip。解决如下
  3. Lead推荐学asp.net书籍
  4. mysql存储过程简介
  5. foxmail 6.5升级到7.0版本后,旧邮件的导入处理
  6. 记录一次Spring boot 搭建框架连接Mysql数据库注解事务不回滚的故障
  7. SelectList
  8. String.split()分割字符串
  9. MathML转换成OfficeML
  10. iOS制作毛玻璃效果
  11. thinkinginjava学习笔记07_多态
  12. bounding box的简单理解
  13. 【转】ArcGIS10的附件功能
  14. 【C++语法基础】实验1
  15. windows----------自启动QQ报错”initialization failure:0x0000000C“
  16. [转帖] kubeadm搭建kubernetes集群
  17. 7月底的list
  18. ArcGIS 10.2 链接64位Oracle数据库
  19. windows环境下VS2008编译程序在有些电脑上执行不了的问题
  20. mysql 约束条件 unique key 唯一的键

热门文章

  1. 由浅入深剖析 go channel
  2. Elasticsearch: nested对象
  3. 如何用pycharm 控制远程服务器来跑代码!!!!!!!!!!!!非常牛逼
  4. Python进阶:都说好用的 Python 命令行库click
  5. idea 查看类继承关系的快捷键
  6. [Debug] Dev tool Pause on caught exception
  7. Bzoj 3036: 绿豆蛙的归宿(期望)
  8. MySQL数据分析-(2)数据库的底层逻辑
  9. c语言 宏
  10. Echarts案例-折线图