mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-04-27 02:29:23 -04:00
ci: use rbe for unit tests
This commit is contained in:
parent
4e07965e87
commit
e11b1a0576
1
.bazelrc
1
.bazelrc
@ -47,7 +47,6 @@ common:remote_cache --bes_backend=grpcs://remote.buildbuddy.io
|
|||||||
common:remote_cache --remote_cache=grpcs://remote.buildbuddy.io
|
common:remote_cache --remote_cache=grpcs://remote.buildbuddy.io
|
||||||
common:remote_cache --remote_timeout=3600
|
common:remote_cache --remote_timeout=3600
|
||||||
common:remote_cache --experimental_remote_build_event_upload=minimal
|
common:remote_cache --experimental_remote_build_event_upload=minimal
|
||||||
common:remote_cache --experimental_remote_cache_compression
|
|
||||||
common:remote_cache --nolegacy_important_outputs
|
common:remote_cache --nolegacy_important_outputs
|
||||||
common:remote_cache_readonly --noremote_upload_local_results # Uploads logs & artifacts without writing to cache
|
common:remote_cache_readonly --noremote_upload_local_results # Uploads logs & artifacts without writing to cache
|
||||||
|
|
||||||
|
9
.github/actionlint.yaml
vendored
9
.github/actionlint.yaml
vendored
@ -1,3 +1,10 @@
|
|||||||
self-hosted-runner:
|
self-hosted-runner:
|
||||||
# Labels of self-hosted runner in array of string
|
# Labels of self-hosted runner in array of string
|
||||||
labels: [azure-cvm, bazel-cached, bazel-nocache, ubuntu-latest-8-cores]
|
labels:
|
||||||
|
[
|
||||||
|
azure-cvm,
|
||||||
|
arc-runner-set,
|
||||||
|
bazel-cached,
|
||||||
|
bazel-nocache,
|
||||||
|
ubuntu-latest-8-cores,
|
||||||
|
]
|
||||||
|
93
.github/actions/setup_bazel_nix/action.yml
vendored
93
.github/actions/setup_bazel_nix/action.yml
vendored
@ -3,12 +3,15 @@ description: Setup Bazel and Nix for CI builds and tests
|
|||||||
|
|
||||||
inputs:
|
inputs:
|
||||||
useCache:
|
useCache:
|
||||||
description: "Cache Bazel artifacts. Use 'true' to enable with rw, 'readonly' to download, 'log' to disable cache but upload logs, and 'false' to disable."
|
description: "Cache Bazel artifacts. Use 'true' to enable with rw, 'readonly' to download, 'rbe' to enable with remote execution, 'log' to disable cache but upload logs, and 'false' to disable."
|
||||||
default: "false"
|
default: "false"
|
||||||
required: true
|
required: true
|
||||||
buildBuddyApiKey:
|
buildBuddyApiKey:
|
||||||
description: "BuildBuddy API key for caching Bazel artifacts"
|
description: "BuildBuddy API key for caching Bazel artifacts"
|
||||||
required: false
|
required: false
|
||||||
|
rbePlatform:
|
||||||
|
description: "RBE platform to use. If empty, RBE will not be used."
|
||||||
|
required: false
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
@ -18,7 +21,7 @@ runs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
echo "::group::Check inputs"
|
echo "::group::Check inputs"
|
||||||
if [[ "${{ inputs.useCache }}" != "true" && "${{ inputs.useCache }}" != "readonly" && "${{ inputs.useCache }}" != "logs" && "${{ inputs.useCache }}" != "false" ]]; then
|
if [[ "${{ inputs.useCache }}" != "true" && "${{ inputs.useCache }}" != "readonly" && "${{ inputs.useCache }}" != "rbe" && "${{ inputs.useCache }}" != "logs" && "${{ inputs.useCache }}" != "false" ]]; then
|
||||||
echo "Invalid value for 'useCache' input: '${{ inputs.useCache }}'. Must be 'true', 'readonly', or 'false'."
|
echo "Invalid value for 'useCache' input: '${{ inputs.useCache }}'. Must be 'true', 'readonly', or 'false'."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -26,6 +29,22 @@ runs:
|
|||||||
echo "BuildBuddy API key is required when cache is enabled."
|
echo "BuildBuddy API key is required when cache is enabled."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if [[ "${{ inputs.useCache }}" == "rbe" && -z "${{ inputs.rbePlatform }}" ]]; then
|
||||||
|
echo "RBE platform is required when cache is enabled."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [[ -n "${{inputs.rbePlatform}}" ]]; then
|
||||||
|
case "${{ inputs.rbePlatform }}" in
|
||||||
|
ubuntu-22.04)
|
||||||
|
echo "rbeConfig=build_barn_rbe_ubuntu_22_04" | tee -a "$GITHUB_OUTPUT"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Invalid value for 'rbePlatform' input: '${{ inputs.rbePlatform }}'. Must be 'ubuntu-22.04'."
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
if command -v nix; then
|
if command -v nix; then
|
||||||
echo "nixPreinstalled=true" | tee -a "$GITHUB_OUTPUT"
|
echo "nixPreinstalled=true" | tee -a "$GITHUB_OUTPUT"
|
||||||
else
|
else
|
||||||
@ -61,6 +80,35 @@ runs:
|
|||||||
fi
|
fi
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
|
- name: Prepare to install tools
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "::group::Prepare to install nix and bazel"
|
||||||
|
requiredTools=( "curl" "xz" "unzip" "git" )
|
||||||
|
declare -A packageNamesUbuntu=( ["curl"]="curl" ["xz"]="xz-utils" ["unzip"]="unzip" ["git"]="git" )
|
||||||
|
missingTools=()
|
||||||
|
for tool in "${requiredTools[@]}"; do
|
||||||
|
if ! command -v "$tool"; then
|
||||||
|
echo "$tool not found, installing..."
|
||||||
|
missingTools+=("$tool")
|
||||||
|
else
|
||||||
|
echo "$tool found $(command -v "$tool")"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
missingPackagesUbuntu=()
|
||||||
|
for tool in "${missingTools[@]}"; do
|
||||||
|
echo "Ubuntu name for $tool is ${packageNamesUbuntu[$tool]}"
|
||||||
|
missingPackagesUbuntu+=("${packageNamesUbuntu[$tool]}")
|
||||||
|
done
|
||||||
|
if [[ "${#missingTools[@]}" -gt 0 ]]; then
|
||||||
|
echo "Installing missing tools ${missingTools[*]}..."
|
||||||
|
if [[ "$RUNNER_OS" == "Linux" ]]; then
|
||||||
|
sudo apt-get update || true
|
||||||
|
sudo apt-get install -y ${missingPackagesUbuntu[*]} || true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "::endgroup::"
|
||||||
|
|
||||||
- name: Install nix
|
- name: Install nix
|
||||||
if: steps.check_inputs.outputs.nixPreinstalled == 'false'
|
if: steps.check_inputs.outputs.nixPreinstalled == 'false'
|
||||||
uses: cachix/install-nix-action@6a9a9e84a173d90b3ffb42c5ddaf9ea033fad011 # v23
|
uses: cachix/install-nix-action@6a9a9e84a173d90b3ffb42c5ddaf9ea033fad011 # v23
|
||||||
@ -74,12 +122,6 @@ runs:
|
|||||||
fi
|
fi
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
|
|
||||||
- uses: cachix/cachix-action@6a9a34cdd93d0ae4b4b59fd678660efb08109f2f # v12
|
|
||||||
with:
|
|
||||||
name: katexochen
|
|
||||||
extraPullNames: nix-community
|
|
||||||
|
|
||||||
- name: Install Bazelisk
|
- name: Install Bazelisk
|
||||||
if: steps.check_inputs.outputs.bazelPreinstalled == 'false' && steps.check_inputs.outputs.nixOS == 'false'
|
if: steps.check_inputs.outputs.bazelPreinstalled == 'false' && steps.check_inputs.outputs.nixOS == 'false'
|
||||||
shell: bash
|
shell: bash
|
||||||
@ -88,6 +130,8 @@ runs:
|
|||||||
ARCH: ${{ steps.check_inputs.outputs.arch }}
|
ARCH: ${{ steps.check_inputs.outputs.arch }}
|
||||||
run: |
|
run: |
|
||||||
echo "::group::Install Bazelisk"
|
echo "::group::Install Bazelisk"
|
||||||
|
sudo mkdir -p /usr/local/bin
|
||||||
|
sudo chown -R "$USER" /usr/local/bin
|
||||||
curl -fsSLo /usr/local/bin/bazel "https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-${OS}-${ARCH}"
|
curl -fsSLo /usr/local/bin/bazel "https://github.com/bazelbuild/bazelisk/releases/download/v1.18.0/bazelisk-${OS}-${ARCH}"
|
||||||
chmod +x /usr/local/bin/bazel
|
chmod +x /usr/local/bin/bazel
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
@ -180,6 +224,39 @@ runs:
|
|||||||
EOF
|
EOF
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
|
||||||
|
- name: Configure Bazel (rbe)
|
||||||
|
if: inputs.useCache == 'rbe'
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
RBE_CONFIG: ${{ steps.check_inputs.outputs.rbeConfig }}
|
||||||
|
WORKSPACE: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
echo "::group::Configure Bazel"
|
||||||
|
cat <<EOF >> "${WORKSPACE}/.bazeloverwriterc"
|
||||||
|
common --config=${RBE_CONFIG}
|
||||||
|
common --repository_cache=/repository_cache
|
||||||
|
common --repo_env=GOPROXY=http://goproxy:3000
|
||||||
|
EOF
|
||||||
|
echo "::endgroup::"
|
||||||
|
- name: Configure Bazel (rbe logs)
|
||||||
|
if: inputs.useCache == 'rbe' && inputs.buildBuddyApiKey != ''
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
BUILDBUDDY_ORG_API_KEY: ${{ inputs.buildBuddyApiKey }}
|
||||||
|
WORKSPACE: ${{ github.workspace }}
|
||||||
|
run: |
|
||||||
|
echo "::group::Configure Bazel"
|
||||||
|
cat <<EOF >> "${WORKSPACE}/.bazeloverwriterc"
|
||||||
|
common --bes_results_url=https://app.buildbuddy.io/invocation/
|
||||||
|
common --bes_backend=grpcs://remote.buildbuddy.io
|
||||||
|
common --remote_header=x-buildbuddy-api-key=${BUILDBUDDY_ORG_API_KEY}
|
||||||
|
cquery --bes_results_url=
|
||||||
|
cquery --bes_backend=
|
||||||
|
query --bes_results_url=
|
||||||
|
query --bes_backend=
|
||||||
|
EOF
|
||||||
|
echo "::endgroup::"
|
||||||
|
|
||||||
- name: Disable disk cache on GitHub Actions runners
|
- name: Disable disk cache on GitHub Actions runners
|
||||||
if: startsWith(runner.name , 'GitHub Actions')
|
if: startsWith(runner.name , 'GitHub Actions')
|
||||||
shell: bash
|
shell: bash
|
||||||
|
6
.github/workflows/build-binaries.yml
vendored
6
.github/workflows/build-binaries.yml
vendored
@ -19,7 +19,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-binaries:
|
build-binaries:
|
||||||
runs-on: [self-hosted, bazel-cached]
|
runs-on: [arc-runner-set]
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0
|
||||||
@ -29,7 +29,8 @@ jobs:
|
|||||||
- name: Setup bazel
|
- name: Setup bazel
|
||||||
uses: ./.github/actions/setup_bazel_nix
|
uses: ./.github/actions/setup_bazel_nix
|
||||||
with:
|
with:
|
||||||
useCache: "true"
|
useCache: "rbe"
|
||||||
|
rbePlatform: "ubuntu-22.04"
|
||||||
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
||||||
|
|
||||||
- name: Build all
|
- name: Build all
|
||||||
@ -44,6 +45,7 @@ jobs:
|
|||||||
|
|
||||||
run: |
|
run: |
|
||||||
bazel build \
|
bazel build \
|
||||||
|
--remote_download_minimal \
|
||||||
"${bootstrapper}" \
|
"${bootstrapper}" \
|
||||||
"${debugd}" \
|
"${debugd}" \
|
||||||
"${cdbg}" \
|
"${cdbg}" \
|
||||||
|
5
.github/workflows/test-tidy.yml
vendored
5
.github/workflows/test-tidy.yml
vendored
@ -11,7 +11,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
tidycheck:
|
tidycheck:
|
||||||
name: tidy, check and generate
|
name: tidy, check and generate
|
||||||
runs-on: [self-hosted, bazel-cached]
|
runs-on: [arc-runner-set]
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
@ -32,7 +32,8 @@ jobs:
|
|||||||
- name: Setup Bazel
|
- name: Setup Bazel
|
||||||
uses: ./.github/actions/setup_bazel_nix
|
uses: ./.github/actions/setup_bazel_nix
|
||||||
with:
|
with:
|
||||||
useCache: "true"
|
useCache: "rbe"
|
||||||
|
rbePlatform: "ubuntu-22.04"
|
||||||
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
||||||
|
|
||||||
- name: Assume AWS role to upload Bazel dependencies to S3
|
- name: Assume AWS role to upload Bazel dependencies to S3
|
||||||
|
19
.github/workflows/test-unittest.yml
vendored
19
.github/workflows/test-unittest.yml
vendored
@ -23,7 +23,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test-unittest:
|
test-unittest:
|
||||||
runs-on: [self-hosted, bazel-cached]
|
runs-on: [arc-runner-set]
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
contents: read
|
contents: read
|
||||||
@ -35,6 +35,13 @@ jobs:
|
|||||||
ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}
|
ref: ${{ !github.event.pull_request.head.repo.fork && github.head_ref || '' }}
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Setup bazel
|
||||||
|
uses: ./.github/actions/setup_bazel_nix
|
||||||
|
with:
|
||||||
|
useCache: "rbe"
|
||||||
|
rbePlatform: "ubuntu-22.04"
|
||||||
|
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
||||||
|
|
||||||
- name: Install AWS cli
|
- name: Install AWS cli
|
||||||
run: |
|
run: |
|
||||||
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
||||||
@ -48,21 +55,15 @@ jobs:
|
|||||||
role-to-assume: arn:aws:iam::795746500882:role/GithubActionGocoverage
|
role-to-assume: arn:aws:iam::795746500882:role/GithubActionGocoverage
|
||||||
aws-region: eu-central-1
|
aws-region: eu-central-1
|
||||||
|
|
||||||
- name: Setup bazel
|
|
||||||
uses: ./.github/actions/setup_bazel_nix
|
|
||||||
with:
|
|
||||||
useCache: "true"
|
|
||||||
buildBuddyApiKey: ${{ secrets.BUILDBUDDY_ORG_API_KEY }}
|
|
||||||
|
|
||||||
- name: Unit Tests
|
- name: Unit Tests
|
||||||
env:
|
env:
|
||||||
TMPDIR: ${{ runner.temp }}
|
TMPDIR: ${{ runner.temp }}
|
||||||
run: bazel test //... --test_output=errors --config=nostamp
|
run: bazel test //... --test_output=errors --config=nostamp --remote_download_minimal
|
||||||
|
|
||||||
- name: Coverage
|
- name: Coverage
|
||||||
id: coverage
|
id: coverage
|
||||||
run: |
|
run: |
|
||||||
bazel run //bazel/ci:gocoverage_diff
|
bazel run //bazel/ci:gocoverage_diff --config=nostamp
|
||||||
lines=$(wc -l < coverage_diff.md)
|
lines=$(wc -l < coverage_diff.md)
|
||||||
uploadable=$([[ ${lines} -gt 3 ]] && echo "true" || echo "false")
|
uploadable=$([[ ${lines} -gt 3 ]] && echo "true" || echo "false")
|
||||||
echo "uploadable=$uploadable" | tee -a "$GITHUB_OUTPUT"
|
echo "uploadable=$uploadable" | tee -a "$GITHUB_OUTPUT"
|
||||||
|
@ -77,6 +77,4 @@ common --bes_timeout=600s
|
|||||||
|
|
||||||
# options to limit the amount of data uploaded/downloaded to/from the remote cache
|
# options to limit the amount of data uploaded/downloaded to/from the remote cache
|
||||||
common --experimental_remote_build_event_upload=minimal
|
common --experimental_remote_build_event_upload=minimal
|
||||||
common --experimental_remote_cache_compression
|
|
||||||
common --nolegacy_important_outputs
|
common --nolegacy_important_outputs
|
||||||
common --noremote_upload_local_results
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user