Cybozu Productivity News

#8 - 2023.04.20

GitHub Actions Importer General Availability

共有担当: @ganta0087

  • 他のCIプラットフォームからCI/CDパイプラインをGitHub Actionsに移行するGitHub Actions ImporterがGAになりました。
  • サポートしているCIプラットフォームはAzure DevOps、CircleCI、GitLab、Jenkins、Travis CIです。
  • 本体はDockerイメージとして配布され、GitHub CLIの拡張経由で利用します。
  • 主な機能は次の通りです。
    • 移行元のCIプラットフォームの使用状況の履歴からGitHub Actionsの使用量の予測
    • 移行元のパイプラインからGitHub ActionsのワークフローのYAMLファイルへの変換
    • 変換したワークフローのYAMLファイルを適用するPull Requestの作成

Kubectl OpenAI plugin

共有担当: @naotama

  • 生産性向上チームでも利用している Kubernetesのコマンドラインツールであるkubectl に OpenAI GPTを使ってKubernetesマニフェストを生成・適用するためのkubectlプラグイン の紹介です。
    • OpenAI API Key or Azure OpenAI Service API Key のどちらかが必要です。また、gpt-3.5, gpt-4 の model が利用可能です。
  • マニフェストの生成・適応をするプラグインですが、デフォルトで apply する前に確認が入るので、勝手に apply されることはありません。
  • --temperature オプションで 0 指定すると、基本同じ回答が返ってきます。1 にすると異なる答えが返ってくるので(かもしれない)、求める答えにならなければ、1 指定して動かしてみると良いかもしれません。
  • このプラグインのキモは kubectl-ai/cmd/cli/completion.go#L65 のプロンプト実装です。
  • 今は新規生成&適応なので、実用性は薄いのですが、既存マニフェストを指定して、変更できるようになったら、実際のプロダクトでも利用できそうです。
  • 生成する 対象言語/ツール を指定して、出力対象を明示することで、適切な答えを得ている。この考え方を応用して、いろんなツール向けに実装がでてきそうです。次々にでてくるであろう、生産性を向上させるプロンプトの開発(発明)が楽しみです。

Comment on files in a pull request (public beta) | GitHub Changelog

共有担当: @korosuke613

GitHub Copilot X:AIを搭載した開発者体験 - GitHubブログ

共有担当: @korosuke613

  • 製品ページ: Introducing GitHub Copilot X
  • 去年、コーディング時に AI に次のコードをサジェストしてもらうサービス、GitHub Copilot がリリースされましたが、今回新たに GitHub Copilot X が登場しました
  • GitHub Copilot X は 1 つの機能・サービスというわけでなく、AI による新たな開発者体験を実現する実験的なサービス群を指します
    • GitHub の中の人によると、Copilot に関する各名称は次を表すようです
    • 「GitHub Copilot 👉 プロダクト、GitHub Copilot for Business / Individual 👉 提供形態、GitHub Copilot X 👉 ビジョン 」https://twitter.com/yuhattor/status/1640344136787034113
  • 実際には次の機能が Copilot X の一部として紹介されています
    • Copilot chat: ChatGPT のような体験をエディタで
    • Copilot for Docs: プログラミングに関するドキュメントに詳しい Chat
    • Copilot for Pull Requests: プルリクエストの説明をしてくれる
    • Copilot for CLI: 質問すると CLI のコマンドを提示してくれる。解説もしてくれる[^for_cli]
  • さらにいろいろなプロジェクトが始動しています
  • 既存の Copilot のプランに含まれるかどうかやそもそも提供されるかどうかも現時点では決まってなさそうです
  • GitHub Copilot を契約している方であれば、各 Waitlist に参加し、待てば実際に触ることができます。気になる機能があれば触ったりフィードバックを送ったりしてみましょう
  • 個人的にはプルリクエストの説明をしてくれるやつがとても便利そうで興味があります。ソフトウェア開発がますます加速しそうですね。楽しみです

Announcing the GitHub Actions extension for VS Code | The GitHub Blog

共有担当: @korosuke613

  • Changelog: GitHub Actions: Visual Studio Code Extension is now in public beta | GitHub Changelog
  • VSCode の GitHub Actions 拡張機能が登場しました(public beta)1
  • 主な機能としては次があります。
    • ワークフローのワークフローランの管理
      • 一覧の表示
      • ページへのリンク
      • 履歴の表示
      • ログの表示
    • ワークフローの作成支援
      • 式や構文の強調表示
      • ホバー時のドキュメント表示
      • 式や構文の validation
      • 式や構文の自動補完
  • 個人的にはワークフロー一覧の表示とかよりも、式や構文の validation や自動補完が嬉しいです。
    特に、3rd party アクションに関する支援(リンクの表示や with の検証)がとても便利です
  • 大変便利なので、GitHub Action ユーザはぜひ使ってみてください
  • 個人的には JetBrains IDE を好んで使うため、そっちにも公式で拡張機能を出してほしい気はします

Release v2.0.0 · aws-actions/configure-aws-credentials

共有担当: @defaultcf

  • このアクションで使われている Node.js のバージョンが v12 から v16 にアップデートされました。
  • 2022年9月から GitHub Actions では Node.js v12 は非推奨となっており、警告が出るようになっていましたが、アップデートすることで警告が出なくなります。
  • proxy を設定できるようになりました。

AWS Application Composer Now Generally Available – Visually Build Serverless Applications Quickly | AWS News Blog

共有担当: @defaultcf

  • re:Invent 2022 で発表された AWS Application Composer が GA となりました。
  • API Gateway から Lambda を介すことなく直接 SQS に接続できるようになりました。
  • 変更時の差分を AWS SAM で確認できるようになりました。
  • インターフェイスが少し修正されました
    • カードが少し小さくなった
    • ズーム機能が追加された
  • 視覚的に確認しながら Lambda でエンドポイントを作ることができるので、アリかもしれません。

高パフォーマンスのオープンソースファイルクライアント、Mountpoint for Amazon S3 のご紹介

共有担当: @defaultcf

  • アルファリリースされました。
  • S3 バケットをファイルシステムとしてマウントできます。
  • 注意点があります。
    • 現在は読み取りのみをサポートしています。書き込みは将来的にサポートされる予定です。
    • このライブラリにキャッシュする仕組みはありません。
    • ビルド済みのバイナリは配布されていないので、自分でビルドする必要があります。今後ビルド済みのバイナリは配布される予定です。

Bit-for-bit reproducible builds with Dockerfile | by Akihiro Suda | nttlabs | Mar, 2023 | Medium

共有担当: @miyajan

  • 再現性のある Docker イメージのビルド方法についての記事です
  • 再現性のあるビルドとは?
    • いつ誰がビルドしても同じバイナリがビルドできる
    • 特定のマシンビルド環境は必要になる
  • 再現性のあるビルドができるとなにが嬉しい?
    • バイナリが特定のソースからビルドされたことが検証可能になるため、セキュリティ面で嬉しい
  • 再現性のある Docker イメージビルドを難しくする要因は?
    • タイムスタンプ
      • イメージのメタデータ内のタイムスタンプ、イメージのレイヤー内のファイルのタイムスタンプ
    • インストールされるパッケージのバージョン(apt など)
      • インストールを実行するタイミングで、インストールされるパッケージのバージョンが変わる
      • 古いバージョンのパッケージは削除されることもある
      • 古いバージョンを保存する snapshot リポジトリが存在しても、広くミラーされておらず帯域も限られるので、通常利用には向かない
  • SOURCE_DATE_EPOCH でタイムスタンプを再現可能にする
    • SOURCE_DATE_EPOCH 環境変数に UNIX タイムスタンプを指定すると、ビルドツールは再現性のある出力のためにこのタイムスタンプを使用することが想定されています
    • BuildKit v0.11SOURCE_DATE_EPOCH を暫定的にサポート
      • イメージのメタデータ内のタイムスタンプに使われる
      • しかし、イメージのレイヤー内のファイル(やホワイトアウト)のタイムスタンプには使われないので、回避策が必要
      • この PR が取り込まれると回避策が不要になる
  • repro-get でパッケージバージョンを再現可能にする
    • repro-get は、インストールされているすべてのパッケージのハッシュ一覧を生成でき、ハッシュファイルからパッケージをインストールできる
    • 高速なリポジトリからダウンロードして失敗したら、snapshot リポジトリにフォールバックできる
      • OCI レジストリなどを利用するように設定も可能
    • apt, dnf, apk, pacman に対応
  • 現状だとまだ複雑ですが、今後改善されていきそうな印象です

Terraform v1.4.0 リリース

共有担当: @r4mimu

Writing Terraform for unsupported resources

共有担当: @r4mimu

  • TerraformプロバイダがサポートしていないリソースをTerraform管理化として利用する TerraCurl の紹介
  • リポジトリ
    • 個人リポジトリっぽいですが、開発者は hashicorp の中の人らしく、公式ブログでも紹介されています
  • 公式サンプルを見ると素朴にurlとリクエストボディを渡してHTTPリクエストを実行する形です
  • DELETEメソッドを実行させることで destroy も実現させています
  • ただ、TerraCurlのoutputの値は循環参照となり利用できないので、リソース作成後に判明するパラメータを用いたリクエストは作成できなさそうです...
  • 面白いツールだと思いますが、あまり実運用では使いたくないのが本音なところです

We are hiring

サイボウズの開発者の生産性を上げる「生産性向上チーム」とは!?

Footnotes

  1. ちなみに僕は存在すら知りませんでした。