Fusic Tech Blog

Fusicエンジニアによる技術ブログ

GoのOSSをクロスコンパイルして公開する
2024/03/29

GoのOSSをクロスコンパイルして公開する

本記事は、Fusic Advent Calendar 2018の22日目の記事及び
Go2 Advent Calendar 2018 22日目の記事のです

以前Homebrew tap でコマンドを公開するという記事を書いたのですが
その前段階にふれなかったのでそちらをご紹介をしようと思います

作っているOSSはS3をCLIで扱いやすくしたものです

CircleCIによるテスト

デグレードが発生しないように必ずテストを通すようにしています

Goの場合はご存知の通り *_test.goという名前のファイルにしておけば
テスト用のファイルとして認識されます

golintも合わせて行っています。

やってることの詳細は以下を参照してください

S3ryの.circleci/config.yml

https://github.com/seike460/s3ry/blob/master/.circleci/config.yml

Release用のタグを作る

Githubのページに移動して新しいReleaseを作ります

内容を入力して Publish release するとソースコードが圧縮されて配置されますが、
各プラットフォーム様にコンパイルされたバイナリは配置されません。

そこでクロスコンパイルする方法を考えます

goxc

私はクロスコンパイルに goxcを利用しています

コマンド実行するだけで、クロスコンパイルを並列で処理してくれるので重宝しています

$ go get github.com/laher/goxc $ cd /path/to/yourApp $ goxc

するとdist/snapshot/配下にクロスコンパイルしたファイルを配置してくれます

このファイルをアップロードすればいいのですが、手軽にアップロードするためにもうひと工夫しております

ghr

Githubへのアップロードを行ってくれるghrを利用しています

$ ghr 【リリースタグ】 【ファイルが配置されているパス】

0.1.2dist/snapshot/をアップロードする場合は

$ ghr 0.1.2 dist/snapshot/

となります。

brewにてインストール出来るようにする

Homebrew tap でコマンドを公開するという記事を書いてますのでそちらをご参照ください

OSSを作成してリリースするための作業を単純化し、OSSをどんどん公開出来ればと考えております。

明日は@Jun-Changさんです。

どんな記事が上がってくるか楽しみですね!

shiro seike / せいけ しろう / 清家 史郎

shiro seike / せいけ しろう / 清家 史郎

Company:Fusic CO., LTD. Slides:slide.seike460.com blog:blog.seike460.com Program Language:PHP , Go Interest:Full Serverless Architecture