Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
name: Pull request

on:
pull_request:

concurrency:
# limits the workflow to a single run per branch/PR
group: ${{ github.workflow }}-${{ github.ref }}
# previous runs are cancelled when a new run is started
cancel-in-progress: true

jobs:
buildozer:
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675 # aka v2
- name: Install go
uses: actions/setup-go@v3
with:
go-version: '1.23.1'
- name: Install buildozer
run: go install github.com/bazelbuild/buildtools/buildozer@latest
- name: Validate formatting
working-directory: base/cvd
if: '!cancelled()'
run: |
if [[ $(buildozer '//...:__pkg__' format 2>&1) ]]; then
echo "Please format BUILD.bazel files with \"buildozer '//...:__pkg__' format\"";
exit 1;
fi
- name: Validate no cc_binary targets under //cuttlefish
if: '!cancelled()'
working-directory: base/cvd
run: |
if [[ $(buildozer print '//cuttlefish/...:%cc_binary') ]]; then
buildozer print '//cuttlefish/...:%cc_binary'
echo "Please use cf_cc_binary rather than cc_binary";
exit 1;
fi
- name: Validate no cc_library targets under //cuttlefish
if: '!cancelled()'
working-directory: base/cvd
run: |
if [[ $(buildozer print '//cuttlefish/...:%cc_library') ]]; then
buildozer print '//cuttlefish/...:%cc_library'
echo "Please use cf_cc_library rather than cc_library";
exit 1;
fi
- name: Validate no cc_test targets under //cuttlefish
if: '!cancelled()'
working-directory: base/cvd
run: |
if [[ $(buildozer print '//cuttlefish/...:%cc_test') ]]; then
buildozer print '//cuttlefish/...:%cc_test'
echo "Please use cf_cc_test rather than cc_test";
exit 1;
fi;
- name: Validate no unused loads
if: '!cancelled()'
working-directory: base/cvd
run: |
if [[ $(buildozer -stdout=true '//...:__pkg__' 'fix unusedLoads') ]]; then
buildozer '//...:__pkg__' 'fix unusedLoads'
echo "Please remove unused 'load' statements with \"buildozer '//...:__pkg__' 'fix unusedLoads'\"";
exit 1;
fi
staticcheck:
runs-on: ubuntu-22.04
strategy:
matrix:
dir: ["e2etests", "frontend/src/host_orchestrator", "frontend/src/libhoclient", "frontend/src/liboperator", "frontend/src/operator", "tools/baseimage"]
steps:
- name: Checkout repository
uses: actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675 # aka v2
- name: Install dependencies
uses: actions/setup-go@v3
with:
go-version: '1.24.2'
- run: go version
- name: Staticcheck
uses: dominikh/[email protected]
with:
version: "latest"
install-go: false
working-directory: ${{ matrix.dir }}
run-frontend-unit-tests:
runs-on: ubuntu-22.04
container:
image: debian@sha256:9258a75a7e4323c9e5562b361effc84ee747920116d8adfc98a465a5cdc9150e # debian:bookworm-20250407 (amd64)
env:
GOPROJECTS: ('host_orchestrator' 'libhoclient' 'liboperator' 'operator')
steps:
- name: Checkout repository
uses: actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675 # aka v2
- name: Setup apt
run: apt update -y && apt upgrade -y
- name: Install dependencies
run: apt install -y git golang
- name: Go version
run: go version
- name: Run gofmt check
shell: bash
run: |
projects=${{ env.GOPROJECTS }}
for item in "${projects[@]}"; do
pushd "frontend/src/${item}"
gofmt -d -e . && test -z "$(gofmt -l .)"
popd
done
- name: Run go tests
shell: bash
run: |
projects=${{ env.GOPROJECTS }}
for item in "${projects[@]}"; do
pushd "frontend/src/${item}"
go test ./...
popd
done
run-frontend-api-documentation-check:
runs-on: ubuntu-22.04
container:
image: debian@sha256:9258a75a7e4323c9e5562b361effc84ee747920116d8adfc98a465a5cdc9150e # debian:bookworm-20250407 (amd64)
env:
GOPROJECTS: ('host_orchestrator')
steps:
- name: Setup apt
run: apt update -y && apt upgrade -y
- name: Install dependencies
run: apt install -y git golang
- name: Setup git
run: |
git --version
# Fixes fatal: detected dubious ownership in repository at '/__w/android-cuttlefish/android-cuttlefish'
git config --global --add safe.directory /__w/android-cuttlefish/android-cuttlefish
- name: Go version
run: go version
- name: Checkout repository
uses: actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675 # aka v2
- name: Install swag
run: go install github.com/swaggo/swag/cmd/[email protected]
- name: Run swag check
shell: bash
run: |
$(go env GOPATH)/bin/swag --version
projects=${{ env.GOPROJECTS }}
for item in "${projects[@]}"; do
pushd "frontend/src/${item}"
$(go env GOPATH)/bin/swag fmt
git diff --exit-code || ( echo "format error: see frontend/src/host_orchestrator/README.md" && false)
$(go env GOPATH)/bin/swag init
git diff --exit-code || ( echo "This change requires REST API documentation update: see frontend/src/host_orchestrator/README.md" && false)
popd
done
run-cvd-unit-tests:
runs-on: ubuntu-24.04
steps:
- name: Free disk space
uses: jlumbroso/[email protected]
with:
large-packages: false
swap-storage: false
tool-cache: true
- name: Checkout repository
uses: actions/checkout@a81bbbf8298c0fa03ea29cdc473d45769f953675 # aka v2
- name: Mount Bazel cache
uses: ./.github/actions/mount-bazel-cache
with:
action-name: "run-cvd-unit-tests"
- name: Run cvd unit tests
uses: ./.github/actions/run-cvd-unit-tests
- name: Upload test logs
if: always()
uses: actions/upload-artifact@v4
with:
name: cvd-unit-tests-logs
path: base/cvd/bazel-out/k8-fastbuild/testlogs
2 changes: 1 addition & 1 deletion .github/workflows/presubmit.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Presubmit

on:
pull_request:
workflow_dispatch:
push:
branches-ignore:
- main # push events to main branch occur after PRs are merged, when the same checks were run
Expand Down
Loading