容器时代的持续交付工具---Drone:Drone使用
上一篇文章里已经介绍了如何安装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使用的更多相关文章
- 容器时代的持续交付工具---Drone:Drone介绍与安装
		
Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container ...
 - 持续交付工具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 ...
 - 持续集成和持续交付工具-jenkins
		
jenkins说明 jenkins是一款由Java编写的开源的持续集成工具,它运行在Servlet容器中(例如Apache Tomcat).它支持软件配置管理(SCM)工具(包括AccuRev SCM ...
 - [持续交付实践] 开篇:持续集成&持续交付综述
		
前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的 ...
 - 利用Spinnaker创建持续交付流水线
		
在Pivotal Container Service (PKS)上部署软件的方法多种多样,本文重点介绍如何使用Spinnaker在PKS(或任何Kubernetes群集)上进行持续交付. Pivota ...
 - Docker学习总结(14)——从代码到上线, 云端Docker化持续交付实践
		
2016云栖大会·北京峰会于8月9号在国家会议中心拉开帷幕,在云栖社区开发者技术专场中,来自阿里云技术专家罗晶(瑶靖)为在场的听众带来<从代码到上线,云端Docker化持续交付实践>精彩分 ...
 - 基于Jenkins的持续交付方案
		
简介 Jenkins是开源的自动化编译.测试.部署的Web应用程序一个持续性交付应用 Jenkins的优势 1.Jenkins在国内的开发者中认可度较高,很多创业公司的自建持续交付系统的选择大部分都是 ...
 - 容器云平台No.10~通过gogs+drone+kubernetes实现CI/CD
		
什么是CI/CD 持续集成(Continous Intergration,CI)是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每 ...
 - CODING DevOps 系列第一课:基于开源工具链打造持续交付平台
		
当下软件发展趋势 当今 IT 行业发展中比较流行的几个技术,首先是微服务化,将原有的一个系统拆分成多个,意味着有多个系统需要构建.测试.部署和运维. 第二个是敏捷开发模式,需求粒度更细化,要求一个可独 ...
 
随机推荐
- ansible的安装和简单使用
			
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真 ...
 - [git]一个本地仓库,多个远程仓库
			
操作步骤如下: 1. 克隆某个远程仓库的代码到本地 git clone http://...... // 或者 git clone git@.... 2. 查看当前远程仓库地址 // 查看需要添加的远 ...
 - Axios的params与data的
			
Axios发送请求时params和data的区别 https://www.cnblogs.com/cwzqianduan/p/8675356.html(copy 在使用axios时,注意到配置选项中 ...
 - CF #589 (Div. 2)C. Primes and Multiplication 快速幂+质因数
			
题目链接:https://www.luogu.org/problem/CF1228C 问题可以转化为:求质数 $p$ 在 $1\sim n$ 中的每个数中的次幂之和. 因为 $p$ 是一个质数,只能由 ...
 - Java进阶知识22 Spring execution 切入点表达式
			
1.概述 切入点(execution ):可以对指定的方法进行拦截,从而给指定的类生成代理对象.(拦截谁,就是在谁那里切入指定的程序/方法) 格式: execution(modifiers-pat ...
 - Bzoj 3942: [Usaco2015 Feb]Censoring(kmp)
			
3942: [Usaco2015 Feb]Censoring Description Farmer John has purchased a subscription to Good Hooveske ...
 - python3.5+win7 安装 numpy 和scipy的总结
			
1.安装numpy. 官网下载numpy.下载地址为https://pypi.Python.org/pypi/numpy.选择与Python版本相对应的numpy版本.之后在python35 ...
 - Codeforces 1239D. Catowice City
			
传送门 如果选择 $i$ 当陪审团成员,那么 $i$ 认识的猫一定不能参加 又因为总人数和猫数要为 $n$ ,那么 $i$ 认识的猫 的主人也一定要当陪审团成员(不然总数不够) 所以可以考虑这样构图, ...
 - jenkins自动化部署gitlab上maven程序
			
部署流程:将代码从gitlab上拉取下来,使用maven打包,将打包后的jar通过ssh发送到服务器上,运行jar程序 注意:本文需要安装一些插件Publish Over SSH 1.新建任务 在主页 ...
 - elasticsearch shield在java中的应用
			
官方文档:https://www.elastic.co/guide/en/shield/current/_using_elasticsearch_java_clients_with_shield.ht ...