diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a63410119c8a758c7d5ad0ebba1e2ba3d6a06775..8742084d439b165c105c67ace7b1902111064d29 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,42 @@ -image: docker:latest +stages: + - test + - build + +test_api: + stage: test + before_script: + - docker-compose -f api/test.yml build + script: + - docker-compose -f api/test.yml run test + after_script: + - docker-compose -f api/test.yml run test rm -rf funkwhale_api/media/ + + tags: + - dind + +build_front: + stage: build + image: node:6-alpine + before_script: + - cd front + + script: + - npm install + - npm run build + cache: + key: "$CI_COMMIT_REF_NAME" + paths: + - front/node_modules + artifacts: + name: "front_${CI_COMMIT_REF_NAME}" + paths: + - front/dist/ + only: + - master + - develop + tags: + - docker + # When using dind, it's wise to use the overlayfs driver for # improved performance. diff --git a/api/config/settings/test.py b/api/config/settings/test.py index 1323ff35a1ea2fdd93b3c9f52a03bffaebeafdff..b8dd89b049724a69465e428cf4ed3d120cf5a0a8 100644 --- a/api/config/settings/test.py +++ b/api/config/settings/test.py @@ -32,3 +32,4 @@ CELERY_ALWAYS_EAGER = True ########## END CELERY # Your local stuff: Below this line define 3rd party library settings +API_AUTHENTICATION_REQUIRED = False diff --git a/api/docker/Dockerfile.base b/api/docker/Dockerfile.base deleted file mode 100644 index 2617c9587b40cd63e7a9b7d826132f22d92a55e0..0000000000000000000000000000000000000000 --- a/api/docker/Dockerfile.base +++ /dev/null @@ -1,10 +0,0 @@ -FROM python:3.5 - -ENV PYTHONUNBUFFERED 1 - -# Requirements have to be pulled and installed here, otherwise caching won't work -COPY ./requirements.apt /requirements.apt -COPY ./install_os_dependencies.sh /install_os_dependencies.sh -RUN bash install_os_dependencies.sh install -COPY ./requirements /requirements -RUN pip install -r /requirements/base.txt diff --git a/api/docker/Dockerfile.local b/api/docker/Dockerfile.local deleted file mode 100644 index b70410459bebc0ed83d9fdd61d341c5b0b6bb26f..0000000000000000000000000000000000000000 --- a/api/docker/Dockerfile.local +++ /dev/null @@ -1,12 +0,0 @@ -FROM python:3.5 - -ENV PYTHONUNBUFFERED 1 - -# Requirements have to be pulled and installed here, otherwise caching won't work -COPY ./requirements.apt /requirements.apt -COPY ./install_os_dependencies.sh /install_os_dependencies.sh -RUN bash install_os_dependencies.sh install -COPY ./requirements /requirements -RUN pip install -r /requirements/local.txt - -WORKDIR /app diff --git a/api/docker/Dockerfile.test b/api/docker/Dockerfile.test index f2e2ef893b2e81c3790b48d5923d05c45d847cfc..eda9f9c8f5820d7139e8a25d4caf305f1bc9fb98 100644 --- a/api/docker/Dockerfile.test +++ b/api/docker/Dockerfile.test @@ -1,13 +1,19 @@ -FROM funkwhale/apibase +FROM python:3.5 ENV PYTHONUNBUFFERED 1 +ENV PYTHONDONTWRITEBYTECODE 1 # Requirements have to be pulled and installed here, otherwise caching won't work COPY ./requirements.apt /requirements.apt COPY ./install_os_dependencies.sh /install_os_dependencies.sh RUN bash install_os_dependencies.sh install -COPY ./requirements /requirements + +RUN mkdir /requirements +COPY ./requirements/base.txt /requirements +RUN pip install -r /requirements/base.txt +COPY ./requirements/local.txt /requirements RUN pip install -r /requirements/local.txt +COPY ./requirements/test.txt /requirements RUN pip install -r /requirements/test.txt WORKDIR /app diff --git a/api/funkwhale_api/radios/radios.py b/api/funkwhale_api/radios/radios.py index 0f2632fe943f27cc686f486ac8658caab05bb976..43819b9c4e1079a98e0bc47a1ab50855f6a12b07 100644 --- a/api/funkwhale_api/radios/radios.py +++ b/api/funkwhale_api/radios/radios.py @@ -50,7 +50,7 @@ class SessionRadio(SimpleRadio): def filter_from_session(self, queryset): already_played = self.session.session_tracks.all().values_list('track', flat=True) - queryset = queryset.exclude(pk__in=already_played) + queryset = queryset.exclude(pk__in=list(already_played)) return queryset def pick(self, **kwargs): diff --git a/api/funkwhale_api/radios/tests/test_radios.py b/api/funkwhale_api/radios/tests/test_radios.py index eb839a426ba7e156506b204cb48fb351ce0843c0..7d069be9c602cce65624de1ec756a82177013442 100644 --- a/api/funkwhale_api/radios/tests/test_radios.py +++ b/api/funkwhale_api/radios/tests/test_radios.py @@ -74,12 +74,11 @@ class TestRadios(TestCase): def test_can_use_radio_session_to_filter_choices(self): tracks = mommy.make('music.Track', _quantity=30) - radio = radios.RandomRadio() session = radio.start_session(self.user) for i in range(30): - radio.pick() + p = radio.pick() # ensure 30 differents tracks have been suggested tracks_id = [session_track.track.pk for session_track in session.session_tracks.all()] diff --git a/api/requirements/test.txt b/api/requirements/test.txt index e3540b72dd6ea2bf558b4809d354bf81453f6395..bcb6ef060cc73db6cf7f55e531c57a8177e79492 100644 --- a/api/requirements/test.txt +++ b/api/requirements/test.txt @@ -7,6 +7,6 @@ coverage==4.0.3 django_coverage_plugin==1.1 flake8==2.5.0 django-test-plus==1.0.11 -factory_boy==2.6.0 +factory_boy>=2.8.1 model_mommy tox diff --git a/api/test.yml b/api/test.yml index c28a8138c6707205cd28d69846a8e60603920c90..dc50a9b545d75382531f2684de6cb7ed3925be78 100644 --- a/api/test.yml +++ b/api/test.yml @@ -6,4 +6,3 @@ test: - .:/app environment: - DJANGO_SETTINGS_MODULE=config.settings.test - - API_AUTHENTICATION_REQUIRED=False diff --git a/dev.yml b/dev.yml index 2144d4b16362b5bc9f77c42aa1bcb31f7b27b70d..526ce1ba870f89bb8c6d2864b7db3bf026cc0b86 100644 --- a/dev.yml +++ b/dev.yml @@ -52,12 +52,12 @@ services: - redis - celeryworker - nginx: - env_file: .env.dev - build: ./api/compose/nginx - links: - - api - volumes: - - ./api/funkwhale_api/media:/staticfiles/media - ports: - - "0.0.0.0:6001:80" + # nginx: + # env_file: .env.dev + # build: ./api/compose/nginx + # links: + # - api + # volumes: + # - ./api/funkwhale_api/media:/staticfiles/media + # ports: + # - "0.0.0.0:6001:80"