実践Go ツールの作成から配布まで
Upcoming SlideShare
Loading in...5
×
 

実践Go ツールの作成から配布まで

on

  • 82 views

Fukuoka.go#2の入門LTです

Fukuoka.go#2の入門LTです
http://connpass.com/event/7559/

Statistics

Views

Total Views
82
Views on SlideShare
80
Embed Views
2

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 2

https://twitter.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    実践Go ツールの作成から配布まで 実践Go ツールの作成から配布まで Presentation Transcript

    • ツールの作成から配布まで Fukuoka.go#2 @monochromegane 実践 Go!
    • MIYAKE Yusuke (@monochromegane)
    • GMO Pepabo, Inc.
    • pt The Platinum Searcher
    • 物販はじめました
    • ツールの作成から配布まで
    • ツールの作成から配布まで
    • つくってみる
    • ʕ◔ϖ◔ʔ < Go! $ go run xxx.go # コンパイル&実行(main関数を含むgoファイルを指定) $ go test ./... # すべてのパッケージのテストを実行 $ go build # コンパイル
    • github.com/user/ src/ cmd/go-ls/ main.go # mainパッケージ go-ls.go # 自作パッケージ • go get された場合の構成となる$GOPATH/リポジトリ/ユー ザ/srcの構成にあわせておくとimportでつまづかない • mainパッケージはCLIのエントリポイントとしてコマンドラ イン引数の解析と自作パッケージの呼び出しを行う • これにより、自作パッケージの機能が外部パッケージから利 用しやすくなる ʕ◔ϖ◔ʔ < Go!
    • ツールの作成から配布まで
    • Local
    • OR $ go build -o $PATH/xxx $ go install packge_name
    • bin/ go-ls # 実行コマンド (mainパッケージ) pkg/ darwin_amd64/ # アーキテクチャ github.com/user/ go-ls.a # パッケージオブジェクト (自作パッケージ) • go installはsrc配下からパッケージを探してコンパイルする ʕ◔ϖ◔ʔ < Go!
    • さみしさ…
    • みんなに 使ってもらおう Have a try !
    • go get
    • $ go get github.com/user/package_name • go get は src配下にリポジトリからソースを取得後、コンパ イルを行う
    • Go開発環境が ないひとにも 使ってもらおう
    • Homebrew 🍻
    • $ brew tap user/formula $ brew install formula • 独自formulaをつくって、tapで追加する • 依存関係に`go`を入れておけば、Goの開発環境も一緒に構築 してくれる
    • require 'formula' ! HOMEBREW_PT_VERSION='1.7.1' class Pt < Formula # Formulaクラスを継承 homepage 'https://github.com/monochromegane/the_platinum_searcher' url ‘https://github.com/monochromegane/the_platinum_searcher.git', :tag => "v#{HOMEBREW_PT_VERSION}" version HOMEBREW_PT_VERSION ! depends_on 'go' => :build # ビルド時のみGoをインストール depends_on 'hg' => :build # 外部パッケージがcode.google.comの場合Mercurialが必要 ! def install ENV['GOPATH'] = buildpath system 'go', 'get', ‘github.com/jessevdk/go-flags' mkdir_p buildpath/'src/github.com/monochromegane' ln_s buildpath, buildpath/'src/github.com/monochromegane/the_platinum_searcher' system 'go', 'build', '-o', 'pt', 'cmd/pt/main.go' bin.install 'pt' end end formula
    • MacOSX以外でも 使ってもらおう
    • Cross Compile
    • $ cd go/src $ GOOS=linux GOARCH=amd64 ./make.bash $ GOOS=linux GOARCH=amd64 go build • Homebrewの場合、/usr/local/Cellar/go/1.3/libexec Basic
    • 便利なパッケージ あり
    • $ gox $ gox Number of parallel builds: 4 ! --> darwin/386: go-ls --> darwin/amd64: go-ls --> linux/386: go-ls • 並行コンパイル • オプションで対象OS/ARCH指定可能 -osarch=“linux/amd64" mitchellh/gox
    • $ goxc $ goxc ... ! [goxc:archive-tar-gz] 2014/08/10 21:35:38 Artifact(s) archived to /Users/miyakey/bin/go-ls- xc/snapshot/go-ls_linux_amd64.tar.gz • コンパイル結果を圧縮できるので、同じ実行ファイル名にできる • オプションで対象OS/ARCH指定可能 -bc="linux,!arm darwin" laher/goxc
    • ダウンロードして 使ってもらおう
    • Drone.io
    • http://icons8.com/ push configure hook Docker Images build & test Docker Container deploydownload heroku, Dotcloud, GAE, S3, SSH C, C++, Dart, Go, Haskell, Groovy, Java, Node.js, PHP, Python, Ruby, Scala
    • • Drone.ioではビルド成果物をダウンロードしてもら うため、Artifactsという機能がある • Artifactsに指定したディレクトリにビルド成果物を コピーするだけ • 世代管理は行えない Artifacts
    • Wercker
    • http://icons8.com/ push configure hook Boxes build & test Box deploy download heroku, OpenShift, Amazon, RackSpace, DigitalOcean Node.js, Ruby, Python, PHP, Go, Java/Android GitHub releases
    • • Werckerには、GitHubのリリース作成とリリースへ の資産アップロードを行うStepがあるのでこれを利 用する • GitHubのTokenなどはWercker側にVariableとして 定義する GitHub releases
    • おまけ
    • require 'formula' ! HOMEBREW_PT_VERSION='1.7.1' class Pt < Formula homepage 'https://github.com/monochromegane/the_platinum_searcher' url "https://github.com/monochromegane/the_platinum_searcher/ releases/download/v#{HOMEBREW_PT_VERSION}/pt_darwin_amd64.zip" sha1 '00844c339ca864bdae77fe4481a103456760181e' ! version HOMEBREW_PT_VERSION def install bin.install 'pt' end end formula • URL指定でzipファイルを指定するとコンパイル済みのファイ ルからインストールできてインストール時間を短縮できる
    • 宣伝 ペパボではエンジニアを募集しています。 共にサービスを生み出し育ててくれる新しい仲間 を待っています。 ! http://pepabo.com/recruit/career/engineer/
    • おわり