forked from SAP/luigi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
217 lines (204 loc) · 11.3 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
version: ~> 1.0 # enables build config validation beta feature: https://docs.travis-ci.com/user/build-config-validation
language: node_js
node_js:
- '12.18.4' # Default node version for CI testing
- 16 # Optional node version for setup scripts
dist: xenial
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/website/fiddle/public
- $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:
# - chromium-browser --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
# - google-chrome-beta --headless --disable-gpu --remote-debugging-port=9222 http://localhost &
- 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'
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
- 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/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/website/fiddle/node_modules/@luigi-project/*
- ln -s $TRAVIS_BUILD_DIR/core/public $TRAVIS_BUILD_DIR/website/fiddle/node_modules/@luigi-project/core
- ln -s $TRAVIS_BUILD_DIR/client/public $TRAVIS_BUILD_DIR/website/fiddle/node_modules/@luigi-project/client
- ln -s $TRAVIS_BUILD_DIR/plugins/auth/public/auth-oauth2 $TRAVIS_BUILD_DIR/website/fiddle/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
# 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
# ----- NPM PUBLISH -----
- 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 -xv ./scripts/testCompatibility.sh --tag latest || travis_terminate 1 # to run with verbose mode
- bash ./scripts/testCompatibility.sh --tag latest || travis_terminate 1
before_cache:
- rm -rf ~/.npm/_logs
- rm -rf ~/.npm/_cacache
- 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
# ----- SETUP EXAMPLES TESTS -----
- stage: 'Test Setup Scripts'
name: 'Test Angular setup script'
node_js: 16
if: (branch = test-setup-branch AND type = cron) OR (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: (branch = test-setup-branch AND type = cron) OR (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: (branch = test-setup-branch AND type = cron) OR (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: (branch = test-setup-branch AND type = cron) OR (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: (branch = test-setup-branch AND type = cron) OR (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