diff --git a/.github/workflows/e2e-test.yml b/.github/workflows/e2e-test.yml new file mode 100644 index 000000000..42eacbca0 --- /dev/null +++ b/.github/workflows/e2e-test.yml @@ -0,0 +1,109 @@ +name: E2E Test + +on: + push: + branches: + - master + - release-* + workflow_dispatch: {} + pull_request: + branches: + - master + - release-* + +env: + # Common versions + GO_VERSION: '1.16' + GOLANGCI_VERSION: 'v1.38' + KIND_VERSION: 'v0.7.0' + +jobs: + + detect-noop: + runs-on: ubuntu-20.04 + outputs: + noop: ${{ steps.noop.outputs.should_skip }} + steps: + - name: Detect No-op Changes + id: noop + uses: fkirc/skip-duplicate-actions@v3.3.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + paths_ignore: '["**.md", "**.mdx", "**.png", "**.jpg"]' + do_not_skip: '["workflow_dispatch", "schedule", "push"]' + concurrent_skipping: false + + e2e-tests: + runs-on: aliyun + needs: detect-noop + if: needs.detect-noop.outputs.noop != 'true' + + steps: + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + + - name: Setup Go + uses: actions/setup-go@v2 + with: + go-version: ${{ env.GO_VERSION }} + + - name: Get dependencies + run: | + go get -v -t -d ./... + + - name: Setup Kind + uses: engineerd/setup-kind@v0.5.0 + with: + version: ${{ env.KIND_VERSION }} + skipClusterCreation: true + + - name: Setup Kind Cluster + run: | + kind delete cluster + kind create cluster --image kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4 + kubectl version + kubectl cluster-info + + - name: Load Image to kind cluster + run: make kind-load + + - name: Run Make + run: make + + - name: Run Make Manager + run: make manager + + - name: Prepare for e2e tests + run: | + make e2e-cleanup + make e2e-setup + helm lint ./charts/vela-core + helm test -n vela-system kubevela --timeout 5m + + - name: Wait for e2e preparation ready + run: | + timeout 60 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:38081/api/components)" != "200" ]]; do sleep 5; done' || false + + - name: Run api e2e tests + run: make e2e-api-test + + - name: Run e2e tests + run: make e2e-test + + - name: Stop kubevela, get profile + run: make end-e2e + + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: /tmp/e2e-profile.out + flags: e2etests + name: codecov-umbrella + + - name: Clean e2e profile + run: rm /tmp/e2e-profile.out + + - name: Cleanup image + if: ${{ always() }} + run: make image-cleanup diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 75900c654..47bf7d012 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -33,53 +33,6 @@ jobs: do_not_skip: '["workflow_dispatch", "schedule", "push"]' concurrent_skipping: false - unit-tests: - runs-on: ubuntu-20.04 - needs: detect-noop - if: needs.detect-noop.outputs.noop != 'true' - - steps: - - name: Set up Go - uses: actions/setup-go@v1 - with: - go-version: ${{ env.GO_VERSION }} - id: go - - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - with: - submodules: true - - - name: Cache Go Dependencies - uses: actions/cache@v2 - with: - path: .work/pkg - key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} - restore-keys: ${{ runner.os }}-pkg- - - - name: Install ginkgo - run: | - sudo apt-get install -y golang-ginkgo-dev - - - name: Setup Kind Cluster - uses: engineerd/setup-kind@v0.5.0 - with: - version: ${{ env.KIND_VERSION }} - - - name: install Kubebuilder - uses: wonderflow/kubebuilder-action@v1.1 - - - name: Run Make test - run: make test - - - name: Upload coverage report - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: ./coverage.txt - flags: unittests - name: codecov-umbrella - compatibility-test: runs-on: ubuntu-20.04 needs: detect-noop @@ -122,81 +75,6 @@ jobs: - name: Clean up testdata run: make compatibility-testdata-cleanup - e2e-tests: - runs-on: aliyun - needs: detect-noop - if: needs.detect-noop.outputs.noop != 'true' - - steps: - - name: Check out code into the Go module directory - uses: actions/checkout@v2 - - - name: Setup Go - uses: actions/setup-go@v2 - with: - go-version: ${{ env.GO_VERSION }} - - - name: Get dependencies - run: | - go get -v -t -d ./... - - - name: Setup Kind - uses: engineerd/setup-kind@v0.5.0 - with: - version: ${{ env.KIND_VERSION }} - skipClusterCreation: true - - - name: Setup Kind Cluster - run: | - kind delete cluster - kind create cluster --image kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4 - kubectl version - kubectl cluster-info - - - name: Load Image to kind cluster - run: make kind-load - - - name: Run Make - run: make - - - name: Run Make Manager - run: make manager - - - name: Prepare for e2e tests - run: | - make e2e-cleanup - make e2e-setup - helm lint ./charts/vela-core - helm test -n vela-system kubevela --timeout 5m - - - name: Wait for e2e preparation ready - run: | - timeout 60 bash -c 'while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' localhost:38081/api/components)" != "200" ]]; do sleep 5; done' || false - - - name: Run api e2e tests - run: make e2e-api-test - - - name: Run e2e tests - run: make e2e-test - - - name: Stop kubevela, get profile - run: make end-e2e - - - name: Upload coverage report - uses: codecov/codecov-action@v1 - with: - token: ${{ secrets.CODECOV_TOKEN }} - file: /tmp/e2e-profile.out - flags: e2etests - name: codecov-umbrella - - - name: Clean e2e profile - run: rm /tmp/e2e-profile.out - - - name: Cleanup image - if: ${{ always() }} - run: make image-cleanup - staticcheck: runs-on: ubuntu-20.04 needs: detect-noop @@ -222,7 +100,7 @@ jobs: - name: Install StaticCheck run: GO111MODULE=off go get honnef.co/go/tools/cmd/staticcheck - + - name: Static Check run: staticcheck ./... diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml new file mode 100644 index 000000000..8d8592d81 --- /dev/null +++ b/.github/workflows/unit-test.yml @@ -0,0 +1,81 @@ +name: Unit-Test + +on: + push: + branches: + - master + - release-* + workflow_dispatch: {} + pull_request: + branches: + - master + - release-* + +env: + # Common versions + GO_VERSION: '1.16' + GOLANGCI_VERSION: 'v1.38' + KIND_VERSION: 'v0.7.0' + +jobs: + + detect-noop: + runs-on: ubuntu-20.04 + outputs: + noop: ${{ steps.noop.outputs.should_skip }} + steps: + - name: Detect No-op Changes + id: noop + uses: fkirc/skip-duplicate-actions@v3.3.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + paths_ignore: '["**.md", "**.mdx", "**.png", "**.jpg"]' + do_not_skip: '["workflow_dispatch", "schedule", "push"]' + concurrent_skipping: false + + unit-tests: + runs-on: ubuntu-20.04 + needs: detect-noop + if: needs.detect-noop.outputs.noop != 'true' + + steps: + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: ${{ env.GO_VERSION }} + id: go + + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + with: + submodules: true + + - name: Cache Go Dependencies + uses: actions/cache@v2 + with: + path: .work/pkg + key: ${{ runner.os }}-pkg-${{ hashFiles('**/go.sum') }} + restore-keys: ${{ runner.os }}-pkg- + + - name: Install ginkgo + run: | + sudo apt-get install -y golang-ginkgo-dev + + - name: Setup Kind Cluster + uses: engineerd/setup-kind@v0.5.0 + with: + version: ${{ env.KIND_VERSION }} + + - name: install Kubebuilder + uses: wonderflow/kubebuilder-action@v1.1 + + - name: Run Make test + run: make test + + - name: Upload coverage report + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: ./coverage.txt + flags: unittests + name: codecov-umbrella