Travis使用教程-编写Golang+Docker的配置文件

在上篇中,我们看到了如何在Travis中使用Docker。 这篇中,我们来继续使用Travis构建Golang程序并且构建成docker镜像。

在编写.travis.yml配置文件之前,需要解决golang依赖包的问题。 我们在本地构建golang程序时,golang编译器会从本地GOPATH中搜索依赖包。但在travis中,每次都是新容器。里面不会存在应用所依赖的golang package。

如何解决这个问题呢?

解决方案有三个:

  1. 在.travis.yml中定义所有使用到的package。 简单粗暴,但每次引入新的package之后,都需要惦记修改.travis.yml文件。 能用,但不优雅。
  2. 使用golang package manager来管理package。 点击这里查看官方推荐的tools。 我使用比较顺手的是dep。工具虽好,但比较依赖网络。如果你本地的环境可以直通国际互联网,那么还是比较建议使用dep.
  3. 使用我提供的依赖自动管理服务。 点击这里查看详情

解决掉package的问题之后,我们来编写yml配置文件。

  • 定义golang version。
language: go

go:  
  - 1.8
  • 执行go build
before_install:  
- go test 
- go build -a

主要步骤就这两部。 剩下的步骤就交给travis来搞定了。 总体来看,travis比Jenkins要好用多了。 Jenkins配置繁琐,而且又重又大。 其实我们仅仅需要一个持续集成的工具而已,没必要引入那么多没用的插件。 希望Jenkins能削减一些重量。

下面是完整的golang + docker的配置文件:

sudo: required

services:  
  - docker

language: go

go:  
  - 1.8

before_install:  
- go build -a
- cd agent; go build -a


script:  
  - docker build -t vikings/howheel:server .
  - cd agent; docker build -t vikings/howheel:agent .
  - docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
  - docker push vikings/howheel:server
  - docker push vikings/howheel:agent