简介

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

  1. Step 1: Switch to your repository's directory

    cd /path/to/your/repo
  2. Step 2: Connect your existing repository to Bitbucket

    git remote add origin https://xxx/xxx.git
          gitpush -u origin master

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 持续交付托管项目的更多相关文章

  1. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

  2. 使用Bitbucket Pipeline进行.Net Core项目的自动构建、测试和部署

    1. 引言 首先,Bitbucket提供支持Mercurial和Git版本控制系统的网络托管服务.简单来说,它类似于GitHub,不同之处在于它支持个人免费创建私有项目仓库.除此之外,Bitbucke ...

  3. 持续交付之软件包管理maven篇

    背景 持续交付的我们常见的流程如下,其中有一个环节就是软件包管理 今天我们以maven仓库为示例,如下是Jenkins与CD生态: 持续交付的示例 5 Principles 五个原则 Deliver ...

  4. [持续交付实践] Jenkins 中国用户大会参会见闻

    前言 上周日在上海召开了Jenkins中国用户大会(Jenkins User Confluence China),这应该是Jenkins在中国第一次举办吧.Jenkins的创始人Kohsuke Kaw ...

  5. 【ZZ】谈谈持续集成,持续交付,持续部署之间的区别

    谈谈持续集成,持续交付,持续部署之间的区别 http://blog.flow.ci/cicd_difference/ 谈谈持续集成,持续交付,持续部署之间的区别 2016年08月03日 标签:beta ...

  6. 浅谈<持续集成、持续交付、持续部署>(一)

    谈谈持续集成,持续交付,持续部署之间的区别 经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢?   假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集 ...

  7. 利用jenkins和docker实现持续交付

    利用jenkins和docker实现持续交付 一.什么是持续交付 让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定.持续的保持在随时可以发布的状况.它的目标在于让软件的构建.测试与发布变得更 ...

  8. 利用Spinnaker创建持续交付流水线

    在Pivotal Container Service (PKS)上部署软件的方法多种多样,本文重点介绍如何使用Spinnaker在PKS(或任何Kubernetes群集)上进行持续交付. Pivota ...

  9. Jenkins学习总结(4)——持续集成,持续交付,持续部署之间的区别

    经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> ...

随机推荐

  1. keystore 介绍

    Keytool 是一个有效的安全钥匙和证书的管理工具. Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存 ...

  2. eclipse中集成svn maven开发手册---导入项目

    一,导入项目 二,创建提分支 三,maven编译打包 四,合并主干 一,导入项目 右键,import,选择从svn检出项目 点击next,如图 如果是第一次导入,选择创建新的资源库,点击next,输入 ...

  3. JS 响应式编程

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script ...

  4. 利用DIV+CSS制作网页过程中常用的基本概念及标签使用细节

    CSS主要用于对HTML文件功能的补充及扩展,其作用就是对HTML文件中各种排版进行设置,达到对网页中字体.颜色.背景.图片等的控制,使网页能够完全依照设计者的想法来显示. CSS可以控制网页的显示, ...

  5. 在web前端使用SVG

    前言: 花了些时间了解了一下svg,然而仍然不怎么了解... 第一步:直接在html代码中使用svg. 首先了解几个标签: <svg version="1.1" xmlns= ...

  6. C#综合揭秘——细说进程、应用程序域与上下文之间的关系

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...

  7. Nancy简单实战之NancyMusicStore(一):准备工作和搭建项目

    开发环境 OS : Windows 10 10.0.14393 IDE : Visual Studio 2015 Community With Update 3 Database : PostgreS ...

  8. python中关于局部变量与全局变量的认识

    1.函数内部的变量名如果第一次出现,且出现在=前面,即被视为定义一个局部变量,不管全局域中有没有用到该变量名,函数中使用的将是局部变量,例如: num = 100 def func(): num = ...

  9. Neutron Router 工作原理 - 每天5分钟玩转 OpenStack(142)

    上一节我们创建了 router 连通了 vlan100 和 vlan101, 今天分析router是如何工作的.首先查看控制节点的网络结构发生了什么变化: br-int 上多了两个 port: 1. ...

  10. js事件对象

    哎,事件也有对象呦.程序员一直在讲对象对象,那么,过年是不是该带个对象回家呢?好了,既然事件有对象,承认这个事实吧!哈哈,那么,其就有属性,接下来,就放个 例子来讲讲,顺便把常用的属性也添加进去.. ...