Ver código fonte

Merge pull request #2286 from ameijer/atm/add-code-coverage-ci

add code coverage
Cliff Colvin 2 anos atrás
pai
commit
71f5c7e5e2
4 arquivos alterados com 79 adições e 4 exclusões
  1. 11 3
      .github/workflows/pr.yaml
  2. 64 0
      .github/workflows/sonar.yaml
  3. 1 1
      justfile
  4. 3 0
      sonar-project.properties

+ 11 - 3
.github/workflows/pr.yaml

@@ -4,7 +4,9 @@ on:
   pull_request:
     branches:
       - develop
-
+  push:
+    branches:
+      - develop
 jobs:
   backend:
     runs-on: ubuntu-latest
@@ -36,12 +38,18 @@ jobs:
         name: Test
         run: |
           just test
-
+      - name: Get branch name 
+        shell: bash
+        run: echo "BRANCH_NAME=$(echo ${GITHUB_REF} | tr / -)" >> $GITHUB_ENV
+      - name: save coverage file
+        uses: actions/upload-artifact@v3
+        with:
+            path: ./coverage.out
+            name: coverage-${{ env.BRANCH_NAME }}-${{ github.sha }}
       -
         name: Build
         run: |
           just build-local
-
   frontend:
     runs-on: ubuntu-latest
     steps:

+ 64 - 0
.github/workflows/sonar.yaml

@@ -0,0 +1,64 @@
+Name: Sonar Code Quality Checks
+
+on:
+  workflow_run:
+    workflows: ["Develop PR - build test"]
+    types:
+      - completed
+
+jobs: 
+  submit-to-sonarcloud:
+    needs: backend
+    name: Submit to sonar
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+        with:
+          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
+      - name: Get branch name 
+        shell: bash
+        run: echo "BRANCH_NAME=$(echo ${GITHUB_REF} | tr / -)" >> $GITHUB_ENV
+      - name: Restore coverage file
+        uses: actions/download-artifact@v3
+        with:
+          path: /tmp/coverage.out
+          name: coverage-${{ env.BRANCH_NAME }}-${{ github.sha }}
+      - name: copy output file
+        shell: bash
+        run: mv /tmp/coverage.out/coverage.out coverage.out
+      - uses: sonarsource/sonarcloud-github-action@master
+        env:
+          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+      - uses: geekyeggo/delete-artifact@v2
+        with:
+          name: coverage-${{ env.BRANCH_NAME }}-${{ github.sha }}
+      - name: save report file
+        uses: actions/upload-artifact@v3
+        with:
+            path: .scannerwork
+            name: report-${{ env.BRANCH_NAME }}-${{ github.sha }}
+  # code-quality-gate:  
+  #     needs: submit-to-sonarqube
+  #     name: Code Quality Gate
+  #     if: github.ref != 'refs/heads/develop'
+  #     runs-on: ubuntu-latest
+  #     steps: 
+  #       - name: Get branch name 
+  #         shell: bash
+  #         run: echo "BRANCH_NAME=$(echo ${GITHUB_REF} | tr / -)" >> $GITHUB_ENV
+  #       - name: Restore report file
+  #         uses: actions/download-artifact@v3
+  #         with:
+  #           path: /tmp/.scannerwork
+  #           name: report-${{ env.BRANCH_NAME }}-${{ github.sha }}
+  #       - name: copy output file
+  #         shell: bash
+  #         run: mv /tmp/.scannerwork .scannerwork
+  #       - uses: sonarsource/sonarqube-quality-gate-action@master
+  #         timeout-minutes: 5
+  #         env:
+  #           SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
+  #       - uses: geekyeggo/delete-artifact@v2
+  #         with:
+  #           name: report-${{ env.BRANCH_NAME }}-${{ github.sha }}      

+ 1 - 1
justfile

@@ -8,7 +8,7 @@ default:
 
 # Run unit tests
 test:
-    {{commonenv}} go test ./...
+    {{commonenv}} go test ./... -coverprofile=coverage.out
 
 # Compile a local binary
 build-local:

+ 3 - 0
sonar-project.properties

@@ -0,0 +1,3 @@
+sonar.projectKey=opencost
+sonar.sources=pkg,test
+sonar.go.coverage.reportPaths=coverage.out