Todo
Todo | Done |
---|---|
hugo の先日の log が出てない件の確認 | o |
Github Actions を使って hugo build + push を行う | o |
コーディングする |
Log
hugo の先日の log が出てない件の確認
テンプレートの draft が何故か true のまま残ってた。ただのログなので default を false に変更。
と思ったけど draft の default が false っぽいので削除すれば良さそう。
Github Actions を使って hugo build + push を行う
今手元で build して push してるけどめんどくさいので、Github Actions を使って build した後 github に push したことがないので、やってみる。
まずは 公式ドキュメント を見ながらビルドまで作ってみる。
Job と Step
Job とその下に Step がある。
こういうの大体どういう区切りで使うか迷うので、まとめておく。
- Container Image が Job 単位でしか設定できなさそう
- Job は並列実行(逐次にする場合は needs を指定する)。Steps は逐次実行。
Step.uses
ジョブでステップの一部として実行されるアクションを選択します。 アクションとは、再利用可能なコードの単位です。 ワークフロー、パブリックリポジトリ、または公開されている Docker コンテナイメージと同じリポジトリで定義されているアクションを使用できます。
再利用可能な actions 一覧は ここ 。
action.yml を見れば作り方もわかりそう?
Strategy
Job のビルドをマトリクスでやるときに使うっぽい。複数 OS バージョンとか。
- OS バージョンをマトリクスする場合は
runs-on
でやる必要がある。 - それ以外は
${{matrics.変数名}}
みたいに使えば良い。 include
key を使うと、マトリクスの変数をセットにできるっぽい?- max-parallel で Job を並列化できる
良さそう。今回は使わないので必要になったときに。
Service
ワークフロー中のジョブのためのサービスコンテナをホストするために使われます。 サービスコンテナは、データベースや Redis のようなキャッシュサービスの作成に役立ちます。 ランナーは自動的に Docker ネットワークを作成し、サービスコンテナのライフサイクルを管理します。
ワークフロー中でキャッシュとか一時的に必要になったときの話かな。 使わなそうなので保留。必要そうになったときに調べる。
とか調べてたら・・・
既に actions を作ってくれてる方がいた 。すごいありがたい。
沿って作ってみる。内容は上のリンクのコピペなので割愛します。
master branch の docs 配下を GitHub Pages に設定してたので、これを gh-pages の / に変更して終わり。
(勉強になったけど結局最終的に導入して終わりになってしまった。)
コーディングする
Goland でできて VSCode でできないこと
もともと Goland を使っていたんだけど、ライセンスが切れるタイミングで VSCode い移ろうとしている。
一個困っているのが、
type Hogable interface {
Hoge()
}
func NewHogable() Hogable {
return &hoge{}
}
type hoge struct {}
みたいなコードを書いたときに、&hoge{}
に赤線が引かれるけど、ここから implement method みたいなことができない。
Goland のときは、struct の下に
func (*hoge) Hoge() {
panic("not implemented")
}
みたいのを生やしてくれた。なんかうまくやれば作れるのかしら。
LSP の方も見てたけどだいぶ大変そう。
- https://microsoft.github.io/language-server-protocol/specification
- https://qiita.com/atsushieno/items/ce31df9bd88e98eec5c4
一旦このへんで引き返す。
と思ったけど引き返せなくて調べてたら Go: Generate Interface Stubs
があるとのこと。
VSCode で設定してない GOROOT が使われている件
Go: Generate Interface Stubs
の存在を知ったので実行してみるが、エラー。
そもそも 1.12.5
なんて今は使ってないのになんでだ。
設定がまずかったのではなく $ go get -u github.com/josharian/impl
が足りてなかったらしい。
もしかしたら、 1.12.5 時代に入れた impl
を呼び出しに行っていたのかも。go
のバージョンが変わるたびに入れる必要ありそう?
一応生成できるようにはなった。 Code Action あたりでできると良いな
protobuf のコンパイルで使うパッケージを最新化
久しぶりに最新化してたら以下のエラーにぶつかった。
$ GO111MODULE="off" go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
package google.golang.org/genproto/googleapis/api/annotations: google.golang.org/genproto is a custom import path for https://github.com/googleapis/go-genproto, but /Users/sat8bit/Works/src/google.golang.org/genproto is checked out from https://github.com/google/go-genproto
何事かと思ったけど、結局 google.golang.org/genproto
のソースが https://github.com/google/go-genproto
から https://github.com/googleapis/go-genproto
に変わってるだけの話だった。
もともとあった /Users/sat8bit/Works/src/google.golang.org/genproto
を削除して解決。
次にこんなエラー。
package github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger: cannot find package "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger" in any of:
grpc-gateway から swagger の json を吐き出してたんだけど、それ用のパッケージがなくなってた。
確認に行ったら、protoc-gen-swagger
から protoc-gen-openapiv2
に変わったみたい。
swagger で使う json 自体は、openapiv2 フォーマットであって、swagger 専用フォーマットじゃないらしい。
その結果こう。
github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options/annotations.proto: File not found.
sed
で一括書き換えを実施。
$ find proto -type f | xargs sed -i '.bk' 's/protoc_gen_swagger/protoc_gen_openapiv2/g'
$ find proto -type f | xargs sed -i '.bk' 's/protoc-gen-swagger/protoc-gen-openapiv2/g'
$ find proto -name "*.bk" | xargs rm
その他作業中に発生したこと
zsh の Ctrl + A について
bash から zsh に乗り換え中なんだけど、Ctrl + A で先頭にいかなくてイライラしてた。
emacs 風バインドだったらしい。
上の記事にある通り、以下を追加して解決。
bindkey -e
sed の -i オプションについて
ネットでさっと調べて -i オプションを付けた結果、こんなエラーが。
extra characters at the end of p command
ちゃんと調べればよかったんだけど、xargs
と組み合わせたりしてたせいで変なとこから調べてしまった。
Mac 版の sed では、上書きオプションの -i
を使うときは、バックアップファイル用の拡張子が必須だった。
sed -i '.backup'
Next
- コーディング少しやったけど protoc のバージョン変えた影響で壊れてる
- pb の init func がないエラーが出てるので明日確認が必要
- スコアを吐き出す計算式考える
- URL を paste したら
[ここ](URL)
みたいに貼り付けてくれる方法を探したい - アーキテクチャもう少し考える