Newer
Older
- template: Security/Dependency-Scanning.gitlab-ci.yml
variables:
POSTGRES_DB: smash
POSTGRES_USER: runner
POSTGRES_PASSWORD: password
gemnasium-python-dependency_scanning:
before_script:
- apt-get update && apt-get install -y python-dev-is-python3 libldap2-dev libssl-dev libcurl4-openssl-dev libpq-dev libsasl2-dev gcc
.test_template: &test_definition
stage: test
before_script:
- apt-get update && apt-get install -y --allow-unauthenticated libsasl2-dev libssl-dev locales locales-all libsasl2-dev libldap2-dev libssl-dev
- pip install --upgrade pip --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
- pip install -r requirements.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
- pip install -r requirements-dev.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
test_migrations_created:
<<: *test_definition
services:
- postgres:latest
script:
- cp "local_settings_ci.py" "smash/smash/local_settings.py"
- cd smash
- python manage.py makemigrations --check --dry-run
- test 1 = $(python manage.py makemigrations --check --dry-run | grep 'No changes detected' |wc -l)
services:
- postgres:latest
script:
- cp "local_settings_ci.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
test_python_3.10:
<<: *test_definition
image: python:3.10
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
test_python_3.11:
<<: *test_definition
image: python:3.11
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
test_python_3.12:
<<: *test_definition
image: python:3.12
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- coverage run --source web manage.py test -v3
- coverage report -m --omit="*/test*,*/migrations*,*debug_utils*"
test_create_dummy_script:
<<: *test_definition
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
- python manage.py makemigrations web && python manage.py migrate
- python db_scripts/create_dummy_data.py
test_docker_compose:
image: docker:19.03.0
stage: test
- tags
services:
- name: docker:19.03.0-dind
command: ["--mtu=1458", "--registry-mirror", "https://docker-registry.lcsb.uni.lu"]
tags:
script:
- apk add --no-cache docker-compose curl
- docker-compose up --build -d
- sleep 30
- docker-compose down
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
artifacts:
expire_in: 1 week
paths:
- "*.deb"
script:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated libsasl2-dev libssl-dev locales locales-all python3 dh-make build-essential lintian devscripts xsltproc fakeroot xsltproc docbook-xsl curl gnupg git gcc g++ make libsasl2-dev python-dev libldap2-dev libssl-dev
- curl -sL https://deb.nodesource.com/setup_14.x | bash -
- DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
- pip install -r requirements.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
- pip install -r requirements-dev.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
- export DEBFULLNAME="Valentin Groues"
- export DEBEMAIL="valentin.groues@uni.lu"
test_install_debian_package_ubuntu_18:
image: ubuntu:18.04
stage: test
services:
- name: piotrgawron/debian-repo
alias: debian-repo
dependencies:
- build_debian
script:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y ssh software-properties-common dirmngr wget curl
- debian_file=$(ls *.deb)
- echo "PUT $debian_file /docker/incoming" | sftp -o StrictHostKeyChecking=no user@debian-repo
- ssh root@debian-repo /usr/local/sbin/reprepro-import
- apt-add-repository "deb http://debian-repo/ unstable main" -n
- apt-get update --allow-insecure-repositories
- DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated smasch
#systemd is not available on docker so we need to start manually gunicorn (smasch.service is not tested)
- cd /usr/lib/smasch/
Piotr Gawron
committed
- /usr/lib/smasch/env/bin/gunicorn -b 127.0.0.1:8888 --pid smasch.pid smash.wsgi --error-logfile /var/log/smasch/gunicorn.log --log-level DEBUG --capture-output --limit-request-line 8192 &
#we need to wait a bit for gunicorn start
- sleep 15
- wget http://localhost:8888/account/login/?next=/
- test 302 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/)
- test 200 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/account/login/?next=/)
test_install_debian_package_ubuntu_20:
image: ubuntu:20.04
stage: test
services:
- name: piotrgawron/debian-repo
alias: debian-repo
dependencies:
- build_debian
script:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y ssh software-properties-common dirmngr wget curl
- debian_file=$(ls *.deb)
- echo "PUT $debian_file /docker/incoming" | sftp -o StrictHostKeyChecking=no user@debian-repo
- ssh root@debian-repo /usr/local/sbin/reprepro-import
- apt-add-repository "deb http://debian-repo/ unstable main" -n
- apt-get update --allow-insecure-repositories
- DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated smasch
#systemd is not available on docker so we need to start manually gunicorn (smasch.service is not tested)
- cd /usr/lib/smasch/
Piotr Gawron
committed
- /usr/lib/smasch/env/bin/gunicorn -b 127.0.0.1:8888 --pid smasch.pid smash.wsgi --error-logfile /var/log/smasch/gunicorn.log --log-level DEBUG --capture-output --limit-request-line 8192 &
#we need to wait a bit for gunicorn start
- sleep 15
- wget http://localhost:8888/account/login/?next=/
#test if we can login and list projects
- test 302 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/)
- test 200 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/account/login/?next=/)
test_install_debian_package_debian_buster:
image: debian:buster
stage: test
services:
- name: piotrgawron/debian-repo
alias: debian-repo
dependencies:
- build_debian
script:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y ssh software-properties-common dirmngr wget curl
- debian_file=$(ls *.deb)
- echo "PUT $debian_file /docker/incoming" | sftp -o StrictHostKeyChecking=no user@debian-repo
- ssh root@debian-repo /usr/local/sbin/reprepro-import
- apt-add-repository "deb http://debian-repo/ unstable main"
- apt-get update --allow-insecure-repositories
- DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated smasch
#systemd is not available on docker so we need to start manually gunicorn (smasch.service is not tested)
- cd /usr/lib/smasch/
Piotr Gawron
committed
- /usr/lib/smasch/env/bin/gunicorn -b 127.0.0.1:8888 --pid smasch.pid smash.wsgi --error-logfile /var/log/smasch/gunicorn.log --log-level DEBUG --capture-output --limit-request-line 8192 &
#we need to wait a bit for gunicorn start
- sleep 15
- wget http://localhost:8888/account/login/?next=/
#test if we can login and list projects
- test 302 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/)
- test 200 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/account/login/?next=/)
test_version_in_base_html:
script:
- CURRENT_VERSION=`cat CHANGELOG |grep smasch |head -1 | cut -f2 -d'(' | cut -f1 -d')' | cut -f1 -d'-' `
- test 1 = $(cat smash/web/templates/_base.html |grep "<strong>$CURRENT_VERSION</strong>" |wc -l)
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- pylint --rcfile=../.pylintrc --django-settings-module=smash.settings --load-plugins pylint_django web --extension-pkg-allow-list=pycurl
script:
- cp "local_settings_ci_sqlite.py" "smash/smash/local_settings.py"
- cd smash
build_rpm:
stage: build
only:
- tags
artifacts:
# you cannot enforce never here yet
expire_in: 1000 yrs
paths:
- apt-get update
- DEBIAN_FRONTEND=noninteractive apt-get install -y --allow-unauthenticated libsasl2-dev libssl-dev locales locales-all python3 dh-make build-essential lintian devscripts xsltproc fakeroot xsltproc docbook-xsl curl gnupg git gcc g++ make libsasl2-dev python-dev libldap2-dev libssl-dev rpm
- curl -sL https://deb.nodesource.com/setup_14.x | bash -
- DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
- pip install -r requirements.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
- pip install -r requirements-dev.txt --default-timeout=180 -i https://repomanager.lcsb.uni.lu/repository/pypi-proxy/simple/ --extra-index-url https://pypi.python.org/simple/
stage: test
only:
- tags
dependencies:
- build_rpm
script:
- ls -al
- yum -y localinstall rpm/RPMS/noarch/smasch-*.rpm
#systemd is not available on docker, so we need to start manually gunicorn (smasch.service is not tested)
- cd /usr/lib/smasch/
- /usr/lib/smasch/env/bin/gunicorn -b 127.0.0.1:8888 --pid smasch.pid smash.wsgi --error-logfile /var/log/smasch/gunicorn.log --log-level DEBUG --capture-output --limit-request-line 8192 &
#we need to wait a bit for gunicorn start
- sleep 15
- wget http://localhost:8888/account/login/?next=/
#test if we can login
- test 302 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/)
- test 200 = $(curl -X GET --write-out %{http_code} --silent --output /dev/null http://localhost:8888/account/login/?next=/)