forked from JetBrains/rules_idea
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial commit from bazel-contrib template
- Loading branch information
0 parents
commit 05b609e
Showing
24 changed files
with
916 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Bazel settings that apply to this repository. | ||
# Take care to document any settings that you expect users to apply. | ||
# Settings that apply only to CI are in .github/workflows/ci.bazelrc | ||
|
||
|
||
# Load any settings specific to the current user. | ||
# .bazelrc.user should appear in .gitignore so that settings are not shared with team members | ||
# This needs to be last statement in this | ||
# config, as the user configuration should be able to overwrite flags from this file. | ||
# See https://docs.bazel.build/versions/master/best-practices.html#bazelrc | ||
# (Note that we use .bazelrc.user so the file appears next to .bazelrc in directory listing, | ||
# rather than user.bazelrc as suggested in the Bazel docs) | ||
try-import %workspace%/.bazelrc.user |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
4.2.2 | ||
# The first line of this file is used by Bazelisk and Bazel to be sure | ||
# the right version of Bazel is used to build and test this repo. | ||
# This also defines which version is used on CI. | ||
# | ||
# Note that you should also run integration_tests against other Bazel | ||
# versions you support. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
# This file contains Bazel settings to apply on CI only. | ||
# It is referenced with a --bazelrc option in the call to bazel in ci.yaml | ||
|
||
# Debug where options came from | ||
build --announce_rc | ||
# Don't rely on test logs being easily accessible from the test runner, | ||
# though it makes the log noisier. | ||
test --test_output=errors | ||
# Allows tests to run bazelisk-in-bazel, since this is the cache folder used | ||
test --test_env=XDG_CACHE_HOME |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
name: CI | ||
|
||
# Controls when the action will run. | ||
on: | ||
# Triggers the workflow on push or pull request events but only for the main branch | ||
push: | ||
branches: [main] | ||
pull_request: | ||
branches: [main] | ||
|
||
# Allows you to run this workflow manually from the Actions tab | ||
workflow_dispatch: | ||
|
||
jobs: | ||
test: | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-latest | ||
|
||
# Steps represent a sequence of tasks that will be executed as part of the job | ||
steps: | ||
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | ||
- uses: actions/checkout@v2 | ||
# Cache build and external artifacts so that the next ci build is incremental. | ||
# Because github action caches cannot be updated after a build, we need to | ||
# store the contents of each build in a unique cache key, then fall back to loading | ||
# it on the next ci run. We use hashFiles(...) in the key and restore-keys- with | ||
# the prefix to load the most recent cache for the branch on a cache miss. You | ||
# should customize the contents of hashFiles to capture any bazel input sources, | ||
# although this doesn't need to be perfect. If none of the input sources change | ||
# then a cache hit will load an existing cache and bazel won't have to do any work. | ||
# In the case of a cache miss, you want the fallback cache to contain most of the | ||
# previously built artifacts to minimize build time. The more precise you are with | ||
# hashFiles sources the less work bazel will have to do. | ||
- name: Mount bazel caches | ||
uses: actions/cache@v2 | ||
with: | ||
path: | | ||
"~/.cache/bazel" | ||
"~/.cache/bazel-repo" | ||
key: bazel-cache-${{ hashFiles('**/BUILD.bazel', '**/*.bzl', 'WORKSPACE') }} | ||
restore-keys: bazel-cache- | ||
- name: bazel test //... | ||
env: | ||
# Bazelisk will download bazel to here, ensure it is cached between runs. | ||
XDG_CACHE_HOME: ~/.cache/bazel-repo | ||
run: | | ||
bazel \ | ||
--bazelrc=.github/workflows/ci.bazelrc \ | ||
--bazelrc=.bazelrc \ | ||
test \ | ||
--disk_cache="${HOME}/.cache/bazel" \ | ||
--repository_cache="${HOME}/.cache/bazel-repo" \ | ||
//... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Cut a release whenever a new tag is pushed to the repo. | ||
# You should use an annotated tag, like `git tag -a v1.2.3` | ||
# and put the release notes into the commit message for the tag. | ||
name: Release | ||
|
||
on: | ||
push: | ||
tags: | ||
- "v*.*.*" | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v2 | ||
- name: Mount bazel caches | ||
uses: actions/cache@v2 | ||
with: | ||
path: | | ||
"~/.cache/bazel" | ||
"~/.cache/bazel-repo" | ||
key: bazel-cache-${{ hashFiles('**/BUILD.bazel', '**/*.bzl', 'WORKSPACE') }} | ||
restore-keys: bazel-cache- | ||
- name: bazel test //... | ||
env: | ||
# Bazelisk will download bazel to here | ||
XDG_CACHE_HOME: ~/.cache/bazel-repo | ||
run: | | ||
bazel \ | ||
--bazelrc=.github/workflows/ci.bazelrc \ | ||
--bazelrc=.bazelrc \ | ||
test \ | ||
--disk_cache="${HOME}/.cache/bazel" \ | ||
--repository_cache="${HOME}/.cache/bazel-repo" \ | ||
//... | ||
- name: Prepare workspace snippet | ||
run: .github/workflows/workspace_snippet.sh ${{ env.GITHUB_REF_NAME }} > release_notes.txt | ||
- name: Release | ||
uses: softprops/action-gh-release@v1 | ||
with: | ||
prerelease: true | ||
# Use GH feature to populate the changelog automatically | ||
generate_release_notes: true | ||
body_path: release_notes.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
#!/usr/bin/env bash | ||
|
||
set -o errexit -o nounset -o pipefail | ||
|
||
# Set by GH actions, see | ||
# https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables | ||
TAG=${GITHUB_REF_NAME} | ||
PREFIX="rules_idea-${TAG:1}" | ||
SHA=$(git archive --format=tar --prefix=${PREFIX}/ ${TAG} | gzip | shasum -a 256 | awk '{print $1}') | ||
|
||
cat << EOF | ||
WORKSPACE snippet: | ||
\`\`\`starlark | ||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | ||
http_archive( | ||
name = "com_flare_rules_idea", | ||
sha256 = "${SHA}", | ||
strip_prefix = "${PREFIX}", | ||
url = "https://github.com/flare/rules_idea/archive/${TAG}.tar.gz", | ||
) | ||
# Fetches the rules_idea dependencies. | ||
# If you want to have a different version of some dependency, | ||
# you should fetch it *before* calling this. | ||
# Alternatively, you can skip calling this function, so long as you've | ||
# already fetched all the dependencies. | ||
load("@com_flare_rules_idea//idea:dependencies.bzl", "rules_idea_dependencies") | ||
rules_idea_dependencies() | ||
\`\`\` | ||
EOF |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
bazel-* | ||
.bazelrc.user | ||
/.ijwb/ | ||
/.idea/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
# See CONTRIBUTING.md for instructions. | ||
# See https://pre-commit.com for more information | ||
# See https://pre-commit.com/hooks.html for more hooks | ||
|
||
# Commitizen runs in commit-msg stage | ||
# but we don't want to run the other hooks on commit messages | ||
default_stages: [commit] | ||
|
||
repos: | ||
# Check formatting and lint for starlark code | ||
- repo: https://github.com/keith/pre-commit-buildifier | ||
rev: 4.0.1.1 | ||
hooks: | ||
- id: buildifier | ||
- id: buildifier-lint | ||
# Enforce that commit messages allow for later changelog generation | ||
- repo: https://github.com/commitizen-tools/commitizen | ||
rev: v2.18.0 | ||
hooks: | ||
# Requires that commitizen is already installed | ||
- id: commitizen | ||
stages: [commit-msg] | ||
- repo: https://github.com/pre-commit/mirrors-prettier | ||
rev: "v2.4.0" | ||
hooks: | ||
- id: prettier |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
docs/*.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
load("@bazel_skylib//:bzl_library.bzl", "bzl_library") | ||
load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary") | ||
|
||
gazelle_binary( | ||
name = "gazelle_bin", | ||
languages = ["@bazel_skylib//gazelle/bzl"], | ||
) | ||
|
||
gazelle( | ||
name = "gazelle", | ||
gazelle = "gazelle_bin", | ||
) | ||
|
||
bzl_library( | ||
name = "internal_deps", | ||
srcs = ["internal_deps.bzl"], | ||
visibility = ["//visibility:public"], | ||
deps = [ | ||
"@bazel_tools//tools/build_defs/repo:http.bzl", | ||
"@bazel_tools//tools/build_defs/repo:utils.bzl", | ||
], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
# How to Contribute | ||
|
||
## Formatting | ||
|
||
Starlark files should be formatted by buildifier. | ||
We suggest using a pre-commit hook to automate this. | ||
First [install pre-commit](https://pre-commit.com/#installation), | ||
then run | ||
|
||
```shell | ||
pre-commit install | ||
``` | ||
|
||
Otherwise later tooling on CI may yell at you about formatting/linting violations. | ||
|
||
## Updating BUILD files | ||
|
||
Some targets are generated from sources. | ||
Currently this is just the `bzl_library` targets. | ||
Run `bazel run //:gazelle` to keep them up-to-date. | ||
|
||
## Using this as a development dependency of other rules | ||
|
||
You'll commonly find that you develop in another WORKSPACE, such as | ||
some other ruleset that depends on rules_idea, or in a nested | ||
WORKSPACE in the integration_tests folder. | ||
|
||
To always tell Bazel to use this directory rather than some release | ||
artifact or a version fetched from the internet, run this from this | ||
directory: | ||
|
||
```sh | ||
OVERRIDE="--override_repository=rules_idea=$(pwd)/rules_idea" | ||
echo "build $OVERRIDE" >> ~/.bazelrc | ||
echo "fetch $OVERRIDE" >> ~/.bazelrc | ||
echo "query $OVERRIDE" >> ~/.bazelrc | ||
``` | ||
|
||
This means that any usage of `@rules_idea` on your system will point to this folder. | ||
|
||
## Releasing | ||
|
||
1. Determine the next release version, following semver (could automate in the future from changelog) | ||
1. Tag the repo and push it (or create a tag in GH UI) | ||
1. Watch the automation run on GitHub actions |
Oops, something went wrong.