diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 00000000..553d3146 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,67 @@ +stages: + - build + - deploy + + +# Cache modules in between jobs +cache: + key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ + + +# Electron app build +build: + stage: build + image: nikolaik/python-nodejs:python3.7-nodejs14 + + variables: + GIT_SUBMODULE_STRATEGY: recursive + + before_script: + - curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python + + script: + - poetry install + - poetry run build_static + - poetry run build + + artifacts: + name: "dist" + expire_in: 1 week + paths: + - "./dist/*" + + only: + - merge_requests + - stable + - master + - 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: + - stable