├── .bazelversion ├── .gitignore ├── 404.md ├── BUILD ├── CODEOWNERS ├── CONTRIBUTING.md ├── LICENSE ├── MODULE.bazel ├── README.md ├── _config.yml ├── _includes ├── blog-sidebar.html ├── blog-twitter-js.html ├── byline.html ├── footer-content.html ├── footer.html ├── head.html └── header.html ├── _layouts ├── blog.html ├── default.html └── posts.html ├── _plugins └── svg_mime_type.rb ├── _posts ├── 2015-03-27-Hello-World.md ├── 2015-04-06-Simplified-Workspace-Creation.md ├── 2015-04-10-bash-completion.md ├── 2015-04-15-share-your-project.md ├── 2015-04-22-thank-you-stickers.md ├── 2015-06-17-visualize-your-build.md ├── 2015-06-25-ErrorProne.md ├── 2015-07-01-Configuration-File.md ├── 2015-07-08-Java-Configuration.md ├── 2015-07-23-tree-trimming.md ├── 2015-07-28-docker_build.md ├── 2015-07-29-dashboard-dogfood.md ├── 2015-09-01-beta-release.md ├── 2015-09-11-sandboxing.md ├── 2015-12-10-java-workers.md ├── 2016-01-27-continuous-integration.md ├── 2016-02-23-0.2.0-release.md ├── 2016-03-18-sandbox-easier-debug.md ├── 2016-03-31-autoconfiguration.md ├── 2016-06-10-0.3.0-release.md ├── 2016-06-10-ide-support.md ├── 2016-10-07-bazel-windows.md ├── 2016-10-20-intellij-support.md ├── 2016-11-02-0.4.0-release.md ├── 2016-11-04-bazel-build.md ├── 2017-02-22-repository-invalidation.md ├── 2017-02-27-protocol-buffers.md ├── 2017-02-28-google-summer-of-code.md ├── 2017-03-07-java-sandwich.md ├── 2017-03-21-design-of-skylark.md ├── 2017-04-21-JDK7-deprecation.md ├── 2017-05-26-Bazel-0-5-0-release.md ├── 2017-05-31-google-summer-of-code-2017.md ├── 2017-06-28-sjd-unused_deps.md ├── 2017-07-05-new-logo-and-homepage.md ├── 2017-07-20-backward-compatibility.md ├── 2017-08-25-introducing-sandboxfs.md ├── 2017-09-25-conference-2017.md ├── 2017-09-27-release-cadence.md ├── 2017-10-03-conference-2017.md ├── 2017-10-16-windows-retrospect.md ├── 2017-12-11-thanks-bazelcon2017.md ├── 2017-12-14-introducing-bazel-code-search.md ├── 2018-01-19-config-parsing-order.md ├── 2018-02-06-bazel-0.10.md ├── 2018-02-14-how-android-builds-work-in-bazel.md ├── 2018-02-26-bazel-0.11.md ├── 2018-02-28-incremental-dexing.md ├── 2018-04-11-bazel-0.12.md ├── 2018-04-13-preliminary-sandboxfs-support.md ├── 2018-05-02-bazel-0.13.md ├── 2018-06-01-bazel-0.14.md ├── 2018-06-06-introducing-bazel-cquery.md ├── 2018-06-26-bazel-0.15.md ├── 2018-07-09-bazel-sync-and-resolved-file.md ├── 2018-07-19-java-8-language-features-in-android-apps.md ├── 2018-07-31-bazel-0.16.md ├── 2018-08-17-starlark.md ├── 2018-08-22-bazel-homebrew.md ├── 2018-08-30-bazelcon-is-coming.md ├── 2018-09-14-bazel-0.17.md ├── 2018-09-28-first-class-resolved-file.md ├── 2018-10-05-remote-build-execution.md ├── 2018-10-15-bazel-0.18.0.md ├── 2018-10-22-hackathon.md ├── 2018-10-29-bazel-0.19.0.md ├── 2018-11-02-bazelcon-2018-recap.md ├── 2018-12-05-multilanguage-build-system.md ├── 2018-12-14-Bazel-0.20.0.md ├── 2018-12-19-bazel-0.21.md ├── 2019-01-28-bazel-0.22.0.md ├── 2019-02-01-dynamic-spawn-scheduler.md ├── 2019-02-11-configurable-builds-part-1.md ├── 2019-02-15-introducing-aquery.md ├── 2019-02-26-bazel-0.23.md ├── 2019-03-26-bazel-0.24.md ├── 2019-03-31-rules-jvm-external-maven.md ├── 2019-05-01-bazel-0.25.md ├── 2019-05-07-builds-without-bytes.md ├── 2019-05-28-bazel-0.26.0.md ├── 2019-06-06-Bazel-Semantic-Versioning.md ├── 2019-06-17-bazel-0.27.0.md ├── 2019-06-19-list-strategy.md ├── 2019-07-04-BazelCon-SaveTheDate.md ├── 2019-07-10-bazel-0.28.md ├── 2019-08-12-BuildMeetup-CallForSpeakers.md ├── 2019-08-27-bazel-0.29.0.md ├── 2019-09-02-Testing-Bazel's-REAPI.md ├── 2019-09-03-BuildMeetup-London.md ├── 2019-09-29-intellij-bazel-sync.md ├── 2019-09-30-bazelcon-update.md ├── 2019-10-01-protobuf-updates.md ├── 2019-10-10-bazel-1.0.md ├── 2019-10-17-bazel-reaches-10-milestone.md ├── 2019-10-21-bazel-1.1.0.md ├── 2019-11-20-bazel-1.2.0.md ├── 2019-12-19-bazel-2.0.md ├── 2019-12-20-bazelcon-2019.md ├── 2020-01-21-bazelcon-videos.md ├── 2020-02-06-bazel-2.1.md ├── 2020-02-26-xcode-selection.md ├── 2020-03-03-bazel-2-2.md ├── 2020-03-31-bazel-3.0.md ├── 2020-04-21-bazel-3-1.md ├── 2020-05-27-bazel-3-2.md ├── 2020-06-17-bazel-3-3.md ├── 2020-07-13-bazel-3-4.md ├── 2020-08-26-bazel-3.5.md ├── 2020-10-06-bazel-3-6.md ├── 2020-10-20-bazel-3-7.md ├── 2020-11-10-bazel-4.0-announce.md ├── 2020-11-10-long-term-support-release.md ├── 2020-11-11-bazelcon-2020-registration.md ├── 2020-11-11-json-workers.md ├── 2020-11-12-aosp_migrating_to_bazel.md ├── 2021-01-19-bazel-4-0.md ├── 2021-02-08-rules-fuzzing.md ├── 2021-03-04-bazel-debian-packaging.md ├── 2021-05-21-bazel-4-1.md ├── 2021-06-15-bazel-rolling-releases.md ├── 2021-08-18-bazel-4.2.md ├── 2021-10-23-bazelcon-registration-2021.md ├── 2021-11-17-Remembering-Jon-Gerrish.md ├── 2022-01-19-bazel-5.0.md ├── 2022-02-17-Launching-new-Bazel-site.md ├── 2022-03-24-bazel-5.1.md ├── 2022-06-08-bazel-5.2.md ├── 2022-07-11-Bazel-IntelliJ-Update.md ├── 2022-08-03-bazel-community-roundup.md ├── 2022-08-23-bazel-5.3.md ├── 2022-09-08-bazel-community-roundup.md ├── 2022-11-15-build-performance-metrics.md ├── 2022-12-19-bazel-6.0.md ├── 2023-01-18-bcr-launch.md ├── 2023-01-26-call-for-docs-contributions.md ├── 2023-02-07-intellij-h2-2022-community-update.md ├── 2023-02-15-github-archive-checksum.md ├── 2023-02-24-cleanup-stale-issues.md ├── 2023-03-16-enable-github-discussion.md ├── 2023-03-28-bazel-q1-2023-community-update.md ├── 2023-04-25-intellij-q1-2023-community-update.md ├── 2023-05-25-save-the-date-bazelcon2023.md ├── 2023-07-19-bazel-partner.md ├── 2023-07-20-bazel-q2-2023-community-update.md ├── 2023-07-24-whats-new-with-bzlmod.md ├── 2023-10-06-bwob-in-bazel-7.md ├── 2023-10-10-bazel-q3-2023-community-update.md ├── 2023-11-15-android-platforms.md ├── 2023-11-23-bazelcon-2023-recap.md ├── 2023-12-11-bazel-7-release.md ├── 2024-03-18-intellij-q2-2023-q1-2024-community-update.md ├── 2024-04-01-bazel-q1-2024-community-update.md ├── 2024-04-29-bazelcon-save-the-date.md ├── 2024-07-22-bazel-q2-2024-community-update.md ├── 2024-07-23-remote-output-service.md ├── 2024-08-08-bazel-for-embedded.md ├── 2024-10-09-bazel-q3-2024-community-update.md ├── 2024-11-19-bazelcon-recap.md ├── 2024-12-09-bazel-8-release.md └── 2025-04-10-bazel-q1-2025-community-update.md ├── _sass ├── blog.scss ├── footer.scss ├── navbar.scss ├── syntax.scss └── tables.scss ├── archive.html ├── assets ├── BoF_2019_C++.pdf ├── BoF_2019_FrontEnd.pdf ├── BoF_2019_Java.pdf ├── BoF_2019_Python.pdf ├── BoF_2019_iOS.pdf ├── android_binary_graph.png ├── android_binary_graph_proguard.png ├── android_library_graph.png ├── android_resource_graph.png ├── bazel-code-search-file-view.png ├── bazel-code-search-main-screen.png ├── bazel-code-search-repo-view.png ├── bazel-code-search-suggestions.png ├── bazel-code-search-xref-levels.png ├── bazel-code-search-xref-pane.png ├── bazel-code-search-xref-underlined.png ├── bazel-hackathon.jpg ├── bazel-icon.png ├── bazel-q1-2025-bcr-modules.png ├── bazel-q2-2024-bazelcon.png ├── bazel-q2-2024-versioneddocs.png ├── bazel-queries.png ├── bazel-stickers.jpg ├── bazel8.png ├── bazel_aosp.jpg ├── bazelcon-2019.png ├── bazelcon24-savethedate.png ├── bcr-ui.png ├── blog-bazel-q2-2023-contributor-metrics.png ├── blog-docs-view-source.png ├── blog-intellij-h2-2022-maintenance-model.png ├── blog-intellij-h2-2022-partner.png ├── change-garlic.png ├── ctrl-w-tweet.png ├── dash-shell.png ├── dash.png ├── debian-logo.png ├── dirty-unmark.png ├── dirty.png ├── e4b-workflow.png ├── e4b-workflow.svg ├── edit-button.png ├── error_example_1.png ├── error_example_2.png ├── error_example_3.png ├── error_example_4.png ├── fullbuild.png ├── github-archives.png ├── github-discussions.png ├── graph.png ├── graph_hello-world.svg ├── home-screenshot.png ├── incbuild.png ├── json-trace-profile.png ├── logo-draft.png ├── lts_timeline.png ├── mobile-install-performance.svg ├── network-usage.png ├── proto_library-dep-graph.png ├── recipe.png ├── remote-output-service-image1.png ├── remote-output-service-image2.png ├── simple-graph.png ├── system-load-average.png ├── workers-memory-usage.png ├── ws-diamond.png ├── ws-line.png └── ws-multiline.png ├── css └── main.scss ├── feed.xml ├── images ├── Bazel6.0ReleaseBlogPost.png ├── bazel-icon.png ├── bazel-icon.svg ├── bazel-logo.png ├── bazel-logo.svg ├── bazel-navbar.png ├── bazel-navbar.svg ├── bazel-og-image.png ├── bazel-og-image.svg ├── favicon-16x16.png ├── favicon-32x32.png └── favicon.ico ├── index.html ├── scripts ├── BUILD ├── Dockerfile ├── cloudbuild.yaml ├── jekyll.bzl ├── jekyll_build.sh.tpl └── serve-docs.sh ├── search.html └── third_party ├── css ├── bootstrap │ ├── BUILD │ ├── LICENSE │ ├── README.md │ ├── css │ │ ├── bootstrap.css │ │ ├── bootstrap.css.map │ │ ├── bootstrap.min.css │ │ └── bootstrap.min.css.map │ └── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ ├── glyphicons-halflings-regular.woff │ │ └── glyphicons-halflings-regular.woff2 └── font_awesome │ ├── BUILD │ ├── LICENSE.mit │ ├── LICENSE.ofl │ ├── README.md │ ├── css │ ├── font-awesome.css │ └── font-awesome.min.css │ └── fonts │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 └── javascript └── bootstrap ├── BUILD ├── LICENSE ├── README.md └── js ├── bootstrap.js └── bootstrap.min.js /.bazelversion: -------------------------------------------------------------------------------- 1 | 8.0.0 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /bazel-* 2 | /.sass-cache 3 | /production 4 | *.swp 5 | .DS_Store 6 | MODULE.bazel.lock 7 | -------------------------------------------------------------------------------- /404.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | permalink: /404.html 4 | --- 5 | 6 | 404 - Page not found 7 | ==================== 8 | 9 |
10 | $ bazel build :what-you-were-looking-for
11 | ...............
12 | ERROR: no such page ':what-you-were-looking-for': BUILD file not found on package path.
13 | INFO: Elapsed time: 0.567s
14 | 
15 | -------------------------------------------------------------------------------- /BUILD: -------------------------------------------------------------------------------- 1 | load("@rules_pkg//pkg:tar.bzl", "pkg_tar") 2 | load("//scripts:jekyll.bzl", "jekyll_build") 3 | 4 | # Required to move the file from the external repo's execroot location 5 | # to the _sass location expected by the local css/main.scss imports. 6 | genrule( 7 | name = "style-common", 8 | srcs = ["@bazel_website//:_sass/style.scss"], 9 | outs = ["_sass/style.scss"], 10 | cmd = "cp $< $@", 11 | ) 12 | 13 | filegroup( 14 | name = "jekyll-srcs", 15 | srcs = glob( 16 | ["**/*"], 17 | exclude = [ 18 | ".git/**", 19 | "bazel-*/**", 20 | "BUILD", 21 | "MODULE.bazel", 22 | "*.py", 23 | "scripts/**", 24 | "*.swp", 25 | "LICENSE", 26 | "CONTRIBUTING.md", 27 | "production/**", 28 | "README.md", 29 | ], 30 | ) + [":style-common"], 31 | ) 32 | 33 | pkg_tar( 34 | name = "jekyll-files", 35 | srcs = [":jekyll-srcs"], 36 | strip_prefix = ".", 37 | ) 38 | 39 | pkg_tar( 40 | name = "bootstrap-css", 41 | srcs = ["//third_party/css/bootstrap:bootstrap_css"], 42 | package_dir = "assets", 43 | strip_prefix = "/third_party/css/bootstrap", 44 | ) 45 | 46 | pkg_tar( 47 | name = "bootstrap-images", 48 | srcs = ["//third_party/css/bootstrap:bootstrap_images"], 49 | package_dir = "assets", 50 | strip_prefix = "/third_party/css/bootstrap", 51 | ) 52 | 53 | pkg_tar( 54 | name = "font-awesome-css", 55 | srcs = ["//third_party/css/font_awesome:font_awesome_css"], 56 | package_dir = "assets", 57 | strip_prefix = "/third_party/css/font_awesome", 58 | ) 59 | 60 | pkg_tar( 61 | name = "font-awesome-font", 62 | srcs = ["//third_party/css/font_awesome:font_awesome_font"], 63 | package_dir = "assets", 64 | strip_prefix = "/third_party/css/font_awesome", 65 | ) 66 | 67 | pkg_tar( 68 | name = "bootstrap-js", 69 | srcs = ["//third_party/javascript/bootstrap:bootstrap_js"], 70 | package_dir = "assets", 71 | strip_prefix = "/third_party/javascript/bootstrap", 72 | ) 73 | 74 | pkg_tar( 75 | name = "jekyll-tree", 76 | deps = [ 77 | ":bootstrap-css", 78 | ":bootstrap-images", 79 | ":bootstrap-js", 80 | ":font-awesome-css", 81 | ":font-awesome-font", 82 | ":jekyll-files", 83 | ], 84 | ) 85 | 86 | jekyll_build( 87 | name = "site", 88 | srcs = [":jekyll-tree"], 89 | ) 90 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @fweikert @jin @aiuto @meteorcloudy @keertk 2 | 3 | /_posts/ @meisterT @meteorcloudy 4 | /scripts/ @fweikert @meteorcloudy 5 | /css/ @fweikert @meteorcloudy 6 | /third_party/ @fweikert @meteorcloudy 7 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to Contribute 2 | 3 | We'd love to accept your patches and contributions to this project. There are 4 | just a few small guidelines you need to follow. 5 | 6 | ## Contributor License Agreement 7 | 8 | Contributions to this project must be accompanied by a Contributor License 9 | Agreement. You (or your employer) retain the copyright to your contribution, 10 | this simply gives us permission to use and redistribute your contributions as 11 | part of the project. Head over to to see 12 | your current agreements on file or to sign a new one. 13 | 14 | You generally only need to submit a CLA once, so if you've already submitted one 15 | (even if it was for a different project), you probably don't need to do it 16 | again. 17 | 18 | ## Reviews 19 | 20 | All submissions, including submissions by project members, require review. We 21 | use GitHub pull requests for this purpose. Consult 22 | [GitHub Help](https://help.github.com/articles/about-pull-requests/) for more 23 | information on using pull requests. 24 | -------------------------------------------------------------------------------- /MODULE.bazel: -------------------------------------------------------------------------------- 1 | module(name = "build_bazel_blog") 2 | 3 | bazel_dep(name = "rules_pkg", version = "1.0.1") 4 | 5 | http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 6 | 7 | http_archive( 8 | name = "bazel_website", 9 | urls = [ 10 | "https://github.com/bazelbuild/bazel-website/archive/c174fa288aa079b68416d2ce2cc97268fa172f42.tar.gz" 11 | ], 12 | sha256 = "a5f531dd1d62e6947dcfc279656ffc2fdf6f447c163914c5eabf7961b4cb6eb4", 13 | strip_prefix = "bazel-website-c174fa288aa079b68416d2ce2cc97268fa172f42", 14 | # TODO(https://github.com/bazelbuild/bazel/issues/10793) 15 | # - Export files from bazel-website's BUILD, instead of doing it here. 16 | # - Share more common stylesheets, like footer and navbar. 17 | build_file_content = """ 18 | exports_files([\"_sass/style.scss\"]) 19 | """, 20 | ) 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Bazel blog 2 | 3 | This repository hosts the content of the [Bazel](https://bazel.build) blog, available at https://blog.bazel.build/ 4 | 5 | ## Writing a new blog post 6 | 7 | Send a Pull Request adding a file to [https://github.com/bazelbuild/bazel-blog/tree/master/_posts](https://github.com/bazelbuild/bazel-blog/tree/master/_posts) 8 | using the following filename format: `---.md` This filename format 9 | is required by the Jekyll processor. 10 | 11 | Begin your post with the following lines: 12 | 13 | ``` 14 | --- 15 | layout: posts 16 | title: <whatever> 17 | authors: 18 | - username1 # See _config.yml for the list of authors. 19 | - username2 20 | --- 21 | ``` 22 | 23 | If you omit the layout, the blog post will not be formatted properly. If you 24 | omit the title, it won't have a title. 25 | 26 | Write the body of your post below the "---". If you have headers in your post, 27 | use H2 and smaller headers (in makedown H2 is denoted by `##`). 28 | 29 | ## Prerequisites 30 | 31 | To build the site, you will need [Jekyll](http://jekyllrb.com) version 2.5.3 or 32 | above. For instance, it can be installed with `apt-get install jekyll` on recent 33 | Ubuntu (tested on 16.10). 34 | 35 | To deploy the site, you will need [gsutil](https://cloud.google.com/storage/docs/gsutil) 36 | and to authenticate with `gcloud auth login`. 37 | 38 | ### Using Docker container 39 | 40 | Or you can run a Docker container to avoid setting up Jekyll locally: 41 | 42 | ``` 43 | docker run --rm -it --entrypoint bash -v <path-to-bazel-blog>:/opt -w /opt -p 4000:4000 gcr.io/bazel-public/docgen 44 | ``` 45 | 46 | ## Running the website locally 47 | 48 | To stage the site, run `bazel run //:site`. 49 | 50 | See [the Jekyll site](http://jekyllrb.com/docs) if you need more info. 51 | 52 | ## Deploying the website 53 | 54 | The website is deployed automatically after new commits are merged into the `master` branch. 55 | The update time is around 30 mins - ping (bazel-dev@googlegroups.com) in case of problems. 56 | -------------------------------------------------------------------------------- /_includes/blog-sidebar.html: -------------------------------------------------------------------------------- 1 | <div class="col-lg-3 hidden-sm hidden-xs"> 2 | <h2>Twitter</h2> 3 | <p>For more frequent updates, follow us on Twitter.</p> 4 | <p><a class="twitter-follow-button" href="https://twitter.com/bazelbuild" data-show-count="false" data-size="large">Follow @bazelbuild</a></p> 5 | <h2>Discuss</h2> 6 | <p>Join the discussion on our <a href="https://groups.google.com/forum/#!forum/bazel-discuss">mailing list</a>.</p> 7 | <h2>Subscribe</h2> 8 | <p>Subscribe to our blog via the <a rel="alternate" type="application/rss+xml" href="/feed.xml">RSS Feed</a>. 9 | <h2>Contribute</h2> 10 | <p>The source for this blog can be found on <a href="https://github.com/bazelbuild/bazel-blog">GitHub</a>.</p> 11 | <h2>Archive</h2> 12 | <p>Looking for a specific post? Find it on the <a href="/archive.html">Archive</a> page.</p> 13 | </div> 14 | -------------------------------------------------------------------------------- /_includes/blog-twitter-js.html: -------------------------------------------------------------------------------- 1 | <!-- 2 | JavaScript used by the Follow @bazelbuild on Twitter button on the blog sidebar. 3 | Code from: https://dev.twitter.com/web/follow-button 4 | --> 5 | 6 | <script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script> 7 | -------------------------------------------------------------------------------- /_includes/byline.html: -------------------------------------------------------------------------------- 1 | {% comment %} 2 | This include generates the byline of a post, which includes the post's date 3 | and the list of authors. The input parameters "date" and "authors" must be 4 | populated with the post's corresponding Front Matter fields. 5 | {% endcomment %} 6 | 7 | By 8 | {% assign last_pos=include.authors.size | minus: 1 %} 9 | {% assign and_pos=include.authors.size | minus: 2 %} 10 | {% for i in (0..last_pos) %} 11 | {% assign author_id=include.authors[i] %} 12 | {% assign author=site.authors[author_id] %} 13 | 14 | {% if author %} 15 | <a href="{{ author[1] }}">{{ author[0] }}</a> 16 | {% else %} 17 | {% comment %} 18 | We found an invalid author. There is not much we can do other than just 19 | dump the raw text. Do so and hope the author notices. 20 | {% endcomment %} 21 | {{ author_id }} 22 | {% endif %} 23 | {% if i == and_pos %} 24 | and 25 | {% elsif i < and_pos %} 26 | , 27 | {% endif %} 28 | {% endfor %} 29 | 30 | on <span class="text-muted">{{ include.date | date_to_long_string }}</span> 31 | -------------------------------------------------------------------------------- /_includes/footer-content.html: -------------------------------------------------------------------------------- 1 | <div class="container"> 2 | <div class="row"> 3 | <div class="col-sm-4 col-md-2"> 4 | <p>About</p> 5 | <ul class="list-unstyled"> 6 | <li><a href="https://github.com/bazelbuild/bazel/wiki/Bazel-Users">Who's Using Bazel?</a></li> 7 | <li><a href="{{ site.main_site_url }}/roadmap.html">Roadmap</a></li> 8 | <li><a href="{{ site.main_site_url }}/contributing.html">Contribute</a></li> 9 | <li><a href="{{ site.main_site_url }}/governance.html">Governance Plan</a></li> 10 | <li><a href="https://policies.google.com/privacy">Privacy Policy</a></li> 11 | </ul> 12 | </div> 13 | <div class="col-sm-4 col-md-2"> 14 | <p>Support</p> 15 | <ul class="list-unstyled"> 16 | <li><a href="http://stackoverflow.com/questions/tagged/bazel">Stack Overflow</a></li> 17 | <li><a href="https://github.com/bazelbuild/bazel/issues">Issue Tracker</a></li> 18 | <li><a href="{{ site.new_docs_site_url }}">Documentation</a></li> 19 | <li><a href="{{ site.main_site_url }}/faq.html">FAQ</a></li> 20 | <li><a href="{{ site.main_site_url }}/support.html">Support Policy</a></li> 21 | </ul> 22 | </div> 23 | <div class="col-sm-4 col-md-2"> 24 | <p>Stay Connected</p> 25 | <ul class="list-unstyled"> 26 | <li><a href="https://twitter.com/bazelbuild">Twitter</a></li> 27 | <li><a href="{{ site.blog_site_url }}">Blog</a></li> 28 | <li><a href="https://github.com/bazelbuild/bazel">GitHub</a></li> 29 | <li><a href="https://groups.google.com/forum/#!forum/bazel-discuss">Discussion group</a></li> 30 | </ul> 31 | </div> 32 | </div> 33 | <div class="row"> 34 | <div class="col-lg-12"> 35 | <p class="text-muted">© {{ 'now' | date: "%Y" }} Google</p> 36 | </div> 37 | </div> 38 | </div> 39 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 | <footer class="footer"> 2 | {% include footer-content.html %} 3 | </footer> 4 | 5 | <!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 6 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 7 | <!-- Include all compiled plugins (below), or include individual files as needed --> 8 | <script src="/assets/js/bootstrap.min.js"></script> 9 | 10 | <script> 11 | var shiftWindow = function() { 12 | if (location.hash.length !== 0) { 13 | window.scrollBy(0, -50); 14 | } 15 | }; 16 | window.addEventListener("hashchange", shiftWindow); 17 | 18 | var highlightCurrentSidebarNav = function() { 19 | var href = location.pathname; 20 | var item = $('#sidebar-nav [href$="' + href + '"]'); 21 | if (item) { 22 | var li = item.parent(); 23 | li.addClass("active"); 24 | 25 | if (li.parent() && li.parent().is("ul")) { 26 | do { 27 | var ul = li.parent(); 28 | if (ul.hasClass("collapse")) { 29 | ul.collapse("show"); 30 | } 31 | li = ul.parent(); 32 | } while (li && li.is("li")); 33 | } 34 | } 35 | }; 36 | 37 | $(document).ready(function() { 38 | // Scroll to anchor of location hash, adjusted for fixed navbar. 39 | window.setTimeout(function() { 40 | shiftWindow(); 41 | }, 1); 42 | 43 | // Flip the caret when submenu toggles are clicked. 44 | $(".sidebar-submenu").on("show.bs.collapse", function() { 45 | var toggle = $('[href$="#' + $(this).attr('id') + '"]'); 46 | if (toggle) { 47 | toggle.addClass("dropup"); 48 | } 49 | }); 50 | $(".sidebar-submenu").on("hide.bs.collapse", function() { 51 | var toggle = $('[href$="#' + $(this).attr('id') + '"]'); 52 | if (toggle) { 53 | toggle.removeClass("dropup"); 54 | } 55 | }); 56 | 57 | // Highlight the current page on the sidebar nav. 58 | highlightCurrentSidebarNav(); 59 | }); 60 | </script> 61 | 62 | <!-- Google Analytics tracking code --> 63 | <script> 64 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 65 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 66 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 67 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 68 | 69 | ga('create', 'UA-61082125-1', 'auto'); 70 | ga('send', 'pageview'); 71 | </script> 72 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | <head> 2 | <meta charset="utf-8"> 3 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> 4 | <meta name="viewport" content="width=device-width, initial-scale=1"> 5 | <title>{{ page.title }} - Bazel 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- 1 | 63 | -------------------------------------------------------------------------------- /_layouts/blog.html: -------------------------------------------------------------------------------- 1 | --- 2 | nav: blog 3 | --- 4 | 5 | 6 | 7 | {% include head.html %} 8 | 9 | {% include header.html %} 10 | 11 |
12 |
13 |

Bazel Blog

14 |
15 |
16 | 17 |
18 |
19 |
20 | {{ content }} 21 | 22 | 49 |
50 | {% include blog-sidebar.html %} 51 |
52 |
53 | 54 | {% include footer.html %} 55 | {% include blog-twitter-js.html %} 56 | 57 | 58 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include head.html %} 4 | 5 | {% include header.html %} 6 | 7 | {% if page.title %} 8 |
9 |
10 |

{{ page.title }}

11 |
12 |
13 | {% endif %} 14 | 15 |
16 | {{ content }} 17 |
18 | 19 | {% include footer.html %} 20 | 21 | 22 | -------------------------------------------------------------------------------- /_layouts/posts.html: -------------------------------------------------------------------------------- 1 | --- 2 | nav: blog 3 | --- 4 | 5 | 6 | 7 | 8 | {% include head.html %} 9 | 10 | {% include header.html %} 11 | 12 |
13 |
14 |

Bazel Blog

15 |
16 |
17 | 18 |
19 |
20 |
21 |
22 |

{{ page.title }}

23 | 26 |
27 | {{ content }} 28 |
29 | {% if page.enable_comments %} 30 |
31 |
32 | 41 | 42 |
43 | {% endif %} 44 |
45 |
46 | {% include blog-sidebar.html %} 47 |
48 |
49 | 50 | {% include footer.html %} 51 | {% include blog-twitter-js.html %} 52 | 53 | 54 | 55 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /_plugins/svg_mime_type.rb: -------------------------------------------------------------------------------- 1 | require 'webrick' 2 | include WEBrick 3 | WEBrick::HTTPUtils::DefaultMimeTypes.store 'svg', 'image/svg+xml' 4 | -------------------------------------------------------------------------------- /_posts/2015-03-27-Hello-World.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Hello World 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | Welcome to the Bazel blog! We'll be using this forum for news and 9 | announcements. 10 | -------------------------------------------------------------------------------- /_posts/2015-04-06-Simplified-Workspace-Creation.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Announcing simplified workspace creation 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | To create a new workspace, you can now simply create an empty `WORKSPACE` file 9 | in a directory. 10 | 11 | Previously, you'd need to copy or symlink the `tools` directory into your 12 | project, which was unpopular: 13 | 14 | 15 | 'move my-project/ to be a subdirectory of base_workspace/' Ok. Ctrl-W. 16 | 17 | [Miguel Alcon](https://github.com/mikelalcon) came up with a great idea for 18 | making this process simpler. Now the `compile.sh` script will create a 19 | `.bazelrc` file in your home directory which tells Bazel where `compile.sh` was 20 | run from and, thus, where it can find its tools when you build. 21 | 22 | To use this new functionality, get the latest version of the code from Github, 23 | run `./compile.sh`, and then create a Bazel workspace by running 24 | `touch WORKSPACE` in any directory. 25 | 26 | Some caveats to watch out for: 27 | 28 | * If you move the directory where Bazel was built you will need to 29 | update your `~/.bazelrc` file. 30 | * If you would like to use different tools than the ones `compile.sh` 31 | finds/generates, you can create a `tools/` directory in your project and 32 | Bazel will attempt to use that instead of the system-wide one. 33 | 34 | See the [getting started]({{ site.docs_site_url }}/getting-started.html) docs for more info about 35 | setting up your workspace. 36 | 37 | Let us know if you have any questions or issues on the 38 | [mailing list](https://groups.google.com/forum/#!forum/bazel-discuss) or 39 | [GitHub](https://github.com/bazelbuild/bazel). 40 | -------------------------------------------------------------------------------- /_posts/2015-04-10-bash-completion.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Support for Bash Shell Completion 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | We just pushed a support for [shell completion in the Bourne-Again 9 | Shell](https://www.gnu.org/software/bash/manual/html_node/Programmable-Completion.html). 10 | It eases the use of Bazel by expanding its commands and the targets to build. 11 | 12 | To use this new functionality, build the `//scripts:bash_completion` target 13 | from the Bazel repository: 14 | ``` 15 | bazel build //scripts:bash_completion 16 | ``` 17 | 18 | This will create a `bazel-bin/scripts/bazel-complete.bash` completion script. 19 | You can copy then copy this script to your completion directory 20 | (`/etc/bash_completion.d` in Ubuntu). If you don't want to install it globally 21 | or don't have such a directory, simply add the following line to your 22 | `~/.bashrc` or `~/.bash_profile` (the latter is the recommended for OS X): 23 | ``` 24 | source /path/to/bazel/bazel-bin/scripts/bazel-complete.bash 25 | ``` 26 | 27 | After that you should be able to type the tab key after the `bazel` 28 | command in your shell and see the list of possible completions. 29 | 30 | If you are interested in supporting other shells, the script is made up 31 | of two parts: 32 | 33 | 1. [`scripts/bazel-complete-header.bash`](https://github.com/bazelbuild/bazel/blob/master/scripts/bazel-complete-template.bash) 34 | is the completion logic. 35 | 2. `bazel help completion` dumps the list of commands of Bazel, their options 36 | and for commands and options that expect a value, a description of what is 37 | expected. This description is either: 38 | 39 | * an enum of values enclosed into brackets, e.g., `{a,b,c}`; 40 | * a type description, currently one of: 41 | 42 | * `label`, `label-bin`, `label-test`, `label-package` for 43 | a Bazel label for, respectively, a target, a runnable target, 44 | a test, and a package, 45 | * `path` for a filesystem path, 46 | * `info-key` for one of the information keys as listed by `bazel info`; 47 | 48 | * a combination of possible values using `|` as a separator, e.g, 49 | `path|{or,an,enum}'`. 50 | 51 | Let us know if you have any questions or issues on the 52 | [mailing list](https://groups.google.com/forum/#!forum/bazel-discuss) or 53 | [GitHub](https://github.com/bazelbuild/bazel). 54 | -------------------------------------------------------------------------------- /_posts/2015-04-15-share-your-project.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Tell us about your Bazel project! 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | We're setting up a list of projects using Bazel. If you'd like us 9 | to list your project on [bazel.build](http://bazel.build), 10 | [send us](https://groups.google.com/d/msg/bazel-discuss/5XaCYQOdN8o/DHE9H4ygHiYJ) 11 | the following information: 12 | 13 | 1. The project's name. 14 | 2. The language(s) it's using. 15 | 3. Whether it uses Bazel + another build system or just Bazel. 16 | 4. Any nice surprises/blockers you've run into using Bazel. 17 | 5. Any other info or comments you have! 18 | 19 | If you don't want your project publicly listed, we'd still love to hear about 20 | it. Please [email us](mailto:bazel-core@googlegroups.com) directly and let us know. 21 | -------------------------------------------------------------------------------- /_posts/2015-04-22-thank-you-stickers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Stickers for Contributors 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | Bazel stickers 9 | 10 | We just got Bazel stickers and we'd like to send them to all of the people who 11 | have sent us pull requests and patches over the last month. If you'd like 12 | some stickers, please [send us](mailto:kchodorow@google.com?subject=Send me stickers!) 13 | your Github username and mailing address. 14 | 15 | Let us know if you've done any of the following and we'll send you stickers: 16 | 17 | * Gone through a Gerrit code review. 18 | * Opened a pull request on GitHub. 19 | * Sent us a patch on the mailing list. 20 | * Are in the process of doing any of the things above. 21 | 22 | Thanks for your contributions, we really appreciate them. 23 | -------------------------------------------------------------------------------- /_posts/2015-06-17-visualize-your-build.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Visualize your build 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | _Reposted from 9 | [Kristina Chodorow's blog](http://www.kchodorow.com/blog/2015/04/24/have-you-ever-looked-at-your-build-i-mean-really-looked-at-your-build/)._ 10 | 11 | Bazel lets you see a graph of your build dependencies. It _could_ help you 12 | debug things, but honestly it's just really cool to see what your build is doing. 13 | 14 | To try it out, you'll need a project that uses Bazel to build. If you don't 15 | have one handy, 16 | [here's a tiny workspace](https://github.com/kchodorow/tiny-workspace) you can 17 | use: 18 | 19 | ```bash 20 | $ git clone https://github.com/kchodorow/tiny-workspace.git 21 | $ cd tiny-workspace 22 | ``` 23 | 24 | Make sure you've 25 | [downloaded and installed Bazel]({{ site.docs_site_url }}/install.html) and have the 26 | following line to your _~/.bazelrc_: 27 | 28 | ``` 29 | query --package_path %workspace%:[path to bazel]/base_workspace 30 | ``` 31 | 32 | Now run `bazel query` in your _tiny-workspace/_ directory, asking it to search 33 | for all dependencies of `//:main` and format the output as a graph: 34 | 35 | ```bash 36 | $ bazel query 'deps(//:main)' --output graph > graph.in 37 | ``` 38 | 39 | This creates a file called _graph.in_, which is a text representation of the 40 | build graph. You can use `dot` (install with `sudo apt-get install graphviz`) 41 | to create a png from this: 42 | 43 | ```bash 44 | $ dot -Tpng < graph.in > graph.png 45 | ``` 46 | 47 | If you open up _graph.png_, you should see something like this: 48 | 49 | 50 | 51 | You can see `//:main` depends on one file (`//:main.cc`) and four targets 52 | (`//:x`, `//tools/cpp:stl`, `//tools/default:crosstool`, and 53 | `//tools/cpp:malloc`). All of the `//tools` targets are implicit dependencies 54 | of any C++ target: every C++ build you do needs the right compiler, flags, and 55 | libraries available, but it crowds your result graph. You can exclude these 56 | implicit dependencies by removing them from your query results: 57 | 58 | ```bash 59 | $ bazel query --noimplicit_deps 'deps(//:main)' --output graph > simplified_graph.in 60 | ``` 61 | 62 | Now the resulting graph is just: 63 | 64 | 65 | 66 | Much neater! 67 | 68 | If you're interested in further refining your query, check out the 69 | [docs on querying]({{ site.docs_site_url }}/query.html). 70 | -------------------------------------------------------------------------------- /_posts/2015-06-25-ErrorProne.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Checking your Java errors with Error Prone. 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | We recently open-sourced our support for [Error Prone](http://errorprone.info). 9 | [Error Prone](http://errorprone.info) checks for common mistakes in Java code 10 | that will not be caught by the compiler. 11 | 12 | We turned [Error Prone](http://errorprone.info) on by default but you can 13 | easily turn it off by using the Javac option `--extra_checks:off`. To do so, 14 | simply specify `--javacopt='-extra_checks:off'` to the list of Bazel's options. 15 | You can also tune the checks error-prone will perform by using the 16 | [`-Xep:` flags](http://errorprone.info/docs/flags). 17 | 18 | See the [documentation of Error Prone](http://errorprone.info/docs/installation) for more 19 | on Error Prone. 20 | -------------------------------------------------------------------------------- /_posts/2015-07-01-Configuration-File.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Sharing your rc files 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | You can customize the options Bazel runs with in your `~/.bazelrc`, but 9 | that doesn't scale when you share your workspace with others. 10 | 11 | For instance, you could de-activate [Error Prone](https://errorprone.info)'s 12 | [DepAnn](https://errorprone.info/bugpattern/DepAnn) checks by adding the 13 | `--javacopt="-Xep:DepAnn:OFF"` flag in your `~/.bazelrc`. However, `~/.bazelrc` 14 | is not really convenient as it a user file, not shared with 15 | your team. You could instead add a rc file at `tools/bazel.rc` in your workspace 16 | with the content of the bazelrc file you want to share with your team: 17 | 18 | ``` 19 | build --javacopt="-Xep:DepAnn:OFF" 20 | ``` 21 | 22 | This file, called a master rc file, is parsed before the user rc file. There is 23 | three paths to master rc files that are read in the following order: 24 | 25 | 1. `tools/bazel.rc` (depot master rc file), 26 | 2. `/path/to/bazel.bazelrc` (alongside bazel rc file), and 27 | 3. `/etc/bazel.bazelrc` (system-wide bazel rc file). 28 | 29 | The complete documentation on rc file is [here](https://docs.bazel.build/versions/master/guide#bazelrc). 30 | -------------------------------------------------------------------------------- /_posts/2015-07-08-Java-Configuration.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Configuring your Java builds 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | Let say that you want to build for Java 8 and errorprone checks off but 9 | keep the tools directory provided with Bazel in the package path, you could do 10 | that by having the following rc file: 11 | 12 | ``` 13 | build --javacopt="-extra_checks:off" 14 | build --javacopt="-source 8" 15 | build --javacopt="-target 8" 16 | ``` 17 | 18 | However, the file would becomes quickly overloaded, especially if you take 19 | all languages and options into account. Instead, you can tweak the 20 | [java_toolchain](https://github.com/bazelbuild/bazel/tree/0e1680e58f01f3d443f7e68865b5a56b76c9dadf/tools/jdk/BUILD#L73) 21 | rule that specifies the various options for the java compiler. So in a 22 | BUILD file: 23 | 24 | ```python 25 | java_toolchain( 26 | name = "my_toolchain", 27 | encoding = "UTF-8", 28 | source_version = "8", 29 | target_version = "8", 30 | misc = [ 31 | "-extra_checks:on", 32 | ], 33 | ) 34 | ``` 35 | 36 | And to keep it out of the tools directory (or you need to copy the rest 37 | of the package), you can redirect the default one in a bazelrc: 38 | 39 | ``` 40 | build --java_toolchain=//package:my_toolchain 41 | ``` 42 | 43 | In the future, toolchain rules should be the configuration points for all 44 | the languages but it is a long road. We also want to make it easier to 45 | rebind the toolchain using the `bind` rule in the WORKSPACE file. 46 | -------------------------------------------------------------------------------- /_posts/2015-07-23-tree-trimming.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Trimming your (build) tree 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | _Reposted from [@kchodorow's blog](http://www.kchodorow.com/blog/2015/07/23/trimming-the-build-tree-with-bazel/)._ 9 | 10 | [Jonathan Lange](https://twitter.com/mumak) wrote a [great blog 11 | post](https://jml.io/2015/07/bazel-correct-reproducible-fast-builds.html) about 12 | how Bazel caches tests. Basically: if you run a test, change your code, then run 13 | a test again, the test will only be rerun if you changed something that could 14 | actually change the outcome of the test. Bazel takes this concept pretty far to 15 | minimize the work your build needs to do, in some ways that aren't immediately 16 | obvious. 17 | 18 | Let's take an example. Say you're using Bazel to "build" rigatoni arrabiata, 19 | which could be represented as having the following dependencies: 20 | 21 | 22 | 23 | Each food is a library which depends on the libraries below it. Suppose you 24 | change a dependency, like the garlic: 25 | 26 | 27 | 28 | Bazel will stat the files of the "garlic" library and notice this change, and 29 | then make a note that the things that depend on "garlic" may have also changed: 30 | 31 | 32 | 33 | The fancy term for this is "invalidating the upward transitive closure" of the 34 | build graph, aka "everything that depends on a thing might be dirty." Note that 35 | Bazel already knows that this change doesn't affect several of the libraries 36 | (rigatoni, tomato-puree, and red-pepper), so they definitely don't have to be 37 | rebuilt. 38 | 39 | Bazel will then evaluate the "sauce" node and figures out if its output has 40 | changed. This is where the secret sauce (ha!) happens: if the output of the 41 | "sauce" node hasn't changed, Bazel knows that it doesn't have to recompile 42 | rigatoni-arrabiata (the top node), because none of its direct dependencies 43 | changed! 44 | 45 | 46 | 47 | The sauce node is no longer “maybe dirty” and so its reverse dependencies 48 | (rigatoni-arrabiata) can also be marked as clean. 49 | 50 | In general, of course, changing the code for a library will change its compiled 51 | form, so the "maybe dirty" node will end up being marked as "yes, dirty" and 52 | re-evaluated (and so on up the tree). However, Bazel's build graph lets you 53 | compile the bare minimum for a well-structured library, and in some cases avoid 54 | compilations altogether. 55 | -------------------------------------------------------------------------------- /_posts/2015-07-28-docker_build.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Building deterministic Docker images with Bazel 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | [Docker](https://www.docker.com) images are great to automate your deployment 9 | environment. By composing base images, you can create an (almost) reproducible 10 | environment and, using an appropriate cloud service, easily deploy those 11 | image. However, V1 Docker build suffers several issues: 12 | 13 | 1. Docker images are non-hermetic as they can run any command, 14 | 2. Docker images are non-reproducible: each "layer" identifier is a **random** 15 | hex string (and not cryptographic hash of the layer content), and 16 | 3. Docker image builds are not incremental since Docker assumes that `RUN foo` 17 | always does the same thing. 18 | 19 | Googlers working on [Google Container Registry](https://gcr.io) developed a support 20 | for building reproducible Docker images using Skylark / Bazel that address these 21 | problems. We recently [shipped](https://github.com/bazelbuild/bazel/commit/5f25891bb17d19cb1208ddad1e88cc4bb4a56782) 22 | it. 23 | 24 | Of course, it does not support `RUN` command, but the rule also strips 25 | timestamps of the tar file and use a SHA sum that is function of the layer 26 | data as layer identifier. This ensure reproducibility and correct 27 | incrementality. 28 | 29 | To use it, simply creates your images using the BUILD language: 30 | 31 | ```python 32 | load("/tools/build_defs/docker/docker", "docker_build") 33 | 34 | docker_build( 35 | name = "foo", 36 | tars = [ "base.tar" ], 37 | ) 38 | 39 | docker_build( 40 | name = "bar", 41 | base = ":foo", 42 | debs = [ "blah.deb" ], 43 | files = [ ":bazinga" ], 44 | volumes = [ "/asdf" ], 45 | ) 46 | ``` 47 | 48 | This will generate two docker images loadable with `bazel run :foo` and `bazel 49 | run :bar`. The `foo` target is roughly equivalent to the following Dockerfile: 50 | 51 | ``` 52 | FROM bazel/base 53 | ``` 54 | 55 | And the `bar` target is roughly equivalent to the following Dockerfile: 56 | 57 | ``` 58 | FROM bazel/foo 59 | RUN dpkg -i blah.deb 60 | ADD bazinga / 61 | VOLUMES /asdf 62 | ``` 63 | 64 | Using [remote repositories]({{ site.docs_site_url }}/external.html), it is possible 65 | to fetch the various base image for the web and we are working on providing a 66 | `docker_pull` rule to interact more fluently with existing images. 67 | 68 | You can learn more about this docker support 69 | [here](https://github.com/bazelbuild/rules_docker/blob/master/README.md). 70 | -------------------------------------------------------------------------------- /_posts/2015-07-29-dashboard-dogfood.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Build dashboard dogfood 4 | authors: 5 | - kchodorow 6 | --- 7 | 8 | __WARNING__: This feature has been removed (2017-04-19). 9 | 10 | We've added a basic dashboard where you can see and share build and test 11 | results. It's not ready for an official release yet, but if any adventurous 12 | people would like to try it out (and please report any issues you find!), feel 13 | free to give it a try. 14 | 15 | 16 | 17 | First, you'll need to download or clone [the dashboard project](https://github.com/bazelbuild/dash). 18 | 19 | Run `bazel build :dash && bazel-bin/dash` and add 20 | this line to your `~/.bazelrc`: 21 | 22 | ``` 23 | build --use_dash --dash_url=http://localhost:8080 24 | ``` 25 | 26 | Note that the `bazel build` will take a long time to build the first time (the 27 | dashboard uses the AppEngine SDK, which is ~160MB and has to be downloaded). 28 | The "dash" binary starts up a local server that listens on 8080. 29 | 30 | With `--use_dash` specified, every build or test will publish info and logs to 31 | http://localhost:8080/ (each build will print a unique URL to visit). 32 | 33 | 34 | 35 | See [the README](https://github.com/bazelbuild/dash/blob/master/README.md) 36 | for documentation. 37 | 38 | This is very much a work in progress. Please let us know if you have any 39 | questions, comments, or feedback. 40 | -------------------------------------------------------------------------------- /_posts/2015-09-01-beta-release.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel Builder Blasts Beyond Beta Barrier 4 | authors: 5 | - jeffcox 6 | --- 7 | 8 | _Reposted from [Google's Open Source blog](http://google-opensource.blogspot.com/2015/09/building-build-system-bazel-reaches-beta.html)._ 9 | 10 | We're excited to announce the Beta release of [Bazel](http://bazel.build), an [open 11 | source](https://github.com/bazelbuild/bazel) build system designed to support a 12 | wide variety of different programming languages and platforms. 13 | 14 | There are lots of other build systems out there -- Maven, Gradle, Ant, Make, and 15 | CMake just to name a few. So what's special about Bazel? Bazel is what we use to 16 | build the large majority of software within Google. As such, it has been 17 | designed to handle build problems specific to Google's development environment, 18 | including a massive, shared code repository in which all software is built from 19 | source, a heavy emphasis on automated testing and release processes, and 20 | language and platform diversity. Bazel isn't right for every use case, but we 21 | believe that we're not the only ones facing these kinds of problems and we want 22 | to contribute what we've learned so far to the larger developer community. 23 | 24 | Our beta release provides: 25 | 26 | * Binary releases for 27 | [Linux and OS X](https://github.com/bazelbuild/bazel/releases). 28 | * Support for building and testing C++, Java, Python, Rust, 29 | [and more]({{ site.docs_site_url }}/be/overview.html). 30 | * Support for building Docker images, Android apps, and iOS apps. 31 | * Support for using libraries from 32 | [Maven, GitHub, and more]({{ site.docs_site_url }}/external.html). 33 | * [A robust API]({{ site.docs_site_url }}/skylark/index.html) for adding your own 34 | build rules. 35 | 36 | Check out the tutorails for working examples using several languages: 37 | * [Build a Java Project]({{ site.docs_site_url }}/tutorial/java.html) 38 | * [Build a C++ Project]({{ site.docs_site_url }}/tutorial/cpp.html) 39 | * [Build an Android App]({{ site.docs_site_url }}/tutorial/android-app.html) 40 | * [Build an iOS App]({{ site.docs_site_url }}/tutorial/ios-app.html) 41 | 42 | We still have a long way to go. Looking ahead towards our 1.0.0 release, we 43 | plan to provide Windows support, distributed caching, and Go support among other 44 | features. See our [roadmap](http://bazel.build/roadmap.html) for more details 45 | and follow our [blog](http://bazel.build/blog) or 46 | [Twitter](https://twitter.com/bazelbuild) account for regular updates. Feel 47 | free to contact us with questions or feedback on the 48 | [mailing list](https://groups.google.com/forum/#!forum/bazel-discuss) or IRC 49 | (#bazel on freenode). 50 | -------------------------------------------------------------------------------- /_posts/2015-09-11-sandboxing.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: About Sandboxing 4 | authors: 5 | - ulfjack 6 | - philwo 7 | --- 8 | 9 | *This post was updated on 2017-12-19 to remove outdated information that caused 10 | frequent misunderstanding of Bazel's sandboxing feature.* 11 | 12 | We've only added sandboxing to Bazel two weeks ago, and we've already seen a 13 | flurry of fixes to almost all of the rules to conform with the additional 14 | restrictions imposed by it. 15 | 16 | ## What is sandboxing? 17 | Sandboxing is the technique of restricting the access rights of a process. In 18 | the context of Bazel, we're mostly concerned with restricting file system 19 | access. More specifically, Bazel's file system sandbox will run processes in 20 | a working directory that only contains known inputs, such that compilers and 21 | other tools can't even see source files they should not access, unless they 22 | know the absolute paths to them. 23 | 24 | Note that sandboxing does not try to hide the host environment in any way. 25 | Processes can freely access all files on the file system. However we try to 26 | prevent them from modifying any files outside their working directory. This 27 | requires platform-specific features though and is only available on newer 28 | Linux versions that support user namespaces and on macOS. 29 | 30 | 31 | ## Why are we sandboxing in Bazel? 32 | We believe that developers should never have to worry about correctness, and 33 | that every build should result in the same output, regardless of the current 34 | state of the output tree. If a compiler or tool reads a file without Bazel 35 | knowing it, then Bazel won't rerun the action if that file has changed, leading 36 | to incorrect incremental builds. 37 | 38 | We would also like to support remote caching in Bazel, where incorrect reuse of 39 | cache entries is even more of a problem than on the local machine. A bad cache 40 | entry in a shared cache affects every developer on the project, and the 41 | equivalent of 'bazel clean', namely wiping the entire remote cache, rather 42 | defeats the purpose. 43 | 44 | In addition, sandboxing is closely related to remote execution. If the build 45 | works well with sandboxing, then it will likely work well with remote 46 | execution - if we know all the inputs, we can just as well upload them to a 47 | remote machine. Uploading all files (including local tools) can significantly 48 | reduce maintenance costs for compile clusters compared to having to install the 49 | tools on every machine in the cluster every time you want to try out a new 50 | compiler or make a change to an existing tool. 51 | 52 | 53 | ## How does it work? 54 | On Linux, we're using user namespaces, which are available in Linux 3.8 and 55 | later. We use mount namespaces to make parts of the file system read-only 56 | and PID namespaces for reliable process management. 57 | 58 | On Mac, we use `sandbox-exec`, which is supplied with the operating system. 59 | Unfortunately no mechanism like PID namespaces or Subprocess Reapers seems 60 | to exist on macOS, so we couldn't get process management to work reliably 61 | so far. 62 | 63 | On Windows, we currently do not implement sandboxing. 64 | 65 | -------------------------------------------------------------------------------- /_posts/2015-12-10-java-workers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Persistent Worker Processes for Bazel 4 | authors: 5 | - philwo 6 | --- 7 | 8 | Bazel runs most build actions as a separate process. Many build actions invoke a compiler. However, starting a compiler is often slow: they have to perform some initialization when they start up, read the standard library, header files, low-level libraries, and so on. That’s why some compilers and tools have a persistent mode, e.g. [sjavac](http://openjdk.java.net/jeps/199), [Nailgun](http://martiansoftware.com/nailgun/) and [gcc server](http://per.bothner.com/papers/GccSummit03/gcc-server.pdf). Keeping a single process for longer and passing multiple individual requests to the same server can significantly reduce the amount of duplicate work and cut down on compile times. 9 | 10 | In Bazel, we have recently added experimental support for delegating work to [persistent worker processes](https://github.com/bazelbuild/bazel/tree/master/src/main/java/com/google/devtools/build/lib/worker) that run as child processes of and are managed by Bazel. Our Javac wrapper (called JavaBuilder) is the first compiler that supports running as a worker. 11 | 12 | We’ve tried the persistent JavaBuilder for a variety of builds and are seeing a ~4x improvement in Java build times, as Javac can now benefit from JIT optimizations over multiple runs and we no longer have to start a new JVM for every compile action. For Bazel itself, we saw a reduction in build time for a clean build from ~58s to ~16s (on repeated builds). 13 | 14 | Full build 15 | Incremental build 16 | 17 | If you often build Java code, we’d like you to give it a try. Just pass `--strategy=Javac=worker` to enable it or add `build --strategy=Javac=worker` to the .bazelrc in your home directory or in your workspace. Check the WorkerOptions class for [flags to further tune the workers’ behavior](https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/worker/WorkerOptions.java) or run “bazel help” and look for the “Strategy options” category. Let us know how it works for you. 18 | 19 | We’re currently using a simple [protobuf-based protocol](https://github.com/bazelbuild/bazel/blob/master/src/main/protobuf/worker_protocol.proto) to communicate with the worker process. Let us know if you want to add support for more compilers; in many cases, you can do that without any Bazel changes. However, the protocol is still subject to change based on your feedback. 20 | -------------------------------------------------------------------------------- /_posts/2016-10-07-bazel-windows.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel on Windows 4 | authors: 5 | - dslomov 6 | --- 7 | 8 | We first announced experimental Windows support in 0.3.0. Since then, we've 9 | implemented support for building, running and testing C++, Java and Python, 10 | as well as improved performance and stability. Starting with 11 | Bazel version 0.3.2, we are making prebuilt Bazel Windows binaries available 12 | as part of our 13 | [releases](https://github.com/bazelbuild/bazel/releases) 14 | ([installation instructions](/docs/windows.html#using-the-release-binary)). 15 | 16 | In addition to bootstrapping Bazel itself, we're also able to build 17 | significant parts of TensorFlow with Bazel on Windows 18 | ([pull request](https://github.com/tensorflow/tensorflow/pull/4796)). 19 | Bazel on Windows currently requires [msys2](https://msys2.github.io/) and 20 | still has a number of issues. Some of the more important ones are: 21 | 22 | * [Workspace of the project needs to be on C: drive](https://github.com/bazelbuild/bazel/issues/1463) 23 | * [Runfiles will require additional tweaking](https://github.com/bazelbuild/bazel/issues/1212) 24 | * We support [building C++ code with MSVC toolchain](/docs/windows.html#build-c), 25 | but it is not yet the default toolchain. 26 | 27 | Our GitHub issue tracker has a [full list of known issues](https://github.com/bazelbuild/bazel/issues?q=is%3Aissue+is%3Aopen+label%3A%22category%3A+multi-platform+%3E+windows%22). 28 | 29 | Now, we need your help! Please try building your Bazel project on Windows, 30 | and let us know what works or what doesn't work yet, and what we can do better. 31 | 32 | We are looking forward to what you build (on Windows)! 33 | -------------------------------------------------------------------------------- /_posts/2016-10-20-intellij-support.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: IntelliJ and Android Studio support 4 | authors: 5 | - brendandouglas 6 | --- 7 | 8 | We've recently open-sourced Bazel plugins for 9 | [IntelliJ and Android Studio](https://ij.bazel.build). 10 | 11 | ## Key Features ## 12 | 13 | * Import a project directly from a BUILD file. 14 | * BUILD file integration: syntax highlighting, refactoring, find usages, 15 | code completion, etc. [Skylark](/docs/skylark) 16 | extensions are fully supported. 17 | * Compile your project and get navigatable Bazel compile errors in the IDE. 18 | * [Buildifier](https://github.com/bazelbuild/buildifier) integration 19 | * Support for Bazel run configurations for certain rule classes. 20 | * Run/debug tests directly through Bazel by right-clicking on 21 | methods/classes/BUILD targets. 22 | 23 | ## How do I get started? ## 24 | 25 | To try them out, you can install them directly from within the IDE 26 | (**Settings > Plugins > Browse repositories**), download them from the 27 | JetBrains [plugin repository](https://plugins.jetbrains.com/search/index?search=bazel), 28 | or build directly from [source](https://github.com/bazelbuild/intellij). 29 | 30 | Detailed docs are available [here](https://ij.bazel.build). 31 | 32 | The plugins are currently Linux-only, with plans for Mac support in the future. 33 | -------------------------------------------------------------------------------- /_posts/2016-11-04-bazel-build.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: We are now bazel.build! 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | As you might have seen either in our 9 | [0.4 announcement]({{ site.blog_site_url }}/2016/11/02/0.4.0-release.html) or simply by going to 10 | our website, we have recently switched over to the 11 | [bazel.build](https://bazel.build) domain name. 12 | 13 | We decided to switch over to the new .build top-level domain, which reflects 14 | what Bazel is for: building! 15 | 16 | Our old domain, [bazel.io](https://bazel.io), will redirect to 17 | [bazel.build](https://bazel.build) for the forseenable future. 18 | -------------------------------------------------------------------------------- /_posts/2017-02-28-google-summer-of-code.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: A Google Summer of Code with Bazel 4 | authors: 5 | - laurentlb 6 | --- 7 | 8 | I'm happy to announce that Bazel has been accepted as 9 | [a mentor organization](https://summerofcode.withgoogle.com/organizations/6293241017139200/) 10 | for the 11 | [Google Summer of Code 2017](https://developers.google.com/open-source/gsoc/). 12 | If you are a student and interested in working on Bazel this summer, please read 13 | on. 14 | 15 | Take a look at our 16 | [ideas page](https://github.com/bazelbuild/bazel/wiki/Project-Ideas): it is 17 | not exhaustive and we may extend it over time, but it should give you a rough 18 | idea of what you could work on. Feel free to come up with your new ideas or 19 | suggest variations on our proposals. Not all projects on the page will be taken: 20 | we expect to accept up to three students. Students will not work with a single 21 | mentor, you can expect to interact with multiple people from the Bazel team 22 | (although there will be a main contact point). This will ensure you'll get 23 | timely responses and assistance, even if one of us goes on vacation. 24 | 25 | This is the first time we participate in Google Summer of Code, please bear with 26 | us if you miss some information. We will update our ideas page to answer the 27 | most frequent questions. 28 | 29 | If you have any question, please contact us on bazel-core@googlegroups.com 30 | 31 | I'm looking forward to hearing from you. 32 | -------------------------------------------------------------------------------- /_posts/2017-04-21-JDK7-deprecation.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: JDK7 deprecation 4 | authors: 5 | - damienmg 6 | --- 7 | 8 | The Bazel team has been maintaining a separate, stripped-down build of Bazel 9 | that runs with JDK 7. The 0.5.1 release will no longer provide this special 10 | version. 11 | 12 | To address the problem of JDK 8 not being available on some machines, starting 13 | with version 0.5.0, our installer will embed a JDK by default. 14 | 15 | If you have any concerns, please reach out to 16 | [bazel-discuss@googlegroups.com](mailto:bazel-discuss@googlegroups.com). 17 | 18 | __Recap:__ 19 | 20 | __0.5.0__: 21 | 22 | * `bazel-0.5.0-installer.sh`: default version, with embedded JDK. 23 | * `bazel-0.5.0-without-jdk-installer.sh`: version without embedded JDK. 24 | * `bazel-0.5.0-jdk7-installer.sh`: last release compatible with JDK 7. 25 | 26 | __0.5.1__: 27 | 28 | * `bazel-0.5.1-installer.sh`: default version, with embedded JDK. 29 | * `bazel-0.5.1-without-jdk-installer.sh`: version without embedded JDK. 30 | 31 | __Migration path:__ 32 | 33 | If you are currently using the Bazel with JDK 7, then starting with version 34 | 0.5.0 you must start using the default installer. 35 | 36 | If you are currently using the default installer and do not want to use a 37 | version with embedded JDK, then use the `-without-jdk` version. 38 | 39 | __Note:__ 40 | 41 | Homebrew and debian packages do not contain the embedded JDK. This change only 42 | affects the shell installers. 43 | 44 | __Thanks:__ 45 | 46 | Thanks everybody for bearing with all the JDK 7 related issues, including the 47 | Java team at Google, in particular 48 | [Liam Miller-Cushon](https://github.com/cushon). 49 | 50 | Special thanks to [Philipp Wollermann](https://github.com/philwo) who made this 51 | new installer possible. 52 | -------------------------------------------------------------------------------- /_posts/2017-05-31-google-summer-of-code-2017.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Google Summer of Code 2017 4 | authors: 5 | - laurentlb 6 | --- 7 | 8 | Thank you very much to everyone who applied for [Google Summer of 9 | Code](https://developers.google.com/open-source/gsoc/) with Bazel. We received 10 | many interesting proposals, and we are excited to see that so many of you are 11 | enthusiastic about Bazel. Since this is the first Google Summer of Code with 12 | Bazel, we decided to mentor only one student. Of course, you are all welcome to 13 | [contribute](https://bazel.build/contributing.html) to our projects, even if it 14 | is outside of Google Summer of Code. 15 | 16 | Harmandeep is going to work with us on Bazel this summer, and will develop a 17 | tool to provide editor services (e.g. code completion) for BUILD and .bzl files, 18 | using the [Microsoft Language Server 19 | Protocol](https://github.com/Microsoft/language-server-protocol). For more 20 | information, you can [check the 21 | proposal](https://docs.google.com/document/d/16FiwRfkwNlcaAysMChphr07WCKuvO6_6G9z8u1Qupbk/edit) 22 | and follow [Harmandeep's blog](https://harmanio.wordpress.com/). 23 | 24 | A big thank you to everyone who applied! 25 | -------------------------------------------------------------------------------- /_posts/2017-07-05-new-logo-and-homepage.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: A new logo and homepage for Bazel 4 | authors: 5 | - steren 6 | --- 7 | 8 | We are glad to unveil a new logo for Bazel: 9 | 10 | ![Bazel logo](/images/bazel-icon.svg) 11 | 12 | This new logo, which feels more modern and balanced, was designed by [Sunkwan](https://www.linkedin.com/in/sunkwan), creative lead at Google. 13 | It takes inspiration from assembled blocks, adds an emotional touch to it and keeps the green color that is now rooted into our identity. 14 | It was the top results of our internal and community votes. 15 | 16 | ![Iteration on the Bazel logo](/assets/logo-draft.png) 17 | 18 | We also updated the homepage of the Bazel website: [https://bazel.build](https://bazel.build) 19 | 20 | In addition to a visual refresh, this new website features clearer value statements, clearer call to actions and more relevant 'Get Started' links. 21 | We are also very proud to showcase a few famous users and their testimonials (feel free to add yours [in the dedicated page of our wiki](https://github.com/bazelbuild/bazel/wiki/Bazel-Users)). 22 | 23 | ![Screenshot of the Bazel homepage](/assets/home-screenshot.png) 24 | 25 | Along the way, we moved the content of the main website and the blog in dedicated repositories ([site repo](https://github.com/bazelbuild/bazel-website), [blog repo](https://github.com/bazelbuild/bazel-blog)) and are using different subdomains: The documentation, which source is still hosted with our code in our main [bazelbuild/bazel](github.com/bazelbuild/bazel) repo, is now served at [docs.bazel.build](https://docs.bazel.build). The blog is served at [blog.bazel.build](http://blog.bazel.build/), which should streamline the blog publication process (contributions welcome!). 26 | 27 | The work does not stop here, our next steps are to improve our documentation structure and 'Getting Started' content. 28 | By the way, feel free to suggest edits to our documentation, it is as easy as clicking the 'Edit' button at the top of documentation pages. 29 | 30 | ![Edit button on Bazel docs](/assets/edit-button.png) 31 | 32 | We hope you like this new visual identity. 33 | -------------------------------------------------------------------------------- /_posts/2017-07-20-backward-compatibility.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Backward compatibility 4 | authors: 5 | - laurentlb 6 | --- 7 | 8 | Bazel is in Beta and we are working hard towards Bazel 1.0 (see the 9 | [roadmap](https://bazel.build/roadmap.html)). We are not there yet, and there 10 | are still many things we want to change, clean, and improve. Future releases of 11 | Bazel will not be 100% compatible with all previous Beta versions. We understand 12 | that breaking changes can be painful for users. That's why we want to make it as 13 | easy as we can to migrate to new Bazel versions. 14 | 15 | During the Beta period, we may introduce breaking changes in each minor version 16 | (0.x). Starting with Bazel 1.0, breaking changes will cause a major version 17 | change (1.0, 2.0, etc.). This is known as [Semantic 18 | Versioning](http://semver.org/). Major version changes should not be more 19 | frequent than once a year, and may be less. 20 | 21 | For most breaking changes, we will add a flag, e.g. `--incompatible_foo` that is 22 | disabled by default. The flag `--all_incompatible_changes` will enable all of these 23 | flags at once, so you can see whether you're ready for the next major release. 24 | 25 | The Bazel team will use the flags as follow: 26 | 27 | * To introduce a breaking change, we release the change along with a new flag 28 | that is unset by default, e.g. `--incompatible_foo`. This flag enables the 29 | new behavior, allowing you to test the future change. Flags for incompatible 30 | features are documented in the section 31 | [Backward compatibility](https://docs.bazel.build/versions/master/skylark/backward-compatibility.html). 32 | 33 | * At a later release, the new flag is set by default. This 34 | change is effectively released, so it can happen only at a major version 35 | (or minor version during Beta). In the release notes, we tell you which 36 | incompatible changes are enabled. The flag for this change still exists, 37 | so if needed you can disable it. 38 | 39 | * Finally, the flag may be removed at any release in the future, and so you will 40 | no longer be able to disable the behaviour of the change. In the release notes, 41 | we list these removed flags. 42 | 43 | When you migrate to a new release, we recommend the following workflow: 44 | 45 | * Use `--all_incompatible_changes` to ensure your code is 46 | forward-compatible with the next release. We are aware that you will not 47 | always be able to fix every issue, for example, there could 48 | incompatibilities with a repository you depend on. 49 | 50 | * When there is a new Bazel release, try your code again with the 51 | specific incompatible changes released in the new version. Check the 52 | release notes to know which flags to use. After verifying your project 53 | with the released changes, you can update to the new version. Verify 54 | your project again with the new version, as some small incompatible 55 | changes are not introduced behind flags. 56 | 57 | * If many users depend on your repository, please update it quickly after each 58 | Bazel release. This update will help your users test their code. 59 | 60 | In all cases, the Bazel team will try to make version updates simple. We will 61 | try to document clearly the changes and provide good error messages. If anything 62 | is unclear, please contact us and we will help you. 63 | 64 | To learn more about the changes we are doing, see the 65 | [backward compatibility page](https://docs.bazel.build/versions/master/skylark/backward-compatibility.html). 66 | 67 | -------------------------------------------------------------------------------- /_posts/2017-09-25-conference-2017.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel Conference 2017 4 | authors: 5 | - helenalt 6 | --- 7 | 8 | Bazel team is pleased to announce our first annual [**Bazel Conference**](https://sites.google.com/corp/bazel.build/conference2017), focused on the needs of our community. The conference will feature user stories and feedback, migration talks, roadmap, hands-on and break-out tech sessions with Bazel engineers, contributors and users. 9 | 10 | **Dates:** November 6 and 7, 2017 11 | **Location:** Sunnyvale, California 12 | 13 | **We are inspired** by our community engagement in the upcoming conference. We've received a large number of requests for talks and topics for discussion, and have scheduled tech talks by engineers at large and small companies on working with Bazel in wide variety of languages, including Scala, JavaScript and Go. We are looking forward to having 200 engineers from 35 companies across the world share their experience with Bazel. 14 | 15 | **We are humbled** by the commitment to make Bazel even better, and are seeing engineers develop advanced features like Remote Execution, and sharing migration tips, tricks and tools. You will hear user stories and tips about iOS migration, and TensorFlow and Kubernetes experience with Bazel. We will also discuss as a community different tools out there that could be open sourced. 16 | 17 | **We are excited** to see all of you at this first annual [Bazel Conference](https://sites.google.com/corp/bazel.build/conference2017) in Sunnyvale, California on November 6 and 7, 2017! 18 | 19 | Register by October 15, as seating is limited and we won't allow walk-ins. Detailed schedule will be published mid October, and location details will be sent out to registered attendees. 20 | 21 | -------------------------------------------------------------------------------- /_posts/2017-09-27-release-cadence.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: The New World of Bazel Releases 4 | authors: 5 | - dslomov 6 | --- 7 | 8 | Bazel has been open-sourced exactly [2.5 years ago](https://blog.bazel.build/2015/03/27/Hello-World.html). It continues to be quite a journey, and we are very happy we have acquired some fellow travellers: [many projects, organizations and companies that we all know and love](https://github.com/bazelbuild/bazel/wiki/Bazel-Users) rely on Bazel every day. 9 | 10 | As our community grows, we owe to it a transparent and predictable release process. So we are 11 | taking some steps to bring more clarity and order to the world of Bazel releases: 12 | 13 | * We will cut (from [master](https://github.com/bazelbuild/bazel/tree/master)) a candidate for 14 | *minor releases* (0.7, 0.8 and so on) **every month** 15 | on approximately first business day of the month. The planned target dates for 16 | the cuts are published [as GitHub issues with label 'release'](https://github.com/bazelbuild/bazel/issues?q=label%3Arelease%20) 17 | * After the release candidate is cut, we will let it bake for *two weeks* before promoting it 18 | to the release. We will cherry-pick fixes for critical bugs, issuing new release candidates 19 | (0.7.0rc1, 0.7.0rc2 and so on), and release 0._minor_.0 version at the end of baking period. 20 | * If critical bugs are discovered after the release, we will fix them and issue *patch releases* 21 | as needed (0.7.1, 0.7.2 and so on). Patch releases are always patches on top of existing minor 22 | releases - they are never cut from master. 23 | * No new features or backward incompatible changes ever appear in patch releases, and no new 24 | features or backward incompatible changes are added to release candidates after they have been cut. 25 | 26 | Our website has more details on [release policy](https://bazel.build/support.html#releases). 27 | 28 | As a result of this change, we now issue one minor release per month. 29 | 30 | Our [roadmap](https://bazel.build/roadmap.html) reflects our vision for Bazel 1.0 and beyond. We will 31 | annotate features on the roadmap with the release versions as those features get shipped. 32 | -------------------------------------------------------------------------------- /_posts/2017-10-03-conference-2017.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel Conference 2017 4 | authors: 5 | - helenalt 6 | --- 7 | 8 | Bazel team is pleased to announce our first annual [**Bazel Conference**](https://sites.google.com/corp/bazel.build/conference2017), focused on the needs of our community. The conference will feature user stories and feedback, migration talks, roadmap, hands-on and break-out tech sessions with Bazel engineers, contributors and users. 9 | 10 | **Dates:** November 6 and 7, 2017 11 | **Location:** Sunnyvale, California 12 | 13 | **We are inspired** by our community engagement in the upcoming conference. We've received a large number of requests for talks and topics for discussion, and have scheduled tech talks by engineers at large and small companies on working with Bazel in wide variety of languages, including Scala, JavaScript and Go. We are looking forward to having 200 engineers from 35 companies across the world share their experience with Bazel. 14 | 15 | **We are humbled** by the commitment to make Bazel even better, and are seeing engineers develop advanced features like Remote Execution, and sharing migration tips, tricks and tools. You will hear user stories and tips about iOS migration, and TensorFlow and Kubernetes experience with Bazel. We will also discuss as a community different tools out there that could be open sourced. 16 | 17 | **We are excited** to see all of you at this first annual [Bazel Conference](https://sites.google.com/corp/bazel.build/conference2017) in Sunnyvale, California on November 6 and 7, 2017! 18 | 19 | Register by October 15, as seating is limited and we won't allow walk-ins. Detailed schedule will be published mid October, and location details will be sent out to registered attendees. 20 | 21 | -------------------------------------------------------------------------------- /_posts/2017-10-16-windows-retrospect.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel on Windows -- a year in retrospect" 4 | authors: 5 | - laszlocsomor 6 | --- 7 | 8 | Bazel on Windows is no longer experimental. We think Bazel on Windows is now 9 | stable and usable enough to qualify for the Beta status we have given Bazel on 10 | other platforms. 11 | 12 | Over the last year, we put a lot of work into improving Bazel's Windows support: 13 | 14 | * **Bazel no longer depends on the MSYS runtime.** This means Bazel is now a 15 | native Windows binary and we no longer link it to the MSYS DLLs. Bazel still 16 | needs Bash (MSYS or Git Bash) and the GNU binutils (binaries under 17 | `/usr/bin`) if your dependency graph includes `genrule` or `sh_*` rules 18 | (similarly to requiring `python.exe` to build `py_*` rules), but you can use 19 | any MSYS version and flavour you like, including Git Bash. 20 | * **Bazel can now build Android applications.** If you use native `android_*` 21 | rules, Bazel on Windows can now build and deploy Android applications. 22 | * **Bazel is easier to set up.** You now (typically) no longer need to set the 23 | following environment variables: 24 | * `BAZEL_SH` and `BAZEL_PYTHON` -- Bazel attempts to autodetect your Bash 25 | and Python installation paths. 26 | * `JAVA_HOME` -- we release Bazel with an embedded JDK. (We also release 27 | binaries without an embedded JDK if you want to use a different one.) 28 | * **Visual C++ is the default C++ compiler.** We no longer use GCC by default, 29 | though Bazel still supports it. 30 | * **Bazel integrates better with the Visual C++ compiler.** Bazel no longer 31 | dispatches to a helper script to run the compiler; instead Bazel now 32 | has a `CROSSTOOL` definition for Visual C++ and drives the compiler 33 | directly. This means Bazel creates fewer processes to run the compiler. By 34 | removing the script, we have eliminated one more point of failure. 35 | * **Bazel creates native launchers.** Bazel builds native Windows executables 36 | from `java_binary`, `sh_binary`, and `py_binary` rules. Unlike the .`cmd` 37 | files that Bazel used to build for these rules, the new .`exe` files no 38 | longer dispatch to a shell script to launch the `xx_binaries`, resulting in 39 | faster launch times. (If you see errors, you can use the 40 | `--[no]windows_exe_launcher` flag to fall back to the old behavior; if you 41 | do, please [file a bug](https://github.com/bazelbuild/bazel/issues/new). 42 | We'd like to remove this flag and only support the new behavior.) 43 | 44 | ## Coming soon 45 | 46 | We are also working on bringing the following to Bazel on Windows: 47 | 48 | * **Android Studio integration.** We'll ensure Bazel works with Android Studio 49 | on Windows the same way it does on Linux and macOS. See 50 | [issue #3888](https://github.com/bazelbuild/bazel/issues/3888). 51 | * **Dynamic C++ Linking.** Bazel will support building and linking to DLLs on 52 | Windows. See [issue #3311](https://github.com/bazelbuild/bazel/issues/3311). 53 | * **Skylark rule migration guide.** We'll publish tutorials on writing Skylark 54 | rules that work not just on Linux and macOS, but also on Windows. See 55 | [issue #3889](https://github.com/bazelbuild/bazel/issues/3889). 56 | 57 | Looking ahead, we aim to maintain feature parity between Windows and other 58 | platforms. We aim to maximize portability between host systems, so you get 59 | the same fast, correct builds on your developer OS of choice. If you run into 60 | any problems, please don't hesitate to 61 | [file a bug](https://github.com/bazelbuild/bazel/issues/new). 62 | -------------------------------------------------------------------------------- /_posts/2017-12-11-thanks-bazelcon2017.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Thank you for BazelCon 2017 4 | authors: 5 | - helenalt 6 | - davidstanke 7 | --- 8 | 9 | We are truly thankful to our community for making our first annual [Bazel Conference](https://sites.google.com/corp/bazel.build/conference2017) a success! Check out all the videos of all the talks from [**BazelCon 2017 on YouTube**](https://www.youtube.com/playlist?list=PLxNYxgaZ8RseY0KmkXQSt0StE71E7yizG). 10 | 11 | Your feedback reflected high level of satisfaction, and there was something of interest for everyone: 12 | 13 | * Bazel usage and migration stories from TensorFlow, Kubernetes, SpaceX, Pinterest, Wix, Stripe, DataBricks, and Dropbox. 14 | * Talks about upcoming features and tools such as [remote execution & caching](https://github.com/bazelbuild/bazel-buildfarm), [buildozer](https://github.com/bazelbuild/buildtools/tree/master/buildozer), robolectric tests, [PodToBUILD](https://github.com/pinterest/PodToBUILD), [bazeltfc](https://github.com/Asana/bazeltsc), [rules_typescript](https://github.com/bazelbuild/rules_typescript) presented by Uber, Two Sigma, Google, Pinterest, and Asana. 15 | * Office hours where you got your Bazel questions answered, met engineers, and debugged on the fly. One attendee used their session to configure remote execution with [buildfarm](https://github.com/bazelbuild/bazel-buildfarm)! 16 | 17 | BazelCon2017 by the Numbers: 18 | 19 | * 200+ attendees 20 | * 60 organizations 21 | * 30 speakers 22 | * 12 informative talks 23 | * 14 hours of hands-on debugging and Q&A during Office Hours 24 | 25 | What we heard from you: 26 | 27 | * Bazel Query is great! 28 | * Python is used more widely than we realized, and needs better Bazel support. 29 | * Reproducible builds are important especially when you're flying rockets, building autonomous vehicles, delivering media, and calculating financial transactions, leading to wider Bazel adoption by these communities. 30 | * Documentation is often hard to find, and is either too basic or too advanced. 31 | * Bazel's parallelism is impressive: much faster than Maven. 32 | * IDE integration is important, particularly with Visual Studio, CLion, XCode. 33 | * Build Event Protocol enables many options for internal visualization of events. 34 | * Aspects are a powerful tool. 35 | 36 | What we can do next: 37 | 38 | * Work on better documentation and training, particularly for intermediate-level topics. 39 | * Prioritize IDE integration. 40 | * Engage the community in building better Python support in Bazel. 41 | * Implement improved support for third-party dependencies. 42 | * Continue work on cross-platform improvements. 43 | * Engage the community in wider adoption and contribution to Bazel. 44 | 45 | What you can do next: 46 | 47 | * Contribute to Bazel, particularly to the new community driven [buildfarm](https://github.com/bazelbuild/bazel-buildfarm) effort. 48 | * Kick off local meet-ups (we will reach out to volunteers who responded to this in our survey). 49 | * Get more info on Bazel at [bazel.build](https://bazel.build/). 50 | * Join the discussion on bazel-discuss@googlegroups.com. 51 | 52 | We look forward to working with you and growing our Bazel user community in 2018! 53 | -------------------------------------------------------------------------------- /_posts/2018-08-17-starlark.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Starlark" 4 | authors: 5 | - laurentlb 6 | --- 7 | 8 | The stars are the limit! Bazel has evolved rapidly these past 3 years, and some 9 | of the biggest changes have been to the build language. As the language becomes 10 | more mature and the number of users grows, it becomes more and more important to 11 | continue this evolution in a principled and open way. 12 | 13 | For this reason, we are revamping the way we design and publish changes to the 14 | build language. On the design side, it should be possible for anyone to see the 15 | list of proposals and participate in active discussions. While this is useful 16 | for any user, it is especially important to authors of tools that need to parse, 17 | analyze, or update BUILD and bzl files. On the publishing side, we want to draw 18 | a clear distinction between specification and implementation, establish a 19 | canonical suite of conformance tests, and grow the ecosystem. 20 | 21 | At the same time, its very name must also change for trademark reasons. We all 22 | know and love the name "Skylark", but we'll grow to love the new name too. That 23 | name is: **Starlark**. References to the old name will be updated in 24 | documentation, but you may still see uses of the old name in source code. Like 25 | the original name "Blaze" for Bazel, this represents the project's rich history 26 | but is not canonical. 27 | 28 | Our plan is as follows. The new 29 | [Starlark repository](https://github.com/bazelbuild/starlark) contains a 30 | description of the language (and later of the functions needed to [create 31 | rules](https://docs.bazel.build/versions/master/skylark/rules.html)). Changes to 32 | the specification will be done via pull requests. Non-trivial changes will 33 | follow a process that gives the community a greater opportunity to review and 34 | discuss proposals. The process is very similar to the [new design process in 35 | Bazel](https://github.com/bazelbuild/proposals), but using another repository 36 | and focusing on an implementation-independent specification. We hope that the 37 | greater transparency will elicit the feedback and participation we need in order 38 | to make this language stellar. 39 | -------------------------------------------------------------------------------- /_posts/2018-08-22-bazel-homebrew.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel in Homebrew" 4 | authors: 5 | - buchgr 6 | --- 7 | 8 | As of Bazel 0.16.0, all official Bazel releases have been using an embedded JDK. 9 | An embedded JDK allows us to exhaustively test Bazel itself on a specific JDK 10 | version and removes the need for users who don't use Bazel to build Java to 11 | install their own JDK. 12 | 13 | Bazel is currently in [homebrew core](https://github.com/homebrew/homebrew-core) 14 | which does not allow one to [include binaries](https://github.com/Homebrew/brew/blob/master/docs/Acceptable-Formulae.md#we-dont-like-binary-formulae) 15 | in a formula but instead requires all binaries to be built from source. This 16 | policy is not compatible with embedding a JDK and so we have made the decision 17 | to move out of homebrew core and instead provide our very 18 | [own homebrew tap](https://github.com/bazelbuild/homebrew-tap). 19 | 20 | You can make homebrew use our tap by (one time) running the below commands 21 | 22 | _Please note that if you have installed Bazel from the homebrew core formula in 23 | the past you will have to uninstall it first by running `brew uninstall bazel`. 24 | (Thanks [Jason Gavris](https://github.com/jgavris) for pointing this out!)_ 25 | 26 | ```bash 27 | $ brew tap bazelbuild/tap 28 | ``` 29 | 30 | Having added our tap you can install Bazel via the install command 31 | 32 | ```bash 33 | $ brew install bazelbuild/tap/bazel 34 | ``` 35 | 36 | and upgrade to a newer version via the upgrade command 37 | 38 | ```bash 39 | $ brew upgrade bazel 40 | ``` 41 | -------------------------------------------------------------------------------- /_posts/2018-08-30-bazelcon-is-coming.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "BazelCon is Coming" 4 | authors: 5 | - davidstanke 6 | --- 7 | 8 | BazelCon is coming! Building on the success of last year’s first-ever Bazel User Conference, we’re excited to host 9 | this year's conference in New York City. __[BazelCon 2018](https://conf.bazel.build)__ is on October 9-10, and will 10 | feature technical presentations, hands-on expert consultations, SIG meetups, and, for the first time, a Bazel Boot 11 | Camp for beginners. 12 | 13 | So much has happened in the Bazel community since last year. We’re eager to hear your stories and learn about the 14 | tools and techniques you’ve developed. We will also give updates on new features, best practices, and the road 15 | ahead for Bazel. There will be hundreds of technologists in attendance, with a wide range of experiences and 16 | interests. This is a unique opportunity to share and learn. 17 | 18 | Space is limited, and we cannot accept walk-ins, so 19 | __[register now](https://docs.google.com/forms/d/1-Psdj0u_3fylGZMoTHdlOskv5-E_Zx6Cm3cHZiViRQI/edit)!__ 20 | 21 | Additional opportunities: 22 | 23 | * Want to propose a talk? 24 | [Submit a proposal](https://docs.google.com/forms/d/1-6XMhyzbxyMhI6SHebvqD75bVLAYiPJTVZaHfS8sBH0/viewform?edit_requested=true#responses) 25 | * Want to learn Bazel fundamentals? [Sign up for Boot Camp](https://goo.gl/forms/lvoU69uJxvJDrCfQ2) 26 | * Wanna hack? On October 11, 2018 Bloomberg will be hosting a Bazel hackathon at its headquarters in New York. (details to come) 27 | -------------------------------------------------------------------------------- /_posts/2018-10-05-remote-build-execution.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Accelerate Bazel builds with Remote Build Execution for GCP" 4 | authors: 5 | - EricBurnett 6 | --- 7 | 8 | Remote Build Execution can accelerate your software builds and tests and 9 | help you cut infrastructure costs. This Bazel-compatible service is now 10 | available on Google Cloud Platform (GCP) in alpha. 11 | 12 | [Join the Alpha Customers group](https://groups.google.com/forum/#!forum/rbe-alpha-customers) 13 | to learn more and to try it for yourself. 14 | 15 | To learn more about remote execution and Bazel, see 16 | [Remote Execution Overview](https://docs.bazel.build/versions/master/remote-execution.html). 17 | 18 | -------------------------------------------------------------------------------- /_posts/2019-06-06-Bazel-Semantic-Versioning.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel Stability and Semantic Versioning 4 | authors: 5 | - dslomov 6 | --- 7 | 8 | It's been 4 years since we [open-sourced Bazel](https://blog.bazel.build/2015/03/27/Hello-World.html). 9 | We've come a long way. Many companies and open-source projects now benefit from fast, correct, multilingual, 10 | scalable builds with Bazel. 11 | 12 | One of the user concerns we hear most frequently is that our rate of breaking changes is too high. 13 | Over the last year we've been working to make sure we 14 | [manage](https://docs.google.com/document/d/1Dj5PBLmPVg9ZyApm4GobM3y-mDgY3mVaqpRVttOe-ZQ/) 15 | breaking changes by following the 16 | [incompatible change policy](https://docs.bazel.build/versions/0.25.0/backward-compatibility.html) 17 | , providing the community with migration tools such as 18 | [`bazelisk --migrate`](https://github.com/bazelbuild/bazelisk#other-features), 19 | and maintaining an [incompatible change pipeline](https://buildkite.com/bazel/bazelisk-plus-incompatible-flags/builds) 20 | on our CI to assess the impact of incompatible changes on a representative set of projects. 21 | However, so far every Bazel release has had incompatible changes. 22 | 23 | We're now ready to enter a new phase of Bazel's evolution. 24 | [Bazel release 0.27](https://github.com/bazelbuild/bazel/issues/7816) (June 2019) 25 | _will have a stability window of 3 months:_ we will not make any breaking changes (flip any `--incompatible_*` flags) 26 | in releases [0.28](https://github.com/bazelbuild/bazel/issues/8571) (July 2019) 27 | and [0.29](https://github.com/bazelbuild/bazel/issues/8572) (August 2019). 28 | 29 | The September 2019 release will be the [Bazel 1.0](https://github.com/bazelbuild/bazel/issues/8573) release. 30 | After that release, we'll continue following [semantic versioning](https://semver.org/) 31 | in naming Bazel releases: 1.x releases will be backwards-compatible with Bazel 1.0. 32 | We'll continue to publish minor releases of Bazel every month, cutting from GitHub HEAD. 33 | We'll maintain at least three-month stability windows between Bazel major (backward-incompatible) releases. 34 | This [design document](https://docs.google.com/document/d/1NCKLVwYMMp7Wjpb4-49FuVCWmQci6i4WZQVvm3u-WcI/) explains more. 35 | 36 | Besides being a stability milestone, Bazel 1.0 is a milestone in the delivery of the [Bazel 37 | vision](https://docs.bazel.build/versions/master/bazel-vision.html). 38 | We will be sharing more about Bazel 1.0 in the near future. 39 | 40 | We thank you, the Bazel community, for your continued trust, contributions, encouragement, and feedback! 41 | Your input has been critical to the Bazel journey and it will be indispensable in the future—please keep it coming! 42 | -------------------------------------------------------------------------------- /_posts/2019-07-04-BazelCon-SaveTheDate.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "BazelCon 2019: Save the Date!" 4 | authors: 5 | - dslomov 6 | --- 7 | 8 | **TL;DR: BazelCon 2019 will be in Sunnyvale, CA on December 11-12. 9 | [Event Site](https://events.withgoogle.com/bazelcon-2019/) 10 | 11 | We’re pleased to announce that BazelCon 2019 will be held in Sunnyvale, California at Google’s Moffett Place Campus 12 | on December 11 and 12! ([Link to Map](https://www.google.com/maps/place/Google+Building+MP7,+Sunnyvale,+CA+94089/@37.4063379,-122.0233335,17z/data=!3m1!4b1!4m5!3m4!1s0x808fb7b9f616641b:0x19d5d6ab8d02d7!8m2!3d37.4063337!4d-122.0211448)). 13 | This is THE event for everything related to Bazel, the Bazel Rules Ecosystem, and fast, correct, large scale builds. 14 | 15 | Google's Event Center at Moffett Place was designed with events like BazelCon in mind, and is by far 16 | the largest BazelCon venue yet. We’re excited to be able to accommodate _twice_ the number of attendees 17 | from previous years and offer more breakout sessions, extended office hours, and in general provide a more 18 | seamless attendee experience. This is an opportunity for Bazel contributors, maintainers, and all the members 19 | of the Bazel open source community to meet and learn from each other. 20 | 21 | The conference agenda is still being shaped, but you can expect: 22 | 23 | * Tech talks, demos, and lightning talks presented by members of the Bazel community 24 | * Breakout sessions covering 25 | * The Bazel rules ecosystem 26 | * Language rule specific breakouts 27 | * Information about Bazel 1.0 28 | * Bazel training and information sharing 29 | * Office hours with Bazel team members 30 | * Conference social and networking opportunities 31 | * ...And more! 32 | 33 | Mark your calendars and be on the lookout for the opening of conference registration in August! 34 | -------------------------------------------------------------------------------- /_posts/2019-08-12-BuildMeetup-CallForSpeakers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Build Meetup London: Call for Speakers" 4 | authors: 5 | - buchgr 6 | --- 7 | 8 | **TL;DR: Cloudflare is hosting a Build Meetup at its London offices on 1st 9 | October 2019. Many Bazel users and developers will be there too. Fill out [this form](https://forms.gle/s7GRKatte5kH5C2s7) to sign up to 10 | give a talk!** 11 | 12 | We are pleased to announce that on 1st & 2nd October 2019, Cloudflare, Bloomberg and Google will be hosting a Build Meetup 13 | at the Cloudflare offices in London. As the schedule is being shaped, we are announcing a **[call for speakers](https://forms.gle/s7GRKatte5kH5C2s7)**. 14 | The keynote will be presented by [Andrey Mokhov](https://blogs.ncl.ac.uk/andreymokhov/). 15 | 16 | The event will be themed around all things build and test: Bazel, Buck, BuildStream, ccache, CMake, distcc, Dune, Pants, 17 | Remote Execution and all the surrounding ecosystems. On the first day a series of talks will be presented followed by 18 | refreshments. On the 2nd October, there will be an opportunity for broader community collaboration and discussion during 19 | our all day hackathon. 20 | 21 | We are looking for insightful and engaging talks and presentations on topics focused around build systems. Have you worked 22 | tirelessly for the past 6 months on a new feature for project foo you would like to showcase? Have you and your team spent 23 | the last year integrating the tool bar at your workplace? Do you have some comparisons to make between qux and quux that the 24 | community could benefit from? If so, we and the community would like to hear from you! We are welcoming proposals for 10 minute 25 | lightning talks all the way to 45 minute deep dives. 26 | 27 | If you'd like to attend make sure to watch this space for the opening of the meetup registration soon! 28 | -------------------------------------------------------------------------------- /_posts/2019-09-03-BuildMeetup-London.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Meet the Bazel team at Build Meetup London" 4 | authors: 5 | - buchgr 6 | --- 7 | 8 | On 1st and 2nd of October 2019, Cloudflare, Bloomberg and Google will be hosting 9 | a Build Meetup at the Cloudflare offices in London. 10 | 11 | The event will be themed around all things build and test. We’ll have developers 12 | and enthusiasts of Bazel, BuildStream, BuildXL, Dune, Pants and others on site. 13 | A special area of interest are Cloud Build Systems (aka Remote Execution). 14 | 15 | On day one a series of talks will be presented: 16 | 17 | * Build Systems a la carte - Andrey Mokhov (Jane Street) 18 | * Dune: the Build System for Ocaml - Jeremie Dimino (Jane Street) 19 | * Microsoft Remote Execution Internal Alpha Release - Erik Mavrinac (Microsoft) 20 | * Observing process lifetime and filesystem accesses reliably on macOS - Kristijan Simic (Microsoft) 21 | * One minute Presubmits - Eric Burnett (Google, RBE) 22 | * Platforms & Toolchains - Gregory Estren (Google, Bazel) 23 | * Buildstream - Benjamin Schubert (Bloomberg) & Tristan Maat (Codethink) 24 | * Buildbox world - Jeremiah Bonney (Bloomberg) & Santiago Gil (Codethink) 25 | 26 | On day two there will be plenty of time for collaboration, discussion and hacking. 27 | 28 | The event will be attended by many Bazel developers. This is a great opportunity 29 | to chat and mingle with the people behind Bazel. If you'd like to attend the event 30 | please **[register here](https://www.eventbrite.com/e/london-build-meetup-tickets-70824519043)**! 31 | -------------------------------------------------------------------------------- /_posts/2019-09-30-bazelcon-update.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "BazelCon 2019: Registration Open" 4 | authors: 5 | - aiuto 6 | --- 7 | 8 | **TL;DR: BazelCon 2019 will be in Sunnyvale, CA on December 11-12. 9 | [Event Site](https://events.withgoogle.com/bazelcon-2019/) 10 | 11 | We’re pleased to announce that BazelCon 2019 will be held in Sunnyvale, California at Google’s Moffett Place Campus 12 | on December 11 and 12! ([Link to Map](https://www.google.com/maps/place/Google+Building+MP7,+Sunnyvale,+CA+94089/@37.4063379,-122.0233335,17z/data=!3m1!4b1!4m5!3m4!1s0x808fb7b9f616641b:0x19d5d6ab8d02d7!8m2!3d37.4063337!4d-122.0211448)). 13 | This is THE event for everything related to Bazel, the Bazel Rules Ecosystem, and fast, correct, large scale builds. 14 | 15 | Google's Event Center at Moffett Place was designed with events like BazelCon in mind, and is by far 16 | the largest BazelCon venue yet. We’re excited to be able to accommodate _twice_ the number of attendees 17 | from previous years and offer more breakout sessions, extended office hours, and in general provide a more 18 | seamless attendee experience. This is an opportunity for Bazel contributors, maintainers, and all the members 19 | of the Bazel open source community to meet and learn from each other. 20 | 21 | The conference agenda is still being shaped, but you can expect: 22 | 23 | * Tech talks, demos, and lightning talks presented by members of the Bazel community 24 | * Breakout sessions covering 25 | * The Bazel rules ecosystem 26 | * Language rule specific breakouts 27 | * Information about Bazel 1.0 28 | * Bazel training and information sharing 29 | * Office hours with Bazel team members 30 | * Conference social and networking opportunities 31 | * ...And more! 32 | 33 | [Register here](https://events.withgoogle.com/bazelcon-2019/) 34 | -------------------------------------------------------------------------------- /_posts/2019-10-01-protobuf-updates.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Update on using Protocol Buffers in Bazel" 4 | authors: 5 | - Yannic 6 | --- 7 | 8 | We’re pleased to announce that we updated the instructions for using 9 | [Protocol Buffers in Bazel](/2017/02/27/protocol-buffers.html) 10 | to reflect recent and upcoming changes to Bazel. 11 | -------------------------------------------------------------------------------- /_posts/2019-10-21-bazel-1.1.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 1.1" 4 | authors: 5 | - meisterT 6 | --- 7 | 8 | We’ve just released [Bazel 1.1](https://github.com/bazelbuild/bazel/releases/tag/1.1.0)! 9 | Bazel 1.1 is intended to be [backward-compatible](https://docs.bazel.build/versions/master/backward-compatibility.html) with Bazel 1.0. 10 | 11 | Please [report](https://github.com/bazelbuild/bazel/issues/new) any update problems. 12 | 13 | ## Query 14 | 15 | * The query flag `--host_deps` (commonly used as `--nohost_deps`) has been renamed to [`--tool_deps`](https://docs.bazel.build/versions/master/cquery.html#tool_deps-boolean-default-true), and now also removes dependencies in any execution configuration from being reported in the query output. The previous flag name is deprecated and will be removed in a future release. 16 | 17 | ## Starlark 18 | 19 | * Small adjustments in error reporting. Errors during code evaluation will cause the execution to stop (the following errors were often misleading). Multiple validation errors can now be reported. 20 | 21 | ## Community 22 | 23 | * Ignacio Le Fluk wrote an article about [using Bazel with the Angular CLI](https://dev.to/thisdotmedia/angular-bazel-getting-ready-4b0i). 24 | * Tweag.io published two articles: [Bazel, Cabal, Stack: Why choose when you can have them all?](https://www.tweag.io/posts/2019-10-09-bazel-cabal-stack.html) and [Bazel's persistent worker mode for GHC](https://www.tweag.io/posts/2019-09-25-bazel-ghc-persistent-worker-internship.html). 25 | * Юра Панарин wrote about [Creating Go Monorepo with Go-modules and Bazel](https://medium.com/@tduble94/create-go-monorepo-with-go-modules-and-bazel-95f00cf571d3). 26 | * Wassim Chegham explains how to [Build Your Serverless Azure Function Apps With Bazel](https://dev.to/azure/build-azure-function-apps-with-bazel-1-0-mci). 27 | * Alex Eagle wrote a tutorial for [Layering in Bazel for Web](https://dev.to/jakeherringbone/layering-in-bazel-for-web-389h) with an example project. 28 | * If you’re interested in using Bazel on Gitlab CI, read [Brian Michalski’s article](https://medium.com/@bamnet/using-bazel-on-gitlab-ci-fe59cad2db50). 29 | * Laurence Urhegyi wrote about [Testing Bazel's Remote Execution API](https://www.codethink.co.uk/articles/2019/testing-bazels-remote-execution-api/). 30 | * Ryan Martens gave a talk [“Build and Test like Google”](https://www.youtube.com/watch?v=2-2Z9TlFGjo&feature=youtu.be) at the North America Google Developer Experts Summit. 31 | * Dan Garfield talked about [Using Multi-Stage Docker, Go, Java,& Bazel to DESTORY Long Build Times](https://www.youtube.com/watch?v=0G2Vk-eMEYE) on DevOpsTV. 32 | * Chris Love and Tamao Nakahara discussed [Streamlining Kubernetes Application CI/CD with Bazel](https://www.youtube.com/watch?v=Tl6Bj6dQicI). 33 | 34 | 35 | This release contains contributions from many people at Google, as well as Andrew Suffield, Austin Schuh, Bor Kae Hwang, Brian Richardson, Christy Norman, Clint Harrison, Dan Halperin, Dave Lee, David Neil, David Ostrovsky, George Gensure, Greg, Jacob Parker, Jakub Bujny, John Millikin, Keith Smiley, marcohu, Marwan Tammam, Mostyn Bramley-Moore, Stepan Koltsov, Thi Don, Thi, Tomasz Strejczek. 36 | -------------------------------------------------------------------------------- /_posts/2019-12-19-bazel-2.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 2.0" 4 | authors: 5 | - aehlig 6 | --- 7 | 8 | A new major version of Bazel, 9 | [Bazel 2.0](https://github.com/bazelbuild/bazel/releases/tag/2.0.0) has just 10 | been released. In particular, it brings some important flag flips that did 11 | not make it into 12 | [Bazel 1.0](https://blog.bazel.build/2019/10/10/bazel-1.0.html). 13 | 14 | ## Incompatible changes 15 | Bazel 2.0 is a new major release and brings the following incompatible changes. 16 | 17 | * [`--incompatible_remap_main_repo`](https://github.com/bazelbuild/bazel/issues/7130) 18 | is enabled by default. Both ways of addressing the main repository (by its 19 | name and by '@') are now considered referring to the same repository. 20 | 21 | * [`--incompatible_disallow_dict_lookup_unhashable_keys`](https://github.com/bazelbuild/bazel/issues/9184) 22 | is enabled by default. 23 | 24 | * [`--incompatible_remove_native_maven_jar`](https://github.com/bazelbuild/bazel/issues/6799) 25 | is now enabled by default and the flag removed. 26 | 27 | * [`--incompatible_prohibit_aapt1`](https://github.com/bazelbuild/bazel/issues/10000) 28 | is enabled by default. 29 | 30 | ## Aquery 31 | 32 | * Proto v2 for aquery proto output formats, which reduces the output size 33 | compared to v1, guarded behind the flag 34 | [`--incompatible_proto_output_v2`](https://github.com/bazelbuild/bazel/issues/10358). 35 | This proto format is still experimental and subject to further changes. 36 | 37 | ## Platforms 38 | 39 | * New incompatible flag, [`--incompatible_remove_enabled_toolchain_types`](https://github.com/bazelbuild/bazel/issues/10262), 40 | which allows removing the `PlatformConfiguration.enabled_toolchain_types` 41 | field. 42 | 43 | ## Other important changes 44 | 45 | * Package loading now consistently fails if package loading had a glob 46 | evaluation that encountered a symlink cycle or symlink infinite 47 | expansion. Previously, such package loading with such glob evaluations would 48 | fail only in some cases. 49 | 50 | 51 | * The `--disk_cache` flag can now also be used together with the gRPC remote 52 | cache. 53 | 54 | * An action's discover inputs runtime metrics is now categorized as parse time 55 | on the CriticalPathComponent. 56 | 57 | * Bazel's Debian package and the binary installer now include an improved 58 | wrapper that understands `/.bazelversion` files and the 59 | `$USE_BAZEL_VERSION` environment variable. This is similar to [what Bazelisk 60 | offers](https://github.com/bazelbuild/bazelisk#how-does-bazelisk-know-which-bazel-version-to-run-and-where-to-get-it-from), 61 | except that it works offline and integrates with apt-get. 62 | 63 | * We are planning to deprecate the runfiles manifest files, which aren't safe in 64 | the presence of whitespace, and also unnecessarily require local CPU when 65 | remote execution is used. This release adds 66 | `--experimental_skip_runfiles_manifests` to disable the generation of the 67 | input manifests (rule.manifest files) in most cases. This can be used for 68 | initial testing, but the exact semantics are still subject to change; let us 69 | know if this is causing problems. Note that this flag has no effect on Windows 70 | by default or if `--experimental_enable_runfiles` is explicitly set to false. 71 | 72 | ## Community 73 | 74 | This release contains contributions from many people at Google, as well as 75 | aldersondrive, Benjamin Peterson, Bor Kae Hwang, David Ostrovsky, John Millikin, 76 | Keith Smiley, Lauri Peltonen, nikola-sh, Peter Mounce, Tony Hsu. 77 | -------------------------------------------------------------------------------- /_posts/2019-12-20-bazelcon-2019.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "BazelCon 2019 recap and Happy Holidays! " 4 | authors: 5 | - mnarinsky 6 | --- 7 | 8 | Last week we hosted our largest ever Bazel user conference - [**BazelCon 9 | 2019**](https://conf.bazel.build/2019), an annual gathering of the community 10 | surrounding the Bazel build system. 11 | 12 | This is the main Bazel event of the year which serves as an opportunity for 13 | Bazel contributors, maintainers, and users to meet and learn from each other, 14 | present Bazel migration stories, educate new users, and collaborate together on 15 | the future of Bazel. 16 | 17 | BazelCon 2019 18 | 19 | **BazelCon 2019 by the Numbers** 20 | 21 | * 400+ attendees (2x increase over BazelCon 2018) 22 | 23 | * 125 organizations represented including Microsoft, Spotify, Uber, Apple, 24 | Cruise, EA, Lyft, Tesla, SpaceX, SAP, Bloomberg, Wix, Etsy, BMW and others 25 | 26 | * 26 full-length talks and 15 lightning talks by members of the external 27 | community and Googlers 28 | 29 | * 16 hours of Q&A during Office Hours with Bazel team members 30 | 31 | * 45 Bazel Bootcamp attendees 32 | 33 | * 5 Birds of a Feather sessions on iOS, Python, Java, C++ and Front-end Bazel 34 | rules 35 | 36 | * 190+ users in the #bazelcon2019 Slack channel 37 | 38 | **Stay tuned for the videos of BazelCon talks and Birds of a Feather session 39 | notes!** (will be posted in January 2020) 40 | 41 | On behalf of the Bazel team, we would like to THANK YOU for being a part of the 42 | Bazel community in 2019 and we look forward to continuing our work together in 43 | 2020! 44 | 45 | Happy Holidays! 46 | -------------------------------------------------------------------------------- /_posts/2020-03-03-bazel-2-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 2.2" 4 | authors: 5 | - philwo 6 | --- 7 | 8 | [Bazel 2.2](https://github.com/bazelbuild/bazel/releases/tag/2.2.0) has just 9 | been released. 10 | 11 | Bazel 2.2 is intended to be backward-compatible with Bazel 2.0. There are no 12 | known breaking changes in this release. 13 | 14 | ## Incompatible changes 15 | 16 | * The following flags have been removed, as they were flipped in previous 17 | releases: 18 | * `--incompatible_windows_bashless_run_command` 19 | * `--incompatible_windows_native_test_wrapper` 20 | * `--incompatible_disallow_dict_lookup_unhashable_keys` 21 | * `--incompatible_remap_main_repo` 22 | * `--incompatible_disallow_unverified_http_downloads` 23 | * The following incompatible flags have been added: 24 | * [`--incompatible_applicable_licenses`](https://github.com/bazelbuild/bazel/issues/10687) 25 | * [`--incompatible_remove_ram_utilization_factor`](https://github.com/bazelbuild/bazel/issues/10730). 26 | * [`--incompatible_load_proto_toolchain_for_javalite_from_com_google_protobuf`](https://github.com/bazelbuild/bazel/issues/10335) 27 | 28 | ## cquery 29 | 30 | * cquery's 31 | [`config()`](https://docs.bazel.build/versions/2.2.0/cquery.html#config) now 32 | supports arbitrary configurations. 33 | * When using cquery, `//foo:bar` now means "all configured targets with label 34 | `//foo:bar`" instead of "choose an arbitrary configured target with label 35 | `//foo:bar`". 36 | 37 | ## External Repositories 38 | 39 | * `WORKSPACE` and `BUILD.bazel` files of 40 | [`http_archive`](https://docs.bazel.build/versions/2.2.0/repo/http.html) 41 | repositories can now be patched using the `patch_cmds` and `patches` 42 | attributes. 43 | * Flags that affect external repositories like `--override_repository` can now 44 | be addressed in `bazelrc` files using the `common` command, without causing 45 | commands like `bazel shutdown` to fail. 46 | 47 | ## Starlark 48 | 49 | * The 50 | [`--starlark_cpu_profile=`](https://docs.bazel.build/versions/2.2.0/user-manual.html#flag--starlark_cpu_profile) 51 | flag writes a profile in pprof format containing a statistical summary of 52 | CPU usage by all Starlark execution during the bazel command. Use it to 53 | identify slow Starlark functions in loading and analysis. 54 | 55 | ## Windows 56 | 57 | * We now discourage running Bazel from MSYS2 because of a newly found 58 | bug ([#10573](https://github.com/bazelbuild/bazel/issues/10573)) 59 | 60 | ## Other changes 61 | 62 | * Actions with `parse` on the critical path should no longer finish in the 63 | future. 64 | * Reduced the packaging time (package-bazel.sh) for the `//src:bazel-dev` 65 | Bazel development build target from 14s to 6s. Use `//src:bazel-dev` if 66 | you're iterating rapidly on a local Bazel changes, and use `//src:bazel` 67 | with `--compilation_mode=opt` for release builds. 68 | 69 | This release contains contributions from many people at Google, as well as 70 | Alessandro Patti, Alex Kirchhoff, Artur Dryomov, Benjamin Peterson, David 71 | Ostrovsky, Elliotte Rusty Harold, Eric Klein, George Chiramel, George Gensure, 72 | Guillaume Bouchard, Hui-Zhi, John Millikin, Jonathan Springer, Michael 73 | McLoughlin, Nikolaus Wittenstein, Nikolay Shelukhin, Yannic Bonenberger, aman, 74 | nikola-sh. 75 | -------------------------------------------------------------------------------- /_posts/2020-04-21-bazel-3-1.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 3.1" 4 | authors: 5 | - laurentlb 6 | --- 7 | 8 | [Bazel 3.1](https://github.com/bazelbuild/bazel/releases/tag/3.1.0) has just 9 | been released. 10 | 11 | ## Incompatible changes 12 | 13 | Bazel 3.1 is not a major release. As such, updating from Bazel 3.0 is expected to be straightforward. 14 | 15 | * The following obsolete flags have been removed: 16 | `--experimental_oom_more_eagerly`, 17 | `--experimental_oom_more_eagerly_threshold`, 18 | `--incompatible_bzl_disallow_load_after_statement`, 19 | `--incompatible_no_output_attr_default`, 20 | `--incompatible_restrict_named_params`, `--incompatible_depset_union`, 21 | `--incompatible_load_proto_toolchain_for_javalite_from_com_google_protobuf`. 22 | * A maximum attribute name length of 128 is enforced, as well as a maximum 200 23 | attributes per rule is enforced. These limitations were chosen to be large, 24 | and we don’t expect anyone to hit them. They allow Bazel to fail gracefully 25 | before internal limitations are reached. 26 | 27 | 28 | ## C++ 29 | 30 | * Allow assembly file sources in [`cc_common.compile`](https://docs.bazel.build/versions/3.1.0/skylark/lib/cc_common.html#compile). 31 | * Add stamp parameter for [`cc_common.link`](https://docs.bazel.build/versions/3.1.0/skylark/lib/cc_common.html#link) to enable including build info. 32 | 33 | 34 | ## Starlark 35 | 36 | * Aspects may now propagate through dependencies on rule outputs by being 37 | defined with [`apply_to_generating_rules = True`](https://docs.bazel.build/versions/3.1.0/skylark/lib/globals.html#aspect). 38 | * `query --output=build` now shows where rule classes are defined (in addition to where rule targets are instantiated). 39 | 40 | 41 | ## Other changes 42 | 43 | * The 44 | [`--target_pattern_file`](https://docs.bazel.build/versions/3.1.0/command-line-reference.html#flag--target_pattern_file) 45 | flag provides a way to supply any number of targets to bazel, regardless of 46 | operating system limits on command line length. 47 | * The default `.netrc` file on Windows is set to `%USERPROFILE%\.netrc`. 48 | * The [`patch` function](https://docs.bazel.build/versions/3.1.0/repo/utils.html#patch) 49 | can handle file permission properly. 50 | 51 | This release contains contributions from many people at Google, as well as 52 | Alessandro Patti, Benjamin Peterson, Benjamin Romano, Bor Kae Hwang, Chris 53 | Heisterkamp, Cristian Hancila, Dmitri G, Douglas Parker, George Gensure, Gregor 54 | Jasny, John Millikin, Keith Smiley, Leo, Mike Fourie, Patrick Balestra, Robbert 55 | Van Ginkel, Ryota, Samuel Giddins, Ulf Adams, Vertexwahn, Xavier Bonaventura, 56 | Yannic Bonenberger. 57 | -------------------------------------------------------------------------------- /_posts/2020-05-27-bazel-3-2.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 3.2" 4 | authors: 5 | - philwo 6 | --- 7 | 8 | [Bazel 3.2](https://github.com/bazelbuild/bazel/releases/tag/3.2.0) has just been released. 9 | 10 | ## Incompatible changes 11 | 12 | Bazel 3.2 is not a major release. As such, updating from Bazel 3.1 is expected to be straightforward. 13 | 14 | * The following flags were renamed, removed or replaced: 15 | `--experimental_slim_json_profile` was renamed to [`--slim_profile`](https://docs.bazel.build/versions/3.2.0/command-line-reference.html#flag--slim_profile). 16 | 17 | 18 | ## Starlark 19 | 20 | * Action objects created by `ctx.attr.write` now expose their `content` for inspection (in analysis-time tests) even when generated by an `Args` object. 21 | * Starlark rules can now [read](https://docs.bazel.build/versions/3.2.0/skylark/lib/ctx.html#split_attr) attributes that apply Starlark [split transitions](https://docs.bazel.build/versions/3.2.0/skylark/config.html#defining-12-transitions). 22 | * Starlark rules can now create symlinks using [`ctx.actions.symlink`](https://docs.bazel.build/versions/3.2.0/skylark/lib/actions.html#symlink). 23 | 24 | 25 | ## aquery 26 | 27 | * Added `aquery_differ_v2` that works with the new aquery proto output format. 28 | 29 | 30 | ## Other changes 31 | 32 | * Add new flag `--experimental_no_product_name_out_symlink`. When enabled, the `bazel-out` symlink won’t be created if a different name is given to `--symlink_prefix`. 33 | * Bazel can now recursively delete non-executable but readable directories. 34 | 35 | 36 | This release contains contributions from many people at Google, as well as Alessandro Patti, Antoine Eiche, 37 | Beebs, Brian Silverman, George Gensure, Gerhard Pretorius, Gibson Fahnestock, Greg, Gregor Jasny, Gustav Westling, 38 | Jin, Jonathan Gerrish, Josh Smith, Justin Y Wei, Laurent Le Brun, Links, László Csomor, Matt Mackay, Moritz Kröger, 39 | Ryan Beasley, Siddhartha Bagaria, Yannic Bonenberger, Zhongpeng Lin, hannometer, liubang. 40 | -------------------------------------------------------------------------------- /_posts/2020-06-17-bazel-3-3.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 3.3" 4 | authors: 5 | - katre 6 | --- 7 | 8 | [Bazel 3.3](https://github.com/bazelbuild/bazel/releases/tag/3.3.0) has just been released. 9 | 10 | Bazel 3.3 is a minor release. It is an incremental update to Bazel 3.2. 11 | 12 | ## Incompatible changes 13 | 14 | The startup option `--fatal_event_bus_exceptions` is now a no-op and will be removed soon. 15 | 16 | ## Development 17 | 18 | Bazel offers basic completion for the fish shell. To install, see [`//scripts/fish/README.md`](https://github.com/bazelbuild/bazel/blob/master/scripts/fish/README.md) or copy [`//scripts/fish/completions/bazel.fish`](https://github.com/bazelbuild/bazel/blob/master/scripts/fish/completions/bazel.fish) to `~/.config/fish/completions/bazel.fish` locally. 19 | 20 | ## C++ 21 | 22 | + It is now possible to use the flag `--custom_malloc` and replace the default malloc implementation even for rules written in Starlark. 23 | + Previously, the output name for `cc_binary` targets that set `linkshared=1` had to match the target name, eg. `libfoo.so` or `foo.dll`. Now the target can be named `foo`, and the correct output name will be inferred from the target name. 24 | 25 | ## Apple 26 | 27 | The `--watchos_cpus` flag accepts the value `arm64_32`. 28 | 29 | ## Action Execution 30 | 31 | Bazel 3.3 allows you to use different action mnemonics while sharing the same pool of persistent workers by setting a new property on the execution requirements (`worker-key-mnemonic`). The value overrides the action's mnemonic for reusing worker processes. 32 | 33 | ## Contributors 34 | 35 | This release contains contributions from many people at Google, as well as Abhishek Kumar, Adam Azarchs, Akira Baruah, Daniel Wagner-Hall, Derek Argueta, Jason Furmanek, Jiri Dank, Keith Smiley, Kseniia Vasilchuk, Matt Mackay, Michael Klemm, Nikolay Shelukhin, Patrick Balestra, Rui Chen, Siggi Simonarson, Tom de Goede, Vladimir Chebotarev, Yannic Bonenberger, and glukasiknuro. 36 | -------------------------------------------------------------------------------- /_posts/2020-08-26-bazel-3.5.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 3.5" 4 | authors: 5 | - aiuto 6 | --- 7 | 8 | [Bazel 3.5](https://github.com/bazelbuild/bazel/releases/tag/3.5.0) has just been released. 9 | 10 | Bazel 3.5 is a minor release. It is an incremental update to Bazel 3.4. 11 | 12 | ## Incompatible changes 13 | 14 | - Remove the `--experimental_process_wrapper_wait_fix` flag. 15 | - Remove the `--experimental_ui_deduplicate` flag. 16 | - Remove the `--experimental_transparent_compression` flag. 17 | - Remove the `--experimental_action_args` flag. 18 | - Remove the `--incompatible_symlinked_sandbox_expands_tree_artifacts_in_runfiles_tree` flag. 19 | - Bazel now correctly prefers Xcode versions in `/Applications` over 20 | other paths, by default. This resolves an issue with accidentally 21 | picking up an Xcode version from a Time Machine backup or network 22 | disk. If you rely on the old behavior, move your desired Xcode 23 | version to `/Applications`. 24 | 25 | ## Rules 26 | 27 | ### C++ 28 | - Add [`cc_common.compile`](https://docs.bazel.build/versions/3.5.0/skylark/lib/cc_common.html#compile) support for `include_prefix` / `strip_include_prefix`. 29 | 30 | ### Android 31 | - Support signing key rotation in `android_binary`. 32 | 33 | ### Apple 34 | - [`--apple_bitcode`](https://docs.bazel.build/versions/3.5.0/command-line-reference.html#flag--apple_bitcode) 35 | now takes an optional platform and only applies the Bitcode mode to 36 | that platform if present. The option may be provided multiple times. 37 | - Add optional `oso_prefix_is_pwd` feature for Apple builds. 38 | - `NS_BLOCK_ASSERTIONS` is now passed for all Apple architectures. 39 | 40 | ### Java 41 | - Java 14 is now supported through custom `toolchain_jdk_14`. The `java_tools` 42 | repository provides this support in the [java_tools with javac14 v1.0]( 43 | https://github.com/bazelbuild/java_tools/releases/tag/javac14_v1.0) release. 44 | 45 | ## Other changes 46 | 47 | - `cquery` now follows aspects when the [`--include_aspects`](https://docs.bazel.build/versions/3.5.0/cquery.html#cquery-options) flag is used. 48 | - Add support to `bazel/crosstool` for building arm64 on macos. 49 | - Update coverage configuration for Python, `filegroup`, and shell script 50 | rules to distinguish between source and dependency attributes. 51 | - Add [`InstrumentedFilesInfo`](https://docs.bazel.build/versions/3.5.0/skylark/lib/InstrumentedFilesInfo.html) 52 | provider to Starlark globals. 53 | - Make `filegroup` always forward `InstrumentedFilesProvider` and not 54 | collect any sources directly. 55 | - Update Starlark error reporting and the call stack. 56 | This may cause changes in the locations where errors were previously reported. 57 | - Allow dot ('.') in `workspace` names. See [#11837](https://github.com/bazelbuild/bazel/issues/11837). 58 | 59 | ## Contributors 60 | 61 | This release contains contributions from many people at Google, as well 62 | as Adam Gross, Andrew Suffield, Benjamin Peterson, David Ostrovsky, 63 | Ed Schouten, Grzegorz Lukasik, Holger Freyther, Kalle 64 | Johansson, Keith Smiley, Kerrick Staley, Kyle Teske, Mostyn Bramley-Moore, 65 | Ryan Beasley, Ryan Pavlik, Siggi Simonarson, Stiopa Koltsov, Ulf Adams, 66 | Xiaoyi Shi, Yannic Bonenberger, Yesudeep Mangalapilly, bnczk. 67 | -------------------------------------------------------------------------------- /_posts/2020-10-20-bazel-3-7.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel 3.7" 4 | authors: 5 | - katre 6 | --- 7 | 8 | [Bazel 3.7](https://github.com/bazelbuild/bazel/releases/tag/3.7.0) is a [minor 9 | release](https://docs.bazel.build/versions/3.7.0/backward-compatibility.html). 10 | It is an incremental update to Bazel 3.6. 11 | 12 | ## Incompatible changes 13 | 14 | * The syntax `//foo/BUILD` can no longer be used on the command line to refer to the `//foo:BUILD` target. Use `//foo:BUILD` (preferred) or `foo/BUILD` instead. This does not affect BUILD/bzl files, where that syntax already didn't work. 15 | * Remove the `--objc_header_scanner_tool` flag. The flag was primarily used internally, and to our knowledge, a compatible tool was never released. Therefore this flag is believed to be unused. 16 | 17 | ## Android 18 | 19 | * Non-android targets are not in error when `android_sdk_repository` is present but invalid. 20 | 21 | ## Java 22 | 23 | * Include `resources` attribute in dependency attributes for `java_*` coverage configuration. 24 | * Javac now supports [multiplex workers](https://docs.bazel.build/versions/3.7.0/multiplex-worker.html), but it is not enabled in the toolchain. 25 | 26 | ## Other changes 27 | 28 | * `select()` directly [supports](https://docs.bazel.build/versions/3.7.0/configurable-attributes.html#platforms) `constraint_value` with no need for an intermediate `config_setting`. 29 | * [`--trim\_test\_configuration`](https://docs.bazel.build/versions/3.7.0/command-line-reference.html#flag--trim_test_configuration) should work for almost all cases when a non-test target depends on a test. 30 | * Bazel now allows symbolic links that point to their own ancestor unless they are traversed recursively by e.g. a `//...` recursive target pattern or a recursive glob. 31 | * Generated Go protobufs no longer depend on `//net/proto2/go:proto` 32 | 33 | This release contains contributions from many people at Google, as well as Benjamin Peterson, Cristian Hancila, Ed Schouten, Fredrik Medley, Kalle Johansson, Keith Smiley, Kseniia Vasilchuk, Michael Eisel, Michael Hackner, Michael Krasnyk, Mostyn Bramley-Moore, Ruixin Bao, Samuel Giddins, Simon Stewart, Torgil Svensson, Ulf Adams, Vasilios Pantazopoulos, Wenyu Zhang, Yannic Bonenberger, jgehw, and yoav-steinberg. 34 | 35 | -------------------------------------------------------------------------------- /_posts/2020-11-10-bazel-4.0-announce.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Announcing the Bazel 4.0 release" 4 | authors: 5 | - hicksjoseph 6 | --- 7 | 8 | We are happy to announce Bazel’s first [Long Term Support (LTS) release](https://blog.bazel.build/2020/11/10/long-term-support-release.html), Bazel 4.0. To serve as a solid foundation for long-term support, Bazel 4.0 includes a [number of updates](https://github.com/bazelbuild/bazel/labels/breaking-change-4.0) intended to make it easier to use and extend the release's usefulness throughout the LTS track’s lifetime. These updates can be grouped into the following themes: 9 | 10 | - **Usability**: Making Bazel easier to understand or harder to misconfigure by accident. 11 | - **Consistency**: Removing inconsistent or easily misused behaviors in Starlark and the Starlark build API. 12 | - **Openness**: Allowing definitions and rules to evolve independently of Bazel releases by moving them into separate Github repositories. 13 | - **Extensibility**: Migrating built-in native rules to Starlark to support extensibility of rulesets. 14 | - **Stability**: Updates to native language support for C++ and proto, removing obsolete, incorrect, or otherwise problematic behaviors. 15 | 16 | Bazel 4.0 also supports these new features: 17 | 18 | * [Shorthand forms for Starlark-defined flags](https://docs.bazel.build/versions/master/skylark/config.html#using-build-setting-aliases) to make them easier to type on the command line with a familiar syntax. 19 | * [Building Java code targeting JDK 15](https://github.com/bazelbuild/bazel/issues/11871). 20 | * [Skipping incompatible targets per platform](https://github.com/bazelbuild/bazel/issues/3780) to allow running `bazel test //…`. 21 | * Multiplex persistent workers for Javac actions to reduce Bazel’s resource footprint while building Java. 22 | 23 | Remember that you can stay on your current release if you are not ready to move to Bazel 4.0. 24 | 25 | We are excited about Bazel 4.0's new features improving Bazel's usability, consistency, and openness for the Bazel community. For a detailed list of incompatible flags flipping in Bazel 4.0, click [here](https://github.com/bazelbuild/bazel/labels/breaking-change-4.0). Watch the [Bazel blog](https://blog.bazel.build/) for the Bazel 4.0 release notes for more detailed technical information. 26 | -------------------------------------------------------------------------------- /_posts/2020-11-10-long-term-support-release.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Announcing Bazel Long Term Support (LTS) releases" 4 | authors: 5 | - aiuto 6 | - hicksjoseph 7 | - philwo 8 | --- 9 | 10 | **tl;dr Bazel will now provide Long Term Support (LTS) Releases as well as regular rolling releases.** 11 | 12 | Similar to other Open Source products, many current and future Bazel users require a stable, supported release of Bazel where the behavior doesn’t regularly change, but which receives critical bug fixes and security patches. At the same time, other Bazel users prefer frequent, high quality updates with small, incremental features delivered regularly. 13 | 14 | We are pleased to announce that, starting with the next major release ([4.0](/2020/11/10/bazel-4.0-announce.html)), Bazel will provide Long Term Support (LTS) releases as well as regular Rolling releases. 15 | 16 | Here is an example timeline: 17 | 18 | ![example LTS timeline](/assets/lts_timeline.png) 19 | 20 | Some benefits of this new release cadence are: 21 | 22 | * Bazel will release stable, supported LTS releases on a predictable schedule with a long window without breaking changes 23 | * Bazel contributors and rules owners can prepare to support future LTS releases with rolling releases. 24 | * Bazel users can choose the release cadence that works best for them between LTS releases and rolling releases. 25 | 26 | Long Term Support (LTS) releases: 27 | 28 | * Bazel creates an LTS release every ~9 months resulting in a new LTS release branch and an increment to the major version number. 29 | * Each LTS release includes all new features, bug fixes, and (breaking) changes since the last major version. 30 | * Bazel supports each LTS branch for 9 months with critical bug fixes, but no new features. 31 | * Thereafter, Bazel provides two years of maintenance, with only security and OS compatibility fixes. 32 | * Bazel Federation reboot: Bazel provides guidance about the ruleset versions that should be used with each Bazel release so that each user will not have to manage interoperability themselves. 33 | 34 | Rolling releases: 35 | 36 | * Live-at-head approach, which reduces upgrade distance and cost. 37 | * Continuous delivery of Bazel versions, in sync with Google’s internal Blaze releases. 38 | * Must pass Google’s internal test suite and be green on Bazel CI. 39 | * Bazel's main branch forms the basis for rolling releases. 40 | * [Incompatible flags](https://docs.bazel.build/versions/master/backward-compatibility.html) will still be used to ease the burden of migrating to new functionality, but default behaviors may change with any rolling release. 41 | 42 | If you have questions or concerns, feel free to reach out to us: [bazel-discuss@googlegroups.com](mailto:bazel-discuss@googlegroups.com). 43 | 44 | Thanks, 45 | 46 | Joe Hicks, Tony Aiuto, and Philipp Wollermann (on behalf of Bazel team) 47 | -------------------------------------------------------------------------------- /_posts/2020-11-11-bazelcon-2020-registration.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Get ready for BazelCon 2020" 4 | authors: 5 | - hicksjoseph 6 | --- 7 | 8 | With only 24 hours to go, BazelCon 2020 is shaping up to be a much anticipated gathering for the Bazel community and broader Build ecosystem. With over 1000 attendees, presentations by Googlers, as well as talks from industry Build leaders from Twitter, Dropbox, Uber, Pinterest, GrabTaxi, and more, we hope BazelCon 2020 will provide an opportunity for knowledge sharing, networking, and community building. 9 | 10 | I am very excited by the keynote announcements, the migration stories at Twitter, Pinterest, and CarGurus, as well as technical deep dives on Bazel persistent workers, incompatible target skipping, migrating from Gradle to Bazel, and more. The “sold out” Birds of a Feather sessions and the Live Q&A with the Bazel team will bring the community together to discuss design docs, look at landings, and provide feedback on the direction of Bazel and the entire ecosystem. 11 | 12 | Make sure that you register at http://goo.gle/bazelcon to be a part of the excitement of the premier build conference! 13 | 14 | See you all at BazelCon 2020! 15 | 16 | By Joe Hicks and the entire Bazel Team at Google 17 | 18 | -------------------------------------------------------------------------------- /_posts/2020-11-11-json-workers.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: JSON support for persistent workers 4 | authors: 5 | - susinmotion 6 | --- 7 | 8 | You asked, we answered -- JSON support for [persistent workers](https://docs.bazel.build/versions/master/persistent-workers.html) is here! 9 | 10 | ## Persistent workers in a nutshell 11 | 12 | Persistent workers are programs started by Bazel that stay alive throughout the build to execute actions of a particular type. Without workers, Bazel runs each action separately, paying any associated startup costs (like starting the JVM) for every action. Persistent workers enable Bazel to amortize startup costs and allow caching across actions. 13 | 14 | ## Why JSON workers? 15 | 16 | The original worker implementation required workers to communicate with Bazel using protocol buffers (protobufs). 17 | 18 | This works pretty well at Google, since Bazel is in Java, which has good support for protobufs. In fact, the Bazel code base already depends on protobufs. Additionally, we use remote execution for our builds, leveraging distributed computing resources and taking advantage of cross-user caching, so the fact that the protobuf dependency is large didn’t make much of a difference. 19 | 20 | We didn’t realize at first that requiring this dependency would cause problems for Bazel users who wanted to develop workers. It turns out, though, that requiring workers to communicate via protobufs adds a heavyweight dependency to the worker, which can slow down developing and building the worker itself. In addition, not all languages have robust support for protobufs, which has made it difficult to build workers in languages like Python. 21 | 22 | Users told us about these issues and filed a feature request for workers to be able to communicate via JSON. Why JSON? It’s a standard protocol with robust tooling in almost every language, and it’s human-readable. 23 | 24 | ## How do I make a worker that uses JSON? 25 | 26 | Making a JSON worker is just like [making any other worker](https://docs.bazel.build/versions/master/creating-workers.html), with a few JSON-specific requirements. 27 | 28 | First, the worker needs to read and write JSON-encoded messages when communicating with Bazel. In order to maintain the same backward and forward compatibility properties as protobuf, the worker must also tolerate unknown fields in these messages, and use the protobuf defaults for missing values. 29 | 30 | In addition, the execution requirements of the action that uses the worker must include `”requires-worker-protocol” : “json”`. 31 | 32 | In order for Bazel to use your newly implemented JSON worker, you must pass `--experimental_worker_allow_json_protocol` to your build (or put `build: --experimental_worker_allow_json_protocol` in your ~/.blazerc). This allows Bazel to communicate with workers via JSON, in addition to proto; it won’t affect Bazel’s interaction with non-JSON workers. 33 | 34 | ## How can I learn more about workers? 35 | 36 | * **Read the docs**: The [persistent worker documentation](https://docs.bazel.build/versions/master/persistent-workers.html) now also includes information about JSON workers. 37 | 38 | * **Reach out on [GitHub](https://github.com/bazelbuild/bazel)**: File a bug if you encounter issues creating workers, or if you have feature requests--yours could be the next one implemented, either by the Bazel team or by the community. 39 | 40 | * **Register for [BazelCon](https://opensourcelive.withgoogle.com/events/bazelcon2020)!** There’ll be a talk about workers, including live Q and A during the talk. Registration is free! 41 | 42 | Like JSON? [Starlark now supports it](https://docs.bazel.build/versions/master/skylark/lib/json.html). 43 | -------------------------------------------------------------------------------- /_posts/2020-11-12-aosp_migrating_to_bazel.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Welcome Android Open Source Project (AOSP) to the Bazel ecosystem" 4 | authors: 5 | - hicksjoseph 6 | --- 7 | 8 | After significant investment in understanding how best to build the 9 | Android Platform correctly and quickly, we are pleased to announce that 10 | the Android Platform is migrating from its current build systems (Soong 11 | and Make) to Bazel. While components of Bazel have been [already checked 12 | into the Android Open Source Project (AOSP) source 13 | tree](https://cs.android.com/android/platform/superproject/+/master:build/bazel/), 14 | this will be a phased migration over the next few Android releases 15 | which includes many concrete and digestible milestones to make the 16 | transformation as seamless and easy as possible. There will be no 17 | immediate impact to the Android Platform build workflow or the existing 18 | supported Android Platform Build tools in 2020 or 2021. Some of the 19 | changes to support Android Platform builds are already in Bazel, such 20 | as Bazel’s ability to parse and execute Ninja files to support a 21 | gradual migration. 22 | 23 | Migrating to Bazel will enable AOSP to: 24 | 25 | * Provide more flexibility for configuring the AOSP build (better support for conditionals) 26 | * Allow for greater introspection into the AOSP build progress and dependencies 27 | * Enable correct and reproducible (hermetic) AOSP builds 28 | * Introduce a configuration mechanism that will reduce complexity of AOSP builds 29 | * Allow for greater integration of build and test activities 30 | * Combine all of these to drive significant improvements in build time and experience 31 | 32 | The benefits of this migration to the Bazel community are: 33 | 34 | * Significant ongoing investment in Bazel to support Android Platform builds 35 | * Expansion of the Bazel ecosystem and community to include, initially, tens of thousands of Android Platform developers and Android handset OEMs and chipset vendors. 36 | * Google’s Bazel rules for building Android apps will be open sourced, used in AOSP, and maintained by Google in partnership with the Android / Bazel community 37 | * Better Bazel support for building Android Apps 38 | * Better rules support for other languages used to build Android Platform (Rust, Java, Python, Go, etc) 39 | * Strong support for [Bazel Long Term Support (LTS) releases](https://blog.bazel.build/2020/11/10/long-term-support-release.html), which benefits the expanded Bazel community 40 | * Improved documentation (tutorials and reference) 41 | 42 | The recent check-in of Bazel to AOSP begins an initial pilot phase, 43 | enabling Bazel to be used in place of Ninja as the execution engine to 44 | build AOSP. Bazel can also explore the AOSP build graph. We're pleased to 45 | be developing this functionality directly in the Bazel and AOSP codebases. 46 | As with most initial development efforts, this work is experimental in 47 | nature. Remember to use the currently supported Android Platform Build 48 | System for all production work. 49 | 50 | We believe that these updates to the Android Platform Build System enable 51 | greater developer velocity, productivity, and happiness across the entire 52 | Android Platform ecosystem. 53 | 54 | Joe (on behalf of the Bazel and AOSP infrastructure teams) 55 | 56 | ![Bazel for AOSP](/assets/bazel_aosp.jpg) 57 | -------------------------------------------------------------------------------- /_posts/2021-03-04-bazel-debian-packaging.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Google and Debian work together to make COVID-19 researchers’ lives easier" 4 | authors: 5 | - hicksjoseph 6 | - pcloudy 7 | - olekw 8 | --- 9 | 10 | * Bazel is now available as an easy to install package distributed on Debian and Ubuntu. 11 | * Tensorflow packaging for Debian is progressing. 12 | 13 | Olek Wojnar, Debian Developer, reached out to the Bazel team about packaging and distributing Bazel on Debian (and other Linux distributions such as Ubuntu) in service of delivering Tensorflow Machine Learning functionality for COVID-19 researchers: 14 | 15 | > “I'm working with the Debian Med team right now to get some much-needed software packaged and available for users in the medical community to help with the COVID-19 pandemic. At least one of the packages we desperately need requires Bazel to build. Clearly this is an unusual and very critical situation. I don't think it's an exaggeration to say that lives may literally depend on us getting better tools to the medical professionals out there, and quickly. The entire international community would be extraordinarily grateful if @google and the @bazelbuild team could prioritize helping with this!” 16 | 17 | The Bazel team jumped in to help Olek and the COVID-19 research community. Yun Peng, Software Engineer at Google with Olek Wojnar led the team of Bazel and Debian volunteers to move the project forward. The joint effort between Debian and Google has produced some great results, including packaging the Bazel bootstrap variant in 6 months time (Debian 11 -- released in Late 2021; Ubuntu 21.04 -- 22 April 2021). Bazel is now available as an easy to install package distributed on Debian and Ubuntu. The extended Google team continues to work with Debian towards the next step of packaging and distributing Tensorflow on Debian and other Linux distributions. 18 | 19 | In addition to Yun and Olek, other contributors to this project include Michael R. Crusoe of Debian, Joe Hicks, John Field, Philipp Wollermann, and Tobias Werth of Google. 20 | 21 | ![Bazel](/assets/bazel-icon.png) 22 | ![Debian](/assets/debian-logo.png) 23 | -------------------------------------------------------------------------------- /_posts/2021-06-15-bazel-rolling-releases.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel rolling releases" 4 | authors: 5 | - fwe 6 | --- 7 | 8 | **tl:dr Bazel rolling releases are now available ** 9 | 10 | As previously [announced](https://blog.bazel.build/2020/11/10/long-term-support-release.html), Bazel has been migrating to a two-track release model to better address the different needs of our users. 11 | 12 | Roughly every nine months, we’ll publish a stable LTS release that has been thoroughly tested against downstream projects, and which will receive critical security and bug fixes afterwards. 13 | 14 | For those of you who want to live closer to HEAD, we’re offering rolling releases. These weekly releases are tested on Bazel's test suite on Bazel CI and Google’s internal test suite. Where possible, incompatible flags will still be used to ease the burden of migrating to new functionality, but default behaviors may change with any rolling release. (You can also use rolling releases to preview the next LTS version. For example, 5.0.0-pre.20210604.6 is based on a candidate cut on 2021-06-04 and represents a milestone towards the 5.0 LTS release.) 15 | 16 | While the [first LTS release](https://blog.bazel.build/2021/01/19/bazel-4-0.html) has been available since January, I’m very happy to announce that rolling releases are now available. 17 | 18 | You can download the latest rolling release (5.0.0-pre.20210604.6) from [GitHub](https://github.com/bazelbuild/bazel/releases/tag/5.0.0-pre.20210604.6) and [our releases website](https://releases.bazel.build/5.0.0/rolling/5.0.0-pre.20210604.6/index.html). Alternatively you can use [Bazelisk v1.9.0](https://github.com/bazelbuild/bazelisk/releases/tag/v1.9.0) (or later), which supports rolling releases, too. You can set up Bazelisk to use a specific version name or the “rolling” identifier, which uses the most recent rolling release. For more details, see the [Bazelisk documentation](https://github.com/bazelbuild/bazelisk#how-does-bazelisk-know-which-bazel-version-to-run). 19 | 20 | We’re still working on polishing some rough edges, especially around documentation. Please let us know if you have feedback - simply reply to the [announcement in bazel-discuss](https://groups.google.com/g/bazel-discuss/c/U1UiYxSn5_8) or post to one of the following GitHub issues: [#13505](https://github.com/bazelbuild/bazel/issues/13505) covers rolling releases in general, whereas [#13572](https://github.com/bazelbuild/bazel/issues/13572) is the tracking issue for 5.0.0-pre.20210604.6 in particular. 21 | -------------------------------------------------------------------------------- /_posts/2021-10-23-bazelcon-registration-2021.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Register for BazelCon 2021 4 | authors: 5 | - hicksjoseph 6 | --- 7 | 8 | BazelCon is coming to you on November 17-18, 2021! BazelCon registration is open! http://goo.gle/bazelcon21 9 | 10 | On November 17-18, 2021, connect with the Bazel team, Bazel Build enthusiasts, contributors, users, and friends in a welcoming environment! Register 👉 http://goo.gle/bazelcon21 11 | 12 | At this year's virtual event, you can collaborate with peers, join a live Q&A with the Bazel team, and hear a number of interesting presentations including: 13 | 14 | - Bazelizing a Gigantic iOS App 15 | - Bazel's New External Dependency System 16 | - Bias Busting + Unconscious Bias 17 | - Open Source Licensing Compliance with Bazel 18 | - Hermetic Vignettes 19 | - Embedded Platform Testing with Remote Execution 20 | 21 | In the meantime, join the conversation on Twitter by using #BazelCon. 22 | 23 | If you have any questions, please reach out to us at bazelcon-planning@google.com. 24 | 25 | Thanks, 26 | The Bazel team 27 | 28 | -------------------------------------------------------------------------------- /_posts/2021-11-17-Remembering-Jon-Gerrish.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Remembering Jon Gerrish" 4 | authors: 5 | - joehicks 6 | --- 7 | 8 | ## Remembering Jon Gerrish 9 | 10 | Like many others, I was shocked, then deeply saddened to learn of the tragic passing of Jon Gerrish and his family while hiking this August. I first met Jon when he was a software engineer at Google, working on the [Robolectric testing framework for Android](http://robolectric.org/). I was managing the team working on Bazel (and still do), and Jon had approached us to help integrate Robolectric testing into the Android build/test workflow at Google. Many tool developers were content to leave the "last mile" of tool integration with the build/test process to others, but Jon was insistent on collaborating directly with the Bazel team to ensure the smoothest possible development and testing experience. His passion for developer productivity and code quality was inspiring. He was also a joy to work with. While he was intense and detail-oriented about important technical matters, he was unfailingly respectful and congenial in his interactions with everyone. 11 | 12 | Even though he was a Googler at the time, I consider Jon to be one of the earliest contributors to Bazel's open rules ecosystem, since he helped us improve the plugability and extensibility of Bazel's Android rules framework, as well as rule development generally. In addition to working on Robolectric, Jon contributed to a number of other Android development tools at Google and their integration with Blaze. And after leaving Google, Jon continued to contribute to Bazel's Android development rules and framework through numerous open source contributions. 13 | 14 | It's heartbreaking to lose a member of the Bazel family, particularly one who was so generous to the project and its users. But I know that Jon's joyous spirit will continue to inspire those on the Bazel team who were lucky to have worked with him. 15 | 16 | John Field, on behalf of the Bazel Team 17 | -------------------------------------------------------------------------------- /_posts/2022-02-17-Launching-new-Bazel-site.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Launching the new and improved Bazel site 4 | authors: 5 | - philomathing 6 | --- 7 | 8 | **Launching the new and improved Bazel site** 9 | 10 | The Bazel team is excited to announce migration to a new [docs experience](https://bazel.build)! Check it out and [tell us what you think](https://forms.gle/onkAkr2ZwBmcbWXj7). Go ahead; we’ll be here when you get back. 11 | 12 | Renewing the Bazel documentation infrastructure was a team priority in 2021. Along with improving findability, the new site also makes it easier to scale and contribute so we can continue to grow our knowledge base together. 13 | 14 | The new documentation has several new features: 15 | 16 | * Better user experience. With automated localization / translation, filterable sitemaps, and a consistent navigation structure, more users can find what they are looking for, faster. 17 | * Standardized contributor experience. We’re making regular improvements to our documentation, and encourage the community to [contribute](https://bazel.build/contribute/docs). 18 | * Improved information architecture. The refactored sitemap and landing pages give a professional feel to the site, and improve consistency with other Google OSS project sites like [Tensorflow](https://www.tensorflow.org/), [Android](https://source.android.com/), and [Firebase OSS](https://firebaseopensource.com/). 19 | * Less engineering burden. Reduced site infrastructure maintenance toil frees time for other Bazel ecosystem initiatives. 20 | 21 | Welcome to the new [bazel.build](https://bazel.build). Like what you see? Find a bug? [Let us know](https://forms.gle/onkAkr2ZwBmcbWXj7). We want the new docs site to be a place you want to build in. 22 | 23 | Many thanks to the writers, engineers, and site specialists who made this migration possible — including you, the Bazel community. See you in the docs! 24 | -------------------------------------------------------------------------------- /_posts/2022-07-11-Bazel-IntelliJ-Update.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Announcing Bazel & JetBrains co-maintenance of IntelliJ IDEA Bazel Plugin" 4 | authors: 5 | - radvani13 6 | --- 7 | 8 | ### **Announcing Bazel & JetBrains co-maintenance of IntelliJ IDEA Bazel Plugin** 9 | 10 | Bazel plugin for IntelliJ IDEA announcement 11 | 12 | We are excited to announce that JetBrains* has joined as co-maintainer of the open source [Bazel plugin for IntelliJ IDEA](https://ij.bazel.build/). Using this plugin, developers can import Bazel project files and run Bazel tests and binaries within IntelliJ IDEA. JetBrains has already contributed to the 2022.1 and 2022.2 compatibility releases, so the community may be familiar with their work. 13 | 14 | 15 | As co-maintainer, the JetBrains team reviews and merges contributions, collaborates on the roadmap, and monitors the CI pipeline, including the overall health of the [plugin’s Github repo](https://github.com/bazelbuild/intellij). This new maintenance structure enables faster review and merger of developer requests — such as support for Scala — and support for more contributions to and iteration of the plugin. 16 | 17 | We welcome you to join the discussion! Discuss your feature request ideas and contributions by joining the [Bazel-Intellij plugin Google group](https://groups.google.com/g/intellij-bazel-plugin/) or contacting the [Bazel Product team](mailto:bazel-discuss@googlegroups.com). 18 | 19 | 20 | 21 | *Copyright © 2022 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o. 22 | -------------------------------------------------------------------------------- /_posts/2022-08-03-bazel-community-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel Community Round-up for June & July 2022" 4 | authors: 5 | - jin 6 | --- 7 | 8 | Welcome to the first issue of the Bazel Community Round-up, where we collect and share 9 | content about Bazel over the month. Read on! 10 | 11 | * Releases 12 | * [Bazel 5.2](https://blog.bazel.build/2022/06/08/bazel-5.2.html) 13 | * Blogposts, guides and articles 14 | * [Announcing Bazel & JetBrains co-maintenance of IntelliJ IDEA Bazel Plugin](https://blog.bazel.build/2022/07/11/Bazel-IntelliJ-Update.html) 15 | * [Why use the Bazel build system? | Shashank](https://shashank.bearblog.dev/why-bazel/) 16 | * [How Bazel built its CI system on top of Buildkite | Buildkite Blog](https://buildkite.com/blog/how-bazel-built-its-ci-system-on-top-of-buildkite) 17 | * Bazel Blogpost Series by [Son Luong](https://twitter.com/sluongng) 18 | * [How Bazel Works](https://sluongng.hashnode.dev/bazel-caching-explained-pt-1-how-bazel-works) 19 | * [Bazel In-Memory Cache](https://sluongng.hashnode.dev/bazel-caching-explained-pt-2-bazel-in-memory-cache) 20 | * [Repository Cache](https://sluongng.hashnode.dev/bazel-caching-explained-pt-3-repository-cache) 21 | * [1.5 hours free Bazel tutorial series by RayWenderlich.com](https://www.raywenderlich.com/31558158-building-with-bazel/) 22 | * [Incremental builds for Haskell with Bazel - Tweag](https://www.tweag.io/blog/2022-06-23-haskell-module/) 23 | * [Hacker News Discussion](https://news.ycombinator.com/item?id=31847594) 24 | * [Bazel Hermetic Toolchain and Tooling Migration | by Tinder | Tinder Tech Blog | Jun, 2022 | Medium](https://medium.com/tinder-engineering/bazel-hermetic-toolchain-and-tooling-migration-c244dc0d3ae) 25 | * Videos & talks 26 | * [Bazel Community Update + Extending Gazelle to generate BUILD files](https://www.youtube.com/watch?v=E1-U7EAfhXw&feature=youtu.be) 27 | * [Bazel Community Update + Hands-On with Bzlmod](https://www.youtube.com/watch?v=MuW5XNcFukE) 28 | * [Bazel Tutorial - Ultimate Beginner Guide](https://youtu.be/toPWLiUq5Ps) by [Gisli Konradsson](https://twitter.com/GisliKonradsson) 29 | * [Stevey's Tech Talk e53 - The Bazel Build System, and Aspect.dev](https://www.youtube.com/watch?v=WBW0TthiTU4) with [Alex Eagle](https://twitter.com/Jakeherringbone) 30 | * Discussions 31 | * [/r/bazel: What would do if you could reinvent Bazel?](https://old.reddit.com/r/bazel/comments/vky0do/what_would_do_if_you_could_reinvent_bazel/) 32 | -------------------------------------------------------------------------------- /_posts/2022-09-08-bazel-community-roundup.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel Community Round-up for August 2022" 4 | authors: 5 | - jin 6 | --- 7 | 8 | Welcome to the August issue of the Bazel Community Round-up, where we collect and share 9 | content about Bazel over the month. 10 | 11 | **Announcements** 12 | 13 | * Call for Proposals for BazelCon 2022 (Nov 16-17, New York City) is now open. [Submit your proposal here.](https://bit.ly/bazelcon2022cfp) 14 | * [BazelCon home page](https://conf.bazel.build/) 15 | * [bazel-discuss thread](https://groups.google.com/g/bazel-discuss/c/QvNCK8z0ha8) 16 | * Slack is now kindly sponsoring [slack.bazel.build](https://slack.bazel.build), thanks to Erik Kerber. 17 | * The frontend for bzlmod packages, [registry.bazel.build](http://registry.bazel.build), has a new UI [thanks to Max Goisser](https://twitter.com/Jakeherringbone/status/1559188586859180032). 18 | * Bazel is an official project in the new [Google’s Open Source Software Vulnerability Rewards Program](https://security.googleblog.com/2023/08/Announcing-Googles-Open-Source-Software-Vulnerability-Rewards-Program%20.html). 19 | * Radhika, PM for Bazel, is running a user study for Android App Development with Bazel. Please [fill up this form](https://forms.gle/XB2114bCrqSFNPHe9) if you develop Android apps. 20 | * [bazel-discuss thread](https://groups.google.com/g/bazel-discuss/c/298pjpxsciU) 21 | * Bazel 6.0 LTS is now being prepared for release. 22 | * [Release tracker issue](https://github.com/bazelbuild/bazel/issues/16159) 23 | * [bazel-discuss thread](https://groups.google.com/g/bazel-discuss/c/oUB9-arSbYM) 24 | * Bazel 5.3rc2 is [available for testing](https://groups.google.com/g/bazel-discuss/c/512ou_Zu5LU). 25 | 26 | **Blogs, guides and articles** 27 | 28 | * [Bazel in CI (Part 0): The Developer Experience Funnel](https://sluongng.hashnode.dev/bazel-in-ci-part-0-the-developer-experience-funnel) 29 | * [Monorepo.tools](https://monorepo.tools/) 30 | * [Bazel + TypeScript: faster with Remote Execution](https://blog.aspect.dev/typescript-with-rbe) 31 | 32 | **Videos & talks** 33 | 34 | * Bazel Community Update with Jason Dobies: [Using Bazel for JavaScript Projects](https://www.youtube.com/watch?v=RIfYqX0JJYk&feature=youtu.be) by [Alex Eagle](https://twitter.com/Jakeherringbone) 35 | * [Follow-up links on bazel-discuss](https://groups.google.com/g/bazel-discuss/c/EgiymGtpozk) 36 | * [Bazel Tutorial - How to package and deploy build output and artifacts](https://www.youtube.com/watch?v=ldn4RiyN25c) by [Gisli Konradsson](https://twitter.com/GisliKonradsson) 37 | 38 | **Social highlights** 39 | 40 | * [Grab has reportedly reduced iOS P95 build times by 50% by using Bazel](https://twitter.com/dqhieu/status/1557649832915140608) 41 | -------------------------------------------------------------------------------- /_posts/2022-12-19-bazel-6.0.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel 6.0 LTS 4 | authors: 5 | - radvani 6 | --- 7 | 8 | # Bazel 6.0 launched! 9 | 10 | Today, we launch Bazel 6.0 LTS! Bazel 6.0 delivers many requested customer updates to simplify Bazel usage and eliminate common Android app development roadblocks. 11 | 12 | ![Image](/images/Bazel6.0ReleaseBlogPost.png) 13 | 14 | ### Bzlmod becomes Generally available 15 | [Bzlmod](https://bazel.build/docs/bzlmod) automatically resolves transitive dependencies, allowing projects to scale while staying fast and resource-efficient. In development since 2021, Bzlmod enters general availability with Bazel 6.0. 16 | 17 | - Pipelines to automatically check common dependencies and rulesets into the Bazel Central Registry. 18 | - Updated [Bzlmod Migration Guide](https://docs.google.com/document/d/1JtXIVnXyFZ4bmbiBCr5gsTH4-opZAFf5DMMb-54kES0/edit?usp=gmail) includes scripts and documentation for migration. 19 | - Added Bzlmod support for `rules_jvm_external`, allowing users to download Maven dependencies for Java projects. 20 | 21 | ## Build Android apps with Bazel 22 | By popular customer request, Bazel 6.0 uses [D8](https://developer.android.com/studio/command-line/d8) for dexing and desugaring by default. With D8, you leverage the latest Android tooling when building mobile apps. Through [community contributions,](https://github.com/bazelbuild/bazel/pulls?q=is%3Apr+is%3Aclosed+label%3Ateam-android+closed%3A2021-11-01..2022-12-02+) Bazel Android builds now also support a variety of quality-of-life and efficiency improvements, such as persistent workers for resource processing and (optional) manifest permission merging. 23 | 24 | ## Optional toolchains 25 | Our Developer Satisfaction survey indicated that rule authors want support for improved [toolchain development](https://bazel.build/versions/6.0.0/extending/toolchains#optional-toolchains). Bazel 6.0 allows authors to write rules using an [optional, high performance toolchains](https://bazel.build/docs/toolchains#optional-toolchains) when available, with a fallback implementation for other platforms. 26 | 27 | ## New build performance profiles 28 | [Optimize for build productivity](https://blog.bazel.build/2022/11/15/build-performance-metrics.html) with new system and CPU related metrics data. 29 | 30 | - system load average (`--experimental_collect_load_average_in_profiler`) 31 | - worker memory usage (`--experimental_collect_worker_data_in_profiler`) 32 | - system network usage (`--experimental_collect_system_network_usage`) 33 | 34 | 35 | ## Control `.bzl` dependencies with load visibility 36 | Now, rule and macro authors can declare a [load visibility](https://bazel.build/versions/6.0.0/concepts/visibility#load-visibility) for their `.bzl` files by calling the new [visibility()](https://bazel.build/versions/6.0.0/rules/lib/globals#visibility) built-in function. This restricts what parts of the workspace may `load()` the `.bzl` file, so that macros and rules do not automatically become public APIs. 37 | 38 | Read [the full release notes for Bazel 6.0](https://github.com/bazelbuild/bazel/releases/tag/6.0.0). 39 | -------------------------------------------------------------------------------- /_posts/2023-01-18-bcr-launch.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Bazel Central Registry Launched! 4 | authors: 5 | - meteorcloudy 6 | --- 7 | 8 | We're thrilled to announce the official launch of the Bazel Central Registry (BCR). As the default Bazel registry for the [Bzlmod](https://bazel.build/versions/6.0.0/build/bzlmod) external dependency system, which enters general availability with Bazel 6.0, the BCR is the recommended place to publish and discover Bazel modules. 9 | 10 | ![Image](/assets/bcr-ui.png) 11 | 12 | The BCR makes managing external dependencies in Bazel projects easier than ever. As a centralized registry, it is maintained via [the BCR Github repository](https://github.com/bazelbuild/bazel-central-registry), which is mirrored to https://bcr.bazel.build, and offers a user-friendly web interface at https://registry.bazel.build for searching and browsing existing modules. To contribute to the BCR, please follow [the BCR contribution guidelines](https://github.com/bazelbuild/bazel-central-registry/blob/main/docs/README.md#bazel-central-registry-bcr-contribution-guidelines). 13 | 14 | We're are looking forward to see the Bazel community migrate to Bzlmod and the BCR, and we can't wait to see the new modules that will be published in the coming weeks and months. We'd like to extend our gratitude to the Bazel community for their involvement in developing and testing the BCR. The BCR will continue to be maintained by both the Bazel team and the community in the future. 15 | -------------------------------------------------------------------------------- /_posts/2023-01-26-call-for-docs-contributions.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: A call for contributions to Bazel’s documentation 4 | authors: 5 | - keertk 6 | --- 7 | 8 | Last year, we made significant changes to Bazel’s documentation website ([bazel.build](https://bazel.build/)) to elevate overall developer experience. By redesigning the site’s architecture, we’ve made it easier for the community to contribute new documentation and add more content. 9 | 10 | In 2023, we aim to improve Bazel’s documentation and eliminate common issues. We can achieve this goal by reducing the number of open GitHub documentation issues in a sustainable way. 11 | 12 | Here’s where we’d like your support: 13 | 14 | 1. Join our [Slack channel](https://app.slack.com/client/TA4K1KQ87/C04JVKPP4EB)! This is where we will collaborate and engage with you on documentation contributions. 15 | 2. Look through the [pre-filtered link](https://github.com/bazelbuild/bazel/issues?q=is%3Aissue+is%3Aopen+label%3Ateam-Documentation+label%3A%22help+wanted%22+) of open issues in the bazelbuild/bazel repository. (Optionally, you can filter by issues labeled “team-Documentation” and “help wanted” yourself.) 16 | 3. Identify issues that you can assist with. Add a comment to the issues to let other community members know that you are working on them. 17 | 4. If you’re new to this community, look out for issues labeled “good first issue” - these are handpicked by the Bazel team as good introductory problems to work on. 18 | 5. Go to the page you would like to update and click on the “View Source” button found on top. This will direct you to the correct file in the docs section of the repository. Make the required updates and submit a PR. 19 | 20 | ![Image](/assets/blog-docs-view-source.png) 21 | 22 | And that’s it! Our new internal processes will take care of the rest. 23 | 24 | We encourage you all to contribute to Bazel’s documentation! By sharing what you know and learn, you’re helping us grow, strengthen, and foster our amazing community of developers. Let us know if we can help in any way during the process - reach out to Radhika Advani on Slack, or post on our dedicated [channel](https://app.slack.com/client/TA4K1KQ87/C04JVKPP4EB). 25 | 26 | _Make sure to check out Lyra Levin’s [lightning talk](https://www.youtube.com/watch?v=LBPNqyC6v_A&list=PLxNYxgaZ8RsdH4GCIZ69dzxQCOPyuNlpF&index=24) from BazelCon 2022 on documentation barriers and benefits!_ 27 | -------------------------------------------------------------------------------- /_posts/2023-02-15-github-archive-checksum.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: GitHub Archive Checksum Outage 4 | authors: 5 | - wyv 6 | --- 7 | 8 | On 2023-01-30, many Bazel users encountered build errors due to [a change in GitHub's source archive generation mechanism](https://github.blog/changelog/2023-01-30-git-archive-checksums-may-change/). The change, since rolled back, caused all source archives (_not_ release archives) to have a different checksum, despite their contents being unchanged. This caused an outage for several package management systems that relied on stable checksums, including Bazel. 9 | 10 | 11 | ## What went wrong 12 | 13 | GitHub allows repo maintainers to upload _release archives_ for each release. These are generated and uploaded by the repo maintainer, and are always served as-is. Additionally, GitHub allows users to download _source archives_ for each tag, which are generated on-demand using `git archive` and are thus sensitive to changes in Git. 14 | 15 | ![The two types of archive downloads on GitHub: release archives (stable) and source archives (unstable)](/assets/github-archives.png) 16 | 17 | Bazel has recommended archives downloaded from the Internet to be checked against an explicit SHA-256 checksum. Based on past discussions with GitHub, the Bazel team held the belief that the source archives (served under the `/archives/refs/tags` URLs) were guaranteed to have stable checksums, and thus recommended that such URLs be used in the `source.json` file in the Bazel Central Registry. However, when GitHub updated its Git version to one with a different default compression algorithm, it changed the checksums of all dynamically generated source archives. All Bazel users who relied on GitHub source archives having a stable checksum encountered build breakages. 18 | 19 | 20 | ## What to do as a rule author 21 | 22 | The rule authors SIG has [changed the rules template](https://github.com/bazel-contrib/rules-template/pull/44) to recommend using release archives instead of source archives. If you're a rule author, you should follow this advice by creating release archives, and advise your users to switch. 23 | 24 | In the future, we'll work on further validation checks in the Bazel Central Registry to make sure these unstable source archive URLs are not permitted in `source.json` files. 25 | 26 | 27 | ## What to do as a Bazel user 28 | 29 | If you're using the `WORKSPACE` file, for any of your direct dependencies from GitHub, consider using a release archive instead of a source archive, if available. 30 | 31 | If you're using Bzlmod and have a custom registry, you can use the [`mirrors`](https://bazel.build/external/registry#index_registry) attribute of the `bazel_registry.json` file to specify a custom mirror with artifacts that you control. 32 | 33 | Furthermore, consider joining our community-moderated [Slack server](https://slack.bazel.build), where you can engage in discussions with other Bazel users, and be notified when similar outages happen. 34 | 35 | 36 | ## Further reading 37 | 38 | * GitHub discussions on the [initial breakage](https://github.com/orgs/community/discussions/45830) and [community requirements](https://github.com/orgs/community/discussions/46034) 39 | * [How GitHub's upgrade broke Bazel builds](https://jayconrod.com/posts/127/how-github-s-upgrade-broke-bazel-builds) by Jay Conrod 40 | 41 | -------------------------------------------------------------------------------- /_posts/2023-02-24-cleanup-stale-issues.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Improving the health of Bazel’s orphaned issues and PRs" 4 | authors: 5 | - radvani 6 | - meteorcloudy 7 | - keertk 8 | --- 9 | 10 | Over the past few years, we have noticed several languishing issues and pull requests on repositories across the [Bazel GitHub organization](https://github.com/bazelbuild). While some have stalled without updates from authors, others have languished due to limited bandwidth and resources on the Bazel team’s end. In late 2022, we prioritized an effort to periodically review old issues/PRs and close them out as needed. Our apologies for the late communication on this process. 11 | 12 | **Goal:** Close issues/PRs older than 6 months that haven't been addressed and are unlikely to be addressed at the current state, in order to sustainably manage and maintain the growing backlog. 13 | 14 | **Repository targeted:** [bazelbuild/bazel](https://github.com/bazelbuild/bazel) 15 | 16 | _(Note: we implemented a slightly similar process for [bazelbuild/intellij](https://github.com/bazelbuild/intellij) as well.)_ 17 | 18 | **Details:** 19 | 20 | - We have implemented a stale workflow using GitHub Actions to notify users of inactivity in an issue/PR before closing as stale. 21 | - The bot will review all issues/PRs that are older than 3 years and close them out 14 days after a notification. After the first pass is complete, we’ll move on to more recent issues (2 years, 1 year, etc.) before eventually settling at 6 months. This phased process minimizes notifications and avoids loss of important comments. 22 | - Please note that all issues with priority P0 and P1 will be excluded from the stale workflow. Additionally, issues/PRs that are tagged as “untriaged”, ”awaiting-bazeler”, “awaiting-review”, “awaiting-PR-merge”, or “not stale” will be excluded from the stale workflow. 23 | 24 | **Our ask:** If you think any issue/PR that we flag as “**stale**” is still something relevant or you are interested in getting the issue resolved, please let our triage team know by tagging @bazelbuild/triage in a comment. The triage team will review the issue with the appropriate team at Google and reopen or suggest next steps. 25 | 26 | Over the past few weeks, we might have closed some issues and PRs that are still relevant, and our only intent was to truly understand those that need our attention so we can refocus our resources where we can be most impactful. Our apologies for the inconvenience caused. As we continue with this process, we might close out issues simply based on issue age and inaction. We would like to hear from you - please reach out to product@bazel.build. 27 | 28 | Thank you for your support and understanding. 29 | -------------------------------------------------------------------------------- /_posts/2023-03-16-enable-github-discussion.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: Enable GitHub Discussions for the Bazel repository 4 | authors: 5 | - pcloudy 6 | --- 7 | We are excited to announce that [GitHub Discussions](https://github.com/bazelbuild/bazel/discussions) is now enabled for the Bazel GitHub project. This is a new channel for the Bazel community to collaborate, share ideas, ask questions, and provide feedback on the Bazel project, all without the need to open issues. 8 | 9 | GitHub Discussions enables threaded conversations with categorization, labeling, notifications, @mentions, and voting options for easier collaboration and organization. We believe that GitHub Discussions will improve collaboration and provide a record of transparent conversations and decisions for future reference. We encourage the community to use this feature for topic-specific discussions. If you want to ask quick questions and start real-time discussions, please join [our Slack channel](https://slack.bazel.build/). 10 | 11 | To use GitHub Discussions, navigate to the "Discussions" tab on [the Bazel GitHub Repository's main page](https://github.com/bazelbuild/bazel), then click "New Discussion" to start a new conversation. 12 | 13 | ![Image](/assets/github-discussions.png) 14 | 15 | Other channels like [bazel-discuss](https://groups.google.com/g/bazel-discuss) and [bazel-dev](https://groups.google.com/g/bazel-dev) Google Groups are still available. 16 | 17 | Thank you for your support and contributions to Bazel! 18 | -------------------------------------------------------------------------------- /_posts/2023-05-25-save-the-date-bazelcon2023.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Save the Date: BazelCon 2023" 4 | authors: 5 | - meteorcloudy 6 | --- 7 | 8 | Dear Bazel Community, 9 | 10 | We’re excited to announce that BazelCon 2023 will be held October 24-25 at 11 | [Google Munich](https://goo.gl/maps/6ZFzh6Qu5gAZDxPSA)! 12 | 13 | BazelCon is the annual conference for the Bazel build system users and 14 | contributors. It is a great opportunity to learn about the latest developments 15 | in Bazel, opportunity to contribute and network with other Bazel users and 16 | contributors. 17 | 18 | The conference agenda will be shaped together with the community, but you can 19 | expect 20 | 21 | * Tech talks, lightning talks and demos presented by members of the Bazel 22 | community 23 | * Birds of a Feather sessions on various topics 24 | * Office hours with Bazel experts 25 | * Community organized events 26 | * ... and more! 27 | 28 | Registration and Call for Proposals details will be available on 29 | [bazel.build](https://bazel.build) in the next few weeks, we look forward to 30 | seeing you there! 31 | 32 | **Update [2023-06-29]**: [Call for Proposals](https://github.com/bazelbuild/bazel/discussions/18811) is now open! 33 | 34 | The Bazel team 35 | -------------------------------------------------------------------------------- /_posts/2023-07-19-bazel-partner.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: "Bazel Product Partner Program" 4 | authors: 5 | - radvani 6 | --- 7 | 8 | ## New Bazel Product Partner Program is now live! 9 | 10 | Dear community members, 11 | 12 | We are very happy to announce that the [Bazel product partner program](https://bazel.build/community/partners) is now live! With this program we aim to recognize organizations that are improving the Bazel developer experience by adding tools or services that integrate with Bazel. 13 | 14 | Bazel product partners are organizations that build open source or paid tools that interface with Bazel. These tools aim to support Bazel end user experiences and accelerate developer productivity. 15 | 16 | We have six partners today including [JetBrains*](https://plugins.jetbrains.com/), [Aspect.dev](https://www.aspect.build/), [EngFlow](https://www.engflow.com/), [Gradle](https://gradle.com/), [Buildbuddy](https://www.buildbuddy.io/) and [Bitrise](https://bitrise.io/). These organizations are providing plugins, build scans, and remote build execution tools for Bazel users. 17 | 18 | We're looking for partners who are passionate about Bazel and who want to make it even more useful by building complementary functionality. If you're interested in becoming a product partner, please write to us [product@bazel.build](mailto:product@bazel.build) 19 | 20 | We're excited to see what our product partners will build with Bazel! 21 | Thank you for your continued support of Bazel. 22 | 23 | The Bazel Team 24 | 25 | _*Copyright © 2023 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o._ 26 | -------------------------------------------------------------------------------- /_posts/2024-04-29-bazelcon-save-the-date.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: posts 3 | title: BazelCon 2024, Oct 14-15 at the Computer History Museum, Mountain View 4 | authors: 5 | - meisterT 6 | --- 7 | 8 | During last year’s BazelCon keynote, we issued a challenge: *“Let us organize 9 | BazelCon together!”* We were thrilled when community members from Aspect.build, 10 | BuildBuddy, EngFlow, Gradle, Salesforce, and Tweag took us up on this offer. 11 | Over the past few months, we've been working together to make this vision a 12 | reality. 13 | 14 | Today, we are happy to announce that BazelCon 2024 will be held on Oct 14-15 at 15 | the Computer History Museum in Mountain View, CA. This year’s event is sponsored 16 | by BuildBuddy, Google and EngFlow as platinum sponsors, nativelink as gold 17 | sponsor, and by Aspect.dev, Tweag and VirtusLab as silver sponsors. The event 18 | will be run by the Linux Foundation. 19 | 20 | We will set up registration and a call for presentations in the next few weeks, 21 | stay tuned! 22 | 23 | 24 | -------------------------------------------------------------------------------- /_sass/blog.scss: -------------------------------------------------------------------------------- 1 | // Styles specific to blog.bazel.build 2 | 3 | .blog-post { 4 | margin-bottom: 60px; 5 | 6 | .blog-post-title { 7 | margin-bottom: 5px; 8 | } 9 | 10 | .blog-post-meta { 11 | margin-bottom: 20px; 12 | } 13 | 14 | img { 15 | max-width: 70%; 16 | display: block; 17 | margin: 0 auto; 18 | } 19 | } 20 | 21 | @media (min-width: 768px) { 22 | .container { 23 | max-width: 1170px; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /_sass/footer.scss: -------------------------------------------------------------------------------- 1 | // Footer styles 2 | .footer { 3 | margin-top: 40px; 4 | background-color: #424242; 5 | color: #fff; 6 | padding: 20px; 7 | 8 | .text-muted { 9 | color: #e0e0e0; 10 | } 11 | 12 | a { 13 | color: #e0e0e0; 14 | 15 | &:hover, 16 | &:focus { 17 | color: #fff; 18 | text-decoration: none; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /_sass/navbar.scss: -------------------------------------------------------------------------------- 1 | // Navbar styles 2 | $navbar-bg-color: $bazel-green; 3 | $navbar-hover-bg-color: $bazel-green-light; 4 | $navbar-color: $color-on-bazel-green; 5 | $navbar-hover-color: #444; 6 | $navbar-input-bg-color: $bazel-green-light; 7 | $navbar-input-focus-bg-color: $color-on-bazel-green; 8 | $navbar-input-border-color: $bazel-green; 9 | 10 | .navbar-inverse { 11 | margin-bottom: 0; 12 | background-color: $navbar-bg-color; 13 | border-bottom: 1px solid $navbar-bg-color; 14 | 15 | .navbar-brand { 16 | padding-top: 12px; 17 | 18 | .navbar-logo { 19 | height: 28px; 20 | } 21 | } 22 | 23 | a.navbar-brand { 24 | color: $navbar-color; 25 | 26 | &:focus, 27 | &:hover { 28 | color: $navbar-hover-color; 29 | background-color: $navbar-bg-color; 30 | } 31 | } 32 | 33 | .navbar-nav > li > a { 34 | color: $navbar-color; 35 | 36 | &:focus, 37 | &:hover { 38 | color: $navbar-hover-color; 39 | background-color: $navbar-hover-bg-color; 40 | } 41 | } 42 | 43 | .navbar-nav .nav-icon { 44 | font-size: 18px; 45 | } 46 | 47 | .navbar-nav > li.active > a { 48 | background-color: $navbar-hover-bg-color; 49 | 50 | &:focus, 51 | &:hover { 52 | background-color: $navbar-hover-bg-color; 53 | } 54 | } 55 | 56 | .navbar-form { 57 | border-color: $navbar-bg-color; 58 | 59 | .input-sm { 60 | margin-top: 2px; 61 | } 62 | 63 | input[type="search"] { 64 | background-color: $navbar-input-bg-color; 65 | border-color: $navbar-input-border-color; 66 | 67 | &::placeholder { 68 | color: $navbar-color; 69 | } 70 | 71 | &:focus, 72 | &:active { 73 | background-color: $navbar-input-focus-bg-color; 74 | } 75 | } 76 | } 77 | 78 | .navbar-toggle { 79 | border: 1px solid $navbar-bg-color; 80 | 81 | &.active, 82 | &:focus, 83 | &:hover { 84 | background-color: $navbar-hover-bg-color; 85 | } 86 | } 87 | 88 | .navbar-collapse { 89 | border-color: $navbar-bg-color; 90 | } 91 | } 92 | 93 | @media (max-width: 767px) { 94 | #cse-search-box { 95 | margin-top: 0; 96 | margin-bottom: 0; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /_sass/tables.scss: -------------------------------------------------------------------------------- 1 | // Bootstrap requires tables to carry a .table class in order for styling to 2 | // be applied. However, redcarpet emits table elements without the class and 3 | // it is not possible to customize it. 4 | // 5 | // Ideally, we would use a SASS directive to make the table element inherit 6 | // the formatting defined by the bootstrap templates... but we cannot do so 7 | // at the moment because we don't build bootstrap ourselves from its SASS 8 | // sources. Therefore, this file just borrows the minimal amount of code 9 | // from bootstrap 3.3.7 to render tables nicely. 10 | 11 | table { 12 | background-color: $table-bg; 13 | } 14 | caption { 15 | padding-top: $table-cell-padding; 16 | padding-bottom: $table-cell-padding; 17 | color: $text-muted; 18 | text-align: left; 19 | } 20 | th { 21 | text-align: left; 22 | } 23 | 24 | // Baseline styles 25 | 26 | table { 27 | width: 100%; 28 | max-width: 100%; 29 | margin-bottom: $line-height-computed; 30 | // Cells 31 | > thead, 32 | > tbody, 33 | > tfoot { 34 | > tr { 35 | > th, 36 | > td { 37 | padding: $table-cell-padding; 38 | line-height: $line-height-base; 39 | vertical-align: top; 40 | border-top: 1px solid $table-border-color; 41 | } 42 | } 43 | } 44 | // Bottom align for column headings 45 | > thead > tr > th { 46 | vertical-align: bottom; 47 | border-bottom: 2px solid $table-border-color; 48 | } 49 | // Remove top border from thead by default 50 | > caption + thead, 51 | > colgroup + thead, 52 | > thead:first-child { 53 | > tr:first-child { 54 | > th, 55 | > td { 56 | border-top: 0; 57 | } 58 | } 59 | } 60 | // Account for multiple tbody instances 61 | > tbody + tbody { 62 | border-top: 2px solid $table-border-color; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /archive.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: blog 3 | enable_comments: false 4 | --- 5 | 6 |

Post Archive

7 | 8 |
9 | 10 | {% for post in site.posts %} 11 | 12 | {% assign yearOfPost = post.date | date: "%Y" %} 13 | 14 | 15 | {% if yearOfPost != currentYear %} 16 | 17 | 18 | {% unless forloop.first %}{% endunless %} 19 | 20 | 21 |

{{ yearOfPost }}

22 | 38 | {% endif %} 39 | {% endfor %} 40 |
41 | -------------------------------------------------------------------------------- /assets/BoF_2019_C++.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/BoF_2019_C++.pdf -------------------------------------------------------------------------------- /assets/BoF_2019_FrontEnd.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/BoF_2019_FrontEnd.pdf -------------------------------------------------------------------------------- /assets/BoF_2019_Java.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/BoF_2019_Java.pdf -------------------------------------------------------------------------------- /assets/BoF_2019_Python.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/BoF_2019_Python.pdf -------------------------------------------------------------------------------- /assets/BoF_2019_iOS.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/BoF_2019_iOS.pdf -------------------------------------------------------------------------------- /assets/android_binary_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/android_binary_graph.png -------------------------------------------------------------------------------- /assets/android_binary_graph_proguard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/android_binary_graph_proguard.png -------------------------------------------------------------------------------- /assets/android_library_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/android_library_graph.png -------------------------------------------------------------------------------- /assets/android_resource_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/android_resource_graph.png -------------------------------------------------------------------------------- /assets/bazel-code-search-file-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-file-view.png -------------------------------------------------------------------------------- /assets/bazel-code-search-main-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-main-screen.png -------------------------------------------------------------------------------- /assets/bazel-code-search-repo-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-repo-view.png -------------------------------------------------------------------------------- /assets/bazel-code-search-suggestions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-suggestions.png -------------------------------------------------------------------------------- /assets/bazel-code-search-xref-levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-xref-levels.png -------------------------------------------------------------------------------- /assets/bazel-code-search-xref-pane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-xref-pane.png -------------------------------------------------------------------------------- /assets/bazel-code-search-xref-underlined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-code-search-xref-underlined.png -------------------------------------------------------------------------------- /assets/bazel-hackathon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-hackathon.jpg -------------------------------------------------------------------------------- /assets/bazel-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-icon.png -------------------------------------------------------------------------------- /assets/bazel-q1-2025-bcr-modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-q1-2025-bcr-modules.png -------------------------------------------------------------------------------- /assets/bazel-q2-2024-bazelcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-q2-2024-bazelcon.png -------------------------------------------------------------------------------- /assets/bazel-q2-2024-versioneddocs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-q2-2024-versioneddocs.png -------------------------------------------------------------------------------- /assets/bazel-queries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-queries.png -------------------------------------------------------------------------------- /assets/bazel-stickers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel-stickers.jpg -------------------------------------------------------------------------------- /assets/bazel8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel8.png -------------------------------------------------------------------------------- /assets/bazel_aosp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazel_aosp.jpg -------------------------------------------------------------------------------- /assets/bazelcon-2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazelcon-2019.png -------------------------------------------------------------------------------- /assets/bazelcon24-savethedate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bazelcon24-savethedate.png -------------------------------------------------------------------------------- /assets/bcr-ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/bcr-ui.png -------------------------------------------------------------------------------- /assets/blog-bazel-q2-2023-contributor-metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/blog-bazel-q2-2023-contributor-metrics.png -------------------------------------------------------------------------------- /assets/blog-docs-view-source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/blog-docs-view-source.png -------------------------------------------------------------------------------- /assets/blog-intellij-h2-2022-maintenance-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/blog-intellij-h2-2022-maintenance-model.png -------------------------------------------------------------------------------- /assets/blog-intellij-h2-2022-partner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/blog-intellij-h2-2022-partner.png -------------------------------------------------------------------------------- /assets/change-garlic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/change-garlic.png -------------------------------------------------------------------------------- /assets/ctrl-w-tweet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/ctrl-w-tweet.png -------------------------------------------------------------------------------- /assets/dash-shell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/dash-shell.png -------------------------------------------------------------------------------- /assets/dash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/dash.png -------------------------------------------------------------------------------- /assets/debian-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/debian-logo.png -------------------------------------------------------------------------------- /assets/dirty-unmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/dirty-unmark.png -------------------------------------------------------------------------------- /assets/dirty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/dirty.png -------------------------------------------------------------------------------- /assets/e4b-workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/e4b-workflow.png -------------------------------------------------------------------------------- /assets/edit-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/edit-button.png -------------------------------------------------------------------------------- /assets/error_example_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/error_example_1.png -------------------------------------------------------------------------------- /assets/error_example_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/error_example_2.png -------------------------------------------------------------------------------- /assets/error_example_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/error_example_3.png -------------------------------------------------------------------------------- /assets/error_example_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/error_example_4.png -------------------------------------------------------------------------------- /assets/fullbuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/fullbuild.png -------------------------------------------------------------------------------- /assets/github-archives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/github-archives.png -------------------------------------------------------------------------------- /assets/github-discussions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/github-discussions.png -------------------------------------------------------------------------------- /assets/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/graph.png -------------------------------------------------------------------------------- /assets/home-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/home-screenshot.png -------------------------------------------------------------------------------- /assets/incbuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/incbuild.png -------------------------------------------------------------------------------- /assets/json-trace-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/json-trace-profile.png -------------------------------------------------------------------------------- /assets/logo-draft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/logo-draft.png -------------------------------------------------------------------------------- /assets/lts_timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/lts_timeline.png -------------------------------------------------------------------------------- /assets/network-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/network-usage.png -------------------------------------------------------------------------------- /assets/proto_library-dep-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/proto_library-dep-graph.png -------------------------------------------------------------------------------- /assets/recipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/recipe.png -------------------------------------------------------------------------------- /assets/remote-output-service-image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/remote-output-service-image1.png -------------------------------------------------------------------------------- /assets/remote-output-service-image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/remote-output-service-image2.png -------------------------------------------------------------------------------- /assets/simple-graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/simple-graph.png -------------------------------------------------------------------------------- /assets/system-load-average.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/system-load-average.png -------------------------------------------------------------------------------- /assets/workers-memory-usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/workers-memory-usage.png -------------------------------------------------------------------------------- /assets/ws-diamond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/ws-diamond.png -------------------------------------------------------------------------------- /assets/ws-line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/ws-line.png -------------------------------------------------------------------------------- /assets/ws-multiline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/assets/ws-multiline.png -------------------------------------------------------------------------------- /css/main.scss: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | @import "style.scss"; 5 | @import "footer.scss"; 6 | @import "navbar.scss"; 7 | @import "blog.scss"; 8 | @import "tables.scss"; 9 | 10 | @import "syntax.scss"; 11 | -------------------------------------------------------------------------------- /feed.xml: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | 5 | 6 | 7 | Bazel Blog 8 | http://blog.bazel.build 9 | Fast, correct builds. 10 | {% for post in site.posts limit:10 %} 11 | 12 | {{ post.title | xml_escape }} 13 | {{ post.url }} 14 | {{ post.content | xml_escape }} 15 | {{ post.date | date: "%a, %d %b %Y %H:%M:%S %z" }} 16 | 17 | {% endfor %} 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /images/Bazel6.0ReleaseBlogPost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/Bazel6.0ReleaseBlogPost.png -------------------------------------------------------------------------------- /images/bazel-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/bazel-icon.png -------------------------------------------------------------------------------- /images/bazel-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /images/bazel-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/bazel-logo.png -------------------------------------------------------------------------------- /images/bazel-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /images/bazel-navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/bazel-navbar.png -------------------------------------------------------------------------------- /images/bazel-navbar.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 31 | 32 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /images/bazel-og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/bazel-og-image.png -------------------------------------------------------------------------------- /images/bazel-og-image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 17 | 18 | 19 | 20 | 21 | 26 | 32 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | {Fast, Correct} - Choose two 54 | 55 | 56 | -------------------------------------------------------------------------------- /images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/favicon-16x16.png -------------------------------------------------------------------------------- /images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/favicon-32x32.png -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/images/favicon.ico -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: blog 3 | title: Bazel Blog 4 | --- 5 | 6 | {% for post in paginator.posts %} 7 | 8 |
9 |

{{ post.title }}

10 | 15 | 16 |

{{ post.excerpt | strip_html }}

17 | 18 | {% assign words = post.content | number_of_words %} 19 | {% comment %} 20 | According to https://en.wikipedia.org/wiki/Words_per_minute, the 21 | average person can read about 180 WPM. 22 | {% endcomment %} 23 | {% assign minutes = words | divided_by:180 %} 24 | 25 | 43 |
44 | 45 | {% endfor %} 46 | 47 | {% if site.enable_comments %}{% endif %} 48 | -------------------------------------------------------------------------------- /scripts/BUILD: -------------------------------------------------------------------------------- 1 | exports_files(["jekyll_build.sh.tpl"]) 2 | -------------------------------------------------------------------------------- /scripts/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gcr.io/cloud-builders/bazel 2 | RUN apt-get -y update && apt-get -y upgrade && apt-get install -y jekyll 3 | -------------------------------------------------------------------------------- /scripts/cloudbuild.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: gcr.io/cloud-builders/docker 3 | args: ['build', '--tag=gcr.io/$PROJECT_ID/bazel-jekyll', 'scripts'] 4 | - name: gcr.io/$PROJECT_ID/bazel-jekyll 5 | args: ['build', '//:site'] 6 | - name: gcr.io/cloud-builders/gsutil 7 | args: ['-m', 'rsync', '-r', '-c', '-d', '/workspace/bazel-bin/site-build', 'gs://blog.bazel.build'] 8 | - name: gcr.io/cloud-builders/gsutil 9 | args: ['web', 'set', '-m', 'index.html', '-e', '404.html', 'gs://blog.bazel.build'] 10 | -------------------------------------------------------------------------------- /scripts/jekyll.bzl: -------------------------------------------------------------------------------- 1 | # Copyright 2017 The Bazel Authors. All rights reserved. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | def _bucket_from_worspace_name(wname): 16 | revlist = [] 17 | for part in wname.split("_"): 18 | revlist.insert(0, part) 19 | return ".".join(revlist) 20 | 21 | def _impl(ctx): 22 | """Quick and non-hermetic rule to build a Jekyll site.""" 23 | source = ctx.actions.declare_directory(ctx.attr.name + "-srcs") 24 | output = ctx.actions.declare_directory(ctx.attr.name + "-build") 25 | 26 | ctx.actions.run_shell( 27 | inputs = ctx.files.srcs, 28 | outputs = [source], 29 | command = ("mkdir -p %s\n" % (source.path)) + 30 | "\n".join([ 31 | "tar xf %s -C %s" % (src.path, source.path) 32 | for src in ctx.files.srcs 33 | ]), 34 | ) 35 | ctx.actions.run( 36 | inputs = [source], 37 | outputs = [output], 38 | executable = "jekyll", 39 | use_default_shell_env = True, 40 | arguments = ["build", "-q", "-s", source.path, "-d", output.path], 41 | ) 42 | ctx.actions.run( 43 | inputs = [output], 44 | outputs = [ctx.outputs.out], 45 | executable = "tar", 46 | arguments = ["cf", ctx.outputs.out.path, "-C", output.path, "."], 47 | ) 48 | 49 | # Create a shell script to serve the site locally or push with the --push 50 | # flag. 51 | bucket = ctx.attr.bucket if ctx.attr.bucket else _bucket_from_worspace_name(ctx.workspace_name) 52 | 53 | ctx.actions.expand_template( 54 | template = ctx.file._jekyll_build_tpl, 55 | output = ctx.outputs.executable, 56 | substitutions = { 57 | "%{workspace_name}": ctx.workspace_name, 58 | "%{source_dir}": source.short_path, 59 | "%{prod_dir}": output.short_path, 60 | "%{bucket}": bucket, 61 | }, 62 | is_executable = True, 63 | ) 64 | return [DefaultInfo(runfiles = ctx.runfiles(files = [source, output]))] 65 | 66 | jekyll_build = rule( 67 | implementation = _impl, 68 | executable = True, 69 | attrs = { 70 | "srcs": attr.label_list(allow_empty = False), 71 | "bucket": attr.string(), 72 | "_jekyll_build_tpl": attr.label( 73 | default = ":jekyll_build.sh.tpl", 74 | allow_single_file = True, 75 | ), 76 | }, 77 | outputs = {"out": "%{name}.tar"}, 78 | ) 79 | -------------------------------------------------------------------------------- /scripts/jekyll_build.sh.tpl: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | HOST="${HOST-localhost}" 3 | PORT="${PORT-12345}" 4 | RUNFILES=$(cd ${JAVA_RUNFILES-$0.runfiles}/%{workspace_name} && pwd -P) 5 | SOURCE_DIR="$RUNFILES/%{source_dir}" 6 | prod_dir="$RUNFILES/%{prod_dir}" 7 | bucket="%{bucket}" 8 | 9 | function serve() { 10 | TDIR=$(mktemp -d) 11 | RDIR=$(mktemp -d) 12 | trap "rm -fr $RDIR $TDIR" EXIT 13 | (cd $RDIR && \ 14 | jekyll serve --host "$HOST" --port "$PORT" -s "$SOURCE_DIR" -d "$TDIR") 15 | } 16 | 17 | function push() { 18 | # Get gsutil 19 | gs="${GSUTIL:-$(which gsutil 2>/dev/null || : )}" 20 | if [ ! -x "${gs}" ]; then 21 | echo "Please set GSUTIL to the path the gsutil binary." >&2 22 | echo "gsutil (https://cloud.google.com/storage/docs/gsutil/) is the" >&2 23 | echo "command-line interface to google cloud." >&2 24 | exit 1 25 | fi 26 | 27 | # Rsync: 28 | # -r: recursive 29 | # -c: compute checksum even though the input is from the filesystem 30 | # -d: remove deleted files 31 | cd "${prod_dir}" 32 | "${gs}" -m rsync -r -c -d . "gs://${bucket}" 33 | "${gs}" web set -m index.html -e 404.html "gs://${bucket}" 34 | "${gs}" -m acl ch -R -u AllUsers:R "gs://${bucket}" 35 | } 36 | 37 | case "${1-}" in 38 | --push) 39 | push 40 | ;; 41 | --serve|"") 42 | serve 43 | ;; 44 | *) 45 | echo "Usage: $0 [--push|--serve]" >&2 46 | exit 1 47 | ;; 48 | esac 49 | -------------------------------------------------------------------------------- /third_party/css/bootstrap/BUILD: -------------------------------------------------------------------------------- 1 | licenses(["notice"]) # MIT 2 | 3 | filegroup( 4 | name = "bootstrap_css", 5 | srcs = [ 6 | "css/bootstrap.css", 7 | "css/bootstrap.css.map", 8 | "css/bootstrap.min.css", 9 | "css/bootstrap.min.css.map", 10 | ], 11 | visibility = ["//:__pkg__"], 12 | ) 13 | 14 | filegroup( 15 | name = "bootstrap_images", 16 | srcs = glob(["fonts/glyphicons-halflings-regular.*"]), 17 | visibility = ["//:__pkg__"], 18 | ) 19 | -------------------------------------------------------------------------------- /third_party/css/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2016 Twitter, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /third_party/css/bootstrap/README.md: -------------------------------------------------------------------------------- 1 | ## [Bootstrap](https://github.com/twbs/bootstrap) 2 | 3 | * Version: 3.3.6 4 | * License: MIT 5 | -------------------------------------------------------------------------------- /third_party/css/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /third_party/css/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /third_party/css/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /third_party/css/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /third_party/css/font_awesome/BUILD: -------------------------------------------------------------------------------- 1 | licenses(["notice"]) # MIT, fonts under OFL 1.1 2 | 3 | filegroup( 4 | name = "font_awesome_css", 5 | srcs = [ 6 | "css/font-awesome.css", 7 | "css/font-awesome.min.css", 8 | ], 9 | visibility = ["//:__pkg__"], 10 | ) 11 | 12 | filegroup( 13 | name = "font_awesome_font", 14 | srcs = glob(["fonts/fontawesome-webfont.*"]), 15 | visibility = ["//:__pkg__"], 16 | ) 17 | -------------------------------------------------------------------------------- /third_party/css/font_awesome/LICENSE.mit: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /third_party/css/font_awesome/README.md: -------------------------------------------------------------------------------- 1 | ## [Font Awesome](https://github.com/FortAwesome/Font-Awesome) 2 | 3 | * Version: 4.6.1 4 | * License: Font under SIL OFL 1.1, CSS under MIT 5 | -------------------------------------------------------------------------------- /third_party/css/font_awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/font_awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /third_party/css/font_awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/font_awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /third_party/css/font_awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/font_awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /third_party/css/font_awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bazelbuild/bazel-blog/37522594cf9b34460fe6f4709a92a9314b9c0274/third_party/css/font_awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /third_party/javascript/bootstrap/BUILD: -------------------------------------------------------------------------------- 1 | licenses(["notice"]) # MIT 2 | 3 | filegroup( 4 | name = "bootstrap_js", 5 | srcs = [ 6 | "js/bootstrap.js", 7 | "js/bootstrap.min.js", 8 | ], 9 | visibility = ["//:__pkg__"], 10 | ) 11 | -------------------------------------------------------------------------------- /third_party/javascript/bootstrap/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2011-2016 Twitter, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /third_party/javascript/bootstrap/README.md: -------------------------------------------------------------------------------- 1 | ## [Bootstrap](https://github.com/twbs/bootstrap) 2 | 3 | * Version: 3.3.6 4 | * License: MIT 5 | --------------------------------------------------------------------------------