Skip to content

hoststatus: add lasted warning log (#35) #62

hoststatus: add lasted warning log (#35)

hoststatus: add lasted warning log (#35) #62

Workflow file for this run

name: Auto Golang Lint And Unitest
on:
pull_request: {}
push:
branches:
- main
- release-*
workflow_dispatch:
inputs:
ref:
description: 'branch, sha, tag'
required: true
default: main
workflow_call:
inputs:
ref:
required: true
type: string
permissions: write-all
# concurrency:
# group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
# cancel-in-progress: true
jobs:
filter_changes:
name: Deduce required tests from code changes
runs-on: ubuntu-latest
outputs:
check: ${{ env.RUN_CHECK }}
ref: ${{ env.RUN_REF }}
crd: ${{ env.RUN_CRD_CHECK }}
steps:
- name: Check Go Code Changes
uses: dorny/[email protected]
if: ${{ github.event_name == 'pull_request' }}
id: filter_pr
with:
base: ${{ github.event.pull_request.base.sha }}
ref: ${{ github.event.pull_request.head.sha }}
filters: |
src:
- .github/workflows/lint-golang.yaml
- '**/*.go'
- 'go.mod'
- 'go.sum'
- name: Result
id: result
run: |
if ${{ github.event_name == 'push' }} ; then
echo "trigger by push"
echo "RUN_CHECK=true" >> $GITHUB_ENV
echo "RUN_REF=${{ github.sha }}" >> $GITHUB_ENV
echo "RUN_CRD_CHECK=true" >> $GITHUB_ENV
elif ${{ github.event_name == 'pull_request' }} ; then
echo "trigger by pull_request"
flag=${{ steps.filter_pr.outputs.src }}
echo "RUN_CHECK=${flag}" >> $GITHUB_ENV
ref=${{ github.event.pull_request.head.sha }}
echo "RUN_REF=${ref}" >> $GITHUB_ENV
echo "RUN_CRD_CHECK=${flag}" >> $GITHUB_ENV
elif ${{ inputs.ref != '' }} ; then
echo "trigger by workflow_call"
echo "RUN_CHECK=true" >> $GITHUB_ENV
echo "RUN_CRD_CHECK=true" >> $GITHUB_ENV
echo "RUN_REF=${{ inputs.ref }}" >> $GITHUB_ENV
elif ${{ github.event_name == 'workflow_dispatch' }} ; then
echo "trigger by workflow_dispatch"
echo "RUN_CHECK=true" >> $GITHUB_ENV
echo "RUN_CRD_CHECK=true" >> $GITHUB_ENV
echo "RUN_REF=${{ github.event.inputs.ref }}" >> $GITHUB_ENV
else
echo "error, unexpected event "
exit 1
fi
lint-code:
needs: filter_changes
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: 1.23.4
- name: Checkout code
uses: actions/checkout@v3
with:
persist-credentials: false
ref: ${{ needs.filter_changes.outputs.ref }}
- name: check crd sdk
if: ${{ needs.filter_changes.outputs.crd == 'true' }}
run: |
go version
make validate_crd_sdk
lint-golang:
needs: filter_changes
if: ${{ needs.filter_changes.outputs.check == 'true' }}
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v4
with:
go-version: 1.23.4
- name: Checkout code
uses: actions/checkout@v3
with:
persist-credentials: false
ref: ${{ needs.filter_changes.outputs.ref }}
- name: Check module vendoring
run: |
go mod tidy
go mod vendor
if ! test -z "$(git status --porcelain)"; then
echo "please run 'go mod tidy && go mod vendor', and submit your changes"
exit 1
fi
- name: Check build
run: |
if ! go vet ./... ; then
echo "go vet failed"
exit 1
fi
if ! make build-binaries ; then
echo "make build-binaries failed"
exit 1
fi
echo "succeed to check build"
# ================ lint
- name: Run golangci-lint
id: golangci_lint
uses: golangci/golangci-lint-action@v3
with:
version: latest
# - name: Check Make lint-golang
# id: lintgolang
# run: |
# make lint_golang_everything
# unitest:
# needs: filter_changes
# if: ${{ needs.filter_changes.outputs.check == 'true' }}
# runs-on: ubuntu-latest
# steps:
# - name: Install Go
# uses: actions/setup-go@v4
# with:
# go-version: 1.23.4
# - name: Checkout code
# uses: actions/checkout@v3
# with:
# persist-credentials: false
# ref: ${{ needs.filter_changes.outputs.ref }}
# # ================= unitest
# - name: Run unitest
# id: unitest
# continue-on-error: true
# run: |
# make unitest_tests
# - name: Upload Coverage Artifact
# if: ${{ steps.unitest.outcome == 'failure' }}
# uses: actions/[email protected]
# with:
# name: coverage.out
# path: ${{ env.COVERAGE_REPORT_PATH }}
# retention-days: 1
# - name: Upload Report Artifact
# if: ${{ steps.unitest.outcome == 'failure' }}
# uses: actions/[email protected]
# with:
# name: unitestreport.json
# path: ${{ env.UNITEST_REPORT_PATH }}
# retention-days: 1
# # ============= upload coverage report
# - name: Upload to Codecov
# if: ${{ steps.unitest.outcome != 'failure' }}
# uses: codecov/[email protected]
# with:
# directory: './'
# files: '${{ env.COVERAGE_REPORT_PATH }}'
# flags: unittests
# name: my-codecov-umbrella
# fail_ci_if_error: true
# verbose: true
# token: ${{ secrets.CODECOV_TOKEN }}
# - name: Result
# if: ${{ steps.unitest.outcome == 'failure' }}
# run: |
# echo "unitest failed"
# exit 1