使用 Bitbucket Pipelines 持续交付托管项目
简介
Bitbucket Pipelines 是Atlassian公司为Bitbucket Cloud产品添加的一个新功能, 它为托管在Bitbucket上的项目提供了一个良好的持续集成/交付的服务。
目录
简介
前提
例子
Demo项目介绍
配置
工作流程
Overview
参考
前提
申请 Bitbucket 账号
Java 8
Gradle 2.6
Git
例子
Demo
准备一个小项目以便于更好的展示,用Vert.x创建一个简单的Restful web service, 另外再添加一个integration test,这里用的是rest-assured library,在我其它多篇文章都有介绍这个第三方库,专业做Restful API test, 大家可以参考。
项目结构如下图

##转载注明出处:http://www.cnblogs.com/wade-xu/p/6480319.html
App.java
package com.wadeshop.tutorial; import java.time.LocalDateTime; import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer; public class App {
private HttpServer listen; public static void main(String[] args) {
new App().run(); } public void run() {
listen = Vertx.vertx().createHttpServer()
.requestHandler(req -> req.response().putHeader("content-type", "application/json").end("{\"message\":\"" + LocalDateTime.now() + "\"}")).listen(8080, handler -> {
if (handler.succeeded()) {
System.out.println("server is running: http://localhost:8080/");
} else {
System.err.println("server startup failed trying to listen on port 8080");
}
});
} public void shutdown() {
if (listen != null)
listen.close();
} }
AppIntegrationTest.java
package integration; import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.notNullValue; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.wadeshop.tutorial.App; import io.restassured.http.ContentType; public class AppIntegrationTest {
App app = new App(); @Before
public void setup() {
app.run();
} @After
public void teardown() {
app.shutdown();
} @Test
public void shouldReturnValidDate() throws Exception {
given().contentType(ContentType.JSON).when().get("http://localhost:8080/").then().body("message", notNullValue());
}
}
此外,项目使用Gradle 作为Build 工具

[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks:
[sts] :cleanEclipse
[sts] :eclipse
[sts] -----------------------------------------------------
:cleanEclipseClasspath
:cleanEclipseJdt
:cleanEclipseProject
:cleanEclipse
:eclipseClasspath
:eclipseJdt
:eclipseProject
:eclipse BUILD SUCCESSFUL Total time: 1.345 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 1 sec
[sts] -----------------------------------------------------
配置
A. 在Bitbucket 建repository, put your project to bucket
Step 1: Switch to your repository's directory
cd /path/to/your/repoStep 2: Connect your existing repository to Bitbucket
git remote add origin https://xxx/xxx.git
B. 激活 Bitbucket Pipelines

接下来选择Java - Gradle 作为Template
配置yml 文件如下
bitbucket-pipelines.yml
# using gradle as build tool ..
image: qlik/gradle pipelines:
default:
- step:
script:
- gradle --version
- gradle test
注意 image: qlik/gradle 是一个安装了Java和Gradle的Docker镜像文件, 来自于DockerHub。
##转载注明出处:http://www.cnblogs.com/wade-xu/p/6480319.html
Bitbucket Pipelines 的工作流程:
每当项目里有commit 被push 的时候, Pipelines会做如下步骤:
- 创建一个安装并配置了Java和Gradle的环境
- Check out 项目
- 解决依赖
- 运行测试
Bitbucket Pipelines Overview
随便提交一个啥,然后看看结果, Successful了

点击看详细结果


##转载注明出处:http://www.cnblogs.com/wade-xu/p/6480319.html
接下来 故意把Test 断言改错 让case failed

Pipelines 也Failed了

详细Log


参考
- Bitbucket Pipelines (Beta) Documentation
- Pipelines Acitvation Tutorial
- Overview of current limitations of the Pipelines Feauture
- DockerHub: qlik/gradle – Docker image providing Java and Gradle
- Docker Website
使用 Bitbucket Pipelines 持续交付托管项目的更多相关文章
- 用Vagrant和Ansible搭建持续交付平台
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- 使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署
1. 引言 首先,Bitbucket提供支持Mercurial和Git版本控制系统的网络托管服务.简单来说,它类似于GitHub,不同之处在于它支持个人免费创建私有项目仓库.除此之外,Bitbucke ...
- 持续交付之软件包管理maven篇
背景 持续交付的我们常见的流程如下,其中有一个环节就是软件包管理 今天我们以maven仓库为示例,如下是Jenkins与CD生态: 持续交付的示例 5 Principles 五个原则 Deliver ...
- [持续交付实践] Jenkins 中国用户大会参会见闻
前言 上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧.Jenkins的创始人Kohsuke Kaw ...
- 【ZZ】谈谈持续集成,持续交付,持续部署之间的区别
谈谈持续集成,持续交付,持续部署之间的区别 http://blog.flow.ci/cicd_difference/ 谈谈持续集成,持续交付,持续部署之间的区别 2016年08月03日 标签:beta ...
- 浅谈<持续集成、持续交付、持续部署>(一)
谈谈持续集成,持续交付,持续部署之间的区别 经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集 ...
- 利用jenkins和docker实现持续交付
利用jenkins和docker实现持续交付 一.什么是持续交付 让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定.持续的保持在随时可以发布的状况.它的目标在于让软件的构建.测试与发布变得更 ...
- 利用Spinnaker创建持续交付流水线
在Pivotal Container Service (PKS)上部署软件的方法多种多样,本文重点介绍如何使用Spinnaker在PKS(或任何Kubernetes群集)上进行持续交付. Pivota ...
- Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别
经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> ...
随机推荐
- 使用django-compressor压缩静态文件
Reference:http://blog.csdn.net/permike/article/details/52355095 在网站开发阶段,对于静态资源文件比如JS,CSS等文件都是未经过压缩合并 ...
- iOS 之 文件缓存
对于信息量不是太大的数据,可以使用文件缓存来处理.文件缓存可以缓存字典和数组. 步骤一:创建路径 路径要一级一级往下创建,基本不用考虑创建失败的情况.但是如果创建失败了要怎么做呢?按道理应该提示出来. ...
- CSS控制之IE常见BUG及解决方案
常见bug 解决方案 盒模型bug 使用严格doctype声明 双倍margin bug _display:inline; 不认识a:link 不加:link 3像素margin bug 规范浮动与清 ...
- oracle存储过程中文乱码问题
设置环境变量,新建变量,设置变量名:NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK word哥,还是不行呀: 参考:http://idata.blog.5 ...
- No curses/termcap library found
CentOS6.5中编译Mysql时遇见如下错误 error: No curses/termcap library found checking for tgetent in -lncurses... ...
- Windows Server 2008 R2 允许远程桌面连接这台计算机是灰色解决办法
发现在给"远程协助"打钩时,是灰色的没法钩上,也就没办法开启.这是因为Windows Server 2008 R2的安全性已经被微软设计的很高,默认刚安装上Windows Serv ...
- Android中SharedPreferences介绍和使用方法
1.SharedPreferences简介 为了保存软件的设置参数,Android 平台为我们提供了一个SharedPreferences 类,它是一个轻量级的存储类,特别适合用于保存软件配置参数.使 ...
- JavaWeb学习篇之----HTTP协议详解
简介: HTTP是hypertexttransfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程. HTTP协 ...
- SQL Server @@ERROR 用法
@@error是系统函数,当没有发生错误时返回0,如果发生错误时@@error<>0,并返回错误号,每个SQL语句执行完,@@error值都会变. @@error只记录当前错误,如果存储过 ...
- margin三个值
http://www.cnblogs.com/wangkongming/p/3204734.html margin标记可以带一个.二个.三个.四个参数,各有不同的含义. margin: 20px;(上 ...