--- image: 0xacab.org:4567/leap/docker/ruby:latest # This is for caching the gems not only between the stages, but also # persistent on the gitlab-runner so we don't need to install from # scratch on every pipeline cache: key: "$CI_BUILD_REF_NAME" untracked: true paths: - tests/platform-ci/vendor/ before_script: - cd tests/platform-ci # Check if running locally ($CI_PROJECT_ID is 0 then) and run setup.sh in # this case - if [ "$CI_PROJECT_ID" = "0" ]; then ./setup.sh; fi stages: - setup - syntax - deploy setup: stage: setup script: - ./setup.sh lint: stage: syntax script: - su -c '/usr/local/bin/bundle exec rake lint' cirunner syntax: stage: syntax script: - su -c '/usr/local/bin/bundle exec rake syntax' cirunner validate: stage: syntax script: - su -c '/usr/local/bin/bundle exec rake validate' cirunner templates: stage: syntax script: - su -c '/usr/local/bin/bundle exec rake templates' cirunner catalog: stage: syntax script: - su -c '/usr/local/bin/bundle exec rake catalog' cirunner # rspec: # stage: rspec # script: # - /usr/local/bin/bundle exec rake spec # The deploy_test job is run on any merge request. This is used to ensure that # the merge request will deploy and test properly. It is not run when the merge # request is accepted into master, instead the 'latest' job below is run # instead. deploy_test: stage: deploy except: - master script: - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner # However, sometimes it's important to have a way of triggering a deploy # from scratch manually even from the master branch, when i.e. new packages # got uploaded to the master component of the platform deb repo. deploy_test:manual: stage: deploy only: - master when: manual script: - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner # Test upgrades from the latetest release to latest HEAD upgrade_test: stage: deploy when: manual script: # Allow unpriviledged user to checkout last release of leap_platform - chown cirunner:cirunner -R ../.. - su -c 'set -o pipefail; stdbuf -oL -eL ./ci-build.sh | ts' cirunner || sleep 9000 # Latest job will only run on the master branch, which means all merge requests # that are created from branches don't get to deploy to the latest-ci server. # When a merge request is merged, then the latest job will deploy the code to # the latest provider, and the deployment will be recorded in an environment # named 'latest' ci.leap.se: stage: deploy environment: name: staging only: - master@leap/platform script: - > su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh | /usr/bin/ts' cirunner demo.bitmask.net: stage: deploy environment: name: production/demo/vpn only: - master when: manual script: - > su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh | /usr/bin/ts' cirunner mail.bitmask.net: stage: deploy environment: name: production/demo/mail only: - master when: manual script: - > su -c '/usr/bin/unbuffer /bin/bash -o pipefail ./ci-build.sh | /usr/bin/ts' cirunner