pr.yml 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. name: Build PR snapshot
  2. on:
  3. pull_request:
  4. paths:
  5. - '**.gradle'
  6. - '**.properties'
  7. - '**/src/**'
  8. types: [ opened, synchronize, reopened ]
  9. jobs:
  10. validate-gradle:
  11. name: "Validate Gradle wrapper"
  12. runs-on: ubuntu-20.04
  13. steps:
  14. - uses: actions/checkout@v2
  15. with:
  16. fetch-depth: 0
  17. - uses: gradle/wrapper-validation-action@v1
  18. license:
  19. name: "Verify License integrity"
  20. runs-on: ubuntu-20.04
  21. steps:
  22. - uses: actions/checkout@v2
  23. - name: Set up JDK 8
  24. uses: actions/setup-java@v2
  25. with:
  26. java-version: 8
  27. distribution: 'adopt'
  28. - name: Cache Gradle wrapper
  29. uses: actions/cache@v2
  30. with:
  31. path: ~/.gradle/wrapper
  32. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  33. restore-keys: gradle-wrapper-${{ runner.os }}-
  34. - name: Cache packages
  35. id: cache-packages
  36. uses: actions/cache@v2
  37. with:
  38. path: ~/.gradle/caches
  39. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  40. restore-keys: gradle-packages-${{ runner.os }}-
  41. - name: Make gradlew executable
  42. run: chmod +x ./gradlew
  43. - name: Verify license using Licenser
  44. run: |
  45. ./gradlew licenseCheck
  46. # Remove some potentially problematic files from the Gradle cache,
  47. # so that GitHub Actions doesn't cache them.
  48. - name: Cleanup Gradle Cache
  49. if: steps.cache-packages.outputs.cache-hit != 'true'
  50. run: |
  51. rm -f $HOME/.gradle/caches/*/*.lock
  52. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  53. rm -rf $HOME/.gradle/caches/*/scripts/
  54. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  55. rm -rf $HOME/.gradle/caches/*/fileHashes/
  56. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  57. build:
  58. name: "Build"
  59. strategy:
  60. matrix:
  61. java: [ 8, 15 ] # Build on Java 8 (version shipped with MC 1.16) and Java 15 (iirc the latest version supported by both loaders on 1.16)
  62. runs-on: ubuntu-20.04
  63. if: |
  64. !contains(github.event.pull_request.title, '[ci skip]')
  65. steps:
  66. - uses: actions/checkout@v2
  67. - name: Set up JDK ${{ matrix.java }}
  68. uses: actions/setup-java@v2
  69. with:
  70. java-version: ${{ matrix.java }}
  71. distribution: 'adopt'
  72. - name: Cache Gradle wrapper
  73. uses: actions/cache@v2
  74. with:
  75. path: ~/.gradle/wrapper
  76. key: gradle-wrapper-${{ runner.os }}-${{ hashFiles('gradle/wrapper/**/*') }}
  77. restore-keys: gradle-wrapper-${{ runner.os }}-
  78. - name: Cache packages
  79. id: cache-packages
  80. uses: actions/cache@v2
  81. with:
  82. path: ~/.gradle/caches
  83. key: gradle-packages-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
  84. restore-keys: gradle-packages-${{ runner.os }}-
  85. - name: Make gradlew executable
  86. run: chmod +x ./gradlew
  87. - name: Build with Gradle
  88. run: |
  89. ./gradlew build --stacktrace --no-daemon
  90. # Remove some potentially problematic files from the Gradle cache,
  91. # so that GitHub Actions doesn't cache them.
  92. - name: Cleanup Gradle Cache
  93. if: steps.cache-packages.outputs.cache-hit != 'true'
  94. run: |
  95. rm -f $HOME/.gradle/caches/*/*.lock
  96. rm -rf $HOME/.gradle/caches/*/plugin-resolution/
  97. rm -rf $HOME/.gradle/caches/*/scripts/
  98. rm -rf $HOME/.gradle/caches/*/scripts-remapped/
  99. rm -rf $HOME/.gradle/caches/*/fileHashes/
  100. rm -f $HOME/.gradle/caches/journal-1/file-access.bin
  101. - name: Setting mod version
  102. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  103. run: |
  104. cat $GITHUB_WORKSPACE/gradle.properties | grep ^archives_base_name= >> $GITHUB_ENV
  105. cat $GITHUB_WORKSPACE/gradle.properties | grep ^minecraft_version= >> $GITHUB_ENV
  106. cat $GITHUB_WORKSPACE/gradle.properties | grep ^base_version= >> $GITHUB_ENV
  107. - name: Create package name
  108. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  109. run: echo "package_name=[$minecraft_version] $archives_base_name-$base_version-SNAPSHOT.PR${{ github.event.number }}" >> $GITHUB_ENV
  110. - uses: actions/upload-artifact@v2
  111. if: ${{ matrix.java == '8' }} # Only upload Java 8 artifacts for MC 1.16
  112. with:
  113. name: ${{ env.package_name }}
  114. path: |
  115. **/build/libs/
  116. !build/libs/
  117. !**/*-dev.jar
  118. !**/*-shadow.jar
  119. !**/*-transformProduction*.jar
  120. !**/testmod*/