build.yml 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. name: Build
  2. on:
  3. push:
  4. paths-ignore:
  5. - 'docs/**'
  6. - 'mirai-console/docs/**'
  7. - '**/*.md'
  8. pull_request:
  9. paths-ignore:
  10. - 'docs/**'
  11. - 'mirai-console/docs/**'
  12. - '**/*.md'
  13. jobs:
  14. build:
  15. name: "Build (${{ matrix.os }})"
  16. runs-on: ${{ matrix.os }}
  17. strategy:
  18. fail-fast: false
  19. matrix:
  20. os: # You must use macos-12. Only macos-12 get 14GB memory while others have only 7GB.
  21. # - windows-2022
  22. - macos-12
  23. env:
  24. gradleArgs: --scan
  25. isMac: ${{ startsWith(matrix.os, 'macos') }}
  26. isWindows: ${{ startsWith(matrix.os, 'windows') }}
  27. isUbuntu: ${{ startsWith(matrix.os, 'ubuntu') }}
  28. isUnix: ${{ startsWith(matrix.os, 'macos') || startsWith(matrix.os, 'ubuntu') }}
  29. steps:
  30. - uses: actions/checkout@v3
  31. with:
  32. submodules: 'recursive'
  33. - uses: actions/setup-java@v3
  34. with:
  35. distribution: 'temurin'
  36. java-version: '17'
  37. - name: Setup Gradle
  38. uses: gradle/gradle-build-action@v2
  39. - if: ${{ env.isUnix == 'true' }}
  40. run: chmod -R 777 *
  41. - if: ${{ env.isWindows == 'true' }}
  42. name: Setup Memory Environment on Windows
  43. run: >
  44. wmic pagefileset where name="D:\\pagefile.sys" set InitialSize=1024,MaximumSize=18432 &
  45. net stop mongodb
  46. shell: cmd
  47. continue-on-error: true
  48. - name: Clean and download dependencies
  49. run: ./gradlew clean ${{ env.gradleArgs }}
  50. - run: >
  51. ./gradlew updateSnapshotVersion ${{ env.gradleArgs }}
  52. if: github.event.pusher && vars.RUN_MIRAI_SNAPSHOTS == 'true'
  53. env:
  54. MIRAI_IS_SNAPSHOTS_PUBLISHING: true
  55. SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }}
  56. SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }}
  57. SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }}
  58. MIRAI_BUILD_INDEX_AUTH_USERNAME: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_USERNAME }}
  59. MIRAI_BUILD_INDEX_AUTH_PASSWORD: ${{ secrets.MIRAI_BUILD_INDEX_AUTH_PASSWORD }}
  60. - name: "Assemble"
  61. run: ./gradlew assemble ${{ env.gradleArgs }}
  62. - name: Publish Local Artifacts
  63. if: ${{ env.enableLocalPublishingTest == 'true' }}
  64. run: ./gradlew :mirai-deps-test:publishMiraiArtifactsToMavenLocal ${{ env.gradleArgs }} "-Dmirai.build.project.version=2.99.0-deps-test"
  65. - name: "Check"
  66. run: ./gradlew check ${{ env.gradleArgs }}
  67. # Snapshots
  68. - if: ${{ env.isMac == 'true' }}
  69. name: Ensure KDoc valid
  70. run: ./gradlew dokkaHtmlMultiModule ${{ env.gradleArgs }}
  71. - name: Release RAM
  72. run: node ci-release-helper/scripts/kill-java.js
  73. - name: Publish Snapshots
  74. if: ${{ github.event.pusher && env.isMac == 'true' && vars.RUN_MIRAI_SNAPSHOTS == 'true' }}
  75. run: ./gradlew publishAllPublicationsToMiraiRepoRepository ${{ env.gradleArgs }}
  76. env:
  77. MIRAI_IS_SNAPSHOTS_PUBLISHING: true
  78. SNAPSHOTS_PUBLISHING_USER: ${{ secrets.SNAPSHOTS_PUBLISHING_USER }}
  79. SNAPSHOTS_PUBLISHING_KEY: ${{ secrets.SNAPSHOTS_PUBLISHING_KEY }}
  80. SNAPSHOTS_PUBLISHING_URL: ${{ secrets.SNAPSHOTS_PUBLISHING_URL }}
  81. # Upload
  82. - name: Upload mirai-core-utils
  83. uses: actions/upload-artifact@v3
  84. with:
  85. name: mirai-core-utils
  86. path: mirai-core-utils/build/libs
  87. - name: Upload mirai-core-api
  88. uses: actions/upload-artifact@v3
  89. with:
  90. name: mirai-core-api
  91. path: mirai-core-api/build/libs
  92. - name: Upload mirai-core
  93. uses: actions/upload-artifact@v3
  94. with:
  95. name: mirai-core
  96. path: mirai-core/build/libs
  97. - name: Upload mirai-core-all
  98. uses: actions/upload-artifact@v3
  99. with:
  100. name: mirai-core-all
  101. path: mirai-core-all/build/libs
  102. - name: Upload mirai-console
  103. uses: actions/upload-artifact@v3
  104. with:
  105. name: mirai-console
  106. path: mirai-console/backend/mirai-console/build/libs
  107. - name: Upload mirai-console-terminal
  108. uses: actions/upload-artifact@v3
  109. with:
  110. name: mirai-console-terminal
  111. path: mirai-console/frontend/mirai-console-terminal/build/libs
  112. - name: Upload mirai-console-compiler-annotations
  113. uses: actions/upload-artifact@v3
  114. with:
  115. name: mirai-console-compiler-annotations
  116. path: mirai-console/tools/mirai-console-compiler-annotations/build/libs
  117. - name: Upload mirai-console-compiler-common
  118. uses: actions/upload-artifact@v3
  119. with:
  120. name: mirai-console-compiler-common
  121. path: mirai-console/tools/mirai-console-compiler-common/build/libs
  122. - name: Upload mirai-console-intellij
  123. uses: actions/upload-artifact@v3
  124. with:
  125. name: mirai-console-intellij
  126. path: mirai-console/tools/intelli-plugin/build/distribution
  127. - name: Upload mirai-logging-log4j2
  128. uses: actions/upload-artifact@v3
  129. with:
  130. name: mirai-logging-log4j2
  131. path: logging/mirai-logging-log4j2/build/libs
  132. - name: Upload mirai-logging-slf4j
  133. uses: actions/upload-artifact@v3
  134. with:
  135. name: mirai-logging-slf4j
  136. path: logging/mirai-logging-slf4j/build/libs
  137. - name: Upload mirai-logging-slf4j-logback
  138. uses: actions/upload-artifact@v3
  139. with:
  140. name: mirai-logging-slf4j-logback
  141. path: logging/mirai-logging-slf4j-logback/build/libs
  142. - name: Upload mirai-logging-slf4j-simple
  143. uses: actions/upload-artifact@v3
  144. with:
  145. name: mirai-logging-slf4j-simple
  146. path: logging/mirai-logging-slf4j-simple/build/libs