Goなプロジェクトで使うCircleCIのcircle.yml

2016/01/27

CircleCI Go Golang

も少し綺麗にしたい(´・ω・`)

  • checkout:cd $HOME && git clone …しているだろうと思って$HOMEを弄ってみたが撃沈
  • pwd:test:では使えないので撃沈

machine:
  timezone: Asia/Tokyo
  environment:
    GO15VENDOREXPERIMENT: 1
    VCS : "github.com"
    REPO_ROOT: "${HOME}/.go_workspace/src/${VCS}/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
dependencies:
  pre:
    - go get -u github.com/tools/godep
    - go get -u github.com/golang/lint/golint
checkout:
  post:
    - mkdir -p ${REPO_ROOT}
    - cp -rf ${HOME}/${CIRCLE_PROJECT_REPONAME} ${HOME}/.go_workspace/src/${VCS}/${CIRCLE_PROJECT_USERNAME}/
test:
  pre:
    - cd ${REPO_ROOT} && godep restore
    - cd ${REPO_ROOT} && for package in `go list ./...| grep -v vendor`; do golint ${package}; done
    - cd ${REPO_ROOT} && go vet ./...
  override:
    - cd ${REPO_ROOT} && godep go test -cover -bench -benchmem `go list ./... | grep -v /vendor/` -v

A Tour of Go終わった人がGo言語を学ぶために読むといいリポジトリ(暫定)

2016/01/22

Go Golang

Let's EncryptをGoで使う

2016/01/07

Go Golang

Let’s EncryptをGoで使う

Let’s EncryptのClientをcloneして証明書の発行を行います。今回はstandaloneかつport443でclientを起動して証明書を取得します。 yourdomainの部分は自分のドメインに置き換えてください。

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto certonly --standalone --standalone-supported-challenges tls-sni-01 -d yourdomain

証明書の発行が完了すると/etc/letsencrypt/archive/yourdomain配下に*.pemファイルが生成されます。 Goのnet/httpを使って書くと以下のようになります。

package main
import (
        "fmt"
        "log"
        "net/http"
)
func main() {
        http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
                w.Header().Add("Content-Type", "text/html; charset=UTF-8")
                fmt.Fprint(w, "
It works!")
        })
        err := http.ListenAndServeTLS(":80", "/etc/letsencrypt/archive/yourdomain/fullchain1.pem", "/etc/letsencrypt/archive/yourdomain/privkey1.pem", nil)
        if err != nil {
                log.Fatal(err)
        }
}

参考