-
Notifications
You must be signed in to change notification settings - Fork 71
138 lines (120 loc) · 3.94 KB
/
test.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
name: "Go Tests"
on:
push:
# Triggers the workflow on labeled PRs only.
pull_request_target:
types: [labeled]
# Ensures that only the latest commit is running for each PR at a time.
# Ignores this rule for push events.
concurrency:
group: ${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
Pretest:
if: contains(github.event.pull_request.labels.*.name, 'safe to test') || github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- name: Unlabel 'safe to test'
uses: actions-ecosystem/action-remove-labels@v1
if: ${{ github.event_name != 'push' }}
with:
labels: "safe to test"
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.20.x
- name: Go Cache
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: ${{ runner.os }}-go-
# Generate mocks
- name: Generate mocks
run: go generate ./...
if: ${{ matrix.suite != 'unit' }}
- name: Lint
run: go vet -v ./...
tests:
needs: Pretest
name: ${{ matrix.suite }} Tests (${{ matrix.os }})
runs-on: ${{ matrix.os }}-latest
env:
JFROG_CLI_LOG_LEVEL: "DEBUG"
strategy:
fail-fast: false
matrix:
suite: [ unit, scanrepository, scanpullrequest, packagehandlers ]
os: [ ubuntu, windows, macos ]
steps:
# Configure prerequisites
- uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Go
uses: actions/setup-go@v3
with:
go-version: 1.20.x
- name: Go Cache
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Install npm
uses: actions/setup-node@v3
with:
node-version: "16"
- name: Setup Python3
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install python components
run: python -m pip install pipenv poetry
# Generate mocks
- name: Generate mocks
run: go generate ./...
if: ${{ matrix.suite != 'unit' }}
- name: unit Tests
run: go test github.com/jfrog/frogbot -v -race -timeout 30m -cover
env:
JF_URL: ${{ secrets.PLATFORM_URL }}
JF_ACCESS_TOKEN: ${{ secrets.PLATFORM_ADMIN_TOKEN }}
if: ${{ matrix.suite == 'unit' }}
- name: ${{ matrix.test }} Tests
run: go test github.com/jfrog/frogbot/${{ matrix.suite }} -v -race -timeout 30m -cover
env:
JF_URL: ${{ secrets.PLATFORM_URL }}
JF_ACCESS_TOKEN: ${{ secrets.PLATFORM_ADMIN_TOKEN }}
if: ${{ matrix.suite != 'unit' }}
# Build and run frogbot current changes for visual sanity check.
sanity-pull-request:
needs: tests
if: ${{ github.event_name != 'push' }}
runs-on: ubuntu-latest
steps:
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.20.x
- name: Checkout code
uses: actions/checkout@v3
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Build Frogbot
run: buildscripts/build.sh
- name: Scan
env:
JF_URL: ${{ secrets.FROGBOT_URL }}
JF_ACCESS_TOKEN: ${{ secrets.FROGBOT_ACCESS_TOKEN }}
JF_GIT_TOKEN: ${{ secrets.GITHUB_TOKEN }}
JF_GIT_PULL_REQUEST_ID: ${{ github.event.number }}
JF_GIT_PROVIDER: "github"
JF_GIT_OWNER: ${{ github.repository_owner }}
JF_GIT_REPO: ${{ github.event.repository.name }}
run: ./frogbot scan-pull-request