openflexure-microscope-server/.gitlab-ci.yml
2020-03-04 22:13:01 +00:00

89 lines
2 KiB
YAML

stages:
- test
- build
- deploy
# Cache modules in between jobs
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
# Check for dependency vulnerabilities
audit:
stage: test
image: node:latest
script:
- npm audit --json> audit.json
allow_failure: true
artifacts:
paths:
- "./audit.json"
# Electron app build
build:
stage: build
image: electronuserland/builder:wine
script:
# Install node dependencies
- npm install
# Create build directory
- mkdir -p "release-builds"
# Build eV-Lite for microscope server
- npm run build:lite
- tar -czvf "./release-builds/openflexure-ev-lite-${CI_COMMIT_REF_NAME}.tar.gz" -C "./dist-lite" .
# Build electron app
- npm run build:app
- if [ "$CI_COMMIT_REF_NAME" == "stable" ]; then npm run release; else npm run release:pre; fi
artifacts:
name: "dist"
expire_in: 1 week
paths:
- "./release-builds/*.tar.gz"
- "./release-builds/*.AppImage"
- "./release-builds/*.exe"
- "./release-builds/*.exe.blockmap"
- "./release-builds/latest*.yml"
- "./release-builds/beta*.yml"
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 release-builds/ ci-user@openflexure.bath.ac.uk:/var/www/build/openflexure-ev/
# Run update-latest.py on the build server
- ssh -t ci-user@openflexure.bath.ac.uk "/var/www/build/update-latest.py"
only:
- stable