-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
251 lines (235 loc) · 12.6 KB
/
.travis.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
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
version: ~> 1.0 # enables build config validation beta feature: https://docs.travis-ci.com/user/build-config-validation
language: node_js
node_js:
- 'v14.15.5' # Optional node version for setup scripts
- 16
dist: xenial
stage: Setup node environment
script: echo "npm test temporarily disabled"
cache:
directories:
- $TRAVIS_BUILD_DIR/client/public
- $TRAVIS_BUILD_DIR/core/public
- $TRAVIS_BUILD_DIR/client/public-ie11
- $TRAVIS_BUILD_DIR/core/public-ie11
- $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oauth2
- $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oidc
- $TRAVIS_BUILD_DIR/test/e2e-test-application/dist
- $TRAVIS_BUILD_DIR/test/e2e-test-application/externalMf
- $TRAVIS_BUILD_DIR/test/e2e-js-test-application
- $TRAVIS_BUILD_DIR/cypress-binary-cache
- $TRAVIS_BUILD_DIR/client-frameworks-support/client-support-angular
- $TRAVIS_BUILD_DIR/client-frameworks-support/testing-utilities/dist
- $HOME/.cache/Cypress
- $HOME/.cache/whitesource
notifications:
slack:
secure: nls0RW4RKEHLnRBgOi25UTpjjSBFGnXgOnbxuiPsSjBFWehXvH8SfMYGfsDdp6lfH9ljDFA6KiJFauAAgQ+vImaZNHvrHeCitQDqWraXeD1CyzOYGp+8Bx/JyR1bcBKewvQVqNpnhk4hoIEI4Gu2i1NGq1/pAkHOeetw7PVmnpEG/QyQQ8YDXbySzWl39iZc8HWVT4svKV8BqYx+KzqRqE09XSfhiecZ00DVjZEMyKD6oCttOlJ/Vo0Z7QgzAEDaIhb+jrojJ2HD1PPWjiQqfpuyBY6GjeFGwNebevhmVngvQ3+69xn0ydOct3HTR/uSNJexY/Hq9W98QuGliihWwx1ksjFZnKtZ42FRY9p8jD/hw+ySJRwrAvbZtrWA0xmU85Fz/kRMocum5I7UJDGOTvklNYMFT/Rlh5w08DWXx8YCYyvXxsTee7dNELwefYnOL/FZRzHaNKnXqimYsE8dIlbfMBKD2Kh4Hr0+NZlBBaZ71w2+4Cp1mdJnSEFN7zuOrwqdQdjCDAeqttcSOvuQAR/BMGwtN30BrjW16n2YOuqwBoWsp7zUdpSyWp600mTn+vYulue4hvpwpbfELVXRtaggrVvolW9fBtACXE6+G9rqzJRgRLLNGM9i7dbiX2OFx1olMTu0n7XN7MNFdwFH4X0sycfi02GlZb/5L/ntrJY=
integration-testing: &integration-testing
if: repo = SAP/luigi AND type != cron AND type != api
script:
- export CYPRESS_CACHE_FOLDER=$TRAVIS_BUILD_DIR/cypress-binary-cache
- ls $CYPRESS_CACHE_FOLDER
- npm install --prefix $TRAVIS_BUILD_DIR/test/e2e-test-application @babel/plugin-proposal-class-properties
- bash ./test/e2e.sh
addons:
apt:
packages:
# Ubuntu 16+ does not install this dependency by default, so we need to install it ourselves
- libgconf-2-4
#- chromium-browser=79.0.3945.130-0ubuntu0.16.04.1 # update also if you upgrade from Xenial
# needed dependencies for cypress 5.3.0
- libgtk2.0-0
- libgtk-3-0
- libgbm-dev
- libnotify-dev
- libgconf-2-4
- libnss3
- libxss1
- libasound2
- libxtst6
- xauth
- xvfb
# chrome: beta
chrome: stable
before_install:
- google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- rm -rf ~/.cache/Cypress/cy/production/browsers #it is individual for each run anyway so caching it slows down the job
jobs:
include:
- stage: 'Precache & Unit Tests'
if: NOT (commit_message = test-setup-scripts)
script:
- export CYPRESS_CACHE_FOLDER=$TRAVIS_BUILD_DIR/cypress-binary-cache
- npm i -g lerna
- lerna bootstrap --ci --force-local --ignore docs || travis_terminate 1
# WORKAROUND - START
# Due to open bug at lerna, https://github.com/lerna/lerna/issues/2352
# Link e2e-test-application manually:
- rm -rf $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/*
- ln -s $TRAVIS_BUILD_DIR/core/public $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/core
- ln -s $TRAVIS_BUILD_DIR/client/public $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/client
# Link client-support-angular manually
- mkdir -p $TRAVIS_BUILD_DIR/client-frameworks-support/client-support-angular/node_modules/@luigi-project/
- rm -rf $TRAVIS_BUILD_DIR/client-frameworks-support/client-support-angular/node_modules/@luigi-project/*
- ln -s $TRAVIS_BUILD_DIR/client-frameworks-support/testing-utilities/dist $TRAVIS_BUILD_DIR/client-frameworks-support/client-support-angular/node_modules/@luigi-project/testing-utilities
- ln -s $TRAVIS_BUILD_DIR/client/public $TRAVIS_BUILD_DIR/client-frameworks-support/client-support-angular/node_modules/@luigi-project/client
- ln -s $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oauth2 $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/plugin-auth-oauth2
- ln -s $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oidc $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/plugin-auth-oidc
# Link fiddle manually:
- rm -rf $TRAVIS_BUILD_DIR/test/e2e-js-test-application/node_modules/@luigi-project/*
- ln -s $TRAVIS_BUILD_DIR/core/public $TRAVIS_BUILD_DIR/test/e2e-js-test-application/node_modules/@luigi-project/core
- ln -s $TRAVIS_BUILD_DIR/client/public $TRAVIS_BUILD_DIR/test/e2e-js-test-application/node_modules/@luigi-project/client
- ln -s $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oauth2 $TRAVIS_BUILD_DIR/test/e2e-js-test-application/node_modules/@luigi-project/plugin-auth-oauth2
# - ln -s $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oidc $TRAVIS_BUILD_DIR/website/fiddle/node_modules/@luigi-project/plugin-auth-oidc
# WORKAROUND - END
# Make sure client is build first, required for client-support-angular
- lerna run bundle --ignore docs --scope luigi-client-private || travis_terminate 1
# Make sure testing-utilities is build first, required for client-support-angular
- lerna run bundle --ignore docs --scope @luigi-project/testing-utilities || travis_terminate 1
# Actual build
- lerna run bundle --ignore docs || travis_terminate 1
- lerna run bundlesizeOnly --ignore docs || travis_terminate 1
# Verifying step
- head $TRAVIS_BUILD_DIR/client/public/package.json
- ls -lah $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project
- ls -lah $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/client/
- echo "check if luigi-client.d.ts exists" && cat $TRAVIS_BUILD_DIR/test/e2e-test-application/node_modules/@luigi-project/client/luigi-client.d.ts | grep -C 3 "withoutSync" || travis_terminate 1
- lerna run build --ignore docs || travis_terminate 1
- npm test --prefix core || travis_terminate 1
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- rm -rf $TRAVIS_BUILD_DIR/core/examples
# ----- INTEGRATION WITH MOCKENGINE -----
- stage: 'Run LuigiMockEngine tests'
if: NOT (commit_message = test-setup-scripts) AND NOT (commit_message = publish)
script:
- export CYPRESS_CACHE_FOLDER=$TRAVIS_BUILD_DIR/cypress-binary-cache
- ls $CYPRESS_CACHE_FOLDER
- npm i -g cypress
- npm i -g [email protected]
- npm i -g live-server
- bash ./test/mockengine.sh
addons:
apt:
chrome: stable
before_install:
- google-chrome-stable --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- rm -rf ~/.cache/Cypress/cy/production/browsers #it is individual for each run anyway so caching it slows down the job
# ----- Docu & Tests -----
- stage: 'Documentation & Tests'
name: 'Compatibility tests'
# run only when merging from release-v branch to master
if: repo = SAP/luigi AND branch = master AND type = push
script:
- bash ./scripts/testCompatibility.sh --tag latest || travis_terminate 1
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- rm -rf ~/.cache/Cypress/cy/production/browsers #it is individual for each run anyway so caching it slows down the job
- rm -rf $TRAVIS_BUILD_DIR/../luigi-compatibility-testing # remove compatibility build cache
# ----- DOCU -----
- name: 'Check Documentation'
if: repo = SAP/luigi AND type != cron AND type != api
script:
- cd $TRAVIS_BUILD_DIR/scripts && npm ci
- cd $TRAVIS_BUILD_DIR && bash ./scripts/docuCheck.sh
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
# ----- WHITESOURCE -----
- name: 'Whitesource check'
if: repo = SAP/luigi AND branch = master AND type != cron AND type != api
# Whitesource can't deal with symlinking, therefore we can't use lerna
script:
- 'if [ ! -z "${WHITESOURCE_APIKEY}" ]; then
npm --prefix ./client ci ./client;
npm --prefix ./core ci ./core;
npm --prefix ./website/landingpage/dev install ./website/landingpage/dev;
npm --prefix ./website/fiddle install ./website/fiddle;
bash ./scripts/whiteSource.sh;
fi'
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
# ----- INTEGRATION -----
- name: 'Integration Testing 1'
<<: *integration-testing
# ----- NPM PUBLISH -----
- stage: 'Publish'
name: 'Publish to NPM'
# run only when a release in github was created
if: repo = SAP/luigi AND tag ~= ^v AND type != cron AND type != api
script:
- bash ./scripts/npmPublish.sh
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- name: 'Nightly release'
if: (branch = master AND type = cron) OR (type = api AND commit_message = publish)
script:
- echo "//registry.npmjs.org/:_authToken=$NPM_LUI_AUTH_TOKEN" > ~/.npmrc
- cd $TRAVIS_BUILD_DIR/scripts && npm ci
- cd $TRAVIS_BUILD_DIR/scripts && NIGHTLY=true npm run release
- cd $TRAVIS_BUILD_DIR/scripts && npm run publish:nightly
- echo "" > ~/.npmrc
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- name: 'Publish CRA template to NPM'
# run only when custom commit message given to Travis
if: repo = SAP/luigi AND (type = api AND commit_message = publish-cra-luigi)
script:
- bash ./scripts/npmPublish.sh cra-release
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
# ----- SETUP EXAMPLES TESTS -----
- stage: 'Test Setup Scripts'
name: 'Test Angular setup script'
node_js: 16
if: type = api AND commit_message = test-setup-scripts
script:
- OUT=$(bash ./test/setuptests.sh @angular/cli 4200 http://localhost:4200/ https://raw.githubusercontent.com/SAP/luigi/master/scripts/setup/angular.sh | tee /dev/fd/2)
- RES=$(grep -c "Stopping webserver on port 4200" <<< "$OUT")
- echo "$RES"
- if [ $RES == 1 ]; then travis_terminate 0; else travis_terminate 1; fi
- name: 'Test Vue setup script'
node_js: 16
if: type = api AND commit_message = test-setup-scripts
script:
- OUT=$(bash ./test/setuptests.sh @vue/cli 8080 http://localhost:8080/ https://raw.githubusercontent.com/SAP/luigi/master/scripts/setup/vue.sh | tee /dev/fd/2)
- RES=$(grep -c "Stopping webserver on port 8080" <<< "$OUT")
- echo "$RES"
- if [ $RES == 1 ]; then travis_terminate 0; else travis_terminate 1; fi
- name: 'Test React setup script'
node_js: 16
if: type = api AND commit_message = test-setup-scripts
script:
- OUT=$(bash ./test/setuptests.sh 'react-cli react' 3000 http://localhost:3000/ https://raw.githubusercontent.com/SAP/luigi/master/scripts/setup/react.sh | tee /dev/fd/2)
- RES=$(grep -c "Stopping webserver on port 3000" <<< "$OUT")
- echo "$RES"
- if [ $RES == 1 ]; then travis_terminate 0; else travis_terminate 1; fi
- name: 'Test UI5 setup script'
node_js: 16
if: type = api AND commit_message = test-setup-scripts
script:
- OUT=$(bash ./test/setuptests.sh @ui5/cli 8080 http://localhost:8080/index.html#/home https://raw.githubusercontent.com/SAP/luigi/master/scripts/setup/openui5.sh | tee /dev/fd/2)
- RES=$(grep -c "Stopping webserver on port 8080" <<< "$OUT")
- echo "$RES"
- if [ $RES == 1 ]; then travis_terminate 0; else travis_terminate 1; fi
- name: 'Test No-Framework setup script'
node_js: 16
if: type = api AND commit_message = test-setup-scripts
script:
- OUT=$(bash ./test/setuptests.sh ' ' 8080 http://localhost:8080/ https://raw.githubusercontent.com/SAP/luigi/master/scripts/setup/no-framework.sh | tee /dev/fd/2)
- RES=$(grep -c "Stopping webserver on port 8080" <<< "$OUT")
- echo "$RES"
- if [ $RES == 1 ]; then travis_terminate 0; else travis_terminate 1; fi