golang進階(一)——glide的使用手冊

吳鼕鼕發表於2017-10-09

+++
title=”golang進階(一)——glide的使用手冊”
date=”2017-10-10”
tags=[“golang”,”glide”,”docker”]
categories=[“資源管理”]
description=”golang也有包管理,類似maven,gradle,npm,bower之類的”
featured=true
image=”img/201710/fengjing1.jpeg”
+++

golang的包管理軟體有很多,我選擇了glide,由於深中docker之毒,所以方式也就用docker的方式來了,看不懂的先補docker的課

glide的Dockerfile

直接把glide做成映象,基礎映象是golang,把兩者打包成一個golang的執行環境

Dockerfile檔案如下

FROM golang:1.8-jessie

MAINTAINER lastsweetop "lastsweetop@163.com"

RUN mkdir /root/app/

WORKDIR /root/app/

RUN go get github.com/Masterminds/glide

RUN echo export GOPATH=/root/app >> /root/.bashrc

CMD tail -f ~/.bashrc

docker build一下,glide的映象就製作好了,只要一個人做好映象,團隊裡的其他人直接用就可以,多方便的docker啊

stack檔案

另外docker run的命令列也太長了,雖然只用一臺伺服器,一樣也有stack,把所有配置寫在stack的配置檔案裡

version: "3"
services:
  dev:
    image: www.lastsweetop.com:5000/godev
    deploy:
      replicas: 1
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    volumes:
      - $PWD:/root/app

這樣本地的工程就與glide映象產生的容器結合了

glide操作

正題開始

glide init

這樣會產生一個glide.yaml檔案,格式如下

package: .
import: []

如果程式碼中新加了一個第三方包

package cmd

import (
    "github.com/spf13/cobra"
)

var RootCmd = &cobra.Command{
    Use:   "hugo",
    Short: "Hugo is a very fast static site generator",
    Long: `A Fast and Flexible Static Site Generator built with
                love by spf13 and friends in Go.
                Complete documentation is available at http://hugo.spf13.com`,
    Run: func(cmd *cobra.Command, args []string) {
        // Do Stuff Here
    },
}

其實只需要

glide up

這樣就可以了,會自動安裝你所有新增的包,但是並不會出現在glide.yaml檔案中,不過沒關係,同事間的版本唯一性是由glide.lock控制的

hash: 3bac0e5b315ed9ae09f31bfae4f77c882ce25d42ccfa70f4dc9fe0cd0bef499f
updated: 2017-10-09T10:55:56.169042004Z
imports:
- name: github.com/inconshreveable/mousetrap
  version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75
- name: github.com/spf13/cobra
  version: 50204810fdb5010baae72e4f41b303689cbdcc9f
- name: github.com/spf13/pflag
  version: a9789e855c7696159b7db0db7f440b449edf2b31
testImports: []

除非需要指定包的特定版本,才需要修改glide.yaml檔案

目錄結構

這是一個大坑,其他資料都說放在工程的根目錄,其實是有歧義的,其實是放在GOPATH中的src檔案目錄下的任意一級

這是我的目錄結構

.
├── README.md
├── bin
│   └── main
├── pkg
│   └── linux_amd64
│       ├── lastsweetop.com
│       └── vendor
├── src
│   ├── glide.lock
│   ├── glide.yaml
│   ├── lastsweetop.com
│   │   ├── cmd
│   │   ├── main
│   │   ├── model
│   │   └── tools
│   └── vendor
│       └── github.com
└── stack-gonne.yml

相關文章