variables: IMAGE_NAME: funkwhale/funkwhale IMAGE: $IMAGE_NAME:$CI_COMMIT_REF_NAME IMAGE_LATEST: $IMAGE_NAME:latest PIP_CACHE_DIR: "$CI_PROJECT_DIR/pip-cache" stages: - test - build - deploy test_api: services: - postgres:9.4 - redis:3 stage: test image: funkwhale/funkwhale:latest cache: key: "$CI_PROJECT_ID__pip_cache" paths: - "$PIP_CACHE_DIR" variables: DJANGO_ALLOWED_HOSTS: "localhost" DATABASE_URL: "postgresql://postgres@postgres/postgres" FUNKWHALE_URL: "https://funkwhale.ci" CACHEOPS_ENABLED: "false" DJANGO_SETTINGS_MODULE: config.settings.local before_script: - cd api - pip install -r requirements/base.txt - pip install -r requirements/local.txt - pip install -r requirements/test.txt script: - pytest --cov=funkwhale_api tests/ tags: - docker test_front: stage: test image: node:9 before_script: - cd front script: - yarn install - yarn run unit cache: key: "$CI_PROJECT_ID__front_dependencies" paths: - front/node_modules - front/yarn.lock artifacts: name: "front_${CI_COMMIT_REF_NAME}" paths: - front/dist/ tags: - docker build_front: stage: build image: node:9 before_script: - cd front script: - yarn install - yarn run i18n-extract - yarn run i18n-compile # this is to ensure we don't have any errors in the output, # cf https://code.eliotberriot.com/funkwhale/funkwhale/issues/169 - yarn run build | tee /dev/stderr | (! grep -i 'ERROR in') cache: key: "$CI_PROJECT_ID__front_dependencies" paths: - front/node_modules - front/yarn.lock artifacts: name: "front_${CI_COMMIT_REF_NAME}" paths: - front/dist/ only: - tags@funkwhale/funkwhale - master@funkwhale/funkwhale - develop@funkwhale/funkwhale tags: - docker pages: stage: test image: python:3.6 variables: BUILD_PATH: "../public" before_script: - cd docs script: - pip install sphinx - ./build_docs.sh artifacts: paths: - public only: - develop@funkwhale/funkwhale tags: - docker docker_develop: stage: deploy before_script: - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - cp -r front/dist api/frontend - cd api script: - docker build -t $IMAGE . - docker push $IMAGE only: - develop@funkwhale/funkwhale tags: - dind build_api: # Simply publish a zip containing api/ directory stage: deploy image: busybox artifacts: name: "api_${CI_COMMIT_REF_NAME}" paths: - api script: echo Done! only: - tags@funkwhale/funkwhale - master@funkwhale/funkwhale - develop@funkwhale/funkwhale docker_release: stage: deploy before_script: - docker login -u $DOCKER_LOGIN -p $DOCKER_PASSWORD - cp -r front/dist api/frontend - cd api script: - docker build -t $IMAGE -t $IMAGE_LATEST . - docker push $IMAGE - docker push $IMAGE_LATEST only: - tags@funkwhale/funkwhale tags: - dind