Skip to content

Commit

Permalink
Enable CI platforms to build Linux, Windows and OS X releases (#63)
Browse files Browse the repository at this point in the history
  • Loading branch information
JamesCropcho authored and etpinard committed Apr 13, 2018
1 parent 1c164bb commit 433d619
Show file tree
Hide file tree
Showing 8 changed files with 8,062 additions and 40 deletions.
100 changes: 75 additions & 25 deletions .circleci/config.yml
Expand Up @@ -13,12 +13,14 @@ workflows:
jobs:
- test-node-v6
- test-node-v8
- docker-build
- docker-push:
- docker-build-and-push:
requires:
- test-node-v6
- test-node-v8
- electron-pack-and-release:
requires:
- test-node-v6
- test-node-v8
- docker-build

version: 2
jobs:
Expand All @@ -31,11 +33,22 @@ jobs:
command: |
echo "npm: $(npm --version)"
echo "node: $(node --version)"
- restore_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
keys:
- v1-source-{{ .Branch }}-
- v1-source-
- checkout
- save_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
paths:
- ".git"
- restore_cache:
key: v2-npm-{{ checksum "package-lock.json" }}
keys:
- v{{ .Environment.CIRCLE_CACHE_VERSION }}-deps-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }}
- v{{ .Environment.CIRCLE_CACHE_VERSION }}-deps-master-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }}
- v2-npm-
- run: node --version
- run: npm --version
- run:
name: Install deps
command: |
Expand All @@ -44,15 +57,15 @@ jobs:
- run:
name: List deps
command: |
npm ls
npm list
pdftops -v
- save_cache:
key: v2-npm-{{ checksum "package-lock.json" }}
paths:
- node_modules
key: v{{ .Environment.CIRCLE_CACHE_VERSION }}-deps-{{ .Branch }}-{{ .Environment.CIRCLE_JOB }}-{{ checksum "package.json" }}
- run:
name: Test
command: npm test
command: npm run test
- run:
name: Coverage
command: npm run coverage
Expand All @@ -62,47 +75,84 @@ jobs:
test-node-v6:
<<: *base
docker:
- image: circleci/node:6.10.3-browsers
- image: circleci/node:6.14.1-browsers

test-node-v8:
<<: *base
docker:
- image: circleci/node:8.4.0-browsers
- image: circleci/node:8.11.1-browsers

docker-build:
docker-build-and-push:
docker:
- image: circleci/node:6.10.3-browsers

- image: circleci/node:8.11.1-browsers
steps:
- setup_remote_docker:
reusable: true

- restore_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
keys:
- v1-source-{{ .Branch }}-
- v1-source-
- checkout

- save_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
paths:
- ".git"
- restore_cache:
keys:
- v2-npm-{{ checksum "package-lock.json" }}
- run:
name: Build Docker image
command: |
docker build -f deployment/Dockerfile -t quay.io/plotly/image-exporter:$CIRCLE_SHA1 .
- run:
name: Smoke test Docker image
command: |
docker run -d -p 9091:9091/tcp --name imageserver quay.io/plotly/image-exporter:$CIRCLE_SHA1
docker run --network container:imageserver quay.io/plotly/wget wget --retry-connrefused --waitretry=1 -t 60 -O /dev/null --progress=dot http://localhost:9091/ping
docker-push:
docker:
- image: circleci/node:6.10.3-browsers

steps:
- setup_remote_docker:
reusable: true

- run:
name: Push Docker image to Quay
command: |
docker login -u $DOCKER_USER -p $DOCKER_PASS quay.io
docker tag quay.io/plotly/image-exporter:$CIRCLE_SHA1 quay.io/plotly/image-exporter:$CIRCLE_BRANCH
docker push quay.io/plotly/image-exporter:$CIRCLE_SHA1
docker push quay.io/plotly/image-exporter:$CIRCLE_BRANCH
- save_cache:
paths:
- node_modules
key: v2-npm-{{ checksum "package-lock.json" }}

electron-pack-and-release:
docker:
- image: circleci/node:8.11.1-browsers
steps:
- restore_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
keys:
- v1-source-{{ .Branch }}-
- v1-source-
- checkout
- save_cache:
key: v1-source-{{ .Branch }}-{{ .Revision }}
paths:
- ".git"
- restore_cache:
key: v2-npm-{{ checksum "package-lock.json" }}
keys:
- v2-npm-
- run: node --version
- run: npm --version
- run: npm install
- run:
name: Electron-Builder pack
command: npm run pack
- save_cache:
key: v2-npm-{{ checksum "package-lock.json" }}
paths:
- node_modules
- run: mkdir artifacts
- run: mv release/*.yml artifacts || true
- run: mv release/image-exporter* artifacts
- store_artifacts:
path: artifacts
4 changes: 3 additions & 1 deletion .gitignore
Expand Up @@ -5,6 +5,8 @@ coverage
.nyc_output

/build
dist/
/release

deployment/*.retry

/yarn-error.log
31 changes: 31 additions & 0 deletions .travis.yml
@@ -0,0 +1,31 @@
matrix:
include:
- os: osx
osx_image: xcode9.0
language: node_js
node_js: "8"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder

cache:
directories:
- node_modules
- $HOME/.cache/electron
- $HOME/.cache/electron-builder

install:
- npm install

script:
- npm run pack
- zip mac-release.zip release/Plotly\ Graph\ Exporter*

before_cache:
- rm -rf $HOME/.cache/electron-builder/wine

addons:
artifacts:
s3_region: us-east-1
paths: mac-release.zip
debug: true
33 changes: 33 additions & 0 deletions appveyor.yml
@@ -0,0 +1,33 @@
version: 0.1.{build}

environment:
matrix:
- nodejs_version: 8

platform:
- x64

#services:

cache:
- node_modules
- '%LOCALAPPDATA%\electron\Cache'
- '%LOCALAPPDATA%\electron-builder\cache'

init:
- git config --global core.autocrlf input

install:
- ps: Install-Product node $env:nodejs_version $env:platform

build_script:
- npm run pack

after_build:
- 7z a release.zip release/latest.yml release/*.exe

artifacts:
- path: release.zip
name: release

test: off
7 changes: 6 additions & 1 deletion bin/args.js
Expand Up @@ -96,7 +96,12 @@ const SERVER_MINIMIST_CONFIG = {
}

exports.getExporterArgs = function () {
return minimist(process.argv.slice(2), EXPORTER_MINIMIST_CONFIG)
// https://electronjs.org/docs/api/process#processdefaultapp
// https://github.com/electron/electron/issues/4690#issuecomment-217435222
// https://github.com/tj/commander.js/issues/512
const sliceBegin = process.defaultApp ? 2 : 1

return minimist(process.argv.slice(sliceBegin), EXPORTER_MINIMIST_CONFIG)
}

exports.getServerArgs = function () {
Expand Down

0 comments on commit 433d619

Please sign in to comment.