1
+ language : php
2
+
3
+ dist : trusty
1
4
sudo : required
2
5
6
+ # TODO: Verify this upgrade still works.
7
+ php :
8
+ - 7.2
9
+
10
+ # Specify which branches to build using a safelist:
11
+ # branches:
12
+ # only:
13
+ # - master
14
+ # Allowing specific branch to deploy for example for test purpose:
15
+ # - /^deploy-.*$/
16
+
17
+ # clone repositories to a depth of 1 commit
18
+ # Warning: Travis CI won’t build commits that are in the queue when pushing a new commit and depth set to 1.
19
+ git :
20
+ depth : 1
21
+ # Avoiding log file size limits.
22
+ # quiet: true
23
+
3
24
services :
4
25
- docker
26
+ - redis-server
5
27
6
28
cache :
7
29
yarn : true
8
30
directories :
9
31
- admin/node_modules
10
32
- client/node_modules
33
+ - api/vendor
34
+
35
+ # To create secure env var, first login to travis with your github account running:
36
+ # sudo travis login
37
+ # Then run the following commmand:
38
+ # travis encrypt 'DATABASE_PASSWORD=your_database_password'
39
+ env :
40
+ global :
41
+ - APP_ENV=prod
42
+ # DATABASE_NAME
43
+ - secure : " nk/EmbFj495TnwEs96cPRHsFxShd64rpMAPsopwBjjMdi4vZpbIFS3Lu2CRdonCLskfOd0IjcybrsE0VZ+9nfo3GWSdZoEmp2OjbboF/qvzP0hRsQgA1fk7c/06O4Rb47JcCOHtOuxUe5Owxc11zlI9rcaMRN680acneoWQTB9cRihcjVi4ZyymMtjKGPtIBbBlsvwmqK2cQAv34JL/sG/umu7/3cbTOpG9BLbXI1p3svXlVqbTJpz5B5SWd/z2RZ7G+yD6bsN83GcKe/rBDYl0BTOKX5DprH3kFhWR5l6ZzGYD882V6XtR+J2+TtQKZPvvvg2hdk+012ldYDBmR4GBW3bWMWIuCAKkBxiVv1EtKttxxm7ZKdY1Jk8+lywBINXWDimZzLf6MTWbmWYRKCe40YxleGYsnbN++8SGd0VTyFkfFeKkHoL04aQMypIvi9JxBkvkNYrPWtiNSvjefLtCYkQCqm9/+Y7wcZ4H2hR/6v/wbhUU7fzTBKmKBi55Pu8v1qSaLDvihsCwWHPRNvFaZ/fpNf384PTQX6Mrwp0iP8Wuqljr0txMHawmJVs+oAjcuByOncHzpXWptnHfoTSXODQJngfduzBus/TZUWhGrTRJobElQjtmstWVo8U9JOxg1SWEhUemV/8Frsj+cLF84WcTlBwH1xmkJh9EI6qU="
44
+ # DATABASE_USER
45
+ - secure : " L1AAQyj58CBxJjLxDQbk4GGxR1hq6R0lPDKsqA5NFrbt/P5HT4KIE7GonUufC5V+3OTE6SPcDchlrQoTYgaizA75XPsn0thhsdJRWGJr+WXWwpt2wGyq5SgVjUxCJYbhO1k9Ay2COFKg6Qiat6PegdNA2qLpzvwZ08m8fCKw6VF7iiQbc3I5tkDnC80MsEofQ4XiJpY6DWgYourHoTo308DKQ/mpqy8d/D2jxY7V5hPQLBkgzkZgppMamnhHd9SXeP6v4htmXbl4GPFscP4jfT7M2mLctsi9FEFAYaM8fayiBD2sUz05m3rLErg4LgkGznzRI+6R7Ngd/0ausZCFOkAJ7lJp87NzowLLzCSnK3o0xWmZxC8M02S3A3g8w/k6cepqXWDE13idfE4fBp4k3CIGgywmjXSagBEW7xdRPDqTvDf+/rKOqdEX/zOc/6PPBVDdY1Wuaa4ZmiB1RKQilQn7N7wa9tFwdBZvPrj/jNScIcFAz9IyYxvDJUsQ1ERQ+KKHAlBAdRP5OZIYzkRFimpyE5WFzi3o2rcqKZ5T1xtsaWqDNk1gOwJ18wP0FkVBLGnNryT34ivf382dgEJvtn2IdHtcRs64lNw4DcHXVOYxbEtzIistJNTSQoNP1YQUxheTQVztKnCjmfvnG6PpINgyaUKARNT2BMdiazHu99w=" - DATABASE_PSWSD=dbPassword
46
+ # APP_SECRET
47
+ - secure : " fX9Um/12G/zNAHCYaztnk6EQZOwf1xI5ESpSkshZ2b4LQ8/s2sV64nIcjD/yRQbZ3GxBsNKdz2VenPgizliNyPTuGheOe05bNRIZKOODOjlLEsqvwjzvXNIPrWoi5xeA2ioCwPwq38QXu0DIvLsKy72YVz9pR2oi9PK5GjsRKmKLX6DOEWehfGrp1itD1mwl91mMK0gCiahspKzww5ryOBf5J0YemWoCc4ByzSGYhjL/2B/kJOS9j6Ua9UxIIPK9Qf4M+wxQct46HqY0aVk0NogAhn38ClV+9S+cMCbiUs3DCHosx/zV3wlZj4vnCCEScnbYdB/ujyCkPv8+oK+vPomOJsE94cd+4/BQYNDJ6N2ZfG23Zs8byK6PmPQqrjSKYyta1XyrvNr23k9Cn6T1h/T+WTnaB5doLZr+j91EmLuwGRxh11zolYRjKcPSZaKtGSGuFBeJtJjDTu5dvkJx8tJEWUZumjIeUKPPkbF8USJgy6/0ls1w4N08qXYAFTQAinJkF/b4Jv2HefIV1ZRN7qEQk65NNix/7NVlhdJc0rrwgcrykBz2jxvzG1SQNBMYpg+eZIB0V7BSZz+taKLjO0ZCUQOx8vzBP96PtRnJVhIPGquyLw585qE0RsLJjnFs26q4pobnhU01NdWa9SXFAHvDRIs1qi6/FmE9EPySLyk="
48
+ # DATABASE_PASSWORD
49
+ - secure : " NW4pCoTBNO1hmvecBdEUO9Ry59oFG+dGsAiLMv7bUJ73S5HAhZwQSxWxcpMHM6m3J8bcm+9Y1AC2IKxebrHMR+bghm1SRXnor+Bgi7MjRkbe/6xOX9VmwtaNMT0d1O0d71o+xwtqygwZMW+cz0DXTd4gj5MKc0N77pSlyZcdT78Wm+KtyU8WHVihsfu7YGc0vE5BO1g51reRh1DUXfEaOuVInqLSifowtICs98em+HhJVNqYRBXqyoZwFvCWOplDKhdnopfyiB8A+vf4jP1nyCrg4UeLAxw8jEWIOcqeVPKRiUMLcTTHKO2dBABVky8bLo/PyQkH9ACme9DN+aRGmfUulrRkAqhsXKLRbxlECWc+C5gKImd+D5DXTTc3xhryUjmQ1a/UyuvdO8Q1UWhwyUN3KdefqwB5dMspEvPPpZg0+uuX2tfSdfPX0muSUOrOiqxI/S34C2PY5+TM3bBVQoNZALtQF7PLc7i6cL78t2EXyB7isUgiL7Ax7JX2XupyNndzo57KBRY+HygfmUUoY57VLCO8CyFft0TAN6YpCDS74wggBh8veXDvYAzvFmejS9HxQoJ6W5ahl7yH1tyeSHC82hfaBG7E0bmxjo6C9NRmuVa/7bnyDd0MhWKkNPNuckx0Odc8tclqg5BsUzKdP8otIEZEAbHFJema1UMAxoI="
50
+
51
+ # Todo: add this at the beginning of the before_install script: - if [ "TRAVIS_PULL_REQUEST" != "false" ]; then exit 0; fi
52
+ before_install :
53
+ - curl -o- -L https://yarnpkg.com/install.sh | bash
54
+ - yes '' | pecl install apcu redis
55
+ - echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
56
+ - echo "extension = apcu.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini
57
+
58
+ install :
59
+ - sh -c "cd api && composer install --prefer-dist --no-progress --no-suggest --no-interaction --no-scripts"
60
+ - bin/console doctrine:database:create --env=prod
61
+ - bin/console doctrine:schema:update --env=prod --force
62
+ - bin/console hautelook:fixtures:load
11
63
12
64
before_script :
13
- - sudo service mysql stop
14
- - sudo service postgresql stop
15
- - wget https://kubernetes-helm.storage.googleapis.com/helm-v2.6.1-linux-amd64.tar.gz
16
- - tar xzf helm-v2.6.1-linux-amd64.tar.gz
17
65
- npm install -g react-scripts
18
66
- while sudo lsof -Pi :5432 -sTCP:LISTEN -t; do sleep 1; done
67
+ - sudo service mysql stop
68
+ - sudo service postgresql stop
69
+ - curl -O https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz
70
+ - tar -zxvf helm-v2.7.2-linux-amd64.tar.gz
19
71
20
72
script :
21
73
- docker-compose up -d
22
74
- linux-amd64/helm lint api/helm/api/
23
75
- sleep 20
24
- - sh -c "cd admin && PUBLIC_URL="/api-demo-admin-test" yarn install && yarn build"
25
- - sh -c "cd client && PUBLIC_URL="/api-demo-client-test" yarn install && yarn build"
76
+ - sh -c "cd admin && PUBLIC_URL="/api-demo-admin-test" yarn install --pure-lockfile && yarn build"
77
+ - sh -c "cd client && PUBLIC_URL="/api-demo-client-test" yarn install --pure-lockfile && yarn build"
26
78
- docker-compose exec php composer install -o -n
27
79
- docker-compose exec php bin/console security:check
28
80
- docker-compose exec php bin/console doctrine:schema:validate --skip-sync
@@ -40,3 +92,39 @@ script:
40
92
- curl -k https://localhost:444
41
93
- curl -k https://localhost:8443
42
94
- curl -k https://localhost:8444
95
+
96
+ # Todo: Verify remote repository at the beginning of after_success step.
97
+ after_success :
98
+ - curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
99
+ - chmod +x ./kubectl
100
+ - sudo mv ./kubectl /usr/local/bin/kubectl
101
+ - openssl aes-256-cbc -K $encrypted_78c7c6c95bf0_key -iv $encrypted_78c7c6c95bf0_iv -in credentials.tar.gz.enc -out credentials.tar.gz -d
102
+ - tar -xzf credentials.tar.gz
103
+ - rm credentials.tar.gz.enc credentials.tar.gz
104
+ - gcloud auth activate-service-account --key-file travis-service-account.json
105
+ - gcloud config set compute/zone europe-west3-c
106
+ - gcloud config set project api-platform-demo-209807
107
+ - mkdir -p ${HOME}/.kube
108
+ - cp ./kubeConfig ${HOME}/.kube/config
109
+ - curl -O https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz
110
+ - tar -zxvf helm-v2.7.2-linux-amd64.tar.gz
111
+ - rm -rf helm-v2.7.2-linux-amd64.tar.gz
112
+ - sudo mv linux-amd64/helm /usr/local/bin/helm
113
+ - gcloud container clusters get-credentials "api-platform-demo"
114
+ - helm init
115
+ - APP_ENV=prod composer install --no-scripts --no-dev --no-progress --no-suggest --optimize-autoloader --classmap-authoritative --no-interaction --prefer-dist
116
+ - docker build -t gcr.io/api-platform-demo/php -t gcr.io/api-platform-demo/php:latest api/api --target api_platform_php
117
+ - docker build -t gcr.io/api-platform-demo/nginx -t gcr.io/api-platform-demo/nginx:latest api/api --target api_platform_nginx
118
+ - docker build -t gcr.io/api-platform-demo/varnish -t gcr.io/api-platform-demo/varnish:latest api/api --target api_platform_varnish
119
+ - gcloud docker -- push gcr.io/api-platform-demo/php:latest
120
+ - gcloud docker -- push gcr.io/api-platform-demo/nginx:latest
121
+ - gcloud docker -- push gcr.io/api-platform-demo/varnish:latest
122
+ - helm upgrade --recreate-pods --force --reset-values api-platform-demo --namespace=master \
123
+ --set php.repository=gcr.io/api-platform-demo/php:latest \
124
+ --set nginx.repository=gcr.io/api-platform-demo/nginx:latest \
125
+ --set secret=${APP_SECRET} \
126
+ --set postgresUser=${DATABASE_USER},postgresPassword="${DATABASE_PASSWORD}",postgresDatabase=${DATABASE_NAME} \
127
+ --set postgresql.persistence.enabled=true \
128
+ --set corsAllowOrigin='^https?://localhost(:[0-9]*)?$'
129
+ - rm travis-service-account.json
130
+ - gcloud auth revoke travis-service-account@api-platform-demo-209807.iam.gserviceaccount.com
0 commit comments