drone学习笔记-集成测试mongodb

本以为很简单的一件事情搞了一天多的时间,郁闷啊。
目标:通过编写.drone.yml配置持续集成。最先测试的配置文件为:
.drone.yml

workspace:
  base: /go
  path: src/test/demo

pipeline:
  build:
    image: golang:latest
    commands:
      - go get
      - go build
      - go test

代码:

package main

import (
    "fmt"
)

func main() {
    fmt.Println("hello world!")
}

测试一切正常,如果就这么简单就不用往下写了。最终目标是实际生产中需要的带数据库的集成。然后就悲剧了:(
配置文件如下:
.drone.yml

workspace:
  base: /go
  path: src/test/demo

pipeline:
  build:
    image: golang:latest
    commands:
      - go get
      - go build
      - go test
services:
  database:
    image: mongo

main.go

package main

import (
    "fmt"
    "gopkg.in/mgo.v2"
    "gopkg.in/mgo.v2/bson"
)

type Person struct {
    Name  string
    Phone string
}

func main() {
    r, _ := conn_mgo()
    fmt.Println(r.Phone)
}

func conn_mgo() (*Person, error) {
    session, err := mgo.Dial("localhost:27017")
    if err != nil {
        panic(err)
    }
    defer session.Close()

    // Optional. Switch the session to a monotonic behavior.
    session.SetMode(mgo.Monotonic, true)

    c := session.DB("test").C("people")
    err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},
        &Person{"Cla", "+55 53 8402 8510"})
    if err != nil {
        return nil, err
    }

    result := Person{}
    err = c.Find(bson.M{"name": "Ale"}).One(&result)
    if err != nil {
        return nil, err
    }

    // fmt.Println("Phone:", result.Phone)
    return &result, nil
}

main_test.go

package main

import (
    "testing"
)

func Test_connmgo(t *testing.T) {
    result, err := conn_mgo()

    if err != nil {
        t.Error(err)
    }

    t.Log(result.Phone)
}

编译失败。考虑几种可能

  • 文档中描述的mongodb镜像未启动所以增加了 sleep选项
workspace:
  base: /go
  path: src/sunsl/demo
pipeline:
  build:
    image: golang:latest
    commands:
      - cat /etc/hosts
      - sleep 10 #休眠
      - go build
      - go test
services:
  database:
    image: mongo:latest
    commands: 
      - cat /etc/hosts

---失败!!

  • 数据库连接错误
workspace:
  base: /go
  path: src/sunsl/demo

pipeline:
  build:
    image: golang:latest
    commands:
      - cat /etc/hosts
      - sleep 10
      - go build
      - go test
services:
  database:
    image: mongo:
    commands: 
      - cat /etc/hosts


意外发现在dababase下面增加name可以改变输出名称,呵呵,后面再说
.drone.yml

workspace:
  base: /go
  path: src/sunsl/demo

pipeline:
  build:
    image: golang:latest
    commands:
      - cat /etc/hosts
      - sleep 10
      - go build
      - go test
services:
  database:
    name: mongo #改变名称?
    image: mongo
    commands: 
      - cat /etc/hosts

--失败!看到输出信息中database是exit code 0 (服务直接退出了?database与build一样的IP,神马情况?)
好吧,继续阅读官方文档,在仔细阅读后发现如下说明:

Services are accessed using custom hostnames. In the above example the mysql service is assigned the hostname database and is available at database:3306.

原来如(比)啊,一夜的测试还不如仔细阅读文档,为了简单去掉build节省时间:
.drone.yml

workspace:
  base: /go
  path: src/sunsl/demo
pipeline:
  build:
    image: golang:latest
    commands:
      - go test
services:
  database:
    image: mongo:latest

service正常退出的原因是因为加了command输出信息
mgo连接字符串应该为

mgo.Dial("database:27017")

上面说的修改名称修改的mongo实际上修改的是服务名称,如果改为如下设置:

workspace:
  base: /go
  path: src/sunsl/demo

pipeline:
  build:
    image: golang:latest
    commands:
      - cat /etc/hosts
      - go test
services:
  db: #服务名称修改
    image: mongo:latest

这时连接字符串则需要修改为:

mgo.Dial("db:27017")

总算成功了,来张成功的图庆祝一下,然后睡觉!!!


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,773评论 6 342
  • 个人自行阅读时候,翻译的文档。因为比较渣,如果有更合理或者错误的地方烦劳告知,我会做修改。Oracle Data ...
    窝窝的小黑屋阅读 1,214评论 0 3
  • 一、源题QUESTION 36Your database is open and the LISTENER lis...
    猫猫_tomluo阅读 1,218评论 0 2
  • 今早推开窗户,惯例性的扫了一眼我的多肉植物群,直接火上头,竟然又被人偷了!住在职工家属院一楼,竟然种的花草都不保...
    花花的樱花阅读 266评论 0 0