circle.yml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. version: 2.0
  2. jobs:
  3. build:
  4. docker:
  5. - image: circleci/node:10
  6. steps:
  7. - checkout
  8. - restore_cache:
  9. key: send-build-{{ checksum "package-lock.json" }}
  10. - run: npm install
  11. - save_cache:
  12. key: send-build-{{ checksum "package-lock.json" }}
  13. paths:
  14. - node_modules
  15. - run: npm run build
  16. - persist_to_workspace:
  17. root: .
  18. paths:
  19. - ./dist
  20. test:
  21. docker:
  22. - image: circleci/node:10-browsers
  23. steps:
  24. - checkout
  25. - restore_cache:
  26. key: send-test-{{ checksum "package-lock.json" }}
  27. - run: npm install
  28. - save_cache:
  29. key: send-test-{{ checksum "package-lock.json" }}
  30. paths:
  31. - node_modules
  32. - run: npm run lint
  33. - run: npm run test
  34. - store_artifacts:
  35. path: coverage
  36. integration_tests:
  37. docker:
  38. - image: circleci/node:10
  39. - image: selenium/standalone-firefox
  40. steps:
  41. - checkout
  42. - restore_cache:
  43. key: send-int-{{ checksum "package-lock.json" }}
  44. - run: npm install
  45. - save_cache:
  46. key: send-int-{{ checksum "package-lock.json" }}
  47. paths:
  48. - node_modules
  49. - run: npm run circleci-test-integration
  50. deploy_dev:
  51. machine: true
  52. steps:
  53. - checkout
  54. - attach_workspace:
  55. at: .
  56. - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
  57. - run: docker build -t mozilla/send:latest .
  58. - run: docker push mozilla/send:latest
  59. deploy_vnext:
  60. machine: true
  61. steps:
  62. - checkout
  63. - attach_workspace:
  64. at: .
  65. - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
  66. - run: docker build -t mozilla/send:vnext .
  67. - run: docker push mozilla/send:vnext
  68. deploy_stage:
  69. machine: true
  70. steps:
  71. - checkout
  72. - attach_workspace:
  73. at: .
  74. - run: docker login -u $DOCKER_USER -p $DOCKER_PASS
  75. - run: docker build -t mozilla/send:$CIRCLE_TAG .
  76. - run: docker push mozilla/send:$CIRCLE_TAG
  77. workflows:
  78. version: 2
  79. test_pr:
  80. jobs:
  81. - build:
  82. filters:
  83. branches:
  84. ignore:
  85. - master
  86. - vnext
  87. - test:
  88. filters:
  89. branches:
  90. ignore:
  91. - master
  92. - vnext
  93. - integration_tests:
  94. filters:
  95. branches:
  96. ignore: master
  97. build_and_deploy_dev:
  98. jobs:
  99. - build:
  100. filters:
  101. branches:
  102. only:
  103. - master
  104. - vnext
  105. tags:
  106. ignore: /^v.*/
  107. - deploy_dev:
  108. requires:
  109. - build
  110. filters:
  111. branches:
  112. only: master
  113. tags:
  114. ignore: /^v.*/
  115. - deploy_vnext:
  116. requires:
  117. - build
  118. filters:
  119. branches:
  120. only: vnext
  121. tags:
  122. ignore: /^v.*/
  123. build_and_deploy_stage:
  124. jobs:
  125. - build:
  126. filters:
  127. branches:
  128. ignore: /.*/
  129. tags:
  130. only: /^v.*/
  131. - test:
  132. filters:
  133. branches:
  134. ignore: /.*/
  135. tags:
  136. only: /^v.*/
  137. - integration_tests:
  138. filters:
  139. branches:
  140. ignore: /.*/
  141. tags:
  142. only: /^v.*/
  143. - deploy_stage:
  144. requires:
  145. - build
  146. - test
  147. - integration_tests
  148. filters:
  149. branches:
  150. ignore: /.*/
  151. tags:
  152. only: /^v.*/