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