|
1 | 1 | version: 2
|
2 | 2 |
|
3 | 3 | defaults: &defaults
|
4 |
| - working_directory: /tmp/project |
5 |
| - docker: |
6 |
| - - image: walberla/buildenv-ubuntu-clang:4.0 |
7 |
| - environment: |
8 |
| - CIRCLE_BUILD_IMAGE: ubuntu |
9 |
| - ATOM_CHANNEL: stable |
10 |
| - DISPLAY: :99 |
| 4 | + working_directory: /tmp/project |
| 5 | + docker: |
| 6 | + - image: arcanemagus/atom-docker-ci:stable |
| 7 | + steps: |
| 8 | + # Restore project state |
| 9 | + - attach_workspace: |
| 10 | + at: /tmp |
| 11 | + - run: |
| 12 | + name: Install Clang |
| 13 | + command: | |
| 14 | + sudo apt-get update && \ |
| 15 | + sudo apt-get install --assume-yes --quiet --no-install-suggests \ |
| 16 | + --no-install-recommends clang |
| 17 | + - run: |
| 18 | + name: Create VFB for Atom to run in |
| 19 | + command: /usr/local/bin/xvfb_start |
| 20 | + - run: |
| 21 | + name: Atom version |
| 22 | + command: ${ATOM_SCRIPT_PATH} --version |
| 23 | + - run: |
| 24 | + name: APM version |
| 25 | + command: ${APM_SCRIPT_PATH} --version |
| 26 | + - run: |
| 27 | + name: Package APM package dependencies |
| 28 | + command: | |
| 29 | + if [ -n "${APM_TEST_PACKAGES}" ]; then |
| 30 | + for pack in ${APM_TEST_PACKAGES}; do |
| 31 | + ${APM_SCRIPT_PATH} install "${pack}" |
| 32 | + done |
| 33 | + fi; |
| 34 | + - run: |
| 35 | + name: Package dependencies |
| 36 | + command: ${APM_SCRIPT_PATH} install |
| 37 | + - run: |
| 38 | + name: Cleaning package |
| 39 | + command: ${APM_SCRIPT_PATH} clean |
| 40 | + - run: |
| 41 | + name: Package specs |
| 42 | + command: ${ATOM_SCRIPT_PATH} --test spec |
| 43 | + # Cache node_modules |
| 44 | + - save_cache: |
| 45 | + paths: |
| 46 | + - node_modules |
| 47 | + key: v3-dependencies-{{ .Branch }}-{{ checksum "package.json" }}-{{ checksum "package-lock.json"}} |
11 | 48 |
|
12 | 49 | jobs:
|
13 | 50 | checkout_code:
|
14 | 51 | <<: *defaults
|
| 52 | + docker: |
| 53 | + - image: circleci/node:latest |
15 | 54 | steps:
|
16 | 55 | - checkout
|
17 |
| - - run: |
18 |
| - name: Download Atom test script |
19 |
| - command: curl -s -O https://raw.githubusercontent.com/atom/ci/master/build-package.sh |
20 |
| - - run: |
21 |
| - name: Make Atom script executable |
22 |
| - command: chmod u+x build-package.sh |
23 | 56 | # Restore node_modules from the last build
|
24 | 57 | - restore_cache:
|
25 | 58 | keys:
|
26 |
| - # Get latest cache for this package.json |
27 |
| - - v2-dependencies-{{ checksum "package.json" }} |
28 |
| - # Fallback to the last available cache |
29 |
| - - v2-dependencies |
| 59 | + # Get latest cache for this package.json and package-lock.json |
| 60 | + - v3-dependencies-{{ .Branch }}-{{ checksum "package.json" }}-{{ checksum "package-lock.json"}} |
| 61 | + # Fallback to the current package.json |
| 62 | + - v3-dependencies-{{ .Branch }}-{{ checksum "package.json" }}- |
| 63 | + # Fallback to the last build for this branch |
| 64 | + - v3-dependencies-{{ .Branch }}- |
| 65 | + # Fallback to the last available master branch cache |
| 66 | + - v3-dependencies-master- |
| 67 | + # Don't go further down to prevent dependency issues from other branches |
30 | 68 | # Save project state for next steps
|
31 | 69 | - persist_to_workspace:
|
32 | 70 | root: /tmp
|
33 | 71 | paths:
|
34 | 72 | - project
|
35 |
| - |
36 |
| - stable: |
| 73 | + lint: |
37 | 74 | <<: *defaults
|
| 75 | + docker: |
| 76 | + - image: circleci/node:latest |
38 | 77 | steps:
|
39 | 78 | # Restore project state
|
40 | 79 | - attach_workspace:
|
41 | 80 | at: /tmp
|
42 | 81 | - run:
|
43 |
| - name: Update APT |
44 |
| - command: apt-get update |
45 |
| - # Install some pre-requisite packages and missing dependencies from the atom package |
| 82 | + name: Node.js Version |
| 83 | + command: node --version |
46 | 84 | - run:
|
47 |
| - name: Atom Prerequisites |
48 |
| - command: apt-get --assume-yes --quiet --no-install-suggests --no-install-recommends install sudo xvfb libxss1 libasound2 |
49 |
| - # Fire up a VFB to run Atom in |
| 85 | + name: NPM Version |
| 86 | + command: npm --version |
50 | 87 | - run:
|
51 |
| - name: Create VFB for Atom to run in |
52 |
| - command: /usr/bin/Xvfb $DISPLAY -ac -screen 0 1280x1024x16 |
53 |
| - background: true |
| 88 | + name: Install any remaining dependencies |
| 89 | + command: npm install |
54 | 90 | - run:
|
55 |
| - name: Atom test |
56 |
| - command: ./build-package.sh |
57 |
| - # Cache node_modules |
58 |
| - - save_cache: |
59 |
| - paths: |
60 |
| - - node_modules |
61 |
| - key: v2-dependencies-{{ checksum "package.json" }} |
62 |
| - |
| 91 | + name: Lint code |
| 92 | + command: npm run lint |
| 93 | + stable: |
| 94 | + <<: *defaults |
63 | 95 | beta:
|
64 | 96 | <<: *defaults
|
65 |
| - environment: |
66 |
| - ATOM_CHANNEL: beta |
67 |
| - steps: |
68 |
| - # Restore project state |
69 |
| - - attach_workspace: |
70 |
| - at: /tmp |
71 |
| - - run: |
72 |
| - name: Update APT |
73 |
| - command: apt-get update |
74 |
| - # Install some pre-requisite packages and missing dependencies from the atom package |
75 |
| - - run: |
76 |
| - name: Atom Prerequisites |
77 |
| - command: apt-get --assume-yes --quiet --no-install-suggests --no-install-recommends install sudo xvfb libxss1 libasound2 |
78 |
| - # Fire up a VFB to run Atom in |
79 |
| - - run: |
80 |
| - name: Create VFB for Atom to run in |
81 |
| - command: /usr/bin/Xvfb $DISPLAY -ac -screen 0 1280x1024x16 |
82 |
| - background: true |
83 |
| - - run: |
84 |
| - name: Atom test |
85 |
| - command: ./build-package.sh |
| 97 | + docker: |
| 98 | + - image: arcanemagus/atom-docker-ci:beta |
86 | 99 |
|
87 | 100 | workflows:
|
88 | 101 | version: 2
|
89 | 102 | test_package:
|
90 | 103 | jobs:
|
91 | 104 | - checkout_code
|
92 |
| - - stable: |
| 105 | + - lint: |
93 | 106 | requires:
|
94 | 107 | - checkout_code
|
| 108 | + - stable: |
| 109 | + requires: |
| 110 | + - lint |
95 | 111 | - beta:
|
96 | 112 | requires:
|
97 |
| - - checkout_code |
| 113 | + - lint |
0 commit comments