-
Notifications
You must be signed in to change notification settings - Fork 4
172 lines (139 loc) · 6.8 KB
/
build.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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
name: build-extract-actions
run-name: Testing Extract after pull request by ${{ github.actor }}
on:
pull_request:
types: [opened, reopened]
jobs:
build-extract:
runs-on: ubuntu-latest
steps:
- name: Download the code
uses: actions/checkout@v4
- name: Install JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: maven
- name: Install NodeJS
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: extract/package.json
- name: Create folder for Yarn executable
run: mkdir -p /home/runner/work/extract/extract/extract/.yarn/releases
working-directory: /home/runner/work/extract/extract/extract
- name: Enable Corepack
run: corepack enable
working-directory: /home/runner/work/extract/extract/extract
- name: Install Yarn
run: yarn set version stable
working-directory: /home/runner/work/extract/extract/extract
- name: Make dependencies script executable
run: chmod +x install_dependencies.sh
working-directory: /home/runner/work/extract/extract/extract
- name: Allow mutable Yarn installs
run: yarn config set enableImmutableInstalls false
working-directory: /home/runner/work/extract/extract/extract
- name: Install JavaScript dependencies
run: ./install_dependencies.sh
working-directory: /home/runner/work/extract/extract/extract
- name: Build the code
run: mvn -q package -DskipTests=true --batch-mode
- name: Upload artifact for deployment job
uses: actions/upload-artifact@v4
with:
name: java-app
path: '/home/runner/work/extract/extract/extract/target/*.war'
test-extract:
needs: build-extract
runs-on: ubuntu-latest
steps:
- name: Download the code
uses: actions/checkout@v4
- name: Install JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: maven
- name: Install Chromium (for functional tests)
uses: browser-actions/setup-chrome@v1
- name: Download artifact generated in build job
uses: actions/download-artifact@v4
with:
name: java-app
path: /tmp/
- name: Rename artifact file to version-agnostic name
run: find /tmp -maxdepth 1 -type f -name extract*.war | xargs -I {} mv {} /tmp/extract.war
- name: Create local Extract folders
run: mkdir -p /tmp/log/extract; mkdir -p /tmp/log/tomcat; mkdir -p /tmp/extract/orders
- name: Give all permissions on Extract log folder
run: chmod 0777 /tmp/log/extract
- name: Give all permissions on Extract order folders (to create data during tests)
run: chmod 0777 /tmp/extract/orders
- name: Make FME Desktop dummy executable (for integration tests)
run: chmod +x /home/runner/work/extract/extract/extract/src/test/java/ch/asit_asso/extract/integration/taskplugins/FmeDesktopTest
- name: Running Docker Compose file with test containers (for functional tests)
uses: hoverkraft-tech/compose-action@v1.5.1
with:
compose-file: "./docker-compose-test.yaml"
up-flags: "--wait"
- name: Execute unit tests
run: mvn -q test -Punit-tests --batch-mode --fail-at-end
- name: Execute integration tests
run: mvn -q verify -Pintegration-tests --batch-mode
- name: Wait on Extract application deployment
uses: iFaxity/wait-on-action@v1.1.0
with:
resource: http://localhost:8080/extract/login
interval: 5000
timeout: 150000
verbose: true
- name: Execute functional tests
run: mvn -q verify -Pfunctional-tests --batch-mode
# - name: "Publish test results"
# if: success() || failure()
# uses: scacap/action-surefire-report@v1
- name: "Publish unit tests results"
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: "Unit tests"
path: "**/surefire-reports/TEST-*.xml"
reporter: "java-junit"
- name: "Publish integration tests results"
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: "Integration tests"
path: "**/failsafe-reports/TEST-*.integration.*.xml"
reporter: "java-junit"
- name: "Publish functional test results"
uses: dorny/test-reporter@v1
if: success() || failure()
with:
name: "Functional tests"
path: "**/failsafe-reports/TEST-*.functional.*.xml"
reporter: "java-junit"
# - name: Change tomcat log permissions (so we can upload them)
# if: always()
# run: sudo chmod a+r *.*
# working-directory: /tmp/log/tomcat
# - name: Upload tomcat logs
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: tomcat-logs
# path: /tmp/log/tomcat/
# - name: Change Extract log permissions (so we can upload them)
# if: always()
# run: sudo chmod a+r *.log
# working-directory: /tmp/log/extract
# - name: Upload Extract logs
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: extract-logs
# path: /tmp/log/extract/