Productivity Weekly (2021-10-13号)
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。
僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。
本記事はその時のネタをまとめたものです。
今回が第 47 回目です。過去の記事はこちら。
news 📺
GitHub Actions: Workflows triggered by Dependabot PRs will respect permissions key in workflows | GitHub Changelog
GitHub において、Dependabot によって引き起こされる GitHub Actions ワークフローが permissions
を尊重するようになりました(デフォルトは Read のままです)。また、Dependabot が持つシークレットを利用できるようになりました。これらの変更により、Dependabot 由来のワークフローの権限を詳細にコントロールできるようになります。さらに、3 月の変更で動かなくなったワークフローを再び容易に動かせるようになります(後述)。
今年の 3 月から、Dependabot のプルリクエストによって発火するワークフローは GITHUB_TOKEN の権限が読み取り専用となりました。また、GITHUB_TOKEN
以外のシークレットは渡されないようになっていました。しかし、これら 3 月の変更により、write 権限がなくなったことやユーザ定義のシークレットを利用できなくなったことから、一部ワークフローが動かなくなるといった問題を引き起こしていました[1]。回避策もありました[2]が、なかなかに面倒なものでした。
これからは、必要な write 権限は permissions
で設定し、必要なシークレットは Dependabot が持つシークレットに設定することで、3 月の変更で動かなくなってたワークフローを再び Dependabot のトリガーで動かすことができるようになります。
しかし、もともとデフォルトで厳しい制限をかけた理由を考えると、各スコープが Read 権限のみ、シークレットを渡さないことが一番セキュリティの観点からすると最良であることは間違いありません。write 権限の付与はシークレットを渡すことが本当に必要か再度考え、必要最低限の権限のみ渡すようにしましょう。
Dependabot が持つシークレットとはおそらく Settings -> Secrets -> Dependabot
から設定できる項目のこと(ドキュメント)
GitHub Actions: Granular personal access token scopes for self-hosted runners in enterprises | GitHub Changelog
GitHub Actions において、Enterprise 所属セルフホストランナー管理に特化した権限である manage_runners:enterprise
スコープが追加されました。これにより admin:enterprise
スコープの権限が必要なくなりました。これからは代わりにもっとスコープの狭い manage_runners:enterprise
を使うことが推奨されています。
GitHub Actions のセルフホストランナーはリポジトリ、Org だけでなく、Enterprise に対して所属させることができます。WebUI からランナーを管理する場合は良いのですが、API を使ってランナー管理を自動化しようとすると、API を叩くためのトークンに対して admin:enterprise
を付与する必要がありました。しかし、admin:enterprise
権限は強力な権限[3]であるため、あまり付与したくない存在でした。
manage_runners:enterprise
が登場したことにより Enterprise 所属セルフホストランナー管理を自動化しやすくなりました。
GitHub Universe 2021
GitHub Universe が 10/28-29(JST)に開催されます。GitHub Universe は GitHub の新機能や GitHub を活用した事例などが紹介される一年に一度のイベントです。今年もオンラインで開催されるため、無料で視聴できます。
今年もこの季節がやってきました。と思ったのですが、去年は 12 月に開催されたため、去年よりもまあまあ早い開催となります。去年の Universe ではダークモードやオートマージ、GHES3.0 の話題で盛り上がりましたね。今年も楽しみです。
know-how 🎓
Terraform Platform in Quipper - Speaker Deck
Quipper 社の Terraform プラットフォーム事例です。様々な Terraform 運用ノウハウが紹介されています。
モノレポでパイプラインを共通化、state は細かく分割、plan ファイルから apply を行う、tfcmt[4] で差分を見やすくする、CI による fmt ・ lock ファイルの修正・tfmigrate の実行、Renovate による諸々のアップデート(更新は No Change であることをテストする)などです。
全編英語ですが、詳細はこれまでのブログ記事にあるとのことです(登壇動画もあります)。
Terraform 運用時のつらみを解消するためのノウハウが揃っており、活用度合いがすごいです。とても参考にできると思います。
EC2 でリザーブドインスタンス(RI)と Savings Plans (SP)のどちらを選ぶべきか?基準とするための最強の比較表を作ってみた | DevelopersIO
AWS のディスカウントの仕組みである Reserved Instances(RI) と Savings Plans(SP) について EC2 に関する部分の比較表を作ってみたという記事です。
Amazon EC2 を決まったタイミングで使うなり、大量に使うなりする際は、少しでも安く抑えるために RI や SP の利用を検討します。ですが、それぞれにメリットデメリット、できることできないことが複雑に存在し、正直どちらが適切かの判断がとても難しいです。
この記事では、わかりやすい比較表[5](複数バージョン)、メリットデメリット、観点ごとの解説が書かれており、とてもよく分析された様子が目に浮かびます。
「考慮すべき項目が多いため「どちらが良いのか」を判断するのは難しいかと思います」と本文に書かれている通り、どちらが適切かの判断は非常に難しいですが、これから EC2 を本格利用する方も、すでに本格的に利用している方にとっても、この記事はとても良い判断材料となりそうです。
tool 🔨
HTTPIE FOR TERMINAL
httpie は HTTP(HTTPS) リクエストをシンプルに送るための CLI ツールです。HTTP リクエストを送るためのツールとしては curl が代表格ですが、httpie には API や HTTP サーバ、Web サービスのテストとデバッグを容易にするための機能が揃っています。
- 直感的な構文
- JSON サポート
- colorized
- API 向けのデフォルト設定(ステータスコードやヘッダの常時表示など)
- セッションの維持
- offline モード(リクエストの表示)
- その他諸々
確かに開発時や手軽に API を叩くために便利そうな機能が備わっており、役立ちそうです。手軽に試したい人向けに online デモがあります。
(CI や本番環境で利用する際は curl や wget を使うことになると思うので、curl や wget の代替とはならないでしょう[6]。)
koneta 🍘
Productivity Weekly で出たネタを全て紹介したいけど体力が持たない、または、そんなに言うことがなかったネタを一言程度で書くコーナーです。
-
Google Distributed Cloud をデータセンター、エッジ、クラウドに導入 | Google Cloud Blog
- GCP(Google Cloud Platform)のインフラをオンプレやエッジロケーションで構築するためのソリューションである Google Distributed Cloud が発表されました。
- Google Distributed Cloud Edge はデータが生成・活用される場所(エッジロケーション)の近くで Google Cloud のサービスを利用するための製品です[7]。
- Google Distributed Cloud Hosted はオンプレ上に Google Cloud を構築するための製品です。データの所在地やセキュリティ用件などが厳しい顧客でも Google Cloud を活用できます。
-
Psst! Now you can securely share 1Password items with anyone | 1Password
- 1Password が 1Password ユーザ以外とパスワードを安全に共有するための機能である Psst! を発表しました。
- 共有リンクの有効期限や何人までが表示できるかを設定できます
- 家に来た友人へ WiFi のパスワードを共有するなど、使い道は色々ありそうです。
- 日本語でのニュース記事:1Password、非ユーザーとも安全にパスワードを共有できる「Psst!」機能 - ITmedia NEWS
あとがき
土日は Fig の autocomplete を充実させる[8][9][10]おじさんと化していました。Fig、なかなか便利です。あと競プロのコンテストに出てました。
生産性向上チームでは毎週こういったネタを共有する会を行っています。そんな生産性向上チームが気になる方は下のリンクをクリック!
omake
今週のおまけです。
速報:アップル発表イベントは19日午前2時~。新型MacBook Proや第3世代AirPodsなど新製品予想まとめ - Engadget 日本版
パワー全開...ですね。本日の 26 時(2021/10/18 26 時)から Apple Event が開催されます。9 月にも開催されましたが、その時はモバイル端末や iPad mini などが発表されました。
今回はおそらく Mac 関係の新製品が来るだろうと言われています。個人的には MacBook Pro の次世代機が来てほしいです。特にメモリ 32GB 以上搭載可能 Apple Silicon 搭載 MacBook Pro 16 インチに来てほしいです。
従来の M1 MacBook Pro は 13 インチまででメモリの上限は 16GB だったため、買うのをためらっていました。M1 の開発環境も整ってきたことだと思いますし、そろそろ使いたいですね。多分次に交換してもらう会社 PC は新発表された MacBook Pro にしてもらうと思います。Apple さん頼む〜〜〜!
-
Dependabot triggered Actions cant access secrets or use a writable token · Issue #3253 · dependabot/dependabot-core ↩︎
-
[GitHub Actions] Secrets や書き込み権限が必要な Workflow を Dependabot からも使えるようにする – もばらぶエンジニアブログ ↩︎
-
Full control of enterprises とされている。Audit log を見られたり Actions の利用を許可したり、Org 作成なんかができたはず。強すぎる。Enterprise のページを詳細な権限をドキュメントで探したが、一覧で載っているものを見つけられなかった。うーん。 ↩︎
-
mercari/tfnotify を fork したもので、tfnotify と比べて様々な変更が取り入れられています。 ↩︎
-
とてもよくできており相対的にわかりやすいですが、やはり理解は難しいです。 ↩︎
-
そう考えると curl コマンドへのエクスポート機能がちょっと欲しくなる。 ↩︎
-
正直あまり自信ないです。詳しくは調べてください。 ↩︎
-
feat: add limactl completion spec by korosuke613 · Pull Request #673 · withfig/autocomplete ↩︎
-
feat: add asdf completion spec by korosuke613 · Pull Request #677 · withfig/autocomplete ↩︎
-
feat: add direnv completion spec by korosuke613 · Pull Request #681 · withfig/autocomplete ↩︎
Discussion