タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

bazelに関するtakashabeのブックマーク (11)

  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer (CTO) の @suguru です。連載:「メルカリShops」プレオープンまでの開発の裏側の1日目を担当させていただきます。 7月末にメルカリShopsという新しいサービスが公開されました。メルカリShops は、2021年1月にメルカリのグループ会社として設立したソウゾウが新たに立ち上げたサービスです。 この記事では、メルカリShops を作るにあたり、どういった技術、アーキテクチャを選定したのか、その背景と意思決定をまとめて共有したいと思います。 monorepo まず最初にプロジェクトをスタートしたときに、サービスのリポジトリを作るのですが、迷わず monorepo による構成を選択しました。monorepo は、システムを構成する複数のコンポーネントの独立性を保ちつつ、全ての構成を1つのリポジトリで管理する手法です。今

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
  • Bazelの解説(TS, Dockerイメージ、リモートキャッシュ)

    Bazelは大規模なプロジェクトでも高速にビルドすることができる強力なビルドツールとして知られています。一方で、その仕組みや実際に使用する方法についての紹介されることは少なく、まだまだあまり普及していないと思います。特にNode.js/TypeScriptをBazelでビルドする方法についての解説はかなり珍しいと思います。 このではBazelによるビルドがなぜ高速なのか基的な原理の説明から、実際に自分が作成したサンプルコードを使用してTypeScriptプロジェクトのビルド、Dockerイメージの作成までのコードを解説をし、最後のBazelの大きな特徴であるリモートキャッシュを実際に使う方法まで紹介します。 ぜひhttps://github.com/Kesin11/bazel-playgroundを手元にcloneして頂き、実際に動かしながらBazelによるビルドを体験してみてください

    Bazelの解説(TS, Dockerイメージ、リモートキャッシュ)
  • Awesome Bazel

    A curated list of Bazel rules, tooling and resources. View the Project on GitHub jin/awesome-bazel Awesome Bazel {Fast, Correct} - Choose two Bazel is an open-source build and test tool similar to Make, Maven, and Gradle. It uses a human-readable, high-level build language. Bazel supports projects in multiple languages and builds outputs for multiple platforms. Bazel supports large codebases acros

  • Bazelとモノレポ

    エントリは オリジナル の一部を再編集して掲載しています。(2020/03/31) モノレポのメリット gitでこのようなリポジトリ運用をされている方はそんなに多くはないのではないでしょうか? むしろこのような運用は嫌われる傾向にあるかもしれません。 それでもモノレポを使うのには理由があります。 リファクタリングが楽 コードレビューが楽 コンフリクト地獄に陥らない 一つのリポジトリですべて手に入る そして リポジトリに関わる人にすべてを触ってほしい という思いもあります。 一方、モノレポを実現するためにはいくつか工夫をする必要があります。 今までモノレポで運用をしていなかった場合ビルドツール等はモノレポに耐えられないものが多いと思います。 モノレポの運用をする場合はその点を考え直す必要があります。 モノレポを運用していくにあたって大事なのはビルドツールだと考えています。 複数のソフトウェ

  • 依存ライブラリは常にvendoringする

    BazelでGoの依存ライブラリを管理する方法は2つあります。 go.mod からWORKSPACEファイルを生成する vendorディレクトリを使う 以前はリポジトリに go.mod ファイルが1つしかない(単一モジュール構成のリポジトリ)の場合は前者を、 複数の go.mod ファイルがある場合は後者の方法を取るのがいいと思っていました。 しかし最近は常に後者を選択する方がいいと思っています。 見えない依存 Bazel で Go をビルドする際は rules_go と gazelle を利用していることでしょう。 rules_go 自身が 依存しているライブラリ もBazelによって管理されるため同じライブラリに自分のソフトウェアが依存している場合は競合します。 うまく競合しなかった場合は問題ありません。その時は幸せに利用できます。 ですが、競合して2つのバージョンを保持しないといけな

  • Bazelの使い方詰め合わせ

    エントリは オリジナル の一部を再編集して掲載しています。 (2020/03/31) 前の記事 ではBazelについて簡単に紹介しました。 ここでは更に1歩、Bazelの使い方に踏み込んでみたいと思います。 自分のリポジトリに含まれている色々なツール等をビルドしてshipするにあたって分かりづらかったりした点を中心に説明したいと思います。 すべてを網羅できているわけではありませんし、あくまで自分のリポジトリの頻出パターンなので皆さんのリポジトリでは違った点で悩むかもしれません。 Bazelを使い始めようという時に思い出して見ていただけるとよいかもしれません。 今回もサンプルコードは前回と同じリポジトリに置いてあります。 https://github.com/f110/bazel-example コンテナを作る サンプルリポジトリの helloworld1 はコンテナの作成もできるようにな

  • GoとBazel

    以前、 モノレポ構成にしてビルドツールとしてBazelを利用していることを紹介しました。 そのBazelは10月10日にとうとう1.0をリリースしました。 バージョン1.0に到達したというニュースは日語のニュースサイトでも掲載されるなど、多少注目を浴びたようです。 そこで今回はGoプロジェクトのビルドツールとしてBazelを利用する際のTipsをご紹介します。 GoプロジェクトではGNU makeをビルドツールとして使われていることが多いと思いますが、一度Bazelに慣れてしまうと手放せないツールになります(なっています)。 導入を検討する際のなにかの参考になりそうなTipsをいくつかご紹介します。 BazelをGoプロジェクトで使うことのメリットBazel がすべてを用意してくれるので最悪 goコマンドが入ってなくてもビルドできる。コンテナとしてshipする際に非常に軽量なイメー

    GoとBazel
  • Building Uber’s Go Monorepo with Bazel

    You’re seeing information for Japan . To see local features and services for another location, select a different city. Show more In traditional industries such as automobile or aerospace, engineers first design the products and the manufacturing facilities produce the cars or aircrafts according to the design. In software development, a build system is similar to the manufacturing facilities that

    Building Uber’s Go Monorepo with Bazel
  • Create Go Monorepo with Go-modules and Bazel

    Hi, everyone! In this article, I wanna show how we can create monorepo with Golang and Bazel. BazelRequirements: Go Modules — we wanna use go mod for managing dependenciesShared codebase — we wanna reuse our code in different applicationTest — we wanna run tests on single/all applicationsBuild — we wanna build every application separatelyThese requirements go beyond the definition of monorepo. Oka

    Create Go Monorepo with Go-modules and Bazel
  • Bazelの使い方詰め合わせ

    モンスト事業部SREグループの伊藤です。 普段はモンストに関するシステムの改善・運用を様々な面から行っています。 前回は弊社のあるリポジトリでのBazelの活用について簡単に紹介しました。 今回は更に1歩、Bazelの使い方に踏み込んでみたいと思います。 我々のリポジトリに含まれている色々なツール等をビルドしてshipするにあたって分かりづらかったりした点を中心に説明したいと思います。 すべてを網羅できているわけではありませんし、あくまで自分たちのリポジトリの頻出パターンなので皆さんのリポジトリでは違った点で悩むかもしれません。 Bazelを使い始めようという時に思い出して見ていただけるとよいかもしれません。 今回もサンプルコードは前回と同じリポジトリに置いてあります。 コンテナを作るサンプルリポジトリの helloworld1 はコンテナの作成もできるようになっています。 load("

    Bazelの使い方詰め合わせ
  • Bazelとモノレポ

    モンスト事業部SREグループの伊藤です。 普段はモンストに関するシステムの改善・運用を様々な面から行っています。 運用で使われる大小様々なツールを作ることもしばしばあるのですが、このリポジトリ運用が少し特徴的なので紹介をしたいと思います。 リポジトリ運用を一言で表せばモノレポで運用しています。 大小様々なツールがすべて一つのリポジトリに入っています。 ツールのソースコードに限らずKubernetesのマニフェストも同じリポジトリに入っていますしDockerfile等も入っています。(Dockerfileはそんなに多くはないです。Dockerfileを使わずに作成されているコンテナも多いので。これに関しては別の機会に) ツールを書く時に使われる頻出な処理はライブラリとして分割されているものもあります。そのライブラリも同じリポジトリに入っています。 このリポジトリは一切外のリポジトリに依存し

    Bazelとモノレポ
  • 1