-
Notifications
You must be signed in to change notification settings - Fork 32
140 lines (129 loc) · 3.82 KB
/
ci-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Go Test Workflow
on:
push:
branches:
- master
- release-**
pull_request:
branches:
- master
- release-**
env:
TYK_IB_STORAGE_STORAGETYPE: file
permissions:
contents: read
jobs:
golangci-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout Tyk Identity Broker
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Fetch base branch
if: ${{ github.event_name == 'pull_request' }}
run: git fetch origin ${{ github.base_ref }}
- name: golangci-lint
if: ${{ github.event_name == 'pull_request' }}
uses: golangci/golangci-lint-action@v3
with:
version: latest
args: --out-format=checkstyle:golanglint.xml --timeout=600s --max-issues-per-linter=0 --max-same-issues=0 --new-from-rev=origin/${{ github.base_ref }}
- uses: actions/upload-artifact@v3
with:
name: golangcilint
retention-days: 1
path: |
golanglint.xml
ci-test:
name: "${{ matrix.databases }}"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
databases:
- mongo-mgo
- mongo-official
- file
redis-version: [5]
mongodb-version: [4.2]
steps:
- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Setup Go
uses: actions/setup-go@v2
with:
go-version: "^1.21"
- name: Install Dependencies and basic hygiene test
id: hygiene
run: |
go install golang.org/x/tools/cmd/goimports@latest
- name: Start Redis
uses: supercharge/[email protected]
with:
redis-version: ${{ matrix.redis-version }}
- name: Start MongoDB
uses: supercharge/[email protected]
with:
mongodb-version: "${{ matrix.mongodb-version }}"
- name: Run tests
run: |
./bin/ci-tests.sh ${{ matrix.databases }}
- uses: actions/upload-artifact@v3
with:
name: coverage
retention-days: 1
path: |
*cov
sonar-cloud-analysis:
runs-on: ubuntu-latest
needs: [ci-test, golangci-lint]
steps:
- name: Checkout TIB
uses: actions/checkout@v4
with:
fetch-depth: 2
- name: Fetch base branch
if: ${{ github.event_name == 'pull_request' }}
run: git fetch origin ${{ github.base_ref }}
- name: Setup Golang
uses: actions/setup-go@v3
with:
go-version: 1.21
- name: Download coverage artifacts
uses: actions/download-artifact@v3
with:
name: coverage
- name: Download golangcilint artifacts
uses: actions/download-artifact@v3
with:
name: golangcilint
- name: Check reports existence
id: check_files
uses: andstor/file-existence-action@v1
with:
files: "*.cov, golanglint.xml"
- name: Install Dependencies
run: >
go install github.com/wadey/gocovmerge@latest
- name: merge reports
run: |
./bin/merge-cov.sh
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
with:
args: >
-Dsonar.organization=tyktechnologies
-Dsonar.projectKey=TykTechnologies_tyk-identity-broker
-Dsonar.sources=.
-Dsonar.exclusions=ci/**
-Dsonar.coverage.exclusions=**/*_test.go,**/mocks/*.go
-Dsonar.test.inclusions=**/*_test.go
-Dsonar.tests=.
-Dsonar.go.coverage.reportPaths=*.cov
-Dsonar.go.golangci-lint.reportPaths=golanglint.xml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}