-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path.travis.yml
44 lines (44 loc) · 2.61 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
services: docker
before_install:
# Strips out dashes in organization names because they are not allowed in dockerhub
- export DOCKER_REPO=`awk -F/ '{gsub("-","",$1)};{print $1"/"$2}' <<<$TRAVIS_REPO_SLUG | tr '[:upper:]' '[:lower:]'`
- export IMAGE_SLUG="$TRAVIS_BRANCH.${TRAVIS_COMMIT::8}.${TRAVIS_BUILD_ID}"
- docker -v
- cp .env.example .env
# Stop the postgres instance travis sets up automatically
- sudo /etc/init.d/postgresql stop
# set env vars in the build settings to interact with repositories
# see https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
# Start the docker stuff
- docker-compose -v
- docker-compose up -d
- sleep 4
- docker-compose ps
install:
# Install dev php dependencies
- docker run -i -v $(pwd):/var/www/html $(docker images -f label=application=laravel -q ) composer install --no-interaction --prefer-dist
script:
# Ensure phpcs triggers a failing build
- docker exec -it $(docker-compose ps -q fpm) sh -c "vendor/bin/phpcs --config-set ignore_warnings_on_exit 1"
# Ensure breaking PSR2 compliance fails in CI
- docker exec -it $(docker-compose ps -q fpm) sh -c "vendor/bin/phpcs --standard=PSR2 --ignore=app/Http/routes.php app"
# Seed database
- docker exec -it $(docker-compose ps -q fpm) sh -c "php artisan migrate --seed"
# Run tests
- docker exec -it $(docker-compose ps -q fpm) sh -c "vendor/bin/phpunit"
# Build cli container
- docker build -t "${DOCKER_REPO}:cli" -f infrastructure/cli/Dockerfile .
# Clean up pre-packaged stuff so the Laravel instance is clean and re-run tests to make sure we didn't break something
- docker exec -it $(docker-compose ps -q fpm) sh -c "php artisan clean:template -f"
- docker exec -it $(docker-compose ps -q fpm) sh -c "vendor/bin/phpunit"
after_success:
# Deployable image tags must be in format: [service].[branch].[commit-hash].[timestamp]
- if [[ $TRAVIS_BRANCH == 'master' || $TRAVIS_BRANCH == 'staging' ]]; then docker tag "${DOCKER_REPO}:fpm" "${DOCKER_REPO}:fpm.${IMAGE_SLUG}" && docker push "${DOCKER_REPO}:fpm.${IMAGE_SLUG}" ; fi
- if [[ $TRAVIS_BRANCH == 'master' || $TRAVIS_BRANCH == 'staging' ]]; then docker tag "${DOCKER_REPO}:cli" "${DOCKER_REPO}:cli.${IMAGE_SLUG}" && docker push "${DOCKER_REPO}:cli.${IMAGE_SLUG}" ; fi
- if [[ $TRAVIS_BRANCH == 'master' || $TRAVIS_BRANCH == 'staging' ]]; then docker tag "${DOCKER_REPO}:nginx" "${DOCKER_REPO}:nginx.${IMAGE_SLUG}" && docker push "${DOCKER_REPO}:nginx.${IMAGE_SLUG}" ; fi
after_script:
- docker images
notifications:
slack:
secure: ${SLACK_TOKEN}