diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 000000000..b91541019 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,102 @@ +name: CI + +on: + push: + branches: + - master + - develop + - release-* + pull_request: {} + workflow_dispatch: {} + +env: + GO_VERSION: 1.18 + +jobs: + + verify: + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Verify Code + run: make verify + + golangci-lint: + runs-on: ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: true + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - name: Lint golang code + uses: golangci/golangci-lint-action@v3 + with: + version: v1.47.3 + args: -v + skip-cache: true + + markdownlint-misspell-shellcheck: + runs-on: ubuntu-22.04 + # this image is build from Dockerfile + # https://github.com/pouchcontainer/pouchlinter/blob/master/Dockerfile + container: pouchcontainer/pouchlinter:v0.1.2 + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Run misspell + run: find ./* -name "*" | xargs misspell -error + - name: Lint markdown files + run: find ./ -name "*.md" | grep -v enhancements | grep -v .github | xargs mdl -r ~MD010,~MD013,~MD022,~MD024,~MD029,~MD031,~MD032,~MD033,~MD034,~MD036 + + unit-tests: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + with: + submodules: true + - name: Fetch History + run: git fetch --prune --unshallow + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - name: Cache Go Dependencies + uses: actions/cache@v3 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-go- + - name: Run Unit Tests + run: make test + - name: Publish Unit Test Coverage + if: github.repository == 'opencurve/curveadm' + uses: codecov/codecov-action@v3 + with: + name: codecov-umbrella + token: ${{ secrets.CODECOV_TOKEN }} + flags: unittests + files: ./cover.out + fail_ci_if_error: true + verbose: true + e2e-tests: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-go@v4 + with: + go-version: ${{ env.GO_VERSION }} + - uses: actions/cache@v3 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-go- + + - name: Run e2e Tests + run: make e2e-tests diff --git a/Makefile b/Makefile index bb7f28f8a..b04e9a642 100644 --- a/Makefile +++ b/Makefile @@ -63,3 +63,6 @@ test: upload: @NOSCMD=$(NOSCMD) bash build/package/upload.sh $(VERSION) + +verify: + scripts/verify_mod.sh \ No newline at end of file diff --git a/scripts/verify_mod.sh b/scripts/verify_mod.sh new file mode 100755 index 000000000..5d842bd8e --- /dev/null +++ b/scripts/verify_mod.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +# Copyright 2022 The OpenYurt Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e +set -u + +YURT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" + +go mod tidy + +if [ ! -z "$(git diff ${YURT_ROOT}/go.mod ${YURT_ROOT}/go.sum)" ]; then + echo "Verify go mod error, please ensure go.mod has been tidied" + exit -1 +fi