variables:
TZ: "America/New_York"
# Configure postgres service (https://hub.docker.com/_/postgres/)
POSTGRES_DB: custom_db
POSTGRES_USER: custom_user
POSTGRES_PASSWORD: custom_pass
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
cache:
paths:
- .cache/pip
stages:
- pre_testing
- testing
- post_testing
- build
services:
- postgres:latest
closure_compiler:
tags:
- faradaytests
image:
name: jborza/closure-compiler
entrypoint: ["/bin/sh", "-c"]
stage: pre_testing
script:
- /opt/cc.sh faraday/server/www/scripts
merge_conflict_check:
tags:
- faradaytests
image: python:3
stage: pre_testing
allow_failure: true
script:
- git config --global user.email "[email protected]"
- git config --global user.name "Mergerbot"
- python3 merge-conflict-detector.py
pylint:
tags:
- faradaytests
image: registry.gitlab.com/faradaysec/faraday/faraday_testing_base # I just need an image with python-dev and python-pip
stage: pre_testing
script:
- pip install pylint anybadge
- pylint faraday/server |tee pylint.txt || true
- score=$(sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' pylint.txt)
- anybadge --label pylint --value=$score --file pylint.svg 4=red 6=orange 8=yellow 10=green
artifacts:
paths:
- pylint.svg
postgresql_test:
image: registry.gitlab.com/faradaysec/faraday/faraday_testing_base
tags:
- faradaytests
stage: testing
coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
script:
- apt-get update -qy
- apt-get install -y gobject-introspection libgirepository1.0-dev libcairo2-dev python-cairo libpq-dev
- pip install virtualenv
- virtualenv -p python2 faraday_venv
- source faraday_venv/bin/activate
#- pip install --upgrade -r requirements_server.txt
- pip install --upgrade -r requirements.txt
- python setup.py install
- pip install --upgrade responses pytest-xdist pytest-cov
- pip install --upgrade -r requirements_dev.txt
- mkdir -p ~/.faraday/config
- cp tests/data/server.ini ~/.faraday/config
#- sed -i 's/mapped_table/persist_selectable/' faraday_venv/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py # TODO remove when flask_sqlalchemy fixes the issue
- mkdir run_from
- cd run_from && pytest ../tests -v --capture=sys --cov=../faraday/server --color=yes --disable-warnings --connection-string=postgresql+psycopg2://$POSTGRES_USER:$POSTGRES_PASSWORD@postgres/$POSTGRES_DB
artifacts:
when: on_failure
paths:
- ~/.faraday/logs/faraday-server.log
sqlite_test:
image: registry.gitlab.com/faradaysec/faraday/faraday_testing_base
tags:
- faradaytests
stage: testing
coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/'
script:
- apt-get update -qy
- apt-get install -y gobject-introspection libgirepository1.0-dev libcairo2-dev python-cairo libpq-dev
- pip install virtualenv
- virtualenv -p python2 faraday_venv
- source faraday_venv/bin/activate
#- pip install --upgrade -r requirements_server.txt
- pip install --upgrade -r requirements.txt
- python setup.py install
- pip install --upgrade responses pytest-xdist pytest-cov
- pip install --upgrade -r requirements_dev.txt
- mkdir -p ~/.faraday/config
- cp tests/data/server.ini ~/.faraday/config
- mkdir run_from
- cd run_from && pytest ../tests --capture=sys -v --cov=../faraday/server --color=yes --disable-warnings
artifacts:
when: on_failure
paths:
- dist/*
generate_release_file:
image: python:3
stage: post_testing
allow_failure: true
script:
- apt-get update -qy
- apt-get install -y python-dev python-pip
- pip install packaging
- cd CHANGELOG && python3 changelog.py
artifacts:
paths:
- CHANGELOG/RELEASE.md
only:
variables:
- $FULL_DOC == "True"
- $RELEASE_FILE == "True"
- $CI_COMMIT_REF_NAME =~ /^.*\/(dev|master)$/
binary_files:
image: python:2.7.16
stage: build
script:
- apt-get update -qy
- apt-get install -y build-essential ipython python-setuptools python-pip python-dev libssl-dev libffi-dev pkg-config libxml2-dev libxslt1-dev libfreetype6-dev libpng-dev
- apt-get install -y libpq-dev python-pip python-dev gir1.2-gtk-3.0 gir1.2-vte-2.91 python-gobject zsh curl
- apt-get install -y gobject-introspection libgirepository1.0-dev libcairo2-dev python-cairo libgdk-pixbuf2.0-dev
- apt-get install -y libcanberra-gtk-module libcanberra-gtk* libxml2-dev libxslt1-dev gir1.2-gtk-3.0 gir1.2-vte-2.91
- pip install virtualenv
- virtualenv -p python2 faraday_venv
- source faraday_venv/bin/activate
- pip install pyinstaller
- pip install --upgrade -r requirements.txt
- python setup.py install
- pip install .[gtk]
- pyinstaller -F -w --onefile --icon=faraday/faraday/server/www/favicon.ico start_server.spec
- pyinstaller -F -w --onefile --icon=faraday/faraday/server/www/favicon.ico manage.spec
- pyinstaller -F -w --onefile --icon=faraday/faraday/server/www/favicon.ico start_client.spec
- pyinstaller -F -w --onefile --icon=faraday/faraday/server/www/favicon.ico fplugin.spec
- mv dist/start_client dist/faraday-client
- mv dist/start_server dist/faraday-server
- mv dist/manage dist/faraday-manage
- mv dist/fplugin dist/faraday-fplugin
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME-binaries"
paths:
- dist/faraday-server
- dist/faraday-manage
- dist/faraday-client
- dist/faraday-fplugin
expire_in: 1 week
only:
variables:
- $CI_COMMIT_REF_NAME =~ /^.*\/(dev|master)$/
macos_dmg:
tags:
- macos
stage: build
script:
- pip install virtualenv
- virtualenv -p python2 faraday_venv
- source faraday_venv/bin/activate
- export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/local/opt/libffi/lib/pkgconfig"
- pip install pyinstaller
- pip install --upgrade -r requirements.txt
- python setup.py install
- pip install .[gtk]
- pyinstaller -F -w --onefile --onefile --icon=faraday/faraday/server/www/favicon.ico start_server.spec
- pyinstaller -F -w --onefile --onefile --icon=faraday/faraday/server/www/favicon.ico manage.spec
- pyinstaller -F -w --onefile --onefile --icon=faraday/faraday/server/www/favicon.ico start_client.spec
- pyinstaller -F -w --onefile --icon=faraday/faraday/server/www/favicon.ico fplugin.spec
- mv dist/start_client dist/faraday-client
- mv dist/start_server dist/faraday-server
- mv dist/manage dist/faraday-manage
- mv dist/fplugin dist/faraday-fplugin
- hdiutil create /tmp/tmp.dmg -ov -volname "Faraday" -fs HFS+ -srcfolder "./dist"
- hdiutil convert /tmp/tmp.dmg -format UDZO -o Faraday.dmg
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME-binaries"
paths:
- Faraday.dmg
expire_in: 1 week
only:
variables:
- $CI_COMMIT_REF_NAME =~ /^.*\/(dev|master)$/
# This is a test of future test case that will be scheduled
i_do_nothing:
image: python:3
stage: post_testing
allow_failure: true
script:
- apt-get update -qy
- apt-get install -y python-dev python-pip
only:
variables:
- $FULL_TEST == "True"
- $I_DO_NOTH_TEST == "True"
# This is a test of future test case that will be scheduled
i_do_nothing2:
image: python:3
stage: post_testing
allow_failure: true
script:
- apt-get update -qy
- apt-get install -y python-dev python-pip
only:
variables:
- $FULL_TEST == "True"
- $I_DO_NOTH2_TEST == "True"