diff --git a/Dockerfile b/Dockerfile index 5c3c56f50..bba4fe9fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ COPY ./passbook/ /app/passbook COPY ./manage.py /app/ COPY ./requirements.txt /app/ -WORKDIR /source/ +WORKDIR /app/ RUN mkdir /app/static/ && \ pip install -r requirements.txt && \ @@ -12,7 +12,6 @@ RUN mkdir /app/static/ && \ ./manage.py collectstatic --no-input FROM python:3.6-slim-stretch -# LABEL version="1.8.8" COPY ./passbook/ /app/passbook COPY ./manage.py /app/ @@ -21,7 +20,6 @@ COPY --from=build /app/static/* /app/static/ WORKDIR /app/ -#RUN apk add --no-cache libffi-dev build-base py2-pip python2-dev libxml-dev && \ RUN pip install -r requirements.txt && \ pip install psycopg2 && \ adduser --system --home /app/ passbook && \ diff --git a/passbook/core/management/commands/nexus_upload.py b/passbook/core/management/commands/nexus_upload.py new file mode 100644 index 000000000..ae6deb76a --- /dev/null +++ b/passbook/core/management/commands/nexus_upload.py @@ -0,0 +1,71 @@ +"""passbook nexus_upload management command""" +from getpass import getpass + +import requests +from django.core.management.base import BaseCommand + + +class Command(BaseCommand): + """Upload debian package to nexus repository""" + + url = None + user = None + password = None + + def add_arguments(self, parser): + parser.add_argument( + '--repo', + action='store', + help='Repository to upload to', + required=True) + parser.add_argument( + '--url', + action='store', + help='Nexus root URL', + required=True) + parser.add_argument( + '--user', + action='store', + help='Username to use for Nexus upload', + required=True) + parser.add_argument( + '--method', + action='store', + nargs='?', + const='post', + choices=['post', 'put'], + help=('Method used for uploading files to nexus. ' + 'Apt repositories use post, Helm uses put.'), + required=True) + parser.add_argument( + '--password', + action='store', + help=("Password to use for Nexus upload. " + "If parameter not given, we'll interactively ask")) + # Positional arguments + parser.add_argument('file', nargs='+', type=str) + + def handle(self, *args, **options): + """Upload debian package to nexus repository""" + if options.get('password') is None: + options['password'] = getpass() + responses = {} + url = 'https://%(url)s/repository/%(repo)s//' % options + method = options.get('method') + exit_code = 0 + for file in options.get('file'): + if method == 'post': + responses[file] = requests.post(url, data=open(file, mode='rb'), + auth=(options.get('user'), options.get('password'))) + else: + responses[file] = requests.put(url+file, data=open(file, mode='rb'), + auth=(options.get('user'), options.get('password'))) + self.stdout.write('Upload results:\n') + sep = '-' * 60 + self.stdout.write('%s\n' % sep) + for path, response in responses.items(): + self.stdout.write('%-55s: %d\n' % (path, response.status_code)) + if response.status_code >= 400: + exit_code = 1 + self.stdout.write('%s\n' % sep) + exit(exit_code) diff --git a/passbook/lib/default.yml b/passbook/lib/default.yml index b797ce765..f6900abaa 100644 --- a/passbook/lib/default.yml +++ b/passbook/lib/default.yml @@ -23,7 +23,7 @@ web: listen: 0.0.0.0 port: 8000 threads: 30 -debug: true +debug: false secure_proxy_header: HTTP_X_FORWARDED_PROTO: https redis: localhost