# GitLab CI in conjunction with GitLab Runner can use Docker Engine to test and build any application. # Docker, when used with GitLab CI, runs each job in a separate and isolated container using the predefined image that is set up in .gitlab-ci.yml. # In this case we use the latest python docker image to build and test this project. image: python:3.5-slim # cache is used to specify a list of files and directories which should be cached between jobs. You can only use paths that are within the project workspace. # If cache is defined outside the scope of jobs, it means it is set globally and all jobs will use that definition cache: paths: # before_script is used to define the command that should be run before all jobs, including deploy jobs, but after the restoration of artifacts. # This can be an array or a multi-line string. before_script: - pip install pipenv - pipenv install stages: - test - deploy # The YAML file defines a set of jobs with constraints stating when they should be run. # You can specify an unlimited number of jobs which are defined as top-level elements with an arbitrary name and always have to contain at least the script clause. # In this case we have only the test job which produce an artifacts (it must be placed into a directory called "public") # It is also specified that only the master branch will be subject of this job. test: stage: test tags: - docker-executor script: - pipenv run python setup.py test - mkdir .public - cp coverage.xml .public/ - mv .public public artifacts: paths: - public dependency_check: stage: test script: - pipenv graph >> pipenv_deps.txt - dpkg -l >> system_deps.txt - awk 'FNR>5 {print $2 ", " $3}' system_deps.txt >> system_deps.csv - mkdir .public - cp pipenv_deps.txt .public/ - cp system_deps.txt .public/ - cp system_deps.csv .public/ - mv .public public artifacts: paths: - public code_quality: tags: - docker-executor image: docker:stable variables: DOCKER_DRIVER: overlay2 allow_failure: true services: - docker:stable-dind before_script: - ls -la script: - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/') - docker run --env SOURCE_CODE="$PWD" --volume "$PWD":/code --volume /var/run/docker.sock:/var/run/docker.sock "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code - more gl-code-quality-report.json artifacts: paths: [gl-code-quality-report.json] code_analysis: script: - pipenv run bash code-analysis.sh pages: stage: deploy tags: - docker-executor dependencies: - test script: - ls -la - mkdir .public - cp -r htmlcov/* .public - mv .public public artifacts: paths: - public expire_in: 30 days