split into multiple workflows to speed up CI (#109)
diff --git a/.github/file-filters.yml b/.github/file-filters.yml
new file mode 100644
index 0000000..4be8153
--- /dev/null
+++ b/.github/file-filters.yml
@@ -0,0 +1,25 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+code-changes:
+ - '**/*.go'
+ - 'go.mod'
+ - '.golangci.yml'
+ - '.github/*.yml'
+ - '.github/*.yaml'
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index c062bb5..7f948b4 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -29,44 +29,31 @@
name: Build
runs-on: ubuntu-latest
steps:
+ - uses: actions/checkout@v2
+ - name: Check for go file changes
+ uses: getsentry/paths-filter@v2
+ id: changes
+ with:
+ token: ${{ github.token }}
+ filters: .github/file-filters.yml
+
- name: Set up Go 1.14
uses: actions/setup-go@v2
with:
go-version: 1.14
- - name: Check out code into the Go module directory
- uses: actions/checkout@v2
- with:
- submodules: true
-
- - name: Check License
- uses: apache/skywalking-eyes@9bd5feb86b5817aa6072b008f9866a2c3bbc8587
- env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
- name: Check code generation
run: make check-codegen
-
+
- uses: actions/upload-artifact@v2
if: failure()
with:
name: check-diff
path: /tmp/swctl/check.diff
- - name: Check License
- run: make license
-
- - name: Get dependencies
- run: make deps
-
- - name: Lint
- run: make lint
-
- - name: Test and report coverage
- run: make coverage
-
- name: Build
run: make build -j3
- name: Test commands
+ if: steps.changes.outputs.code-changes == 'true'
run: make test-commands
diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml
new file mode 100644
index 0000000..ff338b4
--- /dev/null
+++ b/.github/workflows/golangci-lint.yml
@@ -0,0 +1,46 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+name: golangci-lint
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+
+jobs:
+ golangci:
+ name: lint
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Check for go file changes
+ uses: getsentry/paths-filter@v2
+ id: changes
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ filters: .github/file-filters.yml
+
+ - name: golangci-lint
+ if: steps.changes.outputs.code-changes == 'true'
+ uses: golangci/golangci-lint-action@v2
+ with:
+ version: v1.40.1
+ args: --timeout 5m
diff --git a/.github/workflows/license-checker.yml b/.github/workflows/license-checker.yml
new file mode 100644
index 0000000..aafb354
--- /dev/null
+++ b/.github/workflows/license-checker.yml
@@ -0,0 +1,38 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+name: license-checker
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+
+jobs:
+ check-license:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Check License Header
+ uses: apache/skywalking-eyes@main
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ with:
+ log: info
diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml
new file mode 100644
index 0000000..0862eb2
--- /dev/null
+++ b/.github/workflows/unit-tests.yml
@@ -0,0 +1,50 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you 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.
+#
+
+name: unit-test
+
+on:
+ pull_request:
+ push:
+ branches:
+ - master
+
+jobs:
+ unit-tests:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Check for go file changes
+ uses: getsentry/paths-filter@v2
+ id: changes
+ with:
+ token: ${{ github.token }}
+ filters: .github/file-filters.yml
+
+ - name: setup go
+ if: steps.changes.outputs.go == 'true'
+ uses: actions/setup-go@v2
+ with:
+ go-version: '1.13'
+
+ - name: run unit tests and report coverage
+ if: steps.changes.outputs.go == 'true'
+ working-directory: ./
+ run: |
+ make coverage
diff --git a/Makefile b/Makefile
index cc61d7e..b4e7faf 100644
--- a/Makefile
+++ b/Makefile
@@ -78,7 +78,7 @@
$(GO_LINT) run -v --timeout 5m ./...
.PHONY: test
-test: clean lint
+test: clean
$(GO_TEST) ./... -coverprofile=coverage.txt -covermode=atomic
.PHONY: build
@@ -101,7 +101,7 @@
bash <(curl -s https://codecov.io/bash) -t a5af28a3-92a2-4b35-9a77-54ad99b1ae00
.PHONY: clean
-clean: tools
+clean:
-rm -rf bin
-rm -rf coverage.txt
-rm -rf *.tgz