Closed suzuki-shunsuke closed 3 years ago
自分がこれまでシェルスクリプトで実装してきた CI/CD のパイプライン(ワークフロー)を再利用可能な形で OSS として公開したいと思い、 https://github.com/mumoshu/variant を試しました。 シェルスクリプトをそのまま GitHub なり Gist なりで公開してダウンロードできるようにするでもありといえばありですが、 ツールとしてパラメタライズが微妙なのとインストールしづらいのがあります。 普段 Go でツールを開発している身としてはバイナリを GitHub Releases におきたいのと、 YAML で設定ファイルを書きたいと思います。 でも Go で書き直すのもめんどいなぁと思い、そういえば variant でシェルスクリプトをバイナリに出来るんじゃないかと思って試してみました。
ちょっと試した結果、ちょっと微妙かなぁというか、これなら Go で書いたほうが良いかなと言う気がしてきました。 variant が悪いわけではないのですが。
variant には variant と variant2 がありますが、両方の README を眺めた結果、 variant を使いました。 自分としては variant に依存しないツールとして公開したいと思っていたので、 go バイナリを生成する方法を試しました。
Go の中に直接 variant の設定(YAML) を書くのは辛いので外部ファイルを https://github.com/rakyll/statik で読み込むようにしました。
config/tfci.yaml main.go
$ statik -src config
package main import ( "fmt" "io/ioutil" "log" "github.com/mumoshu/variant/cmd" "github.com/rakyll/statik/fs" _ "github.com/suzuki-shunsuke/tfci/statik" ) func main() { if err := core(); err != nil { log.Fatal(err) } } func core() error { statikFS, err := fs.New() if err != nil { return fmt.Errorf("create a statikFS: %w", err) } // Access individual files by their paths. r, err := statikFS.Open("/tfci.yaml") if err != nil { return fmt.Errorf("open a file from statikFS: %w", err) } defer r.Close() content, err := ioutil.ReadAll(r) if err != nil { return fmt.Errorf("read a file from statikFS: %w", err) } cmd.YAML(string(content)) return nil }
自分がこれまでシェルスクリプトで実装してきた CI/CD のパイプライン(ワークフロー)を再利用可能な形で OSS として公開したいと思い、 https://github.com/mumoshu/variant を試しました。 シェルスクリプトをそのまま GitHub なり Gist なりで公開してダウンロードできるようにするでもありといえばありですが、 ツールとしてパラメタライズが微妙なのとインストールしづらいのがあります。 普段 Go でツールを開発している身としてはバイナリを GitHub Releases におきたいのと、 YAML で設定ファイルを書きたいと思います。 でも Go で書き直すのもめんどいなぁと思い、そういえば variant でシェルスクリプトをバイナリに出来るんじゃないかと思って試してみました。
ちょっと試した結果、ちょっと微妙かなぁというか、これなら Go で書いたほうが良いかなと言う気がしてきました。 variant が悪いわけではないのですが。
variant には variant と variant2 がありますが、両方の README を眺めた結果、 variant を使いました。 自分としては variant に依存しないツールとして公開したいと思っていたので、 go バイナリを生成する方法を試しました。
Go の中に直接 variant の設定(YAML) を書くのは辛いので外部ファイルを https://github.com/rakyll/statik で読み込むようにしました。