容器时代的持续交付工具---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配置私有仓储,然后配置上正确的账户信息即可。

原文地址:https://www.cnblogs.com/dxp909/p/11585904.html

时间: 2024-10-16 06:00:23

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

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

Drone:Drone is a Container-Native, Continuous Delivery Platform. 官方给的定义,从上面的定义可以得出两个关键点: 1,Container-Native:Cloud-Native是云原生,那Container-Native可以翻译成容器原生,就是说Drone是容器时代的一个产品,是基于容器实现的. 2, Continuous Delivery:持续交付,容器是现在快速交付的一个代名词,而Drone是容器化的一种持续交付的平台,其实Dr

持续交付工具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%A4%E4%BB%98%E5%B7%A5%E5%85%B7thoughtworks-go%E9%83%A8%E7%BD%B2step-by-step/ Posted on 2014 年 5 月 13 日 by zieckey | Leave a reply 1. ThoughtWorks  Go简

Microsoft将持续交付功能添加到Visual Studio、Azure

Microsoft正在向Visual Studio 2017 IDE中添加持续交付功能. Visual Studio扩展的持续交付工具允许开发人员在Visual Studio团队服务ALM平台上设置自动构建.测试和发布管道.它适用于面向Azure应用服务和Azure容器服务的ASP.Net 4和ASP.Net Core应用程序.开发人员可以通过IDE中的通知来监视管道,提醒他们连续集成运行中发生的生成失败信息. 该功能的目的是使开发人员能够自动保持最新的管道.开发人员可以通过Visual Stu

[持续交付实践] 基于 sonarqube 的代码检查平台实现

前言 公司此前用的一直是的SonarQube5.1(2015年版本,为兼容jdk6和jdk7的项目一直没有升级),最近为了pipeline的集成刚刚升级到了最新的SonarQube6.5版本.网上对SonarQube6的介绍比较少,这里重点先介绍下SonarQube6以后的一些新增特性.1.代码问题重新分级,将问题分为bug.漏洞.坏味道:将代码检查结果从可靠性.安全性.可维护性几个角度进行问题分类和风险分级.2.更丰富的代码检查规则,更友好的问题处理曲线展示,更清晰的质量阈和代码规则定制.3.

基于容器的持续交付管道

基于容器的持续交付管道 在过去的几篇d4d系列中,我给大家介绍了如何使用docker来支持asp.net core的应用开发,打包的场景.Asp.net core的跨平台开发能力为.net开发人员提供了使用容器进行应用开发的能力,今天这篇文章将对如何使用微软的全生命周期管理平台VSTS/TFS来构建基于容器的CI/CD管道来支持团队开发的场景. #1 前世今生 & 世界你好#2 容器化主机#3 在macOS上使用Visual Studio Code和Docker开发asp.net core和my

如何选择最佳CI工具:Drone VS. Jenkins

介绍 多年来,Jenkins一直是行业标准的CI工具.它包含了许多功能,在其生态系统中有近1000个插件,对于那些推崇简单的人来说,这可能令人望而生畏.Jenkins在容器出现之前就已存在,不过它还是很适合容器环境的.但也不得不说,以前Jenkins并没有给予容器什么特殊关注,它并没有很致力于让容器变得更好,不过现在Blue Ocean和pipeline的出现和发展让这一情况有了很大改观. Drone是一个广受欢迎的开源CI工具.它其实是原生Docker,所有的进程都在容器内进行.这使得Dron

七牛云宫静:基于容器和大数据平台的持续交付平台

7 月 6 日上午,在 ArchSummit 2018 深圳站 | 全球架构师峰会上,七牛云工程效率部技术专家宫静分享了<基于容器和大数据平台的持续交付平台>为题的演讲.本文是对演讲内容的整理.? ? 本次分享的主要内容是基于容器和大数据平台去构建的持续交付系统,是七牛云工程效率部在持续交付.容器化方面去做的技术实践.将从以下两个方向展开:一个是容器化方向,一个是持续交付的平台.主要会结合在七牛云的实践来介绍这个持续集成.持续部署在容器化方向的探索和思考,以及未来方向的考虑.? 01 业务场景

Docker,云时代的程序交付方式

Docker,云时代的程序交付方式 Docker - 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engine 的正式发布?Azure入华?还是AWS落地中国?留在每个人大脑中的印象可能各不相同,但要是让笔者来排名的话那么Docker绝对应该算是第一位的. 如果你之前听说过它的话,那么也许你会说"没错,就是它",因为几乎世界各地的开发.运维都在谈论着Docker:如果你还没听说过Docker,那么我 真的建议你花上10分钟来阅读本文. 1.

Docker学习总结(7)——云端基于Docker的微服务与持续交付实践

本文根据[2016 全球运维大会?深圳站]现场演讲嘉宾分享内容整理而成 讲师简介 易立 毕业于北京大学,获得学士学位和硕士学位:目前负责阿里云容器技术相关的产品的研发工作. 加入阿里之前,曾在IBM中国开发中心工作14年,担任资深技术专员,负责IBM企业平台云产品线PureApplication System的研发工作:还负责和参与了一系列IBM在Web 2.0,SOA中间件的研发和创新,也曾为全球客户提供SOA技术咨询和项目实施. 日程 大家好,我演讲的主题是<云端基于Docker的微服务与持