使用 Drone 构建 Coding 项目

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

使用 Drone 构建 Coding 项目

 

Drone 是一个轻量级的持续集成工具。它具备许多现代持续集成工具的特性:轻巧(Docker 镜像不到 10M)、部署方便(docker-compose 一键部署)、通过 YAML 文件描述构建过程、内置支持主流的代码托管平台、使用 Docker 容器执行构建。 下面介绍如何使用 Drone 构建 Coding(平台版/企业版)项目,实现开发、测试、部署的自动化。(介绍中使用的是 Coding 定制的 Drone,因为 Coding 的小伙伴们总是希望每时每刻都能见到可爱的洋葱猴,这样打起码来特精神!^_^)

1、新建一个 OAuth 应用。『应用主页』填写自己部署的 Drone 所在主机的 URL,如:https://example.com;『回调地址』填写 Drone 的回调地址,一般为 Drone 主机加上/authorize,如:https://example.com/authorize。还可以给这个应用添加醒目的图标。最后点『创建应用』。 在这里输入图片描述

2、进入刚才创建的应用,接下来要用到上面的『Client ID』和『Client Secret』。 在这里输入图片描述

3、在要部署 Drone 的 Linux 主机里安装好 Docker 和 Docker-Compose,然后创建名为docker-compose.yml 的 Docker-Compose 配置文件,内容如下:

version: '2'services:drone-server:image: houseboy/drone:20170512.1restart: alwaysvolumes: - ./drone:/var/lib/drone/:rwenvironment:- DRONE_OPEN=true- DRONE_CODING=true- DRONE_CODING_CLIENT=<应用的 Client ID>- DRONE_CODING_SECRET=<应用的 Client Secret>- DRONE_CODING_URL=<Coding 主页>- DRONE_CODING_GIT_MACHINE=<Coding Git 主机>- DRONE_SECRET=<drone-server 和 drone-agent 的通信密钥>ports:- "80:8000"drone-agent:image: houseboy/drone:20170512.1command: agentrestart: alwaysdepends_on: [ drone-server ]volumes: - /var/run/docker.sock:/var/run/docker.sockenvironment:- DRONE_SERVER=ws://drone-server:8000/ws/broker- DRONE_SECRET=<drone-server 和 drone-agent 的通信密钥>

主要环境变量的说明:

  • DRONE_CODING 要为 true
  • DRONE_CODING_CLIENT 填写上一步得到的『Client ID』。
  • DRONE_CODING_SECRET 填写上一步得到的『Client Secret』。
  • DRONE_CODING_URL 为 Coding 主页。平台版填 https://coding.net;企业版填企业对应的https://*.coding.net 子域名的 URL。
  • DRONE_CODING_GIT_MACHINE 为 Coding Git 主机。平台版填 git.coding.net;企业版填 e.coding.net
  • DRONE_SECRET 为随机字符串,是用于 drone-server 和 drone-agent 之间的通信,只要两个都填写一样值即可。

docker-compose 配置中的其他内容请根据实际情况填写。

4、在创建 docker-compose.yml 的目录里执行 docker-compose up,若上一步的配置正确,就能看到 Drone 启动输出的日志: 在这里输入图片描述

5、用浏览器打开 Drone 所在主机的 URL 在这里输入图片描述

6、点击登录,跳转至 Coding 的登录页面。如果已经登录 Coding,则会看到『应用授权』页面,这时点击『授权』 在这里输入图片描述

7、若授权成功,即会跳转回 Drone 的首页,并在右上角看到已登录用户的 Coding 头像。 在这里输入图片描述

8、点击头像,选择『用户设置』,便可看到项目列表。 在这里输入图片描述在这里输入图片描述

9、点击对应项目右侧的开关即可开启和关闭该项目的 Drone 持续集成。 在这里输入图片描述

10、再次回到『仪表盘』即可以看到已开启了 Drone 持续集成的项目。 在这里输入图片描述

11、向已开启 Drone 持续集成的仓库推送代码,即可触发构建过程。 在这里输入图片描述在这里输入图片描述

上述介绍中用到集成了 Coding 的 Drone 版本源码发布在 https://github.com/Coding/drone,同时已经向源仓库 https://github.com/drone/drone 提交了 PR,代码正在审核中。同时欢迎有兴趣的码士提交 PR 助力完善 Drone 对 Coding 的集成支持。

有关 Drone 的更多使用帮助请查看官方文档:http://docs.drone.io/

转载于:https://my.oschina.net/u/3803405/blog/1800025

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++类的构造函数 后单冒号加基类 例如:CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) 比如两个类 class A{A(int *x);...}class B : public A{B(int *x);...}然后B在构造的时候 B::B(int *x) : A(x){...}B是A的子类&#xff0c;B类对象在构造过程中必须先构造出一个A类对象&#xff0c;而A类的构造函数需要一…

C#InI文件读写剖析

C#InI文件读写剖析 1.读取ini文件 StringBuilder stringBuilder new StringBuilder();GetPrivateProfileString(section, key, "err", stringBuilder, 1024, filePath);para_value stringBuilder.ToString();GetPrivateProfileString( LPCTSTR lpAppName, //配置文…

bzoj1385: [Baltic2000]Division expression

欧几里得算法。可以发现规律&#xff0c;a[2]作为分母&#xff0c;其他作为分子&#xff0c;必定是最好的选择。判断是否为整数即可。 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define rep(…

成员变量 局部变量 类变量

成员变量和局部变量的区别 成员变量&#xff1a; 1、成员变量定义在类中&#xff0c;在整个类中都可以被访问。 2、成员变量随着对象的建立而建立&#xff0c;随着对象的消失而消失&#xff0c;存在于对象所在的堆内存中。 3、成员变量有默认初始化值。 局部变量&#xff1a; 1…

从DevOps到Cloud Native,应用上云姿势全解锁

本文由网易云 发布作者&#xff1a;林帆序文伴随着IaaS、PaaS等云端基础设施技术的成熟&#xff0c;“应用上云”成为许多企业软件部门的心头大事。通过把传统软件系统搬到云上&#xff0c;一方面可以让业务方获得更多的资源灵活性&#xff0c;另一方面也可以缓解运营方的成本压…

foreach

foreach 遍历数组内每个元素&#xff0c;迭代一次执行一次循环语句。 相当于增前后的for循环

深入理解C++对象模型-对象的内存布局,vptr,vtable

vtpr的位置: 为了支持多态,C引入了vtpr和vtable这两个概念.对于每个有虚函数的类,C都会为其生成一个vtable,并在类中添加一个隐含的数据成员vptr. 对于vptr在对象中的位置,跟类的数据成员的布局一样,C标准里面并没有做出任何的规定.但是对于特定的编译器,我们还是可以通…

Visual Studio Code 常用插件整理

常用插件说明&#xff1a; 一、HTML Snippets 超级使用且初级的H5代码片段以及提示 二、HTML CSS Support 让HTML标签上写class智能提示当前项目所支持的样式 三、Debugger for Chrome 让vscode映射chrome的debug功能&#xff0c;静态页面都可以用vscode来打断点调试、配饰稍…

sublime 正则搜索日语字符

sublime 正则搜索日语字符 [\x{3041}-\x{3096}\x{30A0}-\x{30FF}\x{3400}-\x{4DB5}\x{4E00}-\x{9FCB}\x{F900}-\x{FA6A}\x{2E80}-\x{2FD5}\x{FF5F}-\x{FF9F}\x{3000}-\x{303F}\x{31F0}-\x{31FF}\x{3220}-\x{3243}\x{3280}-\x{337F}\x{FF01}-\x{FF5E}] 参考: http://www.localiz…

函数域中申请堆空间出函数后不会自动释放

#include<iostream> using std::cout; using std::endl; char *scat(char *s1,char *s2) { char *snew char[strlen(s1)strlen(s2)1]; strcpy(s,s1); strcat(s,s2); return s;//返回刚申请的堆空间的首址&#xff0c;出了函数后变量s就不复存在了&#xff0c;但申请的…

/home文件夹重新划分独立分区

1. 备份home文件夹&#xff0c;数据丢失的时候可以使用cp -av /home/* /data/2. 磁盘分区2.1 虚拟机中添加磁盘并让系统识别&#xff0c;使用# echo - - - >> /sys/class/scsi_host/host0/scan# echo - - - >> /sys/class/scsi_host/host1/scan# echo - - - >…

使用halcon将一个圆上的点拟合成圆形并且求出圆心

我们在自动化贴装机标定过程中&#xff0c;需要计算吸头的旋转中心位置。我们一般使用的方法是使用模板匹配&#xff0c;做一个模板&#xff0c;吸头旋转一个角度寻找模板一次&#xff0c;通过多次旋转求取吸头的旋转中心。 使用halcon实现 public bool FitCircle(double[] X…

This 指针

如果你期望衍生类别重新定义一个成员函数&#xff0c;那么你应该在基础类别中把此函数设为 virtual。 以单一指令唤起不同函数&#xff0c;这种性质称为Polymorphism&#xff0c;意思是"the ability toassume many forms"&#xff0c;也就是多态。 虚拟函…

史上最全亚历山大大帝名言

&#xff08;1&#xff09;把财富分给他人&#xff0c;把希望留给自己&#xff0c;他将带给我无穷的财富。——亚历山大大帝 &#xff08;2&#xff09;山不走到我这里来&#xff0c;我就走到他那里去。——亚历山大大帝 &#xff08;3&#xff09;能够战胜恐惧就能战胜死亡。—…

jdbcmysql

做java开发难免会用到数据库,操作数据库也是java开发的核心技术。那我们现在就来谈谈javajdbc来操作mysql数据库吧 第一步&#xff1a;我们需要把mysql的驱动引进来这里引驱动就是把mysql-connector-java-5.1.37-bin.jar加到项目中来&#xff0c;下面附jar包 第二步&#xff1a…

char **p, char a[16][8]; 问:p=a 是否会导致程序在以后出现问题?为什么?

int (*v)[10]; 在 Visual C 里面不能与 int **v 等同起来。 举个例子&#xff1a; int **p; int (*v)[10]; int a[10][10]; 如果写 v a 是可以的。 如果写 p a 将会引起一个类型不匹配的编译错误。 二级指针&#xff08;int **p&#xff09;需要自己指向一个一级指针&#x…

draw_circle_mod预生成交互式圆形

目录draw_circle_mod&#xff08;算子&#xff09;描述参数draw_circle_mod&#xff08;算子&#xff09; draw_circle_mod - 圆的交互式绘图。 draw_circle_mod&#xff08;:: WindowHandle&#xff0c;RowIn&#xff0c;ColumnIn&#xff0c;RadiusIn&#xff1a;Row&#…

川崎机器人c#通讯(转)

由于本人在工业自动化行业做机器视觉的工作&#xff0c;所以除了图像处理方面要掌握外&#xff0c;还需要与工业机器人进行通信。最近学习了计算机与川崎机器人的TCP/IP通信&#xff0c;于是在这里记录一下。 除了直接与机器人通信外&#xff0c;有一种方式是通过PLC间接通信&a…

模板类 Template Classes 以及模板类编译时的处理

&#xfeff;&#xfeff;我们可以建立template classes&#xff0c;使它们能够神奇地操作任何类型的资料。下面这个例子是让CThree 类别储存三个成员变量&#xff0c;成员函数Min 传回其中的最小值&#xff0c;成员函数Max 则传回其中的最大值。我们把它设计为template class&…

行转列及列转行查询

开发过程中常遇到行转列或是列转行的问题&#xff0c;即需要将数据库中一张表信息进行行转列操作&#xff0c;再将每列&#xff08;即每个字段&#xff09;作为与其他表进行联表查询的字段进行显示。 一、行转列&#xff1a;将原来同一列下多行的不同内容作为多个字段&#xff…