diff --git a/.dockerignore b/.dockerignore index 46c83b0467..f5faf1f0e3 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,2 @@ +.git awx/ui/node_modules diff --git a/tools/docker-compose/unit-tests/Dockerfile b/tools/docker-compose/unit-tests/Dockerfile index dc4a10bcc4..4658c5d32e 100644 --- a/tools/docker-compose/unit-tests/Dockerfile +++ b/tools/docker-compose/unit-tests/Dockerfile @@ -1,39 +1,13 @@ -# FROM gcr.io/ansible-tower-engineering/tower_devel:latest -FROM centos +FROM gcr.io/ansible-tower-engineering/tower_devel:latest -RUN yum install -y epel-release +RUN yum install -y bzip2 gcc-c++ -RUN yum install -y \ - bzip2 \ - python-pip \ - python-virtualenv \ - make \ - swig \ - git \ - libffi-devel \ - openssl-devel \ - libxml2-devel \ - xmlsec1-devel \ - xmlsec1-openssl-devel \ - gcc \ - gcc-c++ \ - /usr/bin/pg_config \ - openldap-devel \ - postgresql-devel \ - rabbitmq-server \ - libtool-ltdl-devel \ - fontconfig +# We need to install dependencies somewhere other than /ansible-tower. +# Anything in /ansible-tower will be overwritten by the bind-mount. +# We switch the WORKDIR to /ansible-tower further down. +WORKDIR "/tmp/" -# NOTE: The following steps work for tower-3.0.0 -# RUN curl -LO https://rpm.nodesource.com/pub_0.12/el/7/x86_64/nodejs-0.12.9-1nodesource.el7.centos.x86_64.rpm -# RUN yum install -y nodejs-0.12.9-1nodesource.el7.centos.x86_64.rpm -# RUN rm nodejs-0.12.9-1nodesource.el7.centos.x86_64.rpm - -# Remove the 2 lines below and uncomment the 3 lines above to build -# RPMs with the old JS build system. -RUN curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - - -RUN yum install -y nodejs +# Build front-end deps # https://github.com/npm/npm/issues/9863 RUN cd $(npm root -g)/npm \ @@ -42,41 +16,15 @@ RUN cd $(npm root -g)/npm \ RUN npm install -g npm@3.10.7 -# We need to install dependencies somewhere other than /ansible-tower. -# Anything in /ansible-tower will be overwritten by the bind-mount. -# We switch the WORKDIR to /ansible-tower further down. -WORKDIR "/tmp/ansible-tower" - -# Copy requirements files -# NOTE: '*' is not used as it invalidates docker caching -COPY requirements/requirements.txt requirements/ -COPY requirements/requirements_ansible.txt requirements/ -COPY requirements/requirements_dev.txt requirements/ -COPY requirements/requirements_jenkins.txt requirements/ - - -# Copy __init__.py so the Makefile can retrieve `awx.__version__` -COPY awx/__init__.py awx/ - -# Copy Makefile -COPY Makefile . - -# Install tower runtime virtualenvs -ENV SWIG_FEATURES="-cpperraswarn -includeall -I/usr/include/openssl" -RUN make requirements - -# Install tower test requirements -ENV VENV_BASE="" -RUN make requirements_jenkins - -# Build front-end deps COPY awx/ui/package.json awx/ui/ RUN npm set progress=false +# Copy __init__.py so the Makefile can retrieve `awx.__version__` +COPY awx/__init__.py awx/ RUN make ui-deps -WORKDIR "/ansible-tower" +WORKDIR "/tower_devel" # This entrypoint script takes care of moving the node_modules # into the bind-mount, then exec's to whatever was passed as the CMD. diff --git a/tools/docker-compose/unit-tests/docker-compose.yml b/tools/docker-compose/unit-tests/docker-compose.yml index 9e59aadd5f..243726ae8d 100644 --- a/tools/docker-compose/unit-tests/docker-compose.yml +++ b/tools/docker-compose/unit-tests/docker-compose.yml @@ -11,4 +11,4 @@ services: TEST_DIRS: awx/main/tests/unit awx/main/tests/functional command: ["make test"] volumes: - - ../../../:/ansible-tower + - ../../../:/tower_devel diff --git a/tools/docker-compose/unit-tests/entrypoint b/tools/docker-compose/unit-tests/entrypoint index 0fcf42881b..cb7fbe142e 100644 --- a/tools/docker-compose/unit-tests/entrypoint +++ b/tools/docker-compose/unit-tests/entrypoint @@ -1,7 +1,7 @@ #!/bin/bash set -e -mkdir -p /ansible-tower/awx/ui/ -mv -n /tmp/ansible-tower/awx/ui/node_modules /ansible-tower/awx/ui +mkdir -p /tower_devel/awx/ui/ +mv -n /tmp/awx/ui/node_modules /tmp/awx/ui/.deps_built /tower_devel/awx/ui exec $@