build.yml 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. name: CI
  2. on:
  3. push:
  4. branches: [master]
  5. paths-ignore:
  6. - '*.md'
  7. pull_request:
  8. branches: [master]
  9. paths-ignore:
  10. - '*.md'
  11. env:
  12. CLOJURE_VERSION: '1.10.1.727'
  13. CLJ_KONDO_VERSION: '2021.12.19'
  14. # setup-java@v2 dropped support for legacy Java version syntax.
  15. # This is the same as 1.8.
  16. JAVA_VERSION: '8'
  17. # This is the latest node version of we can run.
  18. NODE_VERSION: '16'
  19. jobs:
  20. cljs-test:
  21. runs-on: ubuntu-latest
  22. steps:
  23. - name: Checkout
  24. uses: actions/checkout@v2
  25. - name: Set up Node
  26. uses: actions/setup-node@v2
  27. with:
  28. node-version: ${{ env.NODE_VERSION }}
  29. cache: 'yarn'
  30. cache-dependency-path: |
  31. yarn.lock
  32. static/yarn.lock
  33. - name: Set up Java
  34. uses: actions/setup-java@v2
  35. with:
  36. distribution: 'zulu'
  37. java-version: ${{ env.JAVA_VERSION }}
  38. - name: Set up Clojure
  39. uses: DeLaGuardo/setup-clojure@master
  40. with:
  41. cli: ${{ env.CLOJURE_VERSION }}
  42. - name: Clojure cache
  43. uses: actions/cache@v2
  44. id: clojure-deps
  45. with:
  46. path: |
  47. ~/.m2/repository
  48. ~/.gitlibs
  49. key: ${{ runner.os }}-clojure-deps-${{ hashFiles('deps.edn') }}
  50. restore-keys: ${{ runner.os }}-clojure-deps-
  51. - name: Fetch Clojure deps
  52. if: steps.clojure-deps.outputs.cache-hit != 'true'
  53. run: clojure -A:cljs -P
  54. - name: Set up clj-kondo
  55. uses: DeLaGuardo/setup-clj-kondo@master
  56. with:
  57. version: ${{ env.CLJ_KONDO_VERSION }}
  58. - name: Run clj-kondo lint
  59. run: clj-kondo --lint src/workspaces src/electron src/test src/dev-cljs src/main/{electron,grammar,logseq} src/main/frontend/{worker,util,ui,tools,search,publishing,modules,mobile,fs,format,external,extensions,db,context,components}
  60. - name: Fetch yarn deps
  61. run: yarn install
  62. - name: Run ClojureScript test
  63. run: |
  64. yarn cljs:test
  65. node static/tests.js
  66. e2e-test:
  67. runs-on: ubuntu-latest
  68. steps:
  69. - name: Checkout
  70. uses: actions/checkout@v2
  71. - name: Set up Node
  72. uses: actions/setup-node@v2
  73. with:
  74. node-version: ${{ env.NODE_VERSION }}
  75. cache: 'yarn'
  76. cache-dependency-path: |
  77. yarn.lock
  78. static/yarn.lock
  79. - name: Set up Java
  80. uses: actions/setup-java@v2
  81. with:
  82. distribution: 'zulu'
  83. java-version: ${{ env.JAVA_VERSION }}
  84. - name: Set up Clojure
  85. uses: DeLaGuardo/setup-clojure@master
  86. with:
  87. cli: ${{ env.CLOJURE_VERSION }}
  88. - name: Clojure cache
  89. uses: actions/cache@v2
  90. id: clojure-deps
  91. with:
  92. path: |
  93. ~/.m2/repository
  94. ~/.gitlibs
  95. key: ${{ runner.os }}-clojure-deps-${{ hashFiles('deps.edn') }}
  96. restore-keys: ${{ runner.os }}-clojure-deps-
  97. - name: Fetch Clojure deps
  98. if: steps.clojure-deps.outputs.cache-hit != 'true'
  99. run: clojure -A:cljs -P
  100. - name: Shadow-cljs cache
  101. uses: actions/cache@v2
  102. with:
  103. path: .shadow-cljs
  104. # ensure update cache every time
  105. key: ${{ runner.os }}-shadow-cljs-${{ github.sha }}
  106. # will match most recent upload
  107. restore-keys: |
  108. ${{ runner.os }}-shadow-cljs-
  109. - name: Fetch yarn deps
  110. run: yarn install
  111. env:
  112. PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: true
  113. - name: Prepare E2E test build
  114. run: |
  115. yarn gulp:build && yarn cljs:release
  116. (cd static && yarn install && yarn rebuild:better-sqlite3)
  117. - name: Run Playwright test
  118. run: xvfb-run -- yarn e2e-test
  119. env:
  120. DEBUG: "pw:test"
  121. - name: Save test artifacts
  122. if: ${{ failure() }}
  123. uses: actions/upload-artifact@v2
  124. with:
  125. name: e2e-test-report
  126. path: artifacts.zip