実践Rust入門 13日目 その2

10章4〜6節まで。

パケージの公開方法や自動テストについて学ぶ感じ。

TravisCIやAppVeyorの使い方はとても参考になった。 便利な世の中だなぁ。
僕の場合は、独学でパッケージ公開しようなんて思わなかっただろうから、この章だけでも本書を 僕が何かを公開する日が来るかは分からないけれども。

さて、本書も残すところ100ページほど。
11章のWebアプリと、12章の他言語との連携方法。
どちらもすぐに使いそうにないので、本書を読むのは一旦休憩。

しばらくRustで小さめのプログラムをいっぱい作って慣れようと思う。
まずは息抜き用の数当てゲームでも作ってみようかなー。

おぼえがき
パッケージ公開に向けて
  • cargo build --releaseで動作確認しておこう
    • cargo runcargo testにも--releaseはあるっぽい
  • cargo new --vcsバージョン管理システムを指定できるっぽい
  • Cargo.lockはbinならバージョン管理対象にしておくべき
    • libクレートなら、.gitignoreCargo.lockが記載されるっぽい
  • githubあたりに公開するパッケージをコミットしておく
自動テスト
  • TravisCI
  • AppVeyor
  • テストだけじゃなくて、下記もやっておくと良いかも
    • スタイルチェック ... rustfmtやclippy
    • テストの網羅性チェック ... kcovやtrapaulin
    • ベンチマーク など
  • TravisCiやAppVeyorのデプロイ機能を使えば、GitHubのリリースに置くことができるっぽい
  • TravisCiやAppVeyorのテンプレートがあるっぽい
creates.ioへの公開
  • パッケージ名の推奨はケバブケース(ハイフン区切り)
    • ソースなどは-_にした、スネークケースで指定する
  • 統一しておけば良かった気がするのだけれども。。。
  • 公開前に、Cargo.tmlREADME.mdは整備しておこう
  • 一度公開すると、削除はできないので慎重に
    • 代わりにyankというコマンドが使えるらしい
  • 公開前にもう一度確認
    • cargo test --release
    • cargo doc --no-deps --open
    • cargo install --path .で実行ファイルを生成して動作確認
    • コミット
    • cargo package
      • コミットした状態じゃないとエラーが出る
    • zcat target/package/package_name-version.crate |tar tf -
      • packageコマンドでまとめられた内容の確認
  • gitタグ追加とリモートへプッシュ
    • git tag v0.1.0
    • git push origin master
    • git push origin v0.1.0 − プッシュ後はCIが完了するを待っておこう
  • creates.ioへ公開
    • cargo login <Your API Token>
    • cargo publish
  • 公開したクレートは、下記サイトで自動的に公開される
課題
  • TravisCIの使い方
  • 他のCIについても調べてみよう
    • Circle CI
    • GitHub Actions
    • GitLab の何か
  • cargo packageでまとめられるファイルが書籍と差異あり。何か設定が足りてないのだろうか
    • 手元の環境だとgitignoresが含まれているが、書籍にはなさげ(P439)

実践Rust入門[言語仕様から開発手法まで]

実践Rust入門[言語仕様から開発手法まで]