私が歌川です

@utgwkk が書いている

GitHub Actionsのworkflow commandでアノテーションするときのmessageで改行したい

GitHub Actionsのworkflow commandという機能を使って、workflowの中からリポジトリのファイルの特定の行に対してアノテーションを付けることができる。CIが落ちたときのスタックトレースやexpected, actualなど表示できて便利。

スタックトレースを出すときは当然複数行で表示したいと思う。こういうときに、

echo "::error file=test.txt,line=2::hoge\nfuga\npiyo\nuooo"

のように直接改行文字を入れても、messageには hoge しか入らない。

f:id:utgwkk:20200507185840p:plain

改行するには、改行文字をURLエンコードすればよい。たとえば \n%0A にすると改行できる。

echo "::error file=test.txt,line=2::hoge%0Afuga%0Apiyo%0Auooo"

f:id:utgwkk:20200507190004p:plain

GitHub Actionsのドキュメントを探してもうまく見つけられなかったけど、なんで分かったのかというと、@actions/coreにそういう変換をしてるコードがあったから。JS (TS) を使うworkflowからだと @actions/core を使えばよいと思うけど、JSじゃないときはこういう変換を自分でやっていく必要がある?


副産物として、workflow commandで改行できることをテストするリポジトリができた。

github.com

追記

このあたりでURLエスケープを解釈してそうだなというのが分かった。パーセントエンコーディングを完全にデコードしているわけではなくて、ほんとうに改行する用とかに使っていそう?

runner/ActionCommandManager.cs at a246b3b29d853e73db4f7be04cb25f85b3d98e27 · actions/runner · GitHub

runner/ActionCommand.cs at a246b3b29d853e73db4f7be04cb25f85b3d98e27 · actions/runner · GitHub

runner/ActionCommand.cs at a246b3b29d853e73db4f7be04cb25f85b3d98e27 · actions/runner · GitHub

5年ぶんのゴールデンウィークを振り返る

ゆっくりしてたらゴールデンウィークが終わってしまい、特筆すべきことがないので一気に5年ぶんのGWを振り返る。

2020

風来のシレン(SFC・新品)を買った。プレイする環境はない。

不思議のダンジョン2 風来のシレン

不思議のダンジョン2 風来のシレン

  • 発売日: 1995/12/01
  • メディア: Video Game

2019

2019年のGWといえば、平成が終わり令和が始まる瞬間。DEN-ENとEL LATINOで平成最後の花金をやって、部員たちと鴨川できららジャンプをやった。

2018

西成に行ってた。

2017

EL LATINOに行ったり、動物園に行ったりしてた。ブログに記録が残っててわかりやすい。

utgwkk.hateblo.jp

utgwkk.hateblo.jp

2016

京アニショップやけいおんの聖地に行ってた。アルバイトやめてお金がなくなっていたらしい。

utgwkk.hateblo.jp

utgwkk.hateblo.jp

クックパッドのスプリングインターンに参加した #cookpad_spring_intern

クックパッドのスプリングインターンに参加した。普段から大規模トラフィックをさばく技術に関心を持っています、と言っていたら選考通過した*1

techlife.cookpad.com

クエリのWHEREやORDER BYをグッと見つめてインデックスを貼るとよい、とか、mapの中でクエリ発行したら積み重ねで遅くなる、これがN+1問題ってやつですね、といったことは知っていた。一方で、gRPCという言葉は聞いたことがあったけど、なぜこのような技術が採用されているのか、Railsではどういうふうに実装するのか、とか、ECSを使ってアプリケーションをデプロイしてみましょう、みたいな、普段あまりやらないことを体験できたのがよかった。

Zoomでインストラクションしてもらいつつ、GitHub上の公開リポジトリをforkしてcloneして作業開始、という世界観だった。 参加者ごとに作業用インスタンスが用意されていて、とりあえずubuntuユーザーでSSHしたらログインできるというのは不思議な気がしたけど、よく考えたら https://github.com/utgwkk.keys から公開鍵情報は取得できるので、たしかにという感じがする。 うまくいかなかったらAWSのコンソールから作業用インスタンスに入ってもらって問題解決してもらっていて、リモートでデバッグするの大変だと思うので、こういう選択肢があるのはよいことだと思う。

実際に作業したリポジトリはこちら。gRPCのN+1リクエスト問題を解決しようとして失敗したのでrevertした様子が垣間見れる。こういう実装を短い時間でテストコードなしに完成させるのは難しい。ISUCONだとテスト書いてる時間なんてないのでさっとできるようになりたい。

github.com


以前、クックパッドのサマーインターンに参加したことがあるけど、後半の業務パートに参加できなかったのが今でも心残りで、半ば黒歴史みたいに感じることがある。 あれから3年近く経過したけど、どれくらい成長できたのだろうね。

utgwkk.hateblo.jp


今年はどういう形態でインターンをやっていくのか、とか、そもそも大学の予定はどうなるのか、みたいな話題もあって大変そう。

*1:インデックスとキャッシュが好き

カマルのテイクアウトカレーおいしかった。

カマル
〒604-8131 京都府京都市中京区三条東洞院東入ル菱屋町32-1
2,000円(平均)850円(ランチ平均)
r.gnavi.co.jp

www.kamal.asia

インターネット最新情報

インターネット回線の乗り換えが完了した結果、夜中の回線速度が3000倍になった。

utgwkk.hateblo.jp

もともと、マンションにあった、工事不要の回線を契約して過ごしていた。ここ最近はずっと、夜中になると、回線速度が著しく低下するのに悩まされていた。このような状態では息が詰まる、ということで思い切って回線を切り替えることにした。

utgwkk.hateblo.jp

世界はこんなにも新鮮だったのか、という気持ちに近いものを感じている。