controller: debug logging #18
Workflow file for this run
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: Code Style | |
on: | |
pull_request: | |
branches: | |
- main | |
- release-* | |
jobs: | |
autoformat: | |
name: Auto-format and Check | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false # Keep running if one leg fails. | |
matrix: | |
tool: | |
- goimports | |
- gofmt | |
include: | |
- tool: gofmt | |
options: -s | |
- tool: goimports | |
importpath: golang.org/x/tools/cmd/goimports@latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.22.x | |
- name: Check out the code | |
uses: actions/checkout@v3 | |
- name: Install dependencies | |
if: ${{ matrix.importpath != '' }} | |
run: | | |
cd $(mktemp -d) | |
GO111MODULE=on go install ${{ matrix.importpath }} | |
- name: ${{ matrix.tool }} ${{ matrix.options }} | |
shell: bash | |
run: > | |
${{ matrix.tool }} ${{ matrix.options }} -w | |
$(find . -path './vendor' -prune | |
-o -path './third_party' -prune | |
-o -name '*.pb.go' -prune | |
-o -name 'wire_gen.go' -prune | |
-o -type f -name '*.go' -print | grep -v "_generated.") | |
- name: Verify ${{ matrix.tool }} | |
shell: bash | |
run: | | |
# From: https://backreference.org/2009/12/23/how-to-match-newlines-in-sed/ | |
# This is to leverage this workaround: | |
# https://github.com/actions/toolkit/issues/193#issuecomment-605394935 | |
function urlencode() { | |
sed ':begin;$!N;s/\n/%0A/;tbegin' | |
} | |
if [[ $(git diff-index --name-only HEAD --) ]]; then | |
for x in $(git diff-index --name-only HEAD --); do | |
echo "::error file=$x::Please run ${{ matrix.tool }} ${{ matrix.options }}.%0A$(git diff $x | urlencode)" | |
done | |
echo "${{ github.repository }} is out of style. Please run ${{ matrix.tool }} ${{ matrix.options }}." | |
exit 1 | |
fi | |
echo "${{ github.repository }} is formatted correctly." | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set up Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 1.22.x | |
- name: Check out the code | |
uses: actions/checkout@v3 | |
- name: Install tools | |
env: | |
WOKE_VERSION: v0.4.1 | |
run: | | |
TEMP_PATH="$(mktemp -d)" | |
cd $TEMP_PATH | |
echo '::group::🐶 Installing reviewdog ... https://github.com/reviewdog/reviewdog' | |
curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s -- -b "${TEMP_PATH}" 2>&1 | |
echo '::endgroup::' | |
echo '::group:: Installing misspell ... https://github.com/client9/misspell' | |
go install github.com/client9/misspell/cmd/misspell@latest | |
echo '::endgroup::' | |
echo '::group:: Installing woke ... https://github.com/get-woke/woke' | |
curl -sfL https://raw.githubusercontent.com/get-woke/woke/main/install.sh | sh -s -- -b "${TEMP_PATH}" "${WOKE_VERSION}" 2>&1 | |
echo '::endgroup::' | |
echo "${TEMP_PATH}" >> $GITHUB_PATH | |
- name: Golang CI Configuration | |
id: golangci_configuration | |
uses: andstor/file-existence-action@v1 | |
with: | |
files: .golangci.yaml | |
- name: Go Lint | |
if: steps.golangci_configuration.outputs.files_exists == 'true' | |
uses: golangci/golangci-lint-action@v2 | |
with: | |
version: v1.32 | |
- name: misspell | |
shell: bash | |
if: ${{ always() }} | |
env: | |
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} | |
run: | | |
set -e | |
cd "${GITHUB_WORKSPACE}" || exit 1 | |
echo '::group:: Running github.com/client9/misspell with reviewdog 🐶 ...' | |
# Don't fail because of misspell | |
set +o pipefail | |
find . -type f -not -path './vendor/*' -not -path './third_party/*' -not -path './.git/*' | | |
xargs misspell -error | | |
reviewdog -efm="%f:%l:%c: %m" \ | |
-name="github.com/client9/misspell" \ | |
-reporter="github-pr-check" \ | |
-filter-mode="added" \ | |
-fail-on-error="true" \ | |
-level="error" | |
echo '::endgroup::' | |
- name: trailing whitespace | |
shell: bash | |
if: ${{ always() }} | |
env: | |
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} | |
run: | | |
set -e | |
cd "${GITHUB_WORKSPACE}" || exit 1 | |
echo '::group:: Flagging trailing whitespace with reviewdog 🐶 ...' | |
# Don't fail because of grep | |
set +o pipefail | |
find . -type f -not -path './vendor/*' -not -path './third_party/*' -not -path './.git/*' | | |
xargs grep -nE " +$" | | |
reviewdog -efm="%f:%l:%m" \ | |
-name="trailing whitespace" \ | |
-reporter="github-pr-check" \ | |
-filter-mode="added" \ | |
-fail-on-error="true" \ | |
-level="error" | |
echo '::endgroup::' | |
- name: EOF newline | |
shell: bash | |
if: ${{ always() }} | |
env: | |
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} | |
run: | | |
set -e | |
cd "${GITHUB_WORKSPACE}" || exit 1 | |
echo '::group:: Flagging missing EOF newlines with reviewdog 🐶 ...' | |
# Don't fail because of misspell | |
set +o pipefail | |
# Lint exclude rule: | |
# - nothing in vendor/ | |
# - nothing in third_party | |
# - nothing in .git/ | |
# - no *.ai (Adobe Illustrator) files. | |
for x in $(find . -type f -not -name '*.ai' -not -name '*.svg' -not -path './vendor/*' -not -path './third_party/*' -not -path './.git/*'); do | |
# Based on https://stackoverflow.com/questions/34943632/linux-check-if-there-is-an-empty-line-at-the-end-of-a-file | |
if [[ -f $x && ! ( -s "$x" && -z "$(tail -c 1 $x)" ) ]]; then | |
# We add 1 to `wc -l` here because of this limitation (from the man page): | |
# Characters beyond the final <newline> character will not be included in the line count. | |
echo $x:$((1 + $(wc -l $x | tr -s ' ' | cut -d' ' -f 1))): Missing newline | |
fi | |
done | | |
reviewdog -efm="%f:%l: %m" \ | |
-name="EOF Newline" \ | |
-reporter="github-pr-check" \ | |
-filter-mode="added" \ | |
-fail-on-error="true" \ | |
-level="error" | |
echo '::endgroup::' | |
# This is mostly copied from https://github.com/get-woke/woke-action-reviewdog/blob/main/entrypoint.sh | |
# since their action is not yet released under a stable version. | |
- name: Language | |
if: ${{ always() && github.event_name == 'pull_request' }} | |
shell: bash | |
env: | |
REVIEWDOG_GITHUB_API_TOKEN: ${{ github.token }} | |
run: | | |
set -e | |
cd "${GITHUB_WORKSPACE}" || exit 1 | |
# Create a minimal .wokeignore if none already exist. | |
if [ ! -f .wokeignore ]; then | |
cat > .wokeignore <<EOF | |
vendor/* | |
third_party/* | |
EOF | |
fi | |
echo '::group:: Running woke with reviewdog 🐶 ...' | |
woke --output simple \ | |
| reviewdog -efm="%f:%l:%c: %m" \ | |
-name="woke" \ | |
-reporter="github-pr-check" \ | |
-filter-mode="added" \ | |
-fail-on-error="true" \ | |
-level="error" | |
echo '::endgroup::' |