らいむぎばたけ

つかまえなくてだいじょうぶ

ecspresso をより安全に使うために

この記事は Classi developers Advent Calendar 2021 5 日目の記事です。 adventar.org

昨日は Sab さんiOS15からのキーボード回避[UIKit] でした。

Classi でサーバサイドエンジニアとして働きながら週末は野菜を育てているらいむです。我が家の畑は夏野菜が終わり、最近は秋・冬野菜を育てています。白菜が無事結球したのでホッとしています。

今回は野菜ではなくて、業務で使っている ecspresso をより安全に使うために行ったことを書きます。本記事は ecspresso を例に書きますが、ecspresso に限った話ではないので、CircleCI でバイナリの checksum を比較したり、バイナリをキャッシュしたいときに同じやり方が使えると思います。

はじめに

  • 元々は CircleCI 上で都度 ecspresso をインストールして、それをそのまま使っていた
    • 弊社では 3rd party orb を許可しないポリシーなので、ecspresso の CircleCI orb が使えず自前でインストールしている
  • f:id:lime1024:20211202103737p:plain
  • id:aereal さんの発言を見てたしかにとなった 🦀
  • 提供元の checksum と CircleCI で落としてきたファイルの checksum を比較することで、経路上で不正にファイルが書き換えられていないかを確認できる

と思ったので実際にやってみました。

バイナリの checksum を比較する

CircleCI で ecspresso をインストールする command に以下を加えました。

FILENAME="ecspresso_<< parameters.ecspresso_version >>_linux_amd64.tar.gz"
curl -fsSLo /tmp/checksums.txt "https://github.com/kayac/ecspresso/releases/download/v<< parameters.ecspresso_version >>/checksums.txt"
cd /tmp && cat /tmp/checksums.txt | grep ${FILENAME} | sha256sum -c
  • ecspresso では tar で圧縮された状態の checksum がバージョン毎に用意されている
    • Releases · kayac/ecspresso
    • v1.6.0 からなので、それ以前を使っている場合は別の方法でやらないといけない
  • 公式の checksum と CircleCI 内で落としてきた圧縮された状態のファイルの checksum で比較する

バイナリをキャッシュする

CircleCI の restore_cachesave_cache を使いました。key は今回 ecspresso の version にしましたが、ここは実行ファイルの checksum でも良いと思います。

- restore_cache:
    name: Restore ecspresso cache
    key: ecspresso-v<< parameters.ecspresso_version >>

- save_cache:
    name: Save ecspresso cache
    key: ecspresso-v<< parameters.ecspresso_version >>
    paths:
      - .bin

バイナリのキャッシュを扱う

ここが一番ハマりどころが多かったです。

before

steps:
  - checkout
  - run:
    name: Install ecspresso
    command: |
      FILENAME=ecspresso_<< parameters.ecspresso_version >>_linux_amd64.tar.gz
      cd /tmp
      curl -sLO https://github.com/kayac/ecspresso/releases/download/<< parameters.ecspresso_version >>/${FILENAME}
      tar xzvf ${FILENAME}
      sudo install ${FILENAME} /usr/local/bin/ecspresso

after

steps:
  - checkout
  - run:
      name: Install ecspresso
      command: |
        if [ ! -x .bin/ecspresso ]; then
          FILENAME=ecspresso_<< parameters.ecspresso_version >>_linux_amd64.tar.gz
          mkdir .bin
          curl -fsSLo /tmp/${FILENAME} https://github.com/kayac/ecspresso/releases/download/v<< parameters.ecspresso_version >>/${FILENAME}
          tar xzvf /tmp/${FILENAME} -C .bin
          curl -fsSLo /tmp/checksums.txt https://github.com/kayac/ecspresso/releases/download/v<< parameters.ecspresso_version >>/checksums.txt
          cd /tmp && cat /tmp/checksums.txt | grep ${FILENAME} | sha256sum -c
        fi
  • 実行ファイルがあるかの判定が必要
    • キャッシュがないときだけ、インストールをしたいので条件分岐を追加した
    • -x じゃなくて -f とか -e でも良よさそう
  • 元々 sudo install/usr/local/bin 以下にコピーしていたのをやめた
    • restore_cachepermission denied でコケる
    • 代わりに ~/projects/.bin 以下にした
  • 注意点として checkout してから ecspresso をインストール する必要がある
    • まっさらな状態じゃないと checkout できないことを忘れていてハマった
    • これは今回に限った話じゃなくて、キャッシュを使う場合に気をつける

便利なツールはたくさんありますが、安全に使っていけるようにこれからも気をつけていきたいと思います。

明日は @youichiro さんです!

スイカの収穫とうどんこ病の蔓延

ヤングコーン! の続き。

昨日は割と一日中天気が良かったので、畑作業が捗った。炎天下の中 45L ゴミ袋 3 袋分の雑草を抜いてめちゃくちゃ疲れた。時給 1500 円くらいで雑草抜きのアルバイト (別途採れたて野菜付き) を募集したい...

f:id:lime1024:20210711204241j:plain
雑草抜く前のみなさん

f:id:lime1024:20210711204320j:plain
雑草抜いた後のみなさん

イカの収穫

受粉してから一ヶ月。15 cm くらいになったので収穫した。

f:id:lime1024:20210711204302j:plain
見た目はちゃんとスイカ

白いところも多くてもう少し熟してから収穫したほうがよかったかもしれない。味はちょっと甘いきゅうりとスイカの間くらいな感じ。もう 1 つあるので、そっちはスイカジュースにでもしようかなと思う。はじめての果物だったので失敗するかな〜と思っていたけど案外できるもんだな〜

f:id:lime1024:20210711205250j:plain
種が多い

うどんこ病の蔓延

うどんこ病により、きゅうりが全滅した。4 つ育てていたが全員もれなくうどんこ病になって、薬でももう対処しきれなくなったので、他の野菜に広がる前に...と思い、全て抜いた。きゅうり以外にもトマト、ナス、ズッキーニ、オクラがやられた。

f:id:lime1024:20210711204214j:plain
全部の葉がこんな感じ

最期のほうは、うどんこ病になっていない葉っぱもどんどん元気がなくなっていって、株全体がもうだめな感じになっていった。

f:id:lime1024:20210711204204j:plain
でろーん

来年はうどんこつよしを探そう。さよなら、キュウリ。

f:id:lime1024:20210711204330j:plain
ネット間違って切っちゃったんですけど、わかります?

トマト

トマトも半分くらいはうどんこ病になってしまった。葉が混み合ってきてて暑そうだったので、うどんこ病の葉を取ったらいい感じに葉かきもできた。

f:id:lime1024:20210711204156j:plain
トマトもやられた

トマトの葉かきについては、以下のサイトがわかりやすい。

収穫前であっても、実が十分に大きくなったと思ったら果房下の葉は全部取ってしまっても構いません

とのことなので、勢いよく葉かきをした。

オクラ

1 枚だけうどんこ病っぽくなっていたので切った。これ以上広がらないでほしい...

f:id:lime1024:20210711204252j:plain
この葉だけ元気がない

ズッキーニ

きゅうりの横に植えていたので、いつかなるかなと思っていたら案の定...

葉は元気で勢いがあるのと、ズッキーニはそもそもの葉自体に白い模様があるので、ぼーっとしてると気づかない。

f:id:lime1024:20210711204222j:plain
葉自体は元気

イカの摘葉

イカというか蔓があるものは放っておくと森になっていく。雨の時期はなるべく切らないようにしていたので (どの野菜であっても、雨の日は傷口から雑菌が入りやすくなるので、切るときは晴れているときが基本。さらに午前中だと良い) もう何がなんだかわからなくなっていたので整枝した。

f:id:lime1024:20210711204311j:plain
before
f:id:lime1024:20210711204340j:plain
after

収穫したスイカがなっていたほうの苗の、元気の無さそうな小づると、要らなそうな孫づるをかいてだいぶすっきりした。

ヤングコーン!

畑が森になった の続き。

日曜日、畑をしつつお昼ごはんを食べて馬券を買って、15 時半頃に慌てて家に帰って競馬を見ている。レイパパレ......

f:id:lime1024:20210627155558j:plain
今週の森

最近、畑に行くたびに 45L ゴミ袋を持っていくのだが、雑草を抜くといつもいっぱいになる。でも抜いても抜いても終わらない。出勤前やお昼休みにも抜きに行くが終わらない。義母に雑草の相談をしたら、頑張るしか無いと返ってきてやはりそうか...というお気持ち。

ヤングコーンを収穫した

f:id:lime1024:20210627155518j:plain
とうきび

とうきびが大きくなってきて、雌穂の絹糸が出てきたので、小さい雌穂を取り除いた。この取り除いた雌穂がヤングコーン。雌穂は勢いよくエイッ!と逆関節をキメるような感じで (?) とります。

f:id:lime1024:20210627155455j:plain
とうきび

たけのこみたいに剥いていくと、中からヤングコーンが出てきます。かわいい〜

f:id:lime1024:20210627155510j:plain
みずみずしい

とうきびもだし、他の野菜もそうなんだけど、収穫したての野菜って水分がすごいなあと思う。割と冗談抜きでとうきびを剥いていたら手がびちゃびちゃになった。

ピーマンの整枝 (再)

f:id:lime1024:20210627155550j:plain
まだ混み合っている

先週も整枝をしたけど、実が大きくなってきたせいか、未だなんか混み合っていて暑そう...と思ってよくよく見てみると仕立て方を間違っていた。四本仕立てにしたかったんだけど、四本に仕立てた先でも分岐をさせてしまっていた。

f:id:lime1024:20210627155540j:plain
これでどうだ

四本仕立ての図は以下のサイトの「仕立て方」にわかりやすい図がある。摘み取った小さい実も捨てずに、明日にでもラム肉と一緒に焼いて食べようと思ってる。

オクラもできてきた

f:id:lime1024:20210627155531j:plain
こう生えます

オクラはこの方向に生えます。

そろそろオクラの葉も増えてきたので、実より下の方の葉は取り始めてもいいかもしれない。

イカにネットをつけた

f:id:lime1024:20210627155437j:plain
すやすや

野球ボールくらいの大きさになってきたので、ネットをつけてハンモックみたいにしてあげた。スイカ用のハンモックというものは (多分) 売っていないので、何で吊ろうかな〜と思ってたら玉ねぎとかを入れる用のネットがあったので、試しに買ってみたら、結構良さそう。

自分ですずらんテープで編んでる人もいるみたいなので、ネットを使い切ったらそれでも良いかもしれない。来年かな。