aboutsummaryrefslogtreecommitdiff
path: root/.circleci/config.yml
blob: 8700c299811e80755236ece80f8ca66d5c4935cc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
version: 2.1

executors:
  default:
    docker:
      - image: circleci/node:10-stretch-browsers
    environment:
      - FIREFOX_VERSION: "68.0esr"
      - GECKODRIVER_VERSION: "0.24.0"
    working_directory: ~

commands:
  install_firefox:
    steps:
      - restore_cache:
          key: firefox-bin
          paths:
            - ~/firefox
      - run:
          name: Install Firefox
          command: |
            test -d ~/firefox/${FIREFOX_VERSION} && exit 0
            url=https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2
            curl -sSL -o- "$url" | tar xvfj -
            mkdir -p ~/firefox
            mv firefox ~/firefox/${FIREFOX_VERSION}
      - save_cache:
          key: firefox-bin
          paths:
            - ~/firefox
      - run: echo 'export PATH=~/firefox/$FIREFOX_VERSION:$PATH' >> $BASH_ENV

  install_geckodriver:
    steps:
      - run:
          name: Install geckodriver
          command: |
            mkdir -p geckodriver

            url=https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz
            curl -sSLf "$url" | tar  -C geckodriver xvf -

            echo 'export PATH=~/geckodriver/$GECKODRIVER_VERSION:$PATH' >> $BASH_ENV

  setup_npm:
    steps:
      - restore_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
      - run:
          name: Install dependencies
          command: npm install
      - save_cache:
          key: dependency-cache-{{ checksum "package-lock.json" }}
          paths:
            - node_modules

jobs:
  build:
    executor:
      name: default
    steps:
      - install_firefox
      - checkout
      - setup_npm
      - run: npm run lint
      - run: npm test
      - run: npm run package

  e2e:
    executor:
      name: default
    steps:
      - run: sudo apt-get update && sudo apt-get -y install xsel
      - install_firefox
      - checkout
      - setup_npm
      - run: npm run build
      - run: npm run test:e2e

  deploy:
    executor:
      name: default
    steps:
      - checkout
      - setup_npm
      - run: npm run package
      - run:
          name: Deploy to AMO
          command: |
            version=$(jq -r '.version' manifest.json)
            ./script/deploy vim-vixen@i-beam.org "$version" "vim-vixen-${version}.zip"

workflows:
  version: 2
  build_and_test:
    jobs:
      - build
      - e2e:
          filters:
            branches:
              ignore: /^greenkeeper\/.*/
  deploy:
    jobs:
      - build:
          filters:
            tags:
              only: /^.*/
            branches:
              ignore: /.*/
      - e2e:
          filters:
            tags:
              only: /^.*/
            branches:
              ignore: /.*/
      - deploy:
          requires:
            - build
            - e2e
          filters:
            tags:
              only: /^.*/
            branches:
              ignore: /.*/