diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a1c844..2fb99cc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -295,10 +295,23 @@ jobs: - name: Build uses: ./.github/workflows/actions/build with: - path: epicbox-python + path: epicbox-python/310 image_name_tag: python:3.10.6 username: ${{ secrets.REGISTRY_USER }} password: ${{ secrets.REGISTRY_PASSWORD }} + build_python_311_image: + name: Build epicbox/python 3.11 image + runs-on: [ self-hosted, small ] + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Build + uses: ./.github/workflows/actions/build + with: + path: epicbox-python/311 + image_name_tag: python:3.11.5 + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} build_ruby_image: name: Build epicbox/ruby image runs-on: [self-hosted, small] diff --git a/epicbox-python/Dockerfile b/epicbox-python/310/Dockerfile similarity index 100% rename from epicbox-python/Dockerfile rename to epicbox-python/310/Dockerfile diff --git a/epicbox-python/requirements.in b/epicbox-python/310/requirements.in similarity index 100% rename from epicbox-python/requirements.in rename to epicbox-python/310/requirements.in diff --git a/epicbox-python/requirements.txt b/epicbox-python/310/requirements.txt similarity index 100% rename from epicbox-python/requirements.txt rename to epicbox-python/310/requirements.txt diff --git a/epicbox-python/311/Dockerfile b/epicbox-python/311/Dockerfile new file mode 100644 index 0000000..20fd5f4 --- /dev/null +++ b/epicbox-python/311/Dockerfile @@ -0,0 +1,45 @@ +FROM python:3.11.5-slim + + +ENV DEBIAN_FRONTEND=noninteractive +ENV NLTK_DIR=/usr/local/nltk_data +ENV MYSTEM_DIR=/usr/local/bin + +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + default-libmysqlclient-dev \ + gfortran \ + libblas-dev \ + libbz2-dev \ + libfreetype6-dev \ + libgdbm-dev \ + libgeos-dev \ + libjpeg-dev \ + liblapack-dev \ + liblzma-dev \ + libncursesw5-dev \ + libreadline-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + libxslt-dev \ + libz-dev \ + locales \ + pkg-config \ + uuid-dev \ + wget \ + zlib1g-dev \ + && rm -rf /var/lib/apt/lists/* \ + && sed -i '/\(en_US.UTF-8\|ru_RU.UTF-8\)/s/^# //g' /etc/locale.gen \ + && locale-gen + +COPY requirements.txt /tmp + +RUN pip install --no-cache-dir -r /tmp/requirements.txt \ + && python -m nltk.downloader -d ${NLTK_DIR} averaged_perceptron_tagger brown gutenberg movie_reviews omw-1.4 punkt treebank word2vec_sample wordnet \ + && wget -qO- https://download.cdn.yandex.net/mystem/mystem-3.1-linux-64bit.tar.gz | tar xvz -C ${MYSTEM_DIR} \ + && rm /tmp/requirements.txt + +RUN useradd -M -d /sandbox sandbox \ + && mkdir /sandbox \ + && chown sandbox:sandbox /sandbox diff --git a/epicbox-python/311/requirements.in b/epicbox-python/311/requirements.in new file mode 100644 index 0000000..5be6758 --- /dev/null +++ b/epicbox-python/311/requirements.in @@ -0,0 +1,54 @@ +https://github.com/StepicOrg/stepik-common/archive/1.0.0.zip#egg=stepic-common==1.0.0 +https://github.com/StepicOrg/stepik-utils/archive/1.2.0.zip#egg=stepic-utils==1.2.0 +https://github.com/StepicOrg/stepik-bioinformatics/archive/1.0.0.zip#egg=stepic-bioinformatics==1.0.0 +https://github.com/StepicOrg/stepik-alignment/archive/1.1.0.zip#egg=stepik-alignment==1.1.0 + +sympy==1.12 +numpy==1.25.2 +scipy==1.11.2 +pandas==2.1.0 +lxml==4.9.3 +hypothesis==6.84.3 +toolz==0.12.0 +# Cython is required by scikit-image +Cython==3.0.2 +matplotlib==3.7.3 +networkx==3.1 +scikit-image==0.21.0 +scikit-learn==1.3.0 +# rsa to check encrypted tokens +rsa==4.9 +# natural language processing +nltk==3.8.1 +pymorphy2==0.9.1 +pymystem3==0.2.0 +sumy==0.11.0 +gensim==4.3.2 +fasttext==0.9.2 + +# big data specialization +apache-airflow==2.7.1 + +mip==1.15.0 +shapely==2.0.1 +pycosat==0.6.3 + +myhdl==0.11 + +# Hyperskill +django==4.2.5 +beautifulsoup4==4.12.2 + +# Stepik Academy +djangorestframework==3.14.0 +factory_boy==3.3.0 + +opencv-python-headless==4.8.0.76 + +pysqlite3-binary==0.5.1 + +# required by admin quiz +pytest==7.4.2 +requests==2.31.0 +# required by sql challenge +mysqlclient==2.2.0 diff --git a/epicbox-python/311/requirements.txt b/epicbox-python/311/requirements.txt new file mode 100644 index 0000000..9463b79 --- /dev/null +++ b/epicbox-python/311/requirements.txt @@ -0,0 +1,479 @@ +# +# This file is autogenerated by pip-compile with python 3.10 +# To update, run: +# +# pip-compile +# +alembic==1.12.0 + # via apache-airflow +anyio==4.0.0 + # via httpcore +apache-airflow==2.7.1 + # via -r requirements.in +apache-airflow-providers-ftp==3.5.2 + # via apache-airflow +apache-airflow-providers-http==4.5.2 + # via apache-airflow +apache-airflow-providers-imap==3.3.2 + # via apache-airflow +apache-airflow-providers-sqlite==3.4.3 + # via apache-airflow +apispec[yaml]==6.3.0 + # via flask-appbuilder +argcomplete==3.1.1 + # via apache-airflow +asgiref==3.7.2 + # via django +attrs==23.1.0 + # via + # apache-airflow + # cattrs + # hypothesis + # jsonschema + # pytest +babel==2.12.1 + # via flask-babel +beautifulsoup4==4.12.2 + # via -r requirements.in +biopython==1.81 + # via + # stepic-bioinformatics + # stepic-common +blinker==1.6.2 + # via apache-airflow +breadability==0.1.20 + # via sumy +cattrs==23.1.2 + # via apache-airflow +certifi==2023.7.22 + # via + # httpx + # requests +cffi==1.15.1 + # via + # cryptography + # mip +chardet==5.2.0 + # via breadability +charset-normalizer==3.2.0 + # via + # httpx + # requests +click==8.1.7 + # via + # clickclick + # flask + # flask-appbuilder + # nltk +clickclick==20.10.2 + # via apache-airflow +colorama==0.4.6 + # via + # flask-appbuilder + # rich +colorlog==4.8.0 + # via apache-airflow +commonmark==0.9.1 + # via rich +croniter==1.4.1 + # via apache-airflow +cryptography==41.0.3 + # via apache-airflow +cycler==0.11.0 + # via matplotlib +cython==3.0.2 + # via -r requirements.in +dawg-python==0.7.2 + # via pymorphy2 +defusedxml==0.7.1 + # via python3-openid +dill==0.3.7 + # via apache-airflow +django==4.2.5 + # via + # -r requirements.in + # djangorestframework +djangorestframework==3.14.0 + # via -r requirements.in +dnspython==2.4.2 + # via email-validator +docopt==0.6.2 + # via + # breadability + # pymorphy2 + # sumy +docutils==0.20.1 + # via + # apache-airflow + # python-daemon +email-validator==1.3.1 + # via flask-appbuilder +factory_boy==3.3.0 + # via -r requirements.in +faker==19.6.0 + # via factory-boy +fasttext==0.9.2 + # via -r requirements.in +flask==2.2.5 + # via + # apache-airflow + # flask-appbuilder + # flask-babel + # flask-caching + # flask-jwt-extended + # flask-login + # flask-openid + # flask-sqlalchemy + # flask-wtf +flask-appbuilder==4.3.6 + # via apache-airflow +flask-babel==2.0.0 + # via flask-appbuilder +flask-caching==2.0.2 + # via apache-airflow +flask-jwt-extended==4.5.2 + # via flask-appbuilder +flask-login==0.6.2 + # via + # apache-airflow + # flask-appbuilder +flask-openid==1.3.0 + # via flask-appbuilder +flask-sqlalchemy==2.5.1 + # via flask-appbuilder +flask-wtf==1.1.1 + # via + # apache-airflow + # flask-appbuilder +fonttools==4.42.1 + # via matplotlib +gensim==4.3.2 + # via -r requirements.in +graphviz==0.20.1 + # via apache-airflow +greenlet==2.0.2 + # via sqlalchemy +gunicorn==21.2.0 + # via apache-airflow +h11==0.14.0 + # via httpcore +httpcore==0.18.0 + # via httpx +httpx==0.25.0 + # via apache-airflow +hypothesis==6.84.3 + # via -r requirements.in +idna==3.4 + # via + # anyio + # email-validator + # requests + # rfc3986 +imageio==2.31.3 + # via scikit-image +inflection==0.5.1 + # via apache-airflow +iniconfig==2.0.0 + # via pytest +iso8601==2.0.0 + # via apache-airflow +itsdangerous==2.1.2 + # via + # apache-airflow + # flask + # flask-wtf +jinja2==3.1.2 + # via + # apache-airflow + # flask + # flask-babel + # python-nvd3 + # swagger-ui-bundle +joblib==1.3.2 + # via + # nltk + # scikit-learn +jsonschema==4.19.0 + # via + # apache-airflow + # flask-appbuilder + # openapi-schema-validator + # openapi-spec-validator +kiwisolver==1.4.5 + # via matplotlib +lazy-object-proxy==1.9.0 + # via apache-airflow +lockfile==0.12.2 + # via + # apache-airflow + # python-daemon +lxml==4.9.3 + # via + # -r requirements.in + # breadability +mako==1.2.4 + # via alembic +markdown==3.4.4 + # via apache-airflow +markupsafe==2.1.3 + # via + # apache-airflow + # jinja2 + # mako + # wtforms +marshmallow==3.20.1 + # via + # flask-appbuilder + # marshmallow-enum + # marshmallow-oneofschema + # marshmallow-sqlalchemy +marshmallow-enum==1.5.1 + # via flask-appbuilder +marshmallow-oneofschema==3.0.1 + # via apache-airflow +marshmallow-sqlalchemy==0.26.1 + # via flask-appbuilder +matplotlib==3.7.3 + # via -r requirements.in +mip==1.15.0 + # via -r requirements.in +mpmath==1.3.0 + # via sympy +myhdl==0.11 + # via -r requirements.in +mysqlclient==2.2.0 + # via -r requirements.in +networkx==3.1 + # via + # -r requirements.in + # scikit-image +nltk==3.8.1 + # via + # -r requirements.in + # sumy +numpy==1.25.2 + # via + # -r requirements.in + # biopython + # fasttext + # gensim + # imageio + # matplotlib + # opencv-python-headless + # pandas + # pywavelets + # scikit-image + # scikit-learn + # scipy + # tifffile +openapi-schema-validator==0.6.0 + # via openapi-spec-validator +openapi-spec-validator==0.6.0 + # via apache-airflow +opencv-python-headless==4.8.0.76 + # via -r requirements.in +packaging==23.1 + # via + # apache-airflow + # matplotlib + # pytest + # scikit-image +pandas==2.1.0 + # via -r requirements.in +pendulum==2.1.2 + # via apache-airflow +pillow==10.0.0 + # via + # imageio + # matplotlib + # scikit-image +pluggy==1.3.0 + # via pytest +prison==0.2.1 + # via flask-appbuilder +psutil==5.9.5 + # via apache-airflow +py==1.11.0 + # via pytest +pyasn1==0.5.0 + # via rsa +pybind11==2.11.1 + # via fasttext +pycosat==0.6.3 + # via -r requirements.in +pycountry==22.3.5 + # via sumy +pycparser==2.21 + # via cffi +pygments==2.16.1 + # via + # apache-airflow + # rich +pyjwt==2.8.0 + # via + # apache-airflow + # flask-appbuilder + # flask-jwt-extended +pymorphy2==0.9.1 + # via -r requirements.in +pymorphy2-dicts-ru==2.4.417127.4579844 + # via pymorphy2 +pymystem3==0.2.0 + # via -r requirements.in +pyparsing==3.1.1 + # via + # matplotlib + # packaging +pyrsistent==0.19.3 + # via jsonschema +pysqlite3-binary==0.5.1 + # via -r requirements.in +pytest==7.4.2 + # via -r requirements.in +python-daemon==3.0.1 + # via apache-airflow +python-dateutil==2.8.2 + # via + # apache-airflow + # croniter + # faker + # flask-appbuilder + # matplotlib + # pandas + # pendulum +python-nvd3==0.15.0 + # via apache-airflow +python-slugify==8.0.1 + # via + # apache-airflow + # python-nvd3 +python3-openid==3.2.0 + # via + # apache-airflow + # flask-openid +pytz==2023.3.post1 + # via + # babel + # djangorestframework + # flask-babel + # pandas +pytzdata==2020.1 + # via pendulum +pywavelets==1.4.1 + # via scikit-image +pyyaml==6.0.1 + # via + # apache-airflow + # apispec + # clickclick + # openapi-spec-validator +regex==2023.8.8 + # via nltk +requests==2.31.0 + # via + # -r requirements.in + # apache-airflow-providers-http + # pymystem3 + # sumy +rfc3986[idna2008]==2.0.0 + # via httpx +rich==13.5.2 + # via apache-airflow +rsa==4.9 + # via -r requirements.in +scikit-image==0.21.0 + # via -r requirements.in +scikit-learn==1.3.0 + # via -r requirements.in +scipy==1.11.2 + # via + # -r requirements.in + # gensim + # scikit-image + # scikit-learn +setproctitle==1.3.2 + # via apache-airflow +shapely==2.0.1 + # via -r requirements.in +six==1.16.0 + # via + # flask-jwt-extended + # jsonschema + # prison + # python-dateutil + # sqlalchemy-utils +smart-open==6.4.0 + # via gensim +sniffio==1.3.0 + # via + # anyio + # httpcore + # httpx +sortedcontainers==2.4.0 + # via hypothesis +soupsieve==2.5 + # via beautifulsoup4 +sqlalchemy==1.4.49 + # via + # alembic + # apache-airflow + # flask-appbuilder + # flask-sqlalchemy + # marshmallow-sqlalchemy + # sqlalchemy-jsonfield + # sqlalchemy-utils +sqlalchemy-jsonfield==1.0.1.post0 + # via apache-airflow +sqlalchemy-utils==0.41.1 + # via flask-appbuilder +sqlparse==0.4.4 + # via django +stepic-bioinformatics @ https://github.com/StepicOrg/stepik-bioinformatics/archive/1.0.0.zip + # via -r requirements.in +stepic-common @ https://github.com/StepicOrg/stepik-common/archive/1.0.0.zip + # via -r requirements.in +stepic-utils @ https://github.com/StepicOrg/stepik-utils/archive/1.2.0.zip + # via -r requirements.in +stepik-alignment @ https://github.com/StepicOrg/stepik-alignment/archive/1.1.0.zip + # via -r requirements.in +sumy==0.11.0 + # via -r requirements.in +swagger-ui-bundle==0.0.9 + # via apache-airflow +sympy==1.12 + # via -r requirements.in +tabulate==0.9.0 + # via apache-airflow +tenacity==8.2.3 + # via apache-airflow +termcolor==2.3.0 + # via apache-airflow +text-unidecode==1.3 + # via python-slugify +threadpoolctl==3.2.0 + # via scikit-learn +tifffile==2023.8.30 + # via scikit-image +toml==0.10.2 + # via pytest +toolz==0.12.0 + # via -r requirements.in +tqdm==4.66.1 + # via nltk +unicodecsv==0.14.1 + # via apache-airflow +urllib3==2.0.4 + # via requests +werkzeug==2.3.7 + # via + # apache-airflow + # flask + # flask-jwt-extended +wtforms==3.0.1 + # via + # apache-airflow + # flask-appbuilder + # flask-wtf + +# The following packages are considered to be unsafe in a requirements file: +# setuptools