korowai/framework

View on GitHub
.circleci/config.yml

Summary

Maintainability
Test Coverage
version: 2.1

jobs:
  build_sami_docs:
    docker:
      - image: circleci/php:7.3.5-cli

    working_directory: /tmp/build_docs

    steps:
      - checkout

      - run:
          name: Install sami
          command: |
            curl -s -L -o sami.phar http://get.sensiolabs.org/sami.phar &&
            chmod a+x sami.phar

      - run:
          name: Build docs
          command: ./sami.phar update --force -vvv docs/sami/sami.conf.php

      - persist_to_workspace:
          root: docs/build/html
          paths:
            - api/

  build_sphinx_docs:
    docker:
      - image: circleci/python:3.7

    working_directory: /tmp/build_docs

    steps:
      - checkout

      - run:
          name: Setup virtualenv
          command: python -m venv ~/.venv

      - run:
          name: Install sphinx
          command: |
            . ~/.venv/bin/activate &&
            python -m pip install -U --progress-bar off pip &&
            python -m pip install -U --progress-bar off -r docs/sphinx/requirements.txt

      - run:
          name: Build sphinx docs
          command: |
            . ~/.venv/bin/activate &&
            sphinx-build docs/sphinx docs/build/html

      - persist_to_workspace:
          root: docs/build/html
          paths:
            - ./

  deploy_docs:
    docker:
      - image: circleci/python:3.7

    working_directory: /tmp/build_docs

    environment:
      DOCS_DIR: docs/build/html
      SF_HOST: web.sourceforge.net
      SF_DOCS_DIR: /home/project-web/korowai-framework/htdocs/docs

    steps:
      - attach_workspace:
          at: docs/build/html

      - add_ssh_keys:
          fingerprints:
            - "f8:01:5a:e4:53:1c:dc:9e:f8:a4:dc:b3:a0:e3:80:95"

      - run:
          name: Deploy to Source Forge
          command: |
            sudo apt-get -y update && sudo apt-get -y install rsync &&
            ssh-keyscan "${SF_HOST}" >> ~/.ssh/known_hosts &&
            ( cd "${DOCS_DIR}" && rsync -aivz --delete ./ "${SF_USER}@${SF_HOST}:${SF_DOCS_DIR}/${CIRCLE_BRANCH}/" );

  behat_test:
    machine:
      image: circleci/classic:latest

    steps:
      - checkout

      - run:
          name: Bootstrap project and install composer dependencies
          command: |
            cat .env.dist | sed -e "s/@UID@/`id -u`/" -e "s/@GID@/`id -g`/" | tee .env &&
            docker-compose run --rm --entrypoint=composer php-cli install

      - run:
          name: Running tests
          command: |
            docker-compose up -d ldap-service &&
            docker-compose run --rm php-test php -r 'sleep(10);' &&
            docker-compose run --rm php-test vendor/bin/behat

      - run:
          name: Shuting down docker conainers
          command: docker-compose down

  behat_docs_test:
    machine:
      image: circleci/classic:latest

    steps:
      - checkout

      - run:
          name: Bootstrap project and install composer dependencies
          command: |
            cat .env.dist | sed -e "s/@UID@/`id -u`/" -e "s/@GID@/`id -g`/" | tee .env &&
            docker-compose run --rm --entrypoint=composer php-cli install

      - run:
          name: Running tests
          command: |
            docker-compose up -d ldap-service &&
            docker-compose run --rm php-test php -r 'sleep(10);' &&
            docker-compose run --rm php-test vendor/bin/behat -c docs/behat.yml

      - run:
          name: Shuting down docker conainers
          command: docker-compose down

workflows:
  version: 2.1

  build_docs:
    jobs:
      - build_sami_docs
      - build_sphinx_docs
      - deploy_docs:
          requires:
            - build_sami_docs
            - build_sphinx_docs
          filters:
            branches:
              only:
                - master
                - devel

  test:
    jobs:
      - behat_test
      - behat_docs_test