stages: - analysis - build - deploy # Cache modules in between jobs cache: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/ pylint: stage: analysis image: python:3.7 retry: 1 before_script: - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python script: # Install server - $HOME/.poetry/bin/poetry install # Run static build script - $HOME/.poetry/bin/poetry run pylint ./openflexure_microscope/ only: - branches - merge_requests - tags - web black: stage: analysis image: python:3.7 retry: 1 before_script: - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python script: # Install server - $HOME/.poetry/bin/poetry install # Run static build script - $HOME/.poetry/bin/poetry run black --check . only: - branches - merge_requests - tags - web # Electron app build build: stage: build image: nikolaik/python-nodejs:python3.7-nodejs14 before_script: - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python script: # Install server - $HOME/.poetry/bin/poetry install # Run static build script - $HOME/.poetry/bin/poetry run build_static # Build distribution archive - mkdir -p dist - tar -c --exclude-vcs --exclude-from .tarignore -vzf dist/openflexure-microscope-server-${CI_COMMIT_REF_NAME}.tar.gz . - cd dist/ - sha256sum openflexure-microscope-server-${CI_COMMIT_REF_NAME}.tar.gz > openflexure-microscope-server-${CI_COMMIT_REF_NAME}.tar.gz.sha256 artifacts: name: "dist" expire_in: 1 week paths: - "./dist/*" only: - merge_requests - tags - web # Deploy to builds.openflexure.org deploy: stage: deploy dependencies: - build image: ubuntu:latest before_script: - "which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )" - eval $(ssh-agent -s) - ssh-add <(echo "$SSH_PRIVATE_KEY_BATH_OPENFLEXURE_BASE64" | base64 --decode) - mkdir -p ~/.ssh - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config script: # Install rsync if not already installed - "which rsync || ( apt-get update -y && apt-get install rsync -y )" # Upload the builds folder to openflexure-microscope builds - rsync -hrvz -e ssh dist/ ci-user@openflexure.bath.ac.uk:/var/www/build/openflexure-microscope-server # Run update-latest.py on the build server - ssh -t ci-user@openflexure.bath.ac.uk "/var/www/build/update-latest.py" only: - tags - web