image: framasoft/framadate-ci
stages:
  - test
  - deploy
  - beta
  - funky

# Run php-cs-fixer and phpunit on all branches
test:
  stage: test
  script:
    - composer install -o  --no-interaction --no-progress --prefer-dist
    - php vendor/bin/php-cs-fixer fix --verbose --dry-run
    - vendor/bin/phpunit --bootstrap app/tests/bootstrap.php --debug app/tests
  cache:
    paths:
      - vendor/

check-trad:
  stage: test
  allow_failure: true
  script:
    - if [ -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then echo "*** Unable to check if translations need to be pulled, exiting ***"; exit 1; fi
    - export ORIG=$(git diff-files --shortstat)
    - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
    - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
    - git status > /dev/null 2>&1
    - export CHANGES=$(git diff-files --shortstat)
    - if [[ $CHANGES != $ORIG ]]; then echo "*** There is changes in locales ***"; echo "*** You need to do `make pull-locales` in your repo ***"; exit 1; fi
  only:
    - develop

# Create artifacts on master
pages:
  stage: deploy
  script:
  - latesttag=$(git describe --tags)
  - git checkout ${latesttag}
  - composer install -o  --no-interaction --no-progress --prefer-dist --no-dev
  - composer dump-autoload --optimize --no-dev --classmap-authoritative
  - mkdir framadate
  - mv `ls -A | grep -v framadate` ./framadate
  - find framadate/ -type d -exec chmod 750 {} \;
  - find framadate/ -type f -exec chmod 640 {} \;
  - zip -r latest.zip framadate
  - mkdir .public
  - cp latest.zip .public
  - mv .public public
  artifacts:
    paths:
    - public
  only:
    - tags
  except:
    - (beta|alpha)

# Deploy on develop
beta:
  stage: beta
  script:
  - git checkout develop
  - composer install -o  --no-interaction --no-progress --prefer-dist --no-dev
  - composer dump-autoload --optimize --no-dev --classmap-authoritative
  - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
  - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make pull-locales; fi
  - mkdir .public
  - cp -r * .public
  - cp -r .git .public
  - mv .public public
  - mkdir "${HOME}/.ssh"
  - chmod 700 "${HOME}/.ssh"
  - if [ ! -z ${DEPLOYEMENT_KNOWN_HOSTS+x} ]; then echo -e "${DEPLOYEMENT_KNOWN_HOSTS}" > ${HOME}/.ssh/known_hosts; fi
  - eval `ssh-agent -s`
  - if [ ! -z ${BETA_KEY+x} ]; then ssh-add <(echo "${BETA_KEY}" | base64 --decode -i); fi
  - if [ ! -z ${BETA_KEY+x} ]; then rsync -a --delete --exclude admin/.stdout.log --exclude admin/.htpasswd --exclude app/inc/config.php --exclude stats/ --exclude error/ public/ ${BETA_USER}@${DEPLOYEMENT_HOST}:../../web/; fi
  only:
    - develop

# Deploy on preprod
preprod:
    stage: beta
    script:
        - git checkout preprod
        - composer install -o  --no-interaction --no-progress --prefer-dist --no-dev
        - composer dump-autoload --optimize --no-dev --classmap-authoritative
        - mkdir .public
        - cp -r * .public
        - cp -r .git .public
        - mv .public public
        - mkdir "${HOME}/.ssh"
        - chmod 700 "${HOME}/.ssh"
        - if [ ! -z ${DEPLOYEMENT_KNOWN_HOSTS+x} ]; then echo -e "${DEPLOYEMENT_KNOWN_HOSTS}" > ${HOME}/.ssh/known_hosts; fi
        - eval `ssh-agent -s`
        - if [ ! -z ${PREPROD_KEY+x} ]; then ssh-add <(echo "${PREPROD_KEY}" | base64 --decode -i); fi
        - if [ ! -z ${PREPROD_KEY+x} ]; then rsync -a --delete --exclude admin/.stdout.log --exclude admin/.htpasswd --exclude app/inc/config.php --exclude stats/ --exclude error/ public/ ${PREPROD_USER}@${DEPLOYEMENT_HOST}:../../web/; fi
    only:
        - preprod

# Deploy on funky
funky:
  stage: funky
  script:
  - git checkout funky
  - composer install
  - mkdir tpl_c
  - mkdir .public
  - cp -r * .public
  - mv .public public
  - mkdir "${HOME}/.ssh"
  - chmod 700 "${HOME}/.ssh"
  - if [ ! -z ${DEPLOYEMENT_KNOWN_HOSTS+x} ]; then echo -e "${DEPLOYEMENT_KNOWN_HOSTS}" > ${HOME}/.ssh/known_hosts; fi
  - eval `ssh-agent -s`
  - if [ ! -z ${DEPLOYEMENT_KEY+x} ]; then ssh-add <(echo "${DEPLOYEMENT_KEY}" | base64 --decode -i); fi
  - if [ ! -z ${DEPLOYEMENT_KEY+x} ]; then rsync -a --delete --exclude admin/.stdout.log --exclude admin/.htpasswd --exclude app/inc/config.php --exclude stats/ --exclude error/ public/ ${DEPLOYEMENT_USER}@${DEPLOYEMENT_HOST}:../../web/; fi
  only:
    - funky

# Push new translations strings to https://trad.framasoft.org
trads:
  stage: deploy
  image: framasoft/push-trad:latest
  script:
  - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then mkdir -p ${HOME}/.config; echo -e "${ZANATA_CONFIG_FRAMABOT}" > ${HOME}/.config/zanata.ini; fi
  - if [ ! -z ${ZANATA_CONFIG_FRAMABOT+x} ]; then make push-locales; fi
  only:
    - develop
