test: code format and lint #2
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: PR-Check | |
on: | |
pull_request: | |
branches: [ "main" ] | |
defaults: | |
run: | |
shell: bash | |
env: | |
GO_VERSION: 1.23.4 | |
PNAME: agent | |
jobs: | |
format_check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current repository | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ env.PNAME }} | |
- name: Checkout framework repository | |
uses: actions/checkout@v4 | |
with: | |
repository: infinilabs/framework | |
path: framework | |
- name: Checkout framework-vendor | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
repository: infinilabs/framework-vendor | |
path: vendor | |
- name: Set up go toolchain | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
check-latest: false | |
cache: true | |
- name: Check go toolchain | |
run: go version | |
- name: Run make format | |
shell: bash | |
run: | | |
make format | |
if [ $? -ne 0 ]; then | |
echo "make format failed, please check make output" | |
exit 1 | |
fi | |
- name: Check for changes after format | |
id: check-changes | |
shell: bash | |
run: | | |
if [[ $(git status --porcelain | grep -c " M .*\.go$") -gt 0 ]]; then | |
echo "go format detected formatting changes" | |
echo "::set-output name=changes::true" | |
else | |
echo "go format no changes found" | |
echo "::set-output name=changes::false" | |
fi | |
- name: Fail workflow if changes after format | |
if: steps.check-changes.outputs.changes == 'true' | |
run: exit 1 | |
unit_test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current repository | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ env.PNAME }} | |
- name: Checkout framework repository | |
uses: actions/checkout@v4 | |
with: | |
repository: infinilabs/framework | |
path: framework | |
- name: Checkout framework-vendor | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
repository: infinilabs/framework-vendor | |
path: vendor | |
- name: Set up go toolchain | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
check-latest: false | |
cache: true | |
- name: Check go toolchain | |
run: go version | |
- name: Unit test | |
env: | |
GOFLAGS: -tags=ci | |
run: | | |
echo Home path is $HOME | |
export WORKBASE=$HOME/go/src/infini.sh | |
export WORK=$WORKBASE/$PNAME | |
# for test workspace | |
mkdir -p $HOME/go/src/ | |
ln -s $GITHUB_WORKSPACE $WORKBASE | |
# check work folder | |
ls -lrt $WORKBASE/ | |
ls -alrt $WORK | |
# for unit test | |
cd $WORK | |
echo Testing code at $PWD ... | |
make test | |
code_lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout current repository | |
uses: actions/checkout@v4 | |
with: | |
path: ${{ env.PNAME }} | |
- name: Checkout framework repository | |
uses: actions/checkout@v4 | |
with: | |
repository: infinilabs/framework | |
path: framework | |
- name: Checkout framework-vendor | |
uses: actions/checkout@v4 | |
with: | |
ref: main | |
repository: infinilabs/framework-vendor | |
path: vendor | |
- name: Set up go toolchain | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
check-latest: false | |
cache: true | |
- name: Check go toolchain | |
run: go version | |
- name: Code lint | |
env: | |
GOFLAGS: -tags=ci | |
run: | | |
echo Home path is $HOME | |
export WORKBASE=$HOME/go/src/infini.sh | |
export WORK=$WORKBASE/$PNAME | |
# for test workspace | |
mkdir -p $HOME/go/src/ | |
ln -s $GITHUB_WORKSPACE $WORKBASE | |
# check work folder | |
ls -lrt $WORKBASE/ | |
ls -alrt $WORK | |
# for unit test | |
cd $WORK | |
echo Linting code at $PWD ... | |
make lint |