Merge branch 'main' into main #1
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
name: Go | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- "cx-content-moderation/**" | |
pull_request: | |
branches: | |
- main | |
paths: | |
- "cx-content-moderation/**" | |
jobs: | |
# Split build and lint into a few different jobs so they can run in parallel. | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./cx-content-moderation | |
steps: | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: "^1.20" | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Build code | |
# Use find to build all modules. '-execdir ... ;' doesn't set an exit code | |
# based on command results. So, create a file if a build fails and check | |
# if the file exists to set the right exit code. | |
run: | | |
ROOT_DIR=$(pwd) \ | |
find . -name go.mod -execdir sh -c 'go build ./... || touch $ROOT_DIR/build_failed.txt' \; ; \ | |
test ! -f build_failed.txt | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./cx-content-moderation | |
steps: | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: "^1.20" | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Install goimports | |
run: go install golang.org/x/tools/cmd/goimports@latest | |
- run: goimports -w . | |
- name: Run go mod tidy on all modules | |
run: find . -name go.mod -execdir go mod tidy \; | |
# If there are any diffs from goimports or go mod tidy, fail. | |
- name: Verify no changes from goimports and go mod tidy. | |
run: | | |
if [ -n "$(git status --porcelain)" ]; then | |
echo 'To fix this check, run "goimports -w . && find . -name go.mod -execdir go mod tidy \;"' | |
git status # Show the files that failed to pass the check. | |
exit 1 | |
fi | |
- name: shellcheck | |
run: find . -name "*.sh" -exec shellcheck {} \; | |
vet: | |
name: Vet | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./cx-content-moderation | |
steps: | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: "^1.20" | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: go vet | |
# Use find to build all modules. '-execdir ... ;' doesn't set an exit code | |
# based on command results. So, create a file if a build fails and check | |
# if the file exists to set the right exit code. | |
run: | | |
ROOT_DIR=$(pwd) \ | |
find . -name go.mod -execdir sh -c 'go vet ./... || touch $ROOT_DIR/vet_failed.txt' \; ; \ | |
test ! -f vet_failed.txt | |
test: | |
name: Root tests | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
working-directory: ./cx-content-moderation | |
steps: | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: "^1.20" | |
- name: Check code | |
uses: actions/checkout@v4 | |
- run: go test -v |