bouzuya.hatenablog.com

ぼうずやのにっき

cargo-chef をためした

LukeMathWalker/cargo-chef を試してみた。まだ cargo workspace での動作を試していないけど現状は意図どおりにキャッシュできていそう。以下はぼくの理解。

cargo chef prepare で依存関係の情報 (recipe) を JSON に保存する。

cargo chef cook で (recipe) JSON から最小限のプロジェクトをつくりビルドして依存関係をコンパイル済みにする。

あとは COPY . . して target をコピーしてビルドすればキャッシュが良い感じに効く。

FROM rust:1.77-alpine AS chef
RUN apk update && apk add --no-cache musl-dev
WORKDIR /app
RUN cargo install cargo-chef --locked

FROM chef AS planner
COPY . .
RUN cargo chef prepare --recipe-path recipe.json

FROM chef AS cacher
COPY --from=planner /app/recipe.json recipe.json
RUN cargo chef cook --recipe-path recipe.json --release --target=x86_64-unknown-linux-musl

FROM chef AS builder
COPY . .
COPY --from=cacher /app/target target
RUN cargo build --release --target=x86_64-unknown-linux-musl

FROM scratch
LABEL org.opencontainers.image.source https://github.com/bouzuya/genuuid
ENV PORT=8080
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/genuuid /usr/local/bin/genuuid
ENTRYPOINT ["genuuid"]

chef は初回のみ。 planner はプロジェクトのうち recipe.json に影響する依存関係などに変更があるときだけ。 cacherrecipe.json に変更があるときだけ。 builder はプロジェクトに変更があると毎回だが、キャッシュが効いていれば時間はほとんどかからない。……はず。

cargo workspace でもうまく動くなら良さそう。 workspace だと特に面倒くさかったので。


今日のコミット。

疲れている

疲れている。大量の差分が。


下の子の言い間違いはこいのぼりの歌の歌詞の「こもどたち」だった。かわいいと言っていたのはカーテンの開閉が怖くて泣く、だった。


今日のコミット。

2024-W17 ふりかえり

2024-W17 をふりかえる。

2024-W17 の目標 とその記事

目標。

記事。

つくったもの。

育児。

  • 上の子はテラリアばかりプレイしている
  • 下の子は SwitchBot カーテンによって自動で閉まるのを見て泣いていた

2024-W17 はどうだったか。

体調が悪い。気温変化のせいかな。あと仕事の割合が大きい。個人のものがはかどっていない。

Google Docs API の自動化の線が消えて萎えている。

2024-W18 の目標

  • google-docs-api の型に区切りをつける

散髪とか思い出せなくてくやしいなど

dependabot 対応の残り。バタバタしていて残っていた。

わりと仕事している。難しくないけど単純に時間がかかる。

散髪をした。

子どもが何かすごくかわいらしいことを言っていたはずで、そのことを書こうと思っていたのだけど忘れてしまった。くやしい。ちょっとした言い間違いとかそういうものなんだけどまったく思い出せない。

bouzuya/cloud-storage-signature, bouzuya/google-docs-api-types をもうちょっとなんとかしたい。


今日のコミット。

bouzuya/google-docs-api-types メモ Discovery Document にがっかり

bouzuya/google-docs-api-types に 2 つ type を追加した。

今日は xtask を追加して Discovery Document をとってみた。ただ discovery document には enum であることを識別するための // Union field request can be only one of the following: のような情報がなかった。生成はできそうだけど、いまのものと同等のものをつくるのはひと手間ふた手間かかりそうで嫌だな……。いっそドキュメントをスクレイピングするほうが良さそう。その情報は落とさないでほしかったな……。


今日のコミット。