GitHub-hostedライクにAmazon ECSとAWS Lambdaでself-hosted runnerを管理するツールを作った 2023/12/04 / whywaita / 0 Comments こんにちは、whywrite.it CI班のwhywaitaです。 この記事は AWS Lambda と Serverless Advent Calendar 2023 4日目の記事です。 普段は株式会社サイバーエージェントという会社でGitHub Actions向け self-hosted runner 基盤の開発者兼PdMをやっています。業務としてはプライベートクラウドと呼ばれる社内向けのクラウド基盤を開発しつつ、その上で稼働する安価に拡張性の高いCI基盤を提供しています。 そこで利用しているコアソフトウェアが whywaita/myshoes です。GitHubから送信されるw
2023.05.26 CI/CD Test Night #6 開発者体験を改善し続けるための Self-hosted runner 運用基盤 クックパッド株式会社 技術部 SRE グループ Takamasa Saichi (@s4ichi) © 2023 Cookpad Inc. About me ● Takamasa Saichi / 齋地 崇大 / s4ichi ○ https://s4ichi.com ○ https://twitter.com/s4ichi ○ https://github.com/s4ichi ● クックパッド株式会社 技術部 SRE グループ ● 業務/関心事 ○ CI/CD(基盤, DX) ○ アプリケーションの Observability ○ パフォーマンスチューニング ○ プログラム言語処理系 © 2022 Cookpad Inc. 2 https://s
こんにちは。サイボウズ株式会社 生産性向上チームの平木場です。 僕たち生産性向上チームは毎週水曜日に Productivity Weekly という「1 週間の間に発見された開発者の生産性向上に関するネタを共有する会」を社内で開催しています。 本記事はその時のネタをまとめたものです。 2023-01-25 号から、基本的に隔週で連載することとしました。たまに単独でも投稿するかもしれません。 今週は 2024-05-01, 2024-04-24 合併号です。 今回が第 150 回目です。過去の記事はこちら。 news 📺 AWS CodeBuild がマネージド型の GitHub Action ランナーのサポートを開始 AWS CodeBuild がマネージドな GitHub Actions のセルフホストランナーを提供するようになりました。 GitHub Actions のジョブ要求時に
『GitHub CI/CD実践ガイド――持続可能なソフトウェア開発を支えるGitHub Actionsの設計と運用』という書籍を最近出版したので紹介します。本書ではGitHub Actionsの実装と、CI/CDの設計・運用を体系的に学べます。一粒で二度美味しい書籍です。筆者個人としては「実践Terraform」以来、4年半ぶりの商業出版になります。 gihyo.jp どんな本? GitHub利用者にとって、もっとも導入が容易なCI/CD向けのソリューションはGitHub Actionsです。GitHub Actionsの活用事例は多く、検索すればたくさん情報が出てきます。ただ断片的な情報には事欠かない反面、体系的に学習する方法は意外とありません。CI/CD自体がソフトウェア開発の主役になることもまずないため、なんとなく運用している人が大半でしょう。そこで執筆したのが『GitHub CI/
GitHub Actionsでは依存パッケージやビルド結果などをうまくキャッシュすることで、テストやビルドの時間を短縮できます。 actions/setup-nodeやactions/setup-javaなどの各言語のオフィシャルアクションは各パッケージマネージャーのためのキャッシュ機構を提供していますし、actions/cacheを使って任意のファイルをキャッシュすることもできます。 これらは内部で@actions/cacheパッケージを使っており、キャッシュの機構はGitHub自身の機能と密に結びついています。 しかし、GitHub Actionsのキャッシュはリポジトリごとに10GBまでという制限があり、開発者の多いリポジトリではsetup-nodeのキャッシュだけでもすぐに上限に達してしまいます。 私の所属するチームのリポジトリはGitHub Enterprise Serverにホ
はじめに GitHub ActionsでGitHub Appsを使うときには登録時に入手できるApp IDとsecret keyから一時的に使用できるトークンを発行する必要があります。 このトークンはGitHubが用意しているRest APIやGraphQL APIに対してリクエストすることによって入手することができます*1が、いちいちAPIを叩く準備をするのは面倒なので個人が作成したActionであるtibdex/github-app-tokenやSentryが提供しているActionであるgetsentry/action-github-app-tokenを使うことによって楽をすることができました。 今まで非公式なActionに依存していたトークン生成ですが、GitHubが公式でAppsトークンを作成するActionであるactions/create-github-app-tokenを提
最初に作ったのがCIAnalyzerです。なるべくツール自体の運用の手間がかからないように常駐サーバー無し、データの保存先と可視化はマネージドサービスを使う前提で設計しました。具体的にはデータの保存先をBigQueryとすることによって自前でDBを管理する必要をなくし、webhookを受けるのではなくcronで定期的にAPIを叩くことで常駐サーバーを不要にし、データの可視化はBigQueryと簡単に連携できてマネージドサービスであるLooker Studioを使用する前提としました。 CIAnalyzerのアーキテクチャ CIAnalyzerを作ったきっかけはAzure Pipelineの分析機能に感銘を受けたことで、それと同等の分析を当時自分が業務とプライベートで使用していたJenkins, CircleCI, Bitrise, GitHub Actionsでも可能にしたいと思って開発を
TLDR 開発体験が良くなると CI のコストも減る 不必要なジョブ実行を減らし、割れ窓を直すことから始めると良い Self-hosted runners ではクラウドコスト最適化の一般的なプラクティスも併用する GitHub Actions のコスト構造 GitHub-hosted runners GitHub が提供するインフラを利用する。一般的なクラウドより高めの料金設定になっている 1分単位で課金される。ジョブの実行時間が数秒間でも1分間で課金されるので注意 Public repository は無料、Private repository は従量課金になっている Organization 内で利用料金が合算されて翌月請求される。Organization Owner なら請求レポート (CSV) をダウンロードできる Self-hosted runners GitHub では課金され
以前にセルフホストランナーの知られざる機能であるジョブの前後に任意のスクリプトを実行できるhookを紹介しました。 今回はセルフホストランナーの知られざる機能の紹介第二弾としてactions/runner-container-hooksを紹介します。 runner-container-hooksは2023年現在では比較的新しい機能で、自分もいつ頃に知ったのかは覚えていないのですが、actions/runnerのリポジトリには2022年の4-5月頃に追加されていたようです。実装のpull-reqから少し遅れて5月には設計ドキュメントと言えるADRのpull-reqが出されています。 このADRを見たところ自分がセルフホストランナーを運用する上で今まではどうしても不可能であったコンテナの中で起動したセルフホストランナーの中でコンテナ型のactionなどが実行できないという制約を突破できることが
GitHub Actionsでテストファイルを複数ノードに適切に分割するためのカスタムアクション、r7kamura/split-tests-by-timingsを作った。 CircleCIに同様の仕組みがあり、今回はこれのGitHub Actions版が欲しかった。 既存ツールとして、Go製のleonid-shevtsov/split_testsというCLIツールがあり、これを利用するchaosaffe/split-testsというカスタムアクションがある。 このカスタムアクションでも不足は無かったが、幾つかの理由で今回自作するに至った。 しばらく使いそうなので、保守性を上げるためにも、不要な機能を取り除いて必要最低限の機能にしたかった GitHub Actionsは仕様変更が多いため、自分で保守できるようにしたかった 今回、内部実装としてRust製のmtsmfm/split-testとい
改善戦略 実行のタイミングやGitHubの状況や依存サーバーのネットワークの状況によって変動はあるものの、早くて7分、だいたい10分〜15分くらいかかっている。早いか遅いかは、他の開発と比べても内容や状況が違うのでなんとも言い難いが、個人的な感想としては「遅い」。というより、一切の工夫をしていなかったので、もっと早くできるはずだと考えた。 ビルドされたファイルを複数の環境で共有する 処理全体の中で時間がかかっている処理は3つ。 依存パッケージのインストール ビルド テスト さらに、課題の一つとして「テスト実行時に開発用依存パッケージ(devDependencies)がインストールされているせいでテストが失敗しない問題がある」というものがあり、これを処理に追加しないといけない。 開発用依存パッケージのインストール ビルド 依存パッケージを一旦すべて削除 本番用依存パッケージのインストール テ
Open SourceProductAnnouncing the GitHub Actions extension for VS CodeToday, we’re excited to announce the release of the public beta of the official GitHub Actions VS Code extension, which provides support for authoring and editing workflows and helps you manage workflow runs without leaving your IDE. Today, we’re excited to announce the release of the public beta of the official GitHub Actions VS
GitHub Actions でワークフローを実行するときに git commit と git push を実行して GitHub Actions の実行を待つことがよくある.より迅速に実行して,結果を受け取るために「act」を使って GitHub Actions をローカル環境(コンテナ)で実行する仕組みを試してみた.便利だったので紹介しようと思う❗️ 当然ながら GitHub Actions を完全再現できてるわけではなく,最終的には GitHub Actions を使うことにはなるけど,特に開発中に頻繁にテストを実行できるのはメリットだと思う.うまく併用しながら開発体験を高めよう👌 github.com セットアップ macOS の場合は Homebrew を使って簡単にセットアップできる.他には Chocolatey (Windows) や Bash script も選べる.今回
はじめに こんにちは、クラウド&ネットワークサービス部で SDPF のベアメタルサーバー・ハイパーバイザーの開発をしている山中です。 先日 GitHub Actions self-hosted runners のオートスケーリング構成の紹介(クラウドサービス開発を支える CI の裏側) の記事で、自作の runner controller と Docker を用いた、オンプレミスでの CI 環境構成についてご紹介しました。 今回の記事では、構築した CI 環境上で動かしている workflow の紹介をしながら、workflow 作成についての Tips をいくつかご紹介したいと思います。 engineers.ntt.com 記事を書いたモチベーション 実際の業務で GitHub Actions を使用するにあたって、ありがちな悩みを解決するための workflow の作成事例や工夫などの
1 フロー 1 ワークフロー 一連のフローがある場合は 1 つのワークフローにまとめる。 トリガーしたイベントの JSON が使える needs での制御がしやすい 全体を追える グラフが表示される ファイルを分割したい ファイルを分割したい理由として以下が挙げられると思います。 行数が増えて読みづらい 処理を共通化したい 複合実行ステップアクション や workflow_run トリガー や Reusable workflow 🆕 を使うことになると思いますが、基本的には一連のフロー制御はメインのファイルに書いてその下を Reusable workflow や複合実行ステップアクションで外部ファイルへ分離するのが良さそう。 workflow_run はログが分断するのでおすすめしません。
dependabotだとかrenovateだとかを使ってライブラリのバージョンアップのpull requestを自動的に送ってもらう、というような機構を利用されている方が多いと思います。 常にこれらのpull requestに目を光らせておいて常に取り込み続けるというのが理想的な形・そうあるべきだとは思うのですが、ふと気を抜くとバージョンアップのpull requestが溜まっていき、pull request自身も改訂に改訂を重ねている......みたいなことが起きがちではないでしょうか。 そういった折、誰も結果を見もしないCI (i.e. GitHub Actions) だけが回り続けているのを見て「このチェックは『ライブラリアップグレード業』をやる時に手動で回せばコンピューティングリソースの削減になるのでは?」と思い、それを試したという次第です。 この記事では例として、renovate
docker compose on GitHub Actions 昨今ではDocker(コンテナ)を使った環境整備が主流になってきています。アプリケーションの実行環境自体をコード化できるため、開発環境間の差異や、本番環境の差異を吸収し、アプリケーションの開発に集中することができます。 一方、CIとDockerの相性はなかなかに良くないです。Dockerの肝はイメージやレイヤーのキャッシュにより、初回のダウンロード以降は爆速に使えることですが、環境がある程度リセットされてしまうCI環境で愚直にDockerを動かすコードを書くと数百MB単位のイメージのダウンロード、ビルドが毎回走ることになり、Dockerを準備する処理でCIの処理の大半が使われてしまうこともままあります。 今回はDockerによる環境のカプセル化の恩恵を受けつつ、GitHub Actionsでdocker composeを動か
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く