上一篇文章里已经介绍了如何安装 Drone, 下面我们来看下如何使用. 还是基于 gogs 作为 Git 仓储.
首先打开 server 对应的地址, 进入登录页面, 输入在启动 server 时配置的管理员账号 (对应的就是 gogs 里的账户, 当然可以使用其他账号, 但是有些操作必须管理员才可以) 进行登录, 可以进入到系统中.
点击右上角的同步按钮, 同步 Git 库, 同步完后, 下面就会列出目前 gogs 里所有的 Git 库, 通过顶部搜索框也可以搜索要操作的项目, 找到项目后, 点击项目后面对应的激活按钮, 如下图:
然后点击下面按钮进行激活配置:
一般保持默认, 直接点 save 按钮即可.
激活后, Drone 就会激活 gogs 的 webhook, 监听代码变化, 当有代码发生变动时, 就会触发 Drone 的 pipeline.
下面就来看下 pipleline 的配置方法, 我们以一个 maven 工程为例, 实现把一个 maven 工程进行自动编译, 然后打包成容器镜像, 并推送到私有容器仓储里.
1, 首先建立一个 maven 工程, 里面添加自己的测试代码.
2, 在项目的根目录下创建. drone.YAML 文件, 这是配置 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 配置私有仓储, 然后配置上正确的账户信息即可.
来源: http://www.bubuko.com/infodetail-3213289.html