-
-
Notifications
You must be signed in to change notification settings - Fork 74
137 lines (110 loc) · 4.29 KB
/
maven.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
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
name: Java CI with Maven
on:
pull_request:
branches:
- master
- issue-*
push:
branches:
- master
- issue-*
jobs:
build_and_test:
name: Build and Test
runs-on: ubuntu-latest
steps:
- name: checkout Git repository
uses: actions/checkout@v2
- name: Install Java and Maven
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
cache: maven
- name: Setup Juice Shop using docker compose
run: docker-compose -f ${{ github.workspace }}/docker-compose-v3-juiceshop.yml up -d
- name: Start Selenium Grid 4
run: docker compose -f ${{ github.workspace }}/docker-compose-v3-seleniumgrid.yml up --scale chrome=4 -d
- name: Install Chrome
uses: browser-actions/setup-chrome@latest
- name: Install Firefox
uses: browser-actions/setup-firefox@latest
- name: Build the Project
run: mvn clean install -DskipTests
- name: Coverage per Test Execution
env:
LMT_ACCESS: ${{ secrets.LMT_ACCESS }}
LMT_USER: ${{ secrets.LMT_USER }}
run: |
mvn org.jacoco:jacoco-maven-plugin:prepare-agent install -Pcoverage-per-test -Dheadless=true -DLT_USERNAME=$LMT_USER -DLT_ACCESS_KEY=$LMT_ACCESS
- name: Stop docker compose for Juice Shop and Selenium grid
run: docker-compose -f ${{ github.workspace }}/docker-compose-v3-juiceshop.yml down --remove-orphans
- name: Upload target folder
uses: actions/upload-artifact@v2
with:
name: target
path: |
${{ github.workspace }}/target
${{ github.workspace }}/reports
code_analysis:
name: Code Analysis
needs:
- build_and_test
runs-on: ubuntu-latest
steps:
- name: checkout Git repository
uses: actions/checkout@v2
with:
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis
- name: Install Java and Maven
uses: actions/setup-java@v2
with:
java-version: '17'
distribution: 'adopt'
cache: maven
- name: Setup Juice Shop using docker compose
run: docker-compose -f ${{ github.workspace }}/docker-compose-v3-juiceshop.yml up -d
- name: Start Selenium Grid 4
run: docker compose -f ${{ github.workspace }}/docker-compose-v3-seleniumgrid.yml up --scale chrome=4 -d
- name: Install Chrome
uses: browser-actions/setup-chrome@latest
- name: Install Firefox
uses: browser-actions/setup-firefox@latest
- name: Cache SonarCloud packages
uses: actions/cache@v2
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Maven packages
uses: actions/cache@v2
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Download target folder
uses: actions/download-artifact@v2
with:
name: target
- name: Sonar Code Analysis
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_KEY: ${{ secrets.SONAR_KEY }}
LMT_ACCESS: ${{ secrets.LMT_ACCESS }}
LMT_USER: ${{ secrets.LMT_USER }}
run: |
mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar \
-Dsonar.projectKey=$SONAR_KEY -Dheadless=true -DLT_USERNAME=$LMT_USER -DLT_ACCESS_KEY=$LMT_ACCESS
- name: Stop docker compose for Juice Shop and Selenium grid
run: docker-compose -f ${{ github.workspace }}/docker-compose-v3-juiceshop.yml down --remove-orphans
- name: Test Report
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: Test Results
path: ${{ github.workspace }}/target/surefire-reports/TEST-TestSuite.xml
reporter: java-junit
java-version: 17