version: 2.1 workflows: macos: jobs: - build_for_macos: context: code-sign-macOS windows: jobs: - build_for_windows: context: code-sign-generic orbs: windows: circleci/windows@2.2.0 jobs: build_for_macos: macos: xcode: 11.1.0 # last version for which CircleCI uses macOS 10.14.x steps: - checkout - shared_build_steps: npmCacheDir: "/Users/distiller/.npm" - run: name: Move macOS build products to artifacts directory command: | mkdir -p Artifacts/ mv dist/{Scratch*.dmg,mas/Scratch*.pkg} Artifacts/ - store_artifacts: path: Artifacts/ build_for_windows: executor: name: 'windows/default' shell: "bash.exe" steps: - checkout - shared_build_steps: npmCacheDir: "C:/Users/circleci/AppData/Roaming/npm-cache" - run: name: Move Windows build products to artifacts directory command: | mkdir -p Artifacts/ mv dist/{Scratch*.appx,Scratch*.exe} Artifacts/ - store_artifacts: path: Artifacts/ commands: shared_build_steps: description: The build steps which are the same on all platforms. Does not include 'checkout' parameters: npmCacheDir: type: string description: NPM cache directory (`npm config cache get`) - usually either ~/.npm or %AppData%/npm-cache steps: - restore_cache: keys: - npm-cache-{{ arch }}-{{ checksum "package-lock.json" }} - run: name: Install node_modules # --prefer-offline "will make npm skip any conditional requests (304 checks) for stale cache data, and only # hit the network if something is missing from the cache" command: npm ci --prefer-offline - save_cache: paths: - << parameters.npmCacheDir >> key: npm-cache-{{ arch }}-{{ checksum "package-lock.json" }} - run: name: Build command: npm run dist