mirror of
https://github.com/bazel-contrib/bazel-lib
synced 2024-12-04 14:02:23 +00:00
chore: enable go, shell, yaml formatters and bazel run //:format (#917)
This commit is contained in:
parent
cccf5ac1b8
commit
11aacaf5df
|
@ -1,4 +1,3 @@
|
||||||
---
|
|
||||||
queue: bazel-lib-default
|
queue: bazel-lib-default
|
||||||
workspaces:
|
workspaces:
|
||||||
.:
|
.:
|
||||||
|
|
|
@ -32,7 +32,6 @@
|
||||||
# `aspect-workflows-` and job names prefixed with `aw-`. Conflicting workflow or
|
# `aspect-workflows-` and job names prefixed with `aw-`. Conflicting workflow or
|
||||||
# job names will result in a bad configuration merge.
|
# job names will result in a bad configuration merge.
|
||||||
version: 2.1
|
version: 2.1
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
user-job:
|
user-job:
|
||||||
docker:
|
docker:
|
||||||
|
@ -40,7 +39,6 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- checkout
|
- checkout
|
||||||
- run: echo "Example user CircleCI job that is not generated by Aspect Workflows."
|
- run: echo "Example user CircleCI job that is not generated by Aspect Workflows."
|
||||||
|
|
||||||
workflows:
|
workflows:
|
||||||
user-workflow:
|
user-workflow:
|
||||||
jobs:
|
jobs:
|
||||||
|
|
13
.github/workflows/ci.yaml
vendored
13
.github/workflows/ci.yaml
vendored
|
@ -1,5 +1,4 @@
|
||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
# Controls when the action will run.
|
# Controls when the action will run.
|
||||||
on:
|
on:
|
||||||
# Triggers the workflow on push or pull request events but only for the main branch
|
# Triggers the workflow on push or pull request events but only for the main branch
|
||||||
|
@ -7,16 +6,13 @@ on:
|
||||||
branches: [main, 1.x]
|
branches: [main, 1.x]
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [main, 1.x]
|
branches: [main, 1.x]
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
# Cancel previous actions from the same PR or branch except 'main' branch.
|
# Cancel previous actions from the same PR or branch except 'main' branch.
|
||||||
# See https://docs.github.com/en/actions/using-jobs/using-concurrency and https://docs.github.com/en/actions/learn-github-actions/contexts for more info.
|
# See https://docs.github.com/en/actions/using-jobs/using-concurrency and https://docs.github.com/en/actions/learn-github-actions/contexts for more info.
|
||||||
group: concurrency-group::${{ github.workflow }}::${{ github.event.pull_request.number > 0 && format('pr-{0}', github.event.pull_request.number) || github.ref_name }}${{ github.ref_name == 'main' && format('::{0}', github.run_id) || ''}}
|
group: concurrency-group::${{ github.workflow }}::${{ github.event.pull_request.number > 0 && format('pr-{0}', github.event.pull_request.number) || github.ref_name }}${{ github.ref_name == 'main' && format('::{0}', github.run_id) || ''}}
|
||||||
cancel-in-progress: ${{ github.ref_name != 'main' }}
|
cancel-in-progress: ${{ github.ref_name != 'main' }}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# Prepares dynamic test matrix values
|
# Prepares dynamic test matrix values
|
||||||
matrix-prep:
|
matrix-prep:
|
||||||
|
@ -66,7 +62,6 @@ jobs:
|
||||||
bazel-version: ${{ steps.bazel-version.outputs.res }}
|
bazel-version: ${{ steps.bazel-version.outputs.res }}
|
||||||
config: ${{ steps.config.outputs.res }}
|
config: ${{ steps.config.outputs.res }}
|
||||||
os: ${{ steps.os.outputs.res }}
|
os: ${{ steps.os.outputs.res }}
|
||||||
|
|
||||||
test:
|
test:
|
||||||
runs-on: ${{ matrix.os }}-latest
|
runs-on: ${{ matrix.os }}-latest
|
||||||
needs:
|
needs:
|
||||||
|
@ -120,10 +115,8 @@ jobs:
|
||||||
os: macos
|
os: macos
|
||||||
- folder: .
|
- folder: .
|
||||||
os: windows
|
os: windows
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Mount bazel caches
|
- name: Mount bazel caches
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
|
@ -132,7 +125,6 @@ jobs:
|
||||||
~/.cache/bazel-repository-cache
|
~/.cache/bazel-repository-cache
|
||||||
key: bazel-cache-${{ matrix.bazel-version.version }}-${{ matrix.bzlmod }}-${{ matrix.os }}-${{ matrix.folder }}-${{ hashFiles('.bazelrc', '.bazelversion', '.bazeliskrc', '**/BUILD', '**/BUILD.bazel', '**/*.bzl', 'WORKSPACE', 'WORKSPACE.bazel', 'WORKSPACE.bzlmod', 'MODULE.bazel') }}
|
key: bazel-cache-${{ matrix.bazel-version.version }}-${{ matrix.bzlmod }}-${{ matrix.os }}-${{ matrix.folder }}-${{ hashFiles('.bazelrc', '.bazelversion', '.bazeliskrc', '**/BUILD', '**/BUILD.bazel', '**/*.bzl', 'WORKSPACE', 'WORKSPACE.bazel', 'WORKSPACE.bzlmod', 'MODULE.bazel') }}
|
||||||
restore-keys: bazel-cache-${{ matrix.bazel-version.version }}-${{ matrix.bzlmod }}-${{ matrix.os }}-${{ matrix.folder }}-
|
restore-keys: bazel-cache-${{ matrix.bazel-version.version }}-${{ matrix.bzlmod }}-${{ matrix.os }}-${{ matrix.folder }}-
|
||||||
|
|
||||||
- name: Configure Bazel version
|
- name: Configure Bazel version
|
||||||
working-directory: ${{ matrix.folder }}
|
working-directory: ${{ matrix.folder }}
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -146,7 +138,6 @@ jobs:
|
||||||
# root .bazelrc brings these in with try-imports. In this CI workflows, we explicitly
|
# root .bazelrc brings these in with try-imports. In this CI workflows, we explicitly
|
||||||
# bring in the version specific bazelrc file with --bazelrc when we invoke bazel.
|
# bring in the version specific bazelrc file with --bazelrc when we invoke bazel.
|
||||||
rm ${GITHUB_WORKSPACE//\\/\/}/.aspect/bazelrc/local/*.bazelrc
|
rm ${GITHUB_WORKSPACE//\\/\/}/.aspect/bazelrc/local/*.bazelrc
|
||||||
|
|
||||||
- name: Write rbe credentials
|
- name: Write rbe credentials
|
||||||
if: ${{ matrix.config == 'rbe' }}
|
if: ${{ matrix.config == 'rbe' }}
|
||||||
working-directory: ${{ matrix.folder }}
|
working-directory: ${{ matrix.folder }}
|
||||||
|
@ -156,14 +147,12 @@ jobs:
|
||||||
echo "build --remote_header=x-buildbuddy-api-key=$BUILDBUDDY_API_KEY" > $HOME/.bazelrc
|
echo "build --remote_header=x-buildbuddy-api-key=$BUILDBUDDY_API_KEY" > $HOME/.bazelrc
|
||||||
env:
|
env:
|
||||||
BUILDBUDDY_API_KEY: ${{ secrets.BUILDBUDDY_API_KEY }}
|
BUILDBUDDY_API_KEY: ${{ secrets.BUILDBUDDY_API_KEY }}
|
||||||
|
|
||||||
# TODO: remove this block once we have Aspect CLI Windows releases
|
# TODO: remove this block once we have Aspect CLI Windows releases
|
||||||
- name: Don't use Aspect CLI on Windows
|
- name: Don't use Aspect CLI on Windows
|
||||||
if: matrix.os == 'windows'
|
if: matrix.os == 'windows'
|
||||||
working-directory: ${{ matrix.folder }}
|
working-directory: ${{ matrix.folder }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: rm -f .bazeliskrc
|
run: rm -f .bazeliskrc
|
||||||
|
|
||||||
- name: bazel test //...
|
- name: bazel test //...
|
||||||
working-directory: ${{ matrix.folder }}
|
working-directory: ${{ matrix.folder }}
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@ -178,13 +167,11 @@ jobs:
|
||||||
--build_tag_filters=-skip-on-bazel${{ matrix.bazel-version.major }} \
|
--build_tag_filters=-skip-on-bazel${{ matrix.bazel-version.major }} \
|
||||||
--enable_bzlmod=${{ matrix.bzlmod }} \
|
--enable_bzlmod=${{ matrix.bzlmod }} \
|
||||||
//...
|
//...
|
||||||
|
|
||||||
- name: Integration tests
|
- name: Integration tests
|
||||||
# Don't run integration tests on Windows since they are bash scripts and Windows runs Powershell
|
# Don't run integration tests on Windows since they are bash scripts and Windows runs Powershell
|
||||||
if: matrix.folder == '.' && matrix.os != 'windows' && matrix.bazel-version.major != '6'
|
if: matrix.folder == '.' && matrix.os != 'windows' && matrix.bazel-version.major != '6'
|
||||||
# Find all shell scripts within e2e, echo the filename, execute, fail on error
|
# Find all shell scripts within e2e, echo the filename, execute, fail on error
|
||||||
run: find e2e/*.sh -maxdepth 1 -type f -exec sh -c 'echo "\n\n------------------------------- $0 -------------------------------" && BZLMOD_FLAG=${{ steps.set_bzlmod_flag.outputs.bzlmod_flag }} "$0" || kill $PPID' \{\} \;
|
run: find e2e/*.sh -maxdepth 1 -type f -exec sh -c 'echo "\n\n------------------------------- $0 -------------------------------" && BZLMOD_FLAG=${{ steps.set_bzlmod_flag.outputs.bzlmod_flag }} "$0" || kill $PPID' \{\} \;
|
||||||
|
|
||||||
- name: Verify bcr patches
|
- name: Verify bcr patches
|
||||||
if: matrix.folder == '.' && matrix.bzlmod == '1' && matrix.os == 'ubuntu' && matrix.bazel-version.major != '6'
|
if: matrix.folder == '.' && matrix.bzlmod == '1' && matrix.os == 'ubuntu' && matrix.bazel-version.major != '6'
|
||||||
run: patch --dry-run -p1 < .bcr/patches/*.patch
|
run: patch --dry-run -p1 < .bcr/patches/*.patch
|
||||||
|
|
3
.github/workflows/conventional-commits.yml
vendored
3
.github/workflows/conventional-commits.yml
vendored
|
@ -1,15 +1,12 @@
|
||||||
name: Verify PR title/description
|
name: Verify PR title/description
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
types:
|
types:
|
||||||
- opened
|
- opened
|
||||||
- edited
|
- edited
|
||||||
- synchronize
|
- synchronize
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
pull-requests: read
|
pull-requests: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
5
.github/workflows/release.yml
vendored
5
.github/workflows/release.yml
vendored
|
@ -2,12 +2,10 @@
|
||||||
# You should use an annotated tag, like `git tag -a v1.2.3`
|
# 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.
|
# and put the release notes into the commit message for the tag.
|
||||||
name: Release
|
name: Release
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
tags:
|
tags:
|
||||||
- "v*.*.*"
|
- "v*.*.*"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
# Go cross-compilation works from linux -> any platform
|
# Go cross-compilation works from linux -> any platform
|
||||||
|
@ -28,7 +26,6 @@ jobs:
|
||||||
name: artifacts
|
name: artifacts
|
||||||
path: artifacts/
|
path: artifacts/
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
release:
|
release:
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
@ -37,10 +34,8 @@ jobs:
|
||||||
# Fetch the built artifacts from build jobs above and extract into
|
# Fetch the built artifacts from build jobs above and extract into
|
||||||
# ${GITHUB_WORKSPACE}/artifacts/*
|
# ${GITHUB_WORKSPACE}/artifacts/*
|
||||||
- uses: actions/download-artifact@v4
|
- uses: actions/download-artifact@v4
|
||||||
|
|
||||||
- name: Prepare workspace snippet
|
- name: Prepare workspace snippet
|
||||||
run: .github/workflows/release_prep.sh > release_notes.txt
|
run: .github/workflows/release_prep.sh > release_notes.txt
|
||||||
|
|
||||||
- uses: softprops/action-gh-release@v2
|
- uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
# Use GH feature to populate the changelog automatically
|
# Use GH feature to populate the changelog automatically
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
# Commitizen runs in commit-msg stage
|
# Commitizen runs in commit-msg stage
|
||||||
# but we don't want to run the other hooks on commit messages
|
# but we don't want to run the other hooks on commit messages
|
||||||
default_stages: [commit]
|
default_stages: [commit]
|
||||||
|
|
||||||
repos:
|
repos:
|
||||||
# Check formatting and lint for starlark code
|
# Check formatting and lint for starlark code
|
||||||
- repo: https://github.com/keith/pre-commit-buildifier
|
- repo: https://github.com/keith/pre-commit-buildifier
|
||||||
|
|
|
@ -2,7 +2,6 @@ bats_load_library "bats-support"
|
||||||
bats_load_library "bats-assert"
|
bats_load_library "bats-assert"
|
||||||
|
|
||||||
@test 'basic' {
|
@test 'basic' {
|
||||||
run echo 'have'
|
run echo 'have'
|
||||||
assert_output 'have'
|
assert_output 'have'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,5 @@ bats_load_library 'bats-assert'
|
||||||
bats_load_library 'bats-custom'
|
bats_load_library 'bats-custom'
|
||||||
|
|
||||||
@test 'env' {
|
@test 'env' {
|
||||||
run custom_test_fn
|
run custom_test_fn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ bats_load_library 'bats-support'
|
||||||
bats_load_library 'bats-assert'
|
bats_load_library 'bats-assert'
|
||||||
|
|
||||||
@test 'assert_output() check for existence' {
|
@test 'assert_output() check for existence' {
|
||||||
run echo 'have'
|
run echo 'have'
|
||||||
assert_output 'have'
|
assert_output 'have'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ bats_load_library 'bats-support'
|
||||||
bats_load_library 'bats-assert'
|
bats_load_library 'bats-assert'
|
||||||
|
|
||||||
@test 'env' {
|
@test 'env' {
|
||||||
run echo $USE_BAZEL_VERSION
|
run echo $USE_BAZEL_VERSION
|
||||||
assert_output 'latest'
|
assert_output 'latest'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,7 @@ bats_load_library 'bats-assert'
|
||||||
bats_load_library 'bats-file'
|
bats_load_library 'bats-file'
|
||||||
|
|
||||||
@test 'env expansion' {
|
@test 'env expansion' {
|
||||||
run echo $DATA_PATH
|
run echo $DATA_PATH
|
||||||
assert_output 'lib/tests/bats/data.bin'
|
assert_output 'lib/tests/bats/data.bin'
|
||||||
assert_file_exists 'lib/tests/bats/data.bin'
|
assert_file_exists 'lib/tests/bats/data.bin'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,8 +3,9 @@
|
||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"golang.org/x/sys/unix"
|
||||||
)
|
)
|
||||||
|
|
||||||
// https://keith.github.io/xcode-man-pages/clonefile.2.html
|
// https://keith.github.io/xcode-man-pages/clonefile.2.html
|
||||||
|
|
|
@ -13,10 +13,12 @@ import (
|
||||||
|
|
||||||
type pathSet map[string]bool
|
type pathSet map[string]bool
|
||||||
|
|
||||||
var srcPaths = pathSet{}
|
var (
|
||||||
var hardlink = false
|
srcPaths = pathSet{}
|
||||||
var verbose = false
|
hardlink = false
|
||||||
var preserveMTime = false
|
verbose = false
|
||||||
|
preserveMTime = false
|
||||||
|
)
|
||||||
|
|
||||||
type walker struct {
|
type walker struct {
|
||||||
queue chan<- common.CopyOpts
|
queue chan<- common.CopyOpts
|
||||||
|
|
|
@ -47,11 +47,15 @@ type config struct {
|
||||||
TargetWorkspace *string
|
TargetWorkspace *string
|
||||||
}
|
}
|
||||||
|
|
||||||
type copyMap map[string]fileInfo
|
type (
|
||||||
type pathSet map[string]bool
|
copyMap map[string]fileInfo
|
||||||
|
pathSet map[string]bool
|
||||||
|
)
|
||||||
|
|
||||||
var copySet = copyMap{}
|
var (
|
||||||
var mkdirSet = pathSet{}
|
copySet = copyMap{}
|
||||||
|
mkdirSet = pathSet{}
|
||||||
|
)
|
||||||
|
|
||||||
func parseConfig(configPath string, wkspName *string) (*config, error) {
|
func parseConfig(configPath string, wkspName *string) (*config, error) {
|
||||||
f, err := os.Open(configPath)
|
f, err := os.Open(configPath)
|
||||||
|
|
|
@ -60,9 +60,9 @@ func main() {
|
||||||
content = strings.ReplaceAll(content, key, value)
|
content = strings.ReplaceAll(content, key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
var mode os.FileMode = 0666
|
var mode os.FileMode = 0o666
|
||||||
if executable {
|
if executable {
|
||||||
mode = 0777
|
mode = 0o777
|
||||||
}
|
}
|
||||||
err = os.WriteFile(args[1], []byte(content), mode)
|
err = os.WriteFile(args[1], []byte(content), mode)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -89,5 +89,4 @@ func parseStatusFile(statusFilePath string) (map[string]string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return results, nil
|
return results, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,10 @@ load("@aspect_rules_lint//format:defs.bzl", "format_multirun")
|
||||||
|
|
||||||
format_multirun(
|
format_multirun(
|
||||||
name = "format",
|
name = "format",
|
||||||
# TODO: enable formatters in follow-up PR
|
go = "@aspect_rules_lint//format:gofumpt",
|
||||||
# go = "@aspect_rules_lint//format:gofumpt",
|
shell = "@aspect_rules_lint//format:shfmt",
|
||||||
# shell = "@aspect_rules_lint//format:shfmt",
|
|
||||||
starlark = "@buildifier_prebuilt//:buildifier",
|
starlark = "@buildifier_prebuilt//:buildifier",
|
||||||
tags = ["manual"],
|
tags = ["manual"],
|
||||||
visibility = ["//:__subpackages__"],
|
visibility = ["//:__subpackages__"],
|
||||||
# yaml = "@aspect_rules_lint//format:yamlfmt",
|
yaml = "@aspect_rules_lint//format:yamlfmt",
|
||||||
)
|
)
|
||||||
|
|
5
yamlfmt.yaml
Normal file
5
yamlfmt.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
gitignore_excludes: true
|
||||||
|
doublestar: true
|
||||||
|
exclude:
|
||||||
|
- .circleci/config.yml
|
||||||
|
- lib/tests/yq/empty.yaml
|
Loading…
Reference in a new issue