|
# Select image from https://hub.docker.com/_/php/ |
|
image: ci/ci |
|
|
|
# Select what we should cache between builds |
|
cache: |
|
key: ${CI_PROJECT_ID} |
|
paths: |
|
- vendor/ |
|
- composer.lock.prev |
|
- .env |
|
|
|
|
|
# Bring in any services we need http://docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-a-service |
|
# See http://docs.gitlab.com/ce/ci/services/README.html for examples. |
|
#services: |
|
# - mysql:5.7 |
|
|
|
# Set any variables we need |
|
#variables: |
|
# Configure mysql environment variables (https://hub.docker.com/r/_/mysql/) |
|
# MYSQL_DATABASE: mysql_database |
|
# MYSQL_ROOT_PASSWORD: mysql_strong_password |
|
|
|
|
|
stages: |
|
- integrated |
|
- test |
|
- package |
|
- deploy |
|
|
|
|
|
## stages entity: |
|
integrated-demo: |
|
stage: integrated |
|
script: |
|
- php -r 'echo "integrated PHP, JS, CSS and CONFIGURE\n";' |
|
- ([[ -f composer.lock ]] || (echo 'Error! composer.lock dont exists ! ' && exit 1)) |
|
- ( |
|
if [[ ! -f composer.lock.prev || ! -d vendor || $(md5sum composer.lock.prev | awk '{print $1}') != $(md5sum composer.lock | awk '{print $1}') ]]; then |
|
( composer install && cp -f composer.lock composer.lock.prev && echo 'installed depend' || (echo 'install depend failed, exit' && exit 1)); |
|
else |
|
echo 'no install depend, use cached'; |
|
fi; |
|
) |
|
- echo 'integrated-demo finished' |
|
# env |
|
- php -r "file_exists('.env') || copy('.env.example', '.env');" |
|
# 清除缓存 生成 key |
|
- php artisan cache:clear |
|
- php artisan key:generate |
|
|
|
|
|
|
|
phpunit-demo: |
|
stage: test |
|
script: |
|
- vendor/bin/phpunit --configuration ./phpunit.xml --coverage-text --colors=never |
|
- php -r 'echo "hello, PHPUNIT\n";' |
|
- php -r 'var_export(scandir(".")); echo "\n";' |
|
- sleep 2 |
|
- php -r 'echo "PHPUNIT END\n";' |
|
|
|
test-demo: |
|
stage: test |
|
script: |
|
- echo "test demo" |
|
|
|
ant: |
|
stage: test |
|
script: |
|
echo 'ant' |
|
# - ant |
|
|
|
compression-demo: |
|
stage: package |
|
script: |
|
- echo 'hello, COMPRESSION' |
|
- tar -p --exclude='package.tar.gz' -cz -f ../package.tar.gz . |
|
- mkdir deploy-packages |
|
- mv ../package.tar.gz deploy-packages/ |
|
|
|
artifacts: |
|
name: package-dir |
|
paths: |
|
- deploy-packages |
|
|
|
deploy-dev: |
|
stage: deploy |
|
script: |
|
- echo 'hello, deploy dev' |
|
- pwd |
|
- ls deploy-packages |
|
# 执行外部脚本进行部署 |
|
- /extra/scripts/deploy.sh ./deploy-packages/package.tar.gz |
|
- echo 'byebye, deploy dev' |
|
only: |
|
- master |
|
environment: |
|
name: dev |
|
url: http://blog.hs.app:82 |
|
|
|
deploy-testing: |
|
stage: deploy |
|
script: |
|
- echo 'hello, deploy testing' |
|
- pwd |
|
- ls deploy-packages |
|
- echo 'byebye, deploy testing' |
|
only: |
|
- pre-product |
|
environment: |
|
name: testing |
|
url: http://blog.hs.app:82 |
|
|
|
deploy-product: |
|
stage: deploy |
|
script: |
|
- echo 'hello, deploy product' |
|
- pwd |
|
- ls deploy-packages |
|
- echo 'byebye, deploy product' |
|
only: |
|
- product |
|
when: manual |
|
environment: |
|
name: product |
|
url: http://blog.hs.app:82 |
|
|