ci.yml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. name: Node CI for growi
  2. on:
  3. push:
  4. branches-ignore:
  5. - release/**
  6. - rc/**
  7. - tmp/**
  8. jobs:
  9. lint:
  10. runs-on: ubuntu-latest
  11. strategy:
  12. matrix:
  13. node-version: [14.x]
  14. steps:
  15. - uses: actions/checkout@v2
  16. - uses: actions/setup-node@v2
  17. with:
  18. node-version: ${{ matrix.node-version }}
  19. cache: 'yarn'
  20. cache-dependency-path: '**/yarn.lock'
  21. - name: lerna bootstrap
  22. run: |
  23. npx lerna bootstrap
  24. - name: Print dependencies
  25. run: |
  26. echo -n "node " && node -v
  27. echo -n "npm " && npm -v
  28. yarn list --depth=0
  29. - name: lerna run lint for plugins
  30. run: |
  31. yarn lerna run lint --scope @growi/plugin-*
  32. - name: lerna run lint for app
  33. run: |
  34. yarn lerna run lint --scope @growi/app --scope @growi/core --scope @growi/ui
  35. - name: Slack Notification
  36. uses: weseek/ghaction-slack-notification@master
  37. if: failure()
  38. with:
  39. type: ${{ job.status }}
  40. job_name: '*Node CI for growi - lint (${{ matrix.node-version }})*'
  41. channel: '#ci'
  42. isCompactMode: true
  43. url: ${{ secrets.SLACK_WEBHOOK_URL }}
  44. test:
  45. runs-on: ubuntu-latest
  46. strategy:
  47. matrix:
  48. node-version: [14.x]
  49. services:
  50. mongodb:
  51. image: mongo:4.4
  52. ports:
  53. - 27017/tcp
  54. mongodb36:
  55. image: mongo:3.6
  56. ports:
  57. - 27017/tcp
  58. steps:
  59. - uses: actions/checkout@v2
  60. - uses: actions/setup-node@v2
  61. with:
  62. node-version: ${{ matrix.node-version }}
  63. cache: 'yarn'
  64. cache-dependency-path: '**/yarn.lock'
  65. - name: lerna bootstrap
  66. run: |
  67. npx lerna bootstrap
  68. - name: Print dependencies
  69. run: |
  70. echo -n "node " && node -v
  71. echo -n "npm " && npm -v
  72. yarn list --depth=0
  73. - name: yarn test
  74. working-directory: ./packages/app
  75. run: |
  76. yarn test
  77. env:
  78. MONGO_URI: mongodb://localhost:${{ job.services.mongodb.ports['27017'] }}/growi_test
  79. - name: yarn test with MongoDB 3.6
  80. working-directory: ./packages/app
  81. run: |
  82. yarn test
  83. env:
  84. MONGO_URI: mongodb://localhost:${{ job.services.mongodb36.ports['27017'] }}/growi_test
  85. - name: Upload coverage report as artifact
  86. uses: actions/upload-artifact@v2
  87. with:
  88. name: Coverage Report
  89. path: packages/app/coverage
  90. - name: Slack Notification
  91. uses: weseek/ghaction-slack-notification@master
  92. if: failure()
  93. with:
  94. type: ${{ job.status }}
  95. job_name: '*Node CI for growi - test (${{ matrix.node-version }})*'
  96. channel: '#ci'
  97. isCompactMode: true
  98. url: ${{ secrets.SLACK_WEBHOOK_URL }}
  99. launch-dev:
  100. runs-on: ubuntu-latest
  101. strategy:
  102. matrix:
  103. node-version: [14.x]
  104. services:
  105. mongodb:
  106. image: mongo:4.4
  107. ports:
  108. - 27017/tcp
  109. steps:
  110. - uses: actions/checkout@v2
  111. - uses: actions/setup-node@v2
  112. with:
  113. node-version: ${{ matrix.node-version }}
  114. cache: 'yarn'
  115. cache-dependency-path: '**/yarn.lock'
  116. - name: lerna bootstrap
  117. run: |
  118. npx lerna bootstrap
  119. - name: Print dependencies
  120. run: |
  121. echo -n "node " && node -v
  122. echo -n "npm " && npm -v
  123. yarn list --depth=0
  124. - name: yarn dev:ci
  125. working-directory: ./packages/app
  126. run: |
  127. cp config/ci/.env.local.for-ci .env.development.local
  128. yarn dev:ci
  129. env:
  130. MONGO_URI: mongodb://localhost:${{ job.services.mongodb.ports['27017'] }}/growi_dev
  131. - name: Slack Notification
  132. uses: weseek/ghaction-slack-notification@master
  133. if: failure()
  134. with:
  135. type: ${{ job.status }}
  136. job_name: '*Node CI for growi - build-dev (${{ matrix.node-version }})*'
  137. channel: '#ci'
  138. isCompactMode: true
  139. url: ${{ secrets.SLACK_WEBHOOK_URL }}
  140. launch-prod:
  141. runs-on: ubuntu-latest
  142. strategy:
  143. matrix:
  144. node-version: [12.x, 14.x]
  145. services:
  146. mongodb:
  147. image: mongo:4.4
  148. ports:
  149. - 27017/tcp
  150. mongodb36:
  151. image: mongo:3.6
  152. ports:
  153. - 27017/tcp
  154. steps:
  155. - uses: actions/checkout@v2
  156. - uses: actions/setup-node@v2
  157. with:
  158. node-version: ${{ matrix.node-version }}
  159. cache: 'yarn'
  160. cache-dependency-path: '**/yarn.lock'
  161. - name: lerna bootstrap
  162. run: |
  163. npx lerna bootstrap
  164. - name: Print dependencies
  165. run: |
  166. echo -n "node " && node -v
  167. echo -n "npm " && npm -v
  168. yarn list --depth=0
  169. - name: Build
  170. run: |
  171. yarn lerna run build --scope @growi/core --scope @growi/slack --scope @growi/plugin-* --scope @growi/app
  172. - name: lerna bootstrap --production
  173. run: |
  174. npx lerna bootstrap -- --production
  175. - name: Print dependencies
  176. run: |
  177. echo -n "node " && node -v
  178. echo -n "npm " && npm -v
  179. yarn list --production --depth=0
  180. - name: Get DB name
  181. id: getdbname
  182. run: |
  183. echo ::set-output name=suffix::$(echo '${{ matrix.node-version }}' | sed s/\\.//)
  184. - name: yarn server:ci
  185. working-directory: ./packages/app
  186. run: |
  187. cp config/ci/.env.local.for-ci .env.production.local
  188. yarn server:ci
  189. env:
  190. MONGO_URI: mongodb://localhost:${{ job.services.mongodb.ports['27017'] }}/growi-${{ steps.getdbname.outputs.suffix }}
  191. - name: yarn server:ci with MongoDB 3.6
  192. working-directory: ./packages/app
  193. run: |
  194. cp config/ci/.env.local.for-ci .env.production.local
  195. yarn server:ci
  196. env:
  197. MONGO_URI: mongodb://localhost:${{ job.services.mongodb36.ports['27017'] }}/growi-${{ steps.getdbname.outputs.suffix }}
  198. - name: Slack Notification
  199. uses: weseek/ghaction-slack-notification@master
  200. if: failure()
  201. with:
  202. type: ${{ job.status }}
  203. job_name: '*Node CI for growi - build-prod (${{ matrix.node-version }})*'
  204. channel: '#ci'
  205. isCompactMode: true
  206. url: ${{ secrets.SLACK_WEBHOOK_URL }}